该文章版权归 smarteebit 所有。
若有疑问,请联系 songmin2@高速数字设计的经典案例若干则【摘要】 随着这些年半导体工艺突飞猛进的发展, “高速数字设计”对广大硬件工程师来说,已经不再是一 个陌生的词。
从航空、雷达到汽车电子,从无线通信到有线接入,甚至在一些低端的嵌入式系统上,高 速数字电路都已经在大行其道。
目前行业内已经有不少关于高速数字电路理论的好文章, 笔者就不在这 上面掺和了。
本文着眼于理论和实际相结合, 所用的素材都来自笔者亲历过的案例, 相信活生生的事实, 比空洞的理论更有说服力,也希望能使入行不久的硬件工程师们得到他们想要的信息,今后少走弯路。
由于不会对理论作过多的阐述, 因此, 本文的阅读对象应该具有一点点高速数字设计的理论基础, 请知。
【关键词】 高速数字设计 高速数字电路 案例1 信号完整性什么词汇在高速数字设计中出现得最多?对了,SI(Signal Integrity),也就是信号完整性。
信 号完整性问题的表现形式多种多样,主要有如下种类:图 1 过冲(OVERSHOOT)图 2 振铃(RING)图 3 非单调性(NON MONOTONIC)过冲: 当较快的信号沿驱动一段较长的走线, 而走线拓扑上又没有有效的匹配时, 往往会产生过冲。
过冲带来的问题主要是“1”电平高于接收端器件的输入最大电压值(VIHmax),或“0”电平低于接收端 器件的输入最小电压值(VILmin),这样可能给器件带来潜在的累积性伤害,缩短其工作寿命,从而影响 产品的长期稳定性。
SmarteebitPage 1 of 17该文章版权归 smarteebit 所有。
若有疑问,请联系 songmin2@其实, 大多数的器件允许一定的超过器件标称耐压值的瞬态过冲, 有些厂家甚至详细规定了瞬态过 冲的参数,例如 Altera 的 CycloneIII 器件,其器件手册标称的最大正耐压值 VImax 值为 3.95V,但这指 的是直流电平。
如果是过冲的话,另有一套限制参数。
怎么个限制法,请看下面的图和表:图表 1 CycloneIII 对过冲参数的规定规定:器件的工作年限是 10 年,我们设定一个门限 4.10V,那么输入电平超过这个门限的时间总 和不得超过 10 年的 31.97%。
或者换一种说法,在这 10 年里,管脚上始终输入一个翻转率 100%,占空 比 50%的时钟信号,其周期为 T,在一个周期里,输入电平超过 4.10V 的时间为△T,则△T/T 的百分 比不得超过 31.97%。
如果输入信号的翻转率低于 100%(即一般的非时钟信号)的话,则意味着同等的 过冲条件下,器件可以有更长的工作寿命。
由于很多的器件没有给出瞬态过冲指标, 硬件设计人员若按直流输入的上下限来要求瞬态过冲, 在 复杂的拓扑中,很难有 SI 措施能够满足要求。
这样做有过度约束之嫌。
在没有更好的方法之前,我们 采用下面的方案: 当器件没有给出瞬态过冲指标时,硬件设计者应该尽可能向器件供应商索取准确数据, 在确实要 不到数据而且没有找到更加可性的计算方法的情况下,可以按下例方法估算:图 4SmarteebitPage 2 of 17该文章版权归 smarteebit 所有。
若有疑问,请联系 songmin2@其中: S_Overshoot_High / S_Overshoot_Low 为器件允许的静态过冲,即允许的直流输入 VIH 的上限和 下限。
D_Overshoot_High / D_Overshoot_Low 为器件允许的动态过冲, 相当于瞬态 Input 的上限和下限。
公式中的 T 反映的是工作频率, t 是电压超过静态过冲持续的时间,由仿真或测量获得。
对付过冲的一般方法是匹配,或叫端接(Termination) 。
匹配的方法五花八门,网上的文章一搜一 大把,这里不再赘述了。
匹配的中心思想是消灭信号路径端点的阻抗突变,归纳一下,无非可以总结为 两种形式:源端的串行匹配,用于消灭二次反射,以及终端的并行匹配,用于消灭一次反射。
不是每种 匹配方式都适用于任何场合,例如,50ohm 并行匹配一般不用于 LVTTL/LVCMOS 等电平逻辑,因为电 阻上消耗的功耗大得难以接受;又例如,源端匹配用于链型拓扑时,靠近驱动端的接收点波形较差,对 此,我们有“案例:源端匹配用于链型拓扑的缺陷”详细说明。
除了匹配之外,还有另外一种改善过冲的行之有效的方法,那就是令驱动端的信号沿变缓,使得原 先的高速信号变得不那么“高速”。
使信号沿变缓的最常用的手法,就是降低驱动器的驱动电流。
这种 手法在FPGA/CPLD设计中尤为常用。
通过“案例:通过修改驱动电流的方法改善过冲”,我们将对此法 有更深的体会。
振铃:过冲往往伴随有振铃,或者说,过冲是振铃的一部分。
振铃产生的第一次峰值电压,就是过 冲。
之所以要将二者区分来讲,是因为振铃的危害除了过冲外,还有其产生的电压波动可能多次跨越逻 辑电平的阈值电压,使得接收端产生误判,对于CMOS器件来说,振铃过程中还可能使得上、下MOS管同 时导通的时间延长,急剧地增加功耗,影响器件寿命。
既然振铃和过冲的产生机理一致,对它的处理方 式也就和处理过冲无异,这里仅作简要的理论阐述。
非单调性:绝大多数的非单调性都是复杂的信号拓扑造成的,因此,在一个CPU或DSP芯片的本地总 线上,非单调性的问题最为常见,也最难解决。
非单调性按表现分类,可以分为两种:回钩和台阶。
对 于一个沿有效的时钟来说,信号沿上的回钩或台阶是致命的,因为一个非单调的时钟沿,可能被接收端 认做多个有效沿,或在器件内部产生亚稳态,导致时序逻辑的功能错误。
对于数据来说,非单调性的危 害则主要是时序裕量的减小, 这也是复杂的总线系统往往要进行时序仿真的原因之一。
非单调性的案例, 请见“案例:时钟的非单调性带来的时序逻辑错误”,“案例:数据的非单调性带来的时序裕量问题”。
对于时钟信号来说, 避免出现非单调性问题的最好方式是使用时钟驱动器, 用点对点的方式驱动每 一个负载;对于有复杂拓扑的总线信号来说,则建议使用总线驱动芯片,这样可以将一个复杂的拓扑分 解为两个或两个以上较为简单的拓扑,同时也不要忘记加入合适的匹配电阻,具体的匹配方法,可以通 过仿真得到。
1.1 案例:源端匹配用于链型拓扑的缺陷如图 5,这是一个典型的链型拓扑:最右端的U48为驱动端,经过一个串阻后,一条走线上呼啦啦 挂了9个负载。
图 5 典型的链型拓扑实例由远及近,拓扑上的仿真波形分别如图 6(a)、(b)、(c)、(d):SmarteebitPage 3 of 17该文章版权归 smarteebit 所有。
若有疑问,请联系 songmin2@OSCILLOSCOPEDesign file: SAT7_682D.HYP Designer: songmin HyperLynx V7.7 4000.0 V [UD2.13 (at die)] V [U74.11 (at die)] V [U70.11 (at die)]OSCILLOSCOPEDesign file: SAT7_682D.HYP Designer: songmin HyperLynx V7.7 4000.0 V [UC2.13 (at die)] V [U32.11 (at die)]3500.03500.03000.03000.02500.0 V o l t a g e m V V o l t a g2500.02000.02000.01500.0e m V -1500.01000.01000.0500.0500.00.000.00-500.0-500.00.004.0008.000 Time (ns)12.00016.0000.004.0008.000 Time (ns)12.00016.000Date: Thursday Dec. 17, 2009 Time: 18:04:48 Net name: P_SCK Show Latest Waveform = YESDate: Thursday Dec. 17, 2009 Time: 18:05:31 Net name: P_SCK Show Latest Waveform = YES(a)OSCILLOSCOPEDesign file: SAT7_682D.HYP Designer: songmin HyperLynx V7.7 4000.0 V [UB2.13 (at die)] V [U31.11 (at die)](b)OSCILLOSCOPEDesign file: SAT7_682D.HYP Designer: songmin HyperLynx V7.7 4000.0 V [UA2.13 (at die)] V [U30.11 (at die)]3500.03500.03000.03000.02500.0 V o l t a g e m V V o l t a g e m V -2500.02000.02000.01500.01500.01000.01000.0500.0500.00.000.00-500.0-500.00.004.0008.000 Time (ns)12.00016.0000.004.0008.000 Time (ns)12.00016.000Date: Thursday Dec. 17, 2009 Time: 18:06:14 Net name: P_SCK Show Latest Waveform = YESDate: Thursday Dec. 17, 2009 Time: 18:06:59 Net name: P_SCK Show Latest Waveform = YES(c)图 6 链型拓扑的仿真波形(d)可以看到,末端的波形(a)是最好的,由远及近(b)-> (c) ->(d),信号沿的非单调性问题开始出现, 越靠近驱动端,非单调性越严重。
实测波形与仿真基本接近,这里就不再贴出来了。
像(b)、(c)、(d) 这样的信号质量,如果是数据,只要能保证不影响时序,倒也无妨,但如果是沿有效的时钟,则是不能 接受的。
该实例证明,串行匹配用于链型拓扑时,只能保证末端负载的波形。
从理论上理解:源端匹配 消灭的是二次反射, 当信号行波的一次反射从末端往回走的途中, 与驱动信号叠加, 便有了这样的波形。
有兴趣钻研的朋友可以看看Howard W. Johnson的“HIGH-SPEED DIGITAL DESIGN: A Handbook of Black Magic” ,里面的“Source Terminators”一节中有类似的阐述。