Variable this$0
refers to outer class instance containing inner class instance.
this.val$param
are interpretation of accessing final local variables from nonstatic inner classes.
注意理解两篇文章里的例子。
http://stackoverflow.com/questions/6749374/java-decompiled-code-meaning
http://java.decompiler.free.fr/?q=node/383
摘要:介绍了高速PCB设计中的信号完整性概念以及破坏信号完整性的原因,从理论和计算的层面上分析了高速电路设计中反射和串扰的形成原因,并介绍了IBIS仿真。
关键词:信号完整性 反射 串扰 IBIS仿真
随着半导体技术和深压微米工艺的不断发展,IC的开关速度目前已经从几十MHz增加到几百MHz,甚至达到几GHz。在高速PCB设计中,工程师经常会碰到误触发、阻尼振荡、过冲、欠冲、串扰等信号完整性问题。本文将探讨它们的形成原因、计算方法以及如何采用IBIS仿真方法解决这些问题。
1 信号完整性定义
信号完整性(Signal Integrity,简称SI)指的是信号线上的信号质量。信号完整性差不是由单一因素造成的,而是由板级设计中多种因素共同引起的。破坏信号完整性的原因包括反射、振铃、地弹、串扰等。随着信号工作频率的不断提高,信号完整性问题已经成为高速PCB工程师关注的焦点。
2 反射
2.1 反射的形成和计算
传输线上的阻抗不连续会导致信号反射,当源端与负载端阻抗不匹配时,负载将一部分电压反射回源端。如果负载阻抗小于源阻抗,反射电压为负;如果负载阻抗大于源阻抗,反射电压为正。反射回来的信号还会在源端再次形成反射,从而形成振荡。现以图1所示的理想传输线模型为例,分析与信号反射有关的重要参数。
图1,理想传输线L被内阻为R0的数字信号驱动源Vs驱动,传输线的特性阻抗为Z0,负载阻抗为RL。如果终端阻抗(B点)跟传输线阻抗(A点)不匹配,就会形成反射,反射回来的电压幅值由负载反射系数ρL决定。Ρt可由式(1)得出:
ρL=(RL-Z0)/(RL+Z0) (1)
从终端反射回的电压到达源端时,可再次反射回负载端,形成二次反射,此时反射电压的幅值由源反射系数ρs决定,ρs可由式(2)得出:
ρs=(R0-Z0)/(R0+Z0) (2)
精确计算反射系数和反射电压的关键是确定传输线的特征阻抗,它不仅仅是印制线的电阻。当印制线上传输的信号速度超过100MHz时,必须将印制线看成是带有寄生电容和电感的传输线,而且在高频下会有超肤效诮和电介质损耗,这些都会影响传输线的特征阻抗。按照传输线的结构,可以将它分为微带线和带状线。
2.1.1 表情微带线的特性阻抗
微带线是位于接地层上由电介质隔开的印制导线,其模型如图2所示。印制导线的厚度、宽度、印制导线与地层的距离以及电介质的介电常数决定了微带线的特性阻抗。计算公式如下:
式中,Z0是微带线的特性阻抗(Ω),w是印制导线宽度(英寸),t是印制导线厚度(英寸),h是电介质厚度(英寸),εr是印制电路板电介质的相对介电常数。
2.1.2 层间带状线的特性阻抗
带状线是介于两个接地层之间的印制导线,其模型如图3所示。它的特性阻抗和印制导线的宽度、厚度、电介质的介电常数以及两个接层的距离有关。特性阻抗的计算公式如下:
式中,Z0是微带线的特性阻抗(Ω),w是印制导线宽度(英寸),t是印制导线存度(英寸),h是电介度厚度(英寸),εr是印制电路板电介质的相对介电常数。
2.1.3 非对称带状线的特性阻抗
非对称带状线模型如图4所示。
特性阻抗的计算公式如下:
式中,Z0是微带线的特性阻抗(Ω),w是印制导线宽度(英寸),t是印制导线存度(英寸),h是电介质厚度(英寸),c是印制导线之间的距离,εr是印制电路板电介质的相对介电常数。
2.2 反射引起的问题及解决方法
由于存在传输线效应,从反射的角度来看,会出现以下信号完整性问题:
(1) 信号反射形成信号振荡。反射回来的信号会在源端和终端之间形成多次反射,加上传输线效应引起的过大的电感和电容,会导致信号振荡,即在一个逻辑电平附近上下震荡。这种现象尤其会出现在周期性的时钟信号上,从而导致系统失败。
(2) 信号反射会形成信号过冲和下冲。虽然一般来说每个信号的输入端都具有保护作用的齐纳二极管,但过程电平有效会远远超过元件电源电压范围,损坏元器件。
(3) 多次跨越逻辑电平门限。信号在跳变的过程中可能多次跨越逻辑电平门限,它是信号振荡的一种特殊的形式,即信号的振荡发生在逻辑电平门限附近,多次跨越逻辑电平门限会导致逻辑功能紊乱。
解决反射的根本办法是使信号具有良好的终端匹配,控制传输线的长度。同时也可利用IBIS仿真对系统信号进行优化。
3 串扰
3.1 串扰的形成和计算
在高速信号系统设计中,反射属于单信号线现象,当然包括地平面问题。但串扰不同,它是两条信号线之间以及地平面之间的耦合,所以又称为三线系统。形成串扰的根本原因是信号变化引起周边的电磁场发生变化,特别是对于高速信号,信号的上升和下降沿的时间可以达到ps级,高频分量非常丰富,信号线之间的寄生电容和电感容易成为串扰信号的耦合通道。下面以图5所示的传输线耦合模型为例进行分析。传输线上分布着电感分量和电容分量,所以整个信号之间的串扰由两部分组成,即容性耦合干扰和感性耦合干扰。容性耦合干扰是由于干扰源(Aggressor)上的电压变化在被干扰对象(Victim)上引起感应电流从而导致的电磁干扰,而感性耦合干扰则是由于干扰源上的电流变化产生的磁场在被干扰对象上引起感应电压从而导致的电磁干扰。感性串扰和容性串扰的基本分析公式如下:
Xtalk(ind)=(Lm)/(Ra×Tr) (6)
式中,Lm是互感,Ra是干扰源的终端匹配电阻,Tr是信号上升沿的时间。
Xtalk(cap)=(Ra×Cm)/Tr (7)
式中,Cm是耦合电容,Ra是被干扰对象的终端匹配电阻,Tr是信号上升沿的时间。
图7
3.2 影响因素
从上面的公式可以看出,串扰的大小与很多因素有关,如信号的速率、信号的上升沿和下降沿的速率、PCB板层的参数、信号线间距、驱动端和接收端的电气特性及线端接方式等。
3.2.1 串扰线平行长度和间距对串扰的影响
印制电路板基材与两面的印制导线可看作一个电容器,其电容C可用平板电容器的计算公式来粗略地计算。
C=0.886εr(A/b)(pF) (8)
式中,A是两面导线重叠的面积(mm2),b是层压板电介质厚度(mm),εr是压板的相对介电常数。
当串扰信号线之间的平行长度增加时,将增加两传输线之间重叠的面积,所以线之间的耦合电容也会增加,从而增大电流串扰。同理,当传输线之间的间距减少时,两个耦合的传输线之间的耦合电容也会增加,从而增加串扰的数值。在高速电路设计中,重要的是减少串扰的数值,这样就要从结构上减小 平行的长度,而且线间的间距也不能太小。
3.2.2 信号频率和沿速率对串扰的影响
在串扰效应中,除了信号本身的传输频率外,影响很大的还有信号上升时间和下降时间。在现代设计中,经常会出现几百兆赫兹的时钟信号和数字信号,这样信号的上升沿可以达到ps级。在这种情况下,信号的上升时间和下降时间对串扰的影响是不可忽视的。
假设存在一个如图6所示的串扰模型。其中,两线的线宽均为w,两线的线间距为P,而两线的平行长度为L,如不特殊说明,w、P和L的取值分别为w=5mils,P=5mils,L=1.3inches,两线均为顶层微带传输线。PCB板的电介质电常数εr为4.5。分别在不同的频率和沿速率情况下对它进行仿真。干扰源信号的频率不同时。
在同样干扰信号频率(f=20MHz)下,不同干扰源沿速率所产生的信号串扰情况如图7所示。图中标记“1”和标记“2”箭头分别指被干扰对象的远端和近端串扰波形。
3.3 解决方法
从上面的分析来看,在高速电路设计中,除了信号频率对串扰有较大影响外,信号的边沿变化(上升沿和下降沿)对串扰的影响更大,边沿变化越快,串扰越大。所以解决串扰的方法主要从减少干扰源强度和切断干扰路径两个方面进行,有以下几个方法:
(1) 串扰与信号频率成正比,而且在数字电路中,信号的边沿变化(上升沿和下降沿)对串扰的影响最大,边沿变化越快变频分量越丰富,串扰越大,所以尽量少地使用dV/dt高的信号,在超高速设计中可以使用低电压差分信号或其它差分信号。
(2) 在布线空间允许的条件下,在串扰较严重的两条线之间插入一条地线或地平面, 可以起到了隔离的作用,从而减小串扰。
(3) 加大线间距,减小线的平行长度,必须时可以以jog(凹凸)方式走线。
(4) 对于信号速率比较高的信号,可以将它走线经过的微带线和带状线控制在地平面8mil距离内,这样可以显著减少串扰。
(5) 控制传输线阻抗,加入端接匹配电阻以减小或消除反射,从而减小串扰。
4 IBIS仿真
由于在高速电路设计中存在许多的信号完整性问题,为了确保产品的性能和缩短开发周期,迫切需要进行电路的板线仿真。仿真的手段主要有SPICE仿真和I/O Buffer Information Specification(简称IBIS)仿真等。IBIS模型只涉及器件I/O buffer的电气特性,不包含器件内核的结构、工艺和性能等信息,从而有效保护了IC开发商的知识产权,因此与SPICE模型相比,IBIS模型比较容易从器件生产厂家获得;同时IBIS仿真具有很高的精度,而且其仿真速度比SPICE仿真速速快25倍左右。本文只介绍IBIS仿真。
4.1 IBIS模型的组成要素
按器件引脚输入、输出性质的不同,IBIS模型中所包含的要素也不同。主要有两种,即输出引脚和输入引脚模型,图8描述的是输出引脚的模型。模块1表示自器件Pad到Pin的寄生参数,其中C_comp表示由输出Pad、钳位二极管引起的输出电容,L_pkg、R_pkg以及C_pkg表示由绑定引线和Pin引起的电感、电阻和电容。模块2表示器件内部的ESD保护二极管或钳位二极管,模块3表示开关管的开关动态特性,在模型文件中用dV/dt表示,决定信号的沿速率。模块4和模块5分别表示下拉开关管和上拉开关管,用模型文件中的V/I曲线表示。图9描述的是输入引脚的IBIS模型,它只包含模块1和模块2。
4.2 IBIS模型仿真步骤
由于IBIS仿真模型不但含有每个引脚的寄生参数,如封装寄生电感、电容和电阻,而且有表示信号沿速率的dV/dt和端口特征的V/I曲线,所以IBIS仿真具有精度高、仿真速度快的特点,被现在的EDA软件广泛采用,如Cadence和Mentor等。下面介绍Cadence软件的仿真步骤:
(1) 从半导体厂家获取IBIS模型。
(2) 进行IBIS模型的校正,这一步非常重要,因为有时候厂家提供的IBIS模型有错误。
(3) 在原理图设计时,将相应的IBIS模型赋予每个器件,然后进行PCB设计。
(4) 提取需要仿真的每个网络的拓扑结构。
(5) 在源端加上仿真激励,然后进行仿真。如果存在信号完整性问题,可以修改张端匹配或PCB设计,然后再进行仿真,直到满足信号完整性要求。
信号完整性设计已经成为高速PCB设计中非常重要的一环,需要从原理图设计开始进行考虑,并采用IBIS仿真加速设计的进度和保证设计的成功。当然由于IBIS模型不涉及到IC内部的晶体管结构,同时对外面的被动器件和结构(如过孔)描述不够精确,所以对于超高速PCB(信号传输速率超过1Gb/s)的设计,可以采用SPICE仿真,同时采用三维电磁场提取过孔的SPICE模型。限于篇幅,本文没有讨论这些问题,可参考相关文献。
转自 http://www.mcu123.com/news/Article/interface/RS232/200607/72.html
1 问题的提出
在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。这种通信接口可以十分方便地将许多设备组成一个控制网络。从目前解决单片机之间中长距离通信的诸多方案分析来看,RS-485总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但RS485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障,因此提高RS-485总线的运行可靠性至关重要。
图1RS485通信接口原理图
2 硬件电路设计中需注意的问题
2.1 电路基本原理
某节点的硬件电路设计如图1所示,在该电路中,使用了一种RS-485接口芯片SN75LBC184,它采用单一电源Vcc,电压在+3~+5.5 V范围内都能正常工作。与普通的RS-485芯片相比,它不但能抗雷电的冲击而且能承受高达8 kV的静电放电冲击,片内集成4个瞬时过压保护管,可承受高达400 V的瞬态脉冲电压。因此,它能显著提高防止雷电损坏器件的可靠性。对一些环境比较恶劣的现场,可直接与传输线相接而不需要任何外加保护元件。该芯片还有一个独特的设计,当输入端开路时,其输出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。另外,它的输入阻抗为RS485标准输入阻抗的2倍(≥24 kΩ),故可以在总线上连接64个收发器。芯片内部设计了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁干扰。在图1中,四位一体的光电耦合器TLP521让单片机与SN75LBC184之间完全没有了电的联系,提高了工作的可靠性。基本原理为:当单片机P1.6=0时,光电耦合器的发光二极管发光,光敏三极管导通,输出高电压(+5 V),选中RS485接口芯片的DE端,允许发送。当单片机P1.6=1时,光电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压(0 V),选中RS485接口芯片的RE端,允许接收。SN75LBC184的R端(接收端)和D端(发送端)的原理与上述类似。
2.2 RS-485的DE控制端设计
在RS-485总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向总线发送数据,其他所有节点都必须处于接收状态。如果有2个节点或2个以上节点同时向总线发送数据,将会导致所有发送方的数据发送失败。因此,在系统各个节点的硬件设计中,应首先力求避免因异常情况而引起本节点向总线发送数据而导致总线数据冲突。以MCS51系列的单片机为例,因其在系统复位时,I/O口都输出高电平,如果把I/O口直接与RS-485接口芯片的驱动器使能端DE相连,会在CPU复位期间使DE为高,从而使本节点处于发送状态。如果此时总线上有其他节点正在发送数据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响整个系统的正常运行。考虑到通信的稳定性和可靠性,在每个节点的设计中应将控制RS485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。在图1中,将CPU的引脚P1.6通过光电耦合器驱动DE端,这样就可以使控制引脚为高或者异常复位时使SN75LBC184始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响。这就为整个系统的通信可靠奠定了基础。
此外,电路中还有1片看门狗MAX813L,能在节点发生死循环或其他故障时,自动复位程序,交出RS-485总线控制权。这样就能保证整个系统不会因某一节点发生故障而独占总线,导致整个系统瘫痪。
2.3 避免总线冲突的设计
当一个节点需要使用总线时,为了实现总线通信可靠,在有数据需要发送的情况下先侦听总线。在硬件接口上,首先将RS-485接口芯片的数据接收引脚反相后接至CPU的中断引脚INT0。在图1中,INT0是连至光电耦合器的输出端。当总线上有数据正在传输时,SN75LBC184的数据接收端(R端)表现为变化的高低电平,利用其产生的CPU下降沿中断(也可采用查询方式),能得知此时总线是否正“忙”,即总线上是否有节点正在通信。如果“空闲”,则可以得到对总线的使用权限,这样就较好地解决了总线冲突的问题。在此基础上,还可以定义各种消息的优先级,使高优先级的消息得以优先发送,从而进一步提高系统的实时性。采用这种工作方式后,系统中已经没有主、从节点之分,各个节点对总线的使用权限是平等的,从而有效避免了个别节点通信负担较重的情况。总线的利用率和系统的通信效率都得以大大提高,从而也使系统响应的实时性得到改善,而且即使系统中个别节点发生故障,也不会影响其他节点的正常通信和正常工作。这样使得系统的“危险”分散了,从某种程度上来说增强了系统的工作可靠性和稳定性。
2.4 RS-485输出电路部分的设计
在图1中,VD1~VD4为信号限幅二极管,其稳压值应保证符合RS-485标准,VD1和VD3取12 V,VD2 和VD4取7 V,以保证将信号幅度限定在-7~+12 V之间,进一步提高抗过压的能力。考虑到线路的特殊情况(如某一节点的RS-485芯片被击穿短路),为防止总线中其他分机的通信受到影响,在SN75LBC184的信号输出端串联了2个20 Ω的电阻R1和R2,这样本机的硬件故障就不会使整个总线的通信受到影响。在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120 Ω左右,所以线路设计时,在RS485网络传输线的始端和末端应各接1个120 Ω的匹配电阻(如图1中的R3),以减少线路上传输信号的反射。
2.5系统的电源选择
对于由单片机结合RS-485组建的测控网络,应优先采用各节点独立供电的方案,同时电源线不能与RS-485信号线共用同一股多芯电缆。RS-485信号线宜选用截面积0.75 mm2以上的双绞线而不是平直线,并且选用线性电源TL750L05比选用开关电源更合适。TL750L05必须有输出电容,若没有输出电容,则其输出端的电压为锯齿波形状,锯齿波的上升沿随输入电压变化而变化,加输出电容后,可以抑制该现象。
3 软件的编程
SN75LBC184在接收方式时,A、B为输入,R为输出;在发送方式时,D为输入,A、B为输出。当传送方向改变一次后,如果输入未变化,则此时输出为随机状态,直至输入状态变化一次,输出状态才确定。显然,在由发送方式转入接收方式后,如果A、B状态变化前,R为低电平,在第一个数据起始位时,R仍为低电平,CPU认为此时无起始位,直到出现第一个下降沿,CPU才开始接收第一个数据,这将导致接收错误。由接收方式转入发送方式后,D变化前,若A与B之间为低电压,发送第一个数据起始位时,A与B之间仍为低电压,A、B引脚无起始位,同样会导致发送错误。克服这种后果的方案是:主机连续发送两个同步字,同步字要包含多次边沿变化(如55H ,0AAH),并发送两次(第一次可能接收错误而忽略) ,接收端收到同步字后,就可以传送数据了,从而保证正确通信。
为了更可靠地工作,在RS485总线状态切换时需要适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时0.5 ms左右的时间,再发送有效的数据,数据发送结束后,再延时0.5 ms,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。数据通信程序基本流程图如图2所示。
图2数据通信程序基本流程图
单片机通信节点的程序基本上可以分为6个主要部分,分别为预定义部分、初始化部分、主程序部分、设备状态检测部分、帧接收部分和帧发送部分。预定义部分主要定义了通信中使用的握手信号,用于保存设备信息的缓冲区和保存本节点设备号的变量。设备状态检测部分应能在程序初始化后,当硬件发生故障时,作出相应的反应。主程序部分应能接收命令帧,并根据命令的内容作出相应的回应。为缩短篇幅,这里仅给出主程序部分的代码。如下所示:
/* 主程序流程 */
while(1) { //主循环
if(recv_cmd(&type)==0) //发生帧错误或帧地址与本机
//地址不符,丢弃当前帧后返回
continue;
switch(type) {
case __ACTIVE_: //主机询问从机是否存在
send_data(__OK_, 0,dbuf);//发送应答信息
break;
case __GETDATA_:
len = strlen(dbuf);
send_data(__STATUS_, len,dbuf);//发送状态信息
break;
default:
break; //命令类型错误,丢弃当前帧后返回
}
}
4 结论
RS-485由于使用了差分电平传输信号,传输距离比RS-232更长,最多可以达到3000 m,因此很适合工业环境下的应用。但与CAN总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。另外,系统的数据冗余量较大,对于速度要求高的应用场所不适宜用RS-485总线。虽然RS-485总线存在一些缺点,但由于它的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问题,而不要等到工程后期再去亡羊补牢。