陆续在其它论坛上发了一些自己做电路设计的感想。在这里发一新贴试试水。以前的发表的漫谈1-26有兴趣的话可以google一下 。每贴子数所限,各位看官请爬楼慢慢找。
电路设计漫谈之27 – Ground Bouncing
做过高速电路或者宽带数据处理设计的工程师可能经历过Ground Bouncing这类的问题。Ground bouncing现象通常是指某部分logic的参考地高于了系统的参考地,从而使得与其相连接的logic应该看到0时,接受到的可能是高于最高允许的logic 0电平。如图所示。
Ground bouncing的产生是由于总线中大量的数据bit在瞬间从1变化到0造成的。比如以前设计过一个大容量的IP数据buffering电路。用RLDRAM DDR数据宽度64bit。我们发现当测试连0和连1交替的数据包时,RLDRAM的读写总容易出错。比如64个连1,后边跟着64个连0,或者相反的次序.最后发定位到ground bouncing引起的logic错误。
图中解释了ground bouncing产生的原因。总线总是带有容性负载的,比如线间电容,芯片的输入电容等。当数据总线上是1时,这些寄生电容被充电。在下一个时钟周期如果总线上的数据变成了0,那么这些电容要瞬间放电。我们知道瞬间电流的变化在电感上会产生压降,即 ΔV=L(di/dt)。其压降的大小与电流的变化率和电路的电感成正比。我们知道任何连线都可以等效成一个分布式电感。PCB上信号的地回路也等效为电感效应。那么上述电流的变化就会在信号号“地线”回路上产生压降。这个压价使得A部分电路的参考地高于了系统的参考地。所以在Logic A部分的逻辑0电压,在Logic B看来就叠加了一个V。如果这个V最够大,就会产生logic错误。这就是ground bouncing的产生机理。
解决的办法可以从这个公式中找:ΔV=L(di/dt)
减小L:从芯片设计上尽量采用寄生电感小的封装(Flip Chip)比如BGA,地信号要在信号总线中均匀分配(减小内部回路)。在电路设计上尽量减少回路的寄生电感,比如接地平面要低阻抗,接地线尽量短,回路(连线)尽量小(短)等。
减小总的瞬间变化bit数
也就是减小同时发生变化的数据bit。比如对数据线采用编码。用几组略有延时的总线取代一组大宽度同相位的总线。
减小di/dt
可能的情况下用慢点的时钟。从系统的角度考量,故意使得不同部分逻辑的时钟工作相位不同,也可起到减小E的作用
Power Sag
这种现象跟Ground Bouncing正相反。它是发生在从0到1变化的瞬间,这时需要大量的瞬间电流来对负载(寄生)电容充电.这个瞬间电流作用到电源通道上的寄生电感,使得芯片瞬间看到的电源电压下降。当电压足够低时,这时logic 1就有可能被看作logic 0.
减小power sag的影响可以考虑上述解决ground bouncing的方法。额外的一点就是增加尽量多的电源滤波电容。这些电容一方面可以起到对电源噪声的滤除作用,另一方面可以提供logic从0到1变化需要的瞬间电流。对比较大的电路板有时还要刻意在板子上均匀摆上几个大的电容。这些电容起到“电流水库”的作用。一个电路比如说额定工作电流是10A,在高速下工作时如果有瞬间变化的大宽度总线,瞬时的工作电流可能是10A的几倍!当然你不会真把电源功率增加几倍,而是用上述电流水库的方式解决。
记得前面漫谈2说过,电路的原理图只是携带了整个电路设计的部分信息。Ground bouncing和Power sag就是例证。(待续)
[
本帖最后由 sun_ic 于 2011-8-31 00:26 编辑 ]