前言
工作中遇到这样一件事情,某个新产品在静电测试时遇到问题,FPGA总被复位;经过查找,这个产品主要的情况是:6层PCB,FPGA绝大多数走线在内层,且没有跨分割之类的不符合规则的布线;没有屏蔽外壳,地线(PE)在PCB板和结构中绕了个圈。结论是,做静电测试时,静电放电电流经过了较长地线路径,产生了较大的辐射,干扰了FPGA。但有这个结论还不够,怎么才能定量的确定多长的地线,怎么走的地线在静电测试时不会对电路产生影响呢?
我找到的解决方案是使用电磁场仿真软件。大名鼎鼎的Ansoft就有这样的解决方案套装。简单介绍一下:
Maxwell:基于标量场(例如电势)计算的电磁场仿真软件,适合用来计算电机磁场、电容、特征阻抗等。
HFSS:基于S参数(解释看这里)计算的电磁场仿真软件,适合用来计算与电磁波相关的问题。
SIWave:用于计算信号PCB信号完整性和电源完整性。
与PSpice、Multisim之类的仿真软件不同,上述这些仿真软件是有限元分析软件。
再提下两个软件:ADS和Hyperlynx。安捷伦的ADS(ADS = Advanced Design System,不是开发ARM的ADS),ADS虽然也能分析电磁波,但是它的分析方法是基于预设模型的,无法解决任意结构的电磁问题。举个例子,假设你自己做了个很奇怪的连接器,你想知道这个连接器到底能传输多高频率的信号,ADS是没办法仿真的。Hyperlynx是一个专门用于分析PCB上走线的信号完整性的软件,同样,它也是基于预设模型的。
在学习Ansoft软件的过程中,我发现他们可以解决很多我之前很想知道,但什么书都说不明白问题。我决定开始写一些关于信号完整性基础的文章,这些文章都将是对我工作中遇到的一些问题的分析。先从信号完整性的本质开始吧。
我是一只鱼(不靠谱工程师) 于2012年2月
这年头,当电子工程师的都知道信号完整性这个词,都知道高频数字电路的PCB设计需要一些技巧。但是信号完整性的本质是什么呢?我用HFSS做了例子。
下图是一个多层PCB上的传输线,为了方便理解,我把它弄成笔直的。图中土黄色的是铜皮,绿色的是FR4,也就是PCB的基板。这是个“微带线”,也就是PCB上相邻层有地平面的表层走线:
在上图中,下方是一个抽象的信号源端口,上方是一个抽象的负载端口。这个微带线模型有150mm长,但只有2mm宽,这是因为信号传播时的,微带线周围的电磁场主要分布在这2mm的区域中,所以没有必要建立更宽的模型。为了让大家看得更清楚,我调整了长度和宽度的显示比例。
首先,理想情况下,信号在导线上是怎么传输的呢?看下面这个视频。
视频地址
http://v.youku.com/v_show/id_XMzUxMzk5Mzg0.html
这个视频描述的现象持续4.5ns,下方是信号源,上方是负载,蓝色的碎片是传输线附近的电场强度分布情况。可见,理想情况下,信号像潮水一样从信号源涌向负载,不再返回。可以注意到,信号虽然以光速的数量级传播,但是还是需要一些时间才能从信号源,传递到负载。
那么,实际电路中,如果完全没有确保信号完整性的措施,信号是在导线上是怎么传输的呢?看下面这个视频。
视频地址
http://v.youku.com/v_show/id_XMzUxNDEwMzQw.html
这个视频描述的现象持续8ns。可见,在实际电路中,传播到负载端的电场强度被弹了回来,然后又被信号源弹了出去,然后又弹回来,如此往复。下文中,我们会对这个过程进行详细的分析。
先提前告诉大家,信号完整性问题本质上,是由于第一个视频中看到的传输延迟,和第二个视频中看到的反射造成的。
为了解释信号完整性的本质,我们先来看这样两个信号完整性的基本公式,为了方便,我用Matlab的语法来写,相信大家能看懂:
v = c / sqrt(ε) (1)
Γ = (Z1 - Z0) / (Z1 + Z0) (2)
式1是介质中电磁波传播速度的计算式,v是介质中的电磁波传播速度,c是真空光速,ε是介质的介电常数。真空的介电常数为1,空气比真空大一点点,其他材料的介电常数都大于1。也就是说,不管电磁波或者导线里的电信号在什么东西里传播,速度都要比光速慢。
式2是信号在传输时遇到不同的介质,例如,从芯片管脚到PCB走线时的反射系数计算公式,以此为例,Z1是PCB的阻抗,Z0是芯片管脚的阻抗(稍后解释阻抗这个概念,先理解为对变化信号的电阻吧)。这个公式指出,一旦传输介质的阻抗不同,信号就会出现反射;这个现象和高中物理学的,光线在空气和玻璃的界面发生反射很像吧。
假设我们要在PCB上的一条走线上传输信号,虽然电路原理认为信号以光速传播,但是在介质(PCB基板、绿油等材料)的环绕下,速度会慢一些;一般在PCB的走线上,会降到光速的二分之一。如今的电路速度越来越快,假设一个很短的脉冲在PCB上传输时,很可能负载还没有接收到信号,信号源已经发送完了。
一般情况下,PCB的走线的阻抗和信号源芯片、负载芯片管脚的阻抗都不一样,这样信号到达负载芯片的时候,又被反射向信号源,反射回来的信号会叠加在原来的信号上,让信号出现失真;对大多数芯片来说来说,负载芯片管脚的反射,会让信号的幅度变为原来的2倍或更多(不要想到直流信号去了,我们一直在讲变化的信号)。如果只是变成原来的2倍我们也就忍了,但是负载芯片反射回信号源芯片的信号到达信号源芯片的管脚上,又会发生二次反射,再反射向负载芯片,叠加在原来的信号上;假设传输的信号是一个很短的脉冲,在二次反射到来前的这段时间里,负载芯片管脚上的电压一般已经稳定了,而再次到来的二次反射信号会让负载芯片管脚的电压再次发生变化——这就造成了传输波形的严重失真。下面这张图简述了这个过程。不过本文所用信号第一次反射到达信号源时,信号源输出已恢复为零,所以下图忽略了反射与信号源的叠加。
好了,你已经对信号传输过程中造成的变化有了一个大概的认识,现在解释下PCB的阻抗是怎么回事。电路原理认为信号在导体中传输是不会遇到阻碍的,但实际情况是,PCB上的走线是有“分布参数”的,也就是,走线虽然没有绕圈,也会存在电感;走线虽然与地平面的相对面积很小,也会存在电容。电容和电感的交流阻抗公式:ZC = 1 / jωC,ZL = jωL,可以看出,虽然PCB走线的分布参数很小,但当信号的频率ω足够大时,ZC和ZL就会发挥作用。
我们可以将传输线微元化,将每一段微元建立起这样的RLCG模型:
则可推导出微元的阻抗为Z0 = sqrt((R + jwL) / (G + jwC))(推导过程看这里)。对于一般的PCB,由于R很小,G很大,微元的阻抗可以简化为Z0 = sqrt(L / C),这就是传输线的特征阻抗。(定义看这里)需要注意的是,特征阻抗是用于交流信号的;另外,公式中的RLCG,都与传输线自身的结构有关。
如果有点晕了,就只需要记住,对于高频信号,PCB的走线不再是良好的导体。
回到v = c / sqrt(ε)和Γ = (Z1 - Z0) / (Z1 + Z0)这两个公式,假设信号源阻抗为20欧、PCB走线特征阻抗为40欧、负载阻抗为1000欧,我们再来看看信号的传输过程,看下面这张图,这是对上面的微带线模型仿真的结果:
图中,红色的是信号源波形,蓝色的是负载端波形,绿色的是信号源反射波形。可见,信号源波形刚进入微带线就发生了反射,反射系数为Γ = (40 - 20) / (40 + 20) = 0.33,图中反射波形的幅值恰好就是信号源波形的0.33倍左右,这个反射波形同时叠加在信号源上,输出到微带线上,也就是说,传输信号峰值实际为1.33V。当微带线上的信号到达负载端时,再次发生反射,反射系数为Γ = (1000 - 40) / (1000 + 40) = 0.92,这个反射的波形同时叠加在传输波形上,输入负载端,也就是说,负载端接收到得信号峰值实际为1.33 * (1 + 0.92)= 2.55(V),图中负载端信号的幅值恰好就是2.5V左右。
刚才我说过了,如果负载端信号幅值变大我们也就忍了,问题是还有传输延迟,和传输延迟造成的二次反射叠加。
红色波形的最大值与蓝色波形的最大值之间相差大约1ns,用v = c / sqrt(ε)验算下,v = 3.0e8 / sqrt(4.2) = 1.46e8(m/s),这段微带线的长度为150mm,所以传输延迟t = s / v = 0.15 / 1.46e8 = 1.03e-9(s),也就是1.03ns,这和仿真结果是吻合的。我们再来看从负载端反射回去的波形,经过1.03ns,在3.56ns左右,从负载反射回的波形到达信号源,同时又被信号源反射回了负载(这一次反射系数是负的,请自行计算),又经过1.03ns,在4.6ns左右,又反射到了负载端,出现一个负向波形,然后又被反射……像踢皮球吧?本来一个漂漂亮亮的红色波形,被踢成了蓝色波形那个丑样。
现在,我再说一次,造成信号完整性问题的本质是传输延迟和信号反射,应该很好理解了吧?
那么,有没有还我漂漂拳呢?很显然有两个思路:消除传输延迟和消除信号反射。消除传输延迟,那就是超光速,以现在的人类科技是做不到了,不是LHC发现所谓的“快子”被证明是错误的吗?看来只有消除信号反射了,从Γ = (Z1 - Z0) / (Z1 + Z0)这个式子看,只要Z1 = Z0,Γ不就是零了吗?这就是所谓的阻抗匹配。很多的书上说了很多的阻抗匹配的方法,这里我就不再赘述了。给出一个阻抗匹配的仿真结果:
图中,红色的是信号源波形,蓝色的是负载端波形,绿色的是信号源反射波形。可见,阻抗匹配时,波形反射几为0,信号波形除了那该有的1.03ns传输延迟,没有失真。
一般的信号完整性书说的也就是这些理论知识,但书里描述的这种传输延迟和反射到底是什么样子呢?回忆下本文开始的那两个视频吧,这是我写这篇文章的动机。就到这里。
|
|