高速并行总线的信号完整性问题
高速并行总线的信号完整性问题
DDR(双倍数据速率)技术自第一代发展至今,数据传输速率持续提升,同时功耗和供电电压不断降低。在这样的背景下,保证信号完整性对于DDR系统的正常运行至关重要。本文将深入探讨DDR总线在数据传输过程中可能遇到的四大类信号完整性问题:码间干扰(ISI)、反射、串扰(Crosstalk)和开关噪声(SSN),并分析其成因、影响及解决方案。
ISI(码间干扰)
码间干扰(Inter Symbol Interference, ISI)是指,当信号通过实际信道时,信号的带宽变窄,同时信号的上升边、下降边变长。因此单位脉冲响应会变宽,即一个比特位所占有的时间会延长,并产生拖尾,如图所示。
这样接下来的比特位就会受到之前比特位的拖尾的影响。一个比特位可能会受到多个比特位的拖尾的影响,这个比特位的实际电压值就等于本身的电压值与诸多拖尾的电压值的叠加值,这样对该比特的电压值就有可能产生误判,导致本来是低电压的比特位判定为高电压,本来是高电压的比特位判定为低电压。
可以看出ISI产生的原因是单位脉冲响应的延展。而单位脉冲响应之所以产生了延展主要因为两点,一是在信道上信号中的高频部分和低频部分的传输速度不一致,高频部分的传输速度要大于低频部分,造成信号在时域上的展宽,这种现象我们称之为色散。二是在信道中,信号中高频部分的衰减要大于低频部分,这是因为信道的插入损耗随着频率的增加而变大,这也会造成信号在时域中的展宽。
同时,ISI和信道中所传输的具体码型也有关系,传输的码型不同,产生的ISI也会不同。由前面的解释可以知道,当前比特位所受到的ISI与其前后的几个比特位都有关系,因此不同的码型会使边沿变快或者变慢,导致其眼图有多个交叉点存在。
如果之前的几个比特位的是连续高电平或者连续低电平,对当前比特位造成的ISI是不一样的。我们还应该注意到的是,信号的衰减并不会引起ISI,引起ISI的根本原因是信号的高频部分和低频部分的衰减大小不一样。如果通道的衰减对信号中高频部分和低频部分的作用是一样的,只会引起信号整体幅度的减小,而不会造成信号的延展,因此也就不会产生ISI。所以想要消除ISI,可以通过均衡器对信号的高频部分进行补偿或者对低频部分进行衰减。
由于传输线的频率选择特性,频率越高,传输线的插入损耗也会随之增加,信号的衰减和码间干扰的现象也会更加严重。
图中传输线在1.2GHz时插损约在-10dB左右,而上升到3.2GHz后,插损达到了-30dB。对比眼图可以发现,6.4Gbps时,由于ISI和衰减,眼图已经完全闭合。
为此,DDR5引入了可调增益以及判决反馈均衡器(DFE),减小ISI对相邻bit的影响,用以改善眼图闭合的情况。
与SERDES中使用的DFE不同的是,在SERDES中,DFE的时钟信息可以由信号本身通过时钟恢复获得。而在DDR5中,由于DQ信号是通过DQS信号触发的,所以需要将DQS作为时钟信号,加入到DFE中去。最后形成的是双输入,单输出的DFE。
反射
当信号沿信道传输时会遭遇阻抗变化,在阻抗变化的交界处会产生反射。当模拟信号发生反射的时候会形成驻波,数字信号发生反射的时候会形成过冲或者是上升边和下降边的振铃,,如下图。
不管是模拟信号还是数字信号,在传输链路上传输时,传输链路的任何不均匀都会导致信号的反射。当入射信号Vinc沿着传输线传播时,一直会感受到一个瞬时阻抗,而当瞬时阻抗突然变化时,这个信号就会分为一个反射信号Vrefl和一个传输信号Vtrans。如图所示。
其中Vrefl 与Vinc 的方向相反,Vtrans 与Vinc 的方向相同。假设第一段传输线的瞬时阻抗为z1,第二段传输线的瞬时阻抗为z2 ,公式定义了反射信号与入射信号的幅值的比例为反射系数r。
由公式可知,当两个阻抗相差越大,反射系数越大,反射信号的幅值越大。在时域中的反射可能是一个上升边或下降边,在频域中可能是一个正弦波。之所以在阻抗突变处产生了反射信号,是因为在阻抗突变处要满足两个边界条件:交界处的电压必须是连续的,交界处的电流必须是连续的。如果阻抗突变处的电压不是连续的,则阻抗突变处会出现一个无穷大的电场,如果阻抗突变处的电流不是连续的,则阻抗突变处会出现净电荷。这就会违背基本物理原理。可以说反射信号的出现就是为了匹配入射信号与传输信号之间的电压与电流的变化差异。阻抗突变处的电压连续条件如下式:
阻抗突变处的电流连续条件如下式:
再结合以下公式:
就可以推导出前面的反射系数以及下面的传输系数:
为了保证最优的信号质量,设计互连走线时需要尽量保证阻抗恒定。这里可以从三个方面入手。第一,要保证瞬时阻抗的恒定,就需要制造阻抗可控的电路板,比如尽量减小桩线的长度,使用菊花链拓扑或 Fly-By 拓扑代替星形拓扑,在条件允许的情况下多使用点到点的拓扑结构;第二,在传输线的终端进行阻抗匹配,由于实际的材料制造过程中阻抗多多少少总会有一些变化, 所以为保证信号质量在终端匹配是非常必要的;第三,除了前两点,走线的拓扑结构也是非常重要,比如一条信道要分为多条信道时,在分支点就会产生阻抗的变化,为了减小反射以及阻抗变化,走线时应该尽量避免分支。
Crosstalk(串扰)
串扰指的是从一个线网传播到另一个线网上的噪声,通常我们将噪声源所在的线网称为进攻线,形成噪声的线网称之为受害线,如下图。
一个线网由信号路径与返回路径共同组成,而串扰是发生在两个或多个线网之间的现象,所以串扰与信号路径与返回路径都相关。受害线上受到来自进攻线的串扰的途径就是通过边缘场的耦合,可分为容性耦合与感性耦合。这两种耦合的产生原因分别是由于进攻线上的电压的变化和电流的变化。根据受害线上噪声位置的不同,串扰可以分为两类,近端串扰和远端串扰,如下图。
因为受害线两端受到的噪声形式是不同的,所以加以区别。近端指的是受害线上距离源端近的那一端,远端指的是受害线上距离源端远的那一端。近端串扰是一个逐渐达到稳态的过程,即串扰值会逐渐达到一个稳定值然后保持不变,近端串扰的大小取决于进攻线与受害线之间的距离;而远端串扰的持续时间很短,串扰值与信号的上升边长度成反比,要减小远端串扰,需要信号的上升边变长,同时减小进攻线与受害线的耦合长度和线间距。噪声值的容限一般为信号电压幅值的 15%,而这其中的 5%一般是由串扰造成的,相当于串扰占了所有噪声的 1/3。而随着设计封装越来越密集,电路板走线越来越紧凑,一个受害线周围的进攻线也会越来越近,越来越多,这些进攻线产生的噪声就会叠加在受害线上,因此串扰问题也越来越严重。
DDR信号较多,走线较为密集,随着信号速率的增加,传输线之间的串扰也会随之增加。此外,DDR颗粒的引脚布局,往往多个信号附近只有一个GND引脚,这就使得这些信号需要共用同一个返回路径,更加增加了相互干扰的风险。
SSN(开关噪声)
开关噪声是串扰的一种,当感性耦合电流大于容性耦合电压产生的电流时,此时噪声主要由感性耦合主导,而感性耦合电流的产生主要在驱动器开关的时候,即信号的上升边与下降边处产生,因此称为开关噪声。
当信号的返回路径不是均匀平面时,感性耦合的增加大于容性耦合的增加,此时噪声主要由进攻线与受害线之间的互电感决定。如下式:
Vn 表示受害线上的电压噪声,Lm 表示进攻线与受害线之间的互电感,Ia表示进攻线上的动态电流,Z0表示进攻线上的特性阻抗,RT 表示进攻线上的信号的上升边,Va 表示进攻线上的信号电压值。
如果给定了所允许的最大开关噪声值,并且知道了特性阻抗与信号的上升边大小,则可以推导出所允许的最大互电感,如下式:
为了减小开关噪声,就可以通过三种方法减小互电感。第一,减小进攻线与受害线之间的耦合长度,互电感就会变小。第二,增加进攻线与受害线之间的间距,互电感就会变小。第三, 减少进攻线与受害线的自电感, 自电感减少,互电感也随之减少,例如将进攻线与受害线的信号路径与返回路径靠近。