相邻走线为什么会响应边沿?
一句话总结
相邻走线的电压一变化,两条走线之间的微小电容上也会有电流流过。这就是即使不向受害线直接输入信号,也会出现脉冲的原因。这一次读取的是集总参数电阻、电容模型的真实 ngspice 瞬态分析。它不是求传输线分布参数 NEXT/FEXT,也不是对实物板卡进行合规认证的实验。
为什么需要它
时钟停止时很安静的传感器输入,在时钟边沿开始后也可能出现抖动。重要的不只是电压的高低,还有它变化得有多快。耦合电流与两个节点之间的电压变化率成正比。因此,即使重复频率相同,只要改变边沿,感应出的脉冲就会不同。反过来,把电阻选得很小以降低噪声,在真实电路中可能给信号源增加负载。不要把噪声数值的一项改善,扩大为整个设计的改善。
工作原理
攻击线由理想电压源驱动,受害线通过 Rv 和 Cv=2pF 连接到地。两条线之间有 Cc。理想电压源的输出阻抗为 0,所以假设受害线不会改变攻击线的波形。真实驱动器的输出电阻、封装和电感都被省略了。把电容的电流公式应用到受害线节点,可以得到下面的公式。
(Cv+Cc)·dv/dt + v/Rv = Cc·dva/dt
重要的是左边也包含 Cc。时间常数是 Rv·(Cv+Cc),瞬时的电压分配比是 Cc/(Cv+Cc)。当 Rv 以 Ω、C 以 pF 为单位时,以 ns 为单位的时间常数要把乘积再乘以 0.001。Rv=200Ω、Cc=1pF 时是 0.6ns。如果只代入 2pF,就成了 0.4ns,模型就错位了。无条件地把电流写成 Cc·dva/dt,而漏掉受害线自身的变化,也会得到同样的错误。
攻击线从 2ns 开始,在 tr 时间内从 0V 线性上升到 1V,从 12ns 开始,在相同的 tr 时间内下降到 0V。上升期间,恒定的斜率把受害线向上推。上升结束后,新的注入停止,并按指数衰减。下降会产生反方向的电流,引起负脉冲。如果把一个边沿的响应记为 g(t),那么整体响应是 g(t−2)−g(t−12)。g(u) 在 u≤0 时为 0,在 0
在 Cc=1pF、Rv=200Ω 时,tr=0.2ns 的理论峰值约为 0.28347V,tr=2ns 时为 0.09643V。在缓慢的边沿期间,电荷有时间通过电阻泄放出去。不过,不能把它当作所有噪声的普遍规律。这个结果只是在固定的 1V 幅度、线性边沿、线性 R·C 这个模型之内的比较。
为什么只看一个峰值不够
高度相同的两个脉冲,停留在接收器敏感时间区间内的长度也可能不同。这一次,在 0–60ns 的观测中计算 |v|>0.15V 的总时间。如果数出采样点后乘以 0.01ns,就会丢掉跨越阈值的那部分区间。必须对各采样点之间的电压做线性插值,求出经过 +0.15V 和 −0.15V 的时刻。例如,在 3ns 内从 −0.3V 变为 +0.3V,则中间的一半位于阈值之内。如果先对两端取绝对值,看起来就全都像是 +0.3V,驻留时间就变成了两倍。
观测时间常数用上升结束之后的两个正采样点求得。公式是 tau=(t2−t1)/ln(v1/v2)。这里使用边沿结束后 +0.5ns 和 +1.5ns。因为用的是时间差,所以与时间原点无关,因为用的是比值,所以与整体幅度的倍率无关。值为 0 或在增大的区间、负值区间,不要硬套进同一个公式。这个公式依赖于单一指数衰减的假设。对于存在多个时间常数和测量噪声的实物,还需要更多的回归和残差检查,这次的两点反算并不能代替这种验证。
在现场相遇的样子
当 Rv=1000Ω、Cc=2pF 时,tau=4ns。在下一个下降沿开始时,前一次上升的尾部仍然残留,所以正负峰值的绝对值并不相等。如果忘了前一个脉冲而只画下降,或者用 abs 抹去符号,就会漏掉这种现象。必须逐个条件地改变较小的 Rv、较小的 Cc 和较慢的边沿并加以比较,才能解释是什么带来了改善。
学习用的判定是整体绝对值峰值≤0.2V,并且阈值以上的驻留≤1ns。这并不是真实逻辑输入或总线的规范。检查模型与原始波形是否吻合的 consistent,与这两个数值条件 meets_spec,要分别记录。把波形改成 0 虽然数值看起来不错,但与模型不符,所以 passed 必须为 false。ngspice 文件也不是实物测量,所以 measured 为 false。
下一项实验要做什么
从常数计算开始,依次制作带符号的波形、正负极值、阈值驻留、观测时间常数、与真实波形的比对,以及按条件的报告。引擎运行和表格解析由实验提供,并同时保存输入配置、电路、原始波形和引擎日志。不要在报告中删除失败的条件。
概念依据:Analog Devices 的电容耦合实验。该实物实验的电路与这次的数值电路并不相同。运行语法请参考 ngspice 手册。