旁路电容(bypass capacitor)在高速数字逻辑电路中尤为常见,它的作用是在正常的通道(信号或电源,本文以电源旁路电容为例)旁边建立另外一个对高频噪声成分阻抗比较低的通路,从而将高频噪声成分从有用的信号用滤除,也因此而得名,如下图所示:
通常我们见到的旁路电容位置如下图所示:
如果是高密度BGA(Ball Grid Array)封装芯片,则旁路电容通常会放在PCB底层(芯片的正下方),这些旁路电容会使用过孔扇出(Fanout)后与芯片的电源与地引脚连接,如下图所示:
更有甚者,很多高速处理器芯片(通常也是BGA封装)在出厂时,已经将旁路电容贴在芯片上,如下图所示:
台式电脑的CPU(Central Processing Unit)一般都是用CPU插槽进行安装,很多CPU芯片的背面(是芯片的背面,而不是贴芯片的PCB板背面)也会有很多旁路电容,如下图所示:
总之,旁路电容的位置总是会与主芯片越来越靠近,原理图设计工程师在进行电路设计时,也通常会将这些旁路电容的PCB LAYOUT要点标记起来,用来指导PCB布局布线工程师,如下图所示:
那么这里就有两个问题了:
(1)为什么旁路电容一定要与主芯片尽可能地靠近?
(2)为什么大多数旁路电容的值都是0.1uF(104)?这是巧合吗?
要讲清楚这两个问题,首先我们应该理解旁路电容存在的意义,很多人分不清滤波电容、旁路电容,其实本质上两者是没有任何区别,只不过在细节上对电容的要求有所不同。无论电容的应用场合名称叫什么,基本的(也是共同的)一点特性总是不会变的:储能。电容的这一特性使得外部供电电源有所波动时,与电容并联的对象两端的电压所受的影响减小,如下图所示:
上图中,我们用开关K1来模拟扰动的来源,很明显,每一次开关K1闭合或断开时,在电阻R1与R2的分压下,电阻R2两端的电压(VDD)都是会实时跟随变化的(即波动很大),只不过电压幅度不一致而已,我们认为开关的切换动作已经产生了电源噪声。
当我们在VDD节点与公共地之间并联一个电容C1后,如下图所示:
由于电容C1储能的作用,开关K1在开/关切换时,电容的充放电行为会使VDD更加平缓一些,如下图所示:
如果这个电容值比较大(一般在10uF以上,也有数千微法),我们就将其称为滤波电容,它可以将低频扰动成分滤除掉(但是对高频成分不管用),如果这个电容值比较小(一般1uF以下),我们称为旁路电容,它可以将高频成分滤除掉(对低频成分不管用),这两种电容起的都是滤除作用,如下图所示:
(本文以容值为滤波与旁路的区分仅限于数字电路,旨在说明两者区别,仅供参考,因为在模拟电路中很多容值并不小的电容也算是旁路电容,比如基本放大电路中的发射极电阻两端并联的电容,但本质都是一样的)
当然,我们也可以把模拟电源扰动开关K1放在如下图所示的位置,同样的道理,电容C1也可以在一定程度上削弱扰动对VDD带来的影响:
对于旁路电容的应用电路而言,开关K1与电阻R2为干扰的来源,我们可以把它们等效为芯片内部,如下图所示:
下面我们以74HC04(6反相器)芯片来分析一下,尽管电路规模很小,但原理都是一样的。我们在《逻辑门》系列文章有提到过,CMOS反相器的基本结构如下图所示:
我们将这个反相器安装到上面的电路中去,则有如下图所示:
其中,电容CL为芯片内部等效负载电容,一般为几个pF,是数字集成电路中客观存在的,就算反相器输出没有连接额外的负载,芯片进行开关动作时也会消耗一定的电能(电荷)。
假设芯片逻辑输入电平由高H至低L变化(由低L至高H变换也是一样的道,本文不再赘述),PMOS(上侧带圈圈的)导通,NMOS截止,此时电流通路如下图所示:
由于电容CL两端的电压不能突变,因此瞬间的充电电流(电荷)也不小,这个充电电流即来自于电源VDD,如果附近恰好有旁路电容,则由旁路电容中储存的电荷提供此消耗,如下图所示:
有人可能就说:就算旁路电容C1离芯片太远或没有,不是还有直流电源V提供VDD吗?也应该可以承担提供电能的责任呀?没错,当芯片产生的噪声成分属于低频是完全可以的,但是数字电路处于高低电平切换时情况就完全不一样了,因为开关的切换会产生谐波丰富的高频成分。
需要注意的是,这个谐波频率成分的高低不是指信号的切换频率,而取决于高低电平切换的上升或下降率,即上升时间tr(rising time)与下降时间tf(falling time),如下图所示:
高低电平变换时间越短,则产生的谐波(高频)成分越丰富,因此,低速开关并不意味着高频成分少,信号频率为1MHz方波存在的高频谐波成分比同频率正弦波要高得多,因为方波的高低电平切换时间非常短,而正弦波则相对非常缓慢。
因此数字电路应使用下图所示的高频等效电路:
其中,L1、L2、L3、L4就是线路(包括过孔、引脚、走线)在高频下的等效电感,线路越长则等效电感越大,这些等效电感对高频信号相当于是高阻抗,这对于前级过来的高频干扰的抑制是有好处的,但同时对芯片内部(后级)开关切换带来的干扰也是有抑制作用的,这种抑制作用在旁路电容(或更远的直流电源V)与芯片之间形成了阻碍,使得VDD供电端子无法及时获取到足够电荷继而导致VDD瞬间下降(即变差),这种电压变化可以由下式来表达:
在大规模数字集成电路中会存在成千上万个等效开关同时切换,这些切换产生的瞬间电流都将使原本看似平稳的电源电压不再干净,继而使得芯片工作不再稳定,类似如下图所示:
因此,通常我们会将旁路电容尽量地靠近芯片,这样使得旁路电容与芯片之间的引脚或走线的分布电感越小,从而能保证芯片能够及时获取足够的电荷。电路规模越大的芯片(如奔腾处理器),同一时间切换的逻辑会更多,因此也需要更多的电荷进行消耗电能的补充,外部需要并接的旁路电容也更多,如下图所示:
旁路电容所起的作用与现实生活中的扑灭小火灾的水龙头一样:假设家里出现了小火灾(相当于高频电源扰动),反应最快的肯定是从家里的水源处(相当于旁路电容)取水来扑灭,而不是第一时间拔打119电话。119火警扑灭火灾的能力(相当于外部电源V)肯定是最强的,它对于大火灾(相当于低频电源扰动)是最合适的,但是对于频繁出现的小火灾几乎没有什么用处,反应时间跟不上,等你赶过来时什么都烧完了(电路工作出现异常),还是家里的水龙头管用,虽然水源比较小,但对于小火灾却是足够用了。
有人可能就会说:搞那么麻烦做什么,为什么要并联这么多小电容?不就是那么些个储能电容,我在附近并联10 uF或100uF的电容不就都解决了么?以一个抵千百个,PCB布局布线更简单,么么哒!理想很丰满,现实很骨感。从单纯的储能角度来讲,是没有什么问题的!但旁路电容还有另外的重要功能:为每个高频信号提供良好的低阻抗返回路径,从而控制信号之间的串扰。
如下图所示,在门C的输出切换为高电平时,电池电源V将对负载电容CL充电,这个电流回路将产生瞬间的噪声电压(用L1、L2等效),如果同一时间门A的输出也切换为高电平,则门C产生的噪声电压将叠加在VDD上,从而影响到输出电平。
也就是说,其它门的噪声电压(也称为共路噪声)被传递到门A的输出端,同一时间逻辑切换越多则产生的共路噪声越大,一旦叠加在VDD上的共路噪声超过芯片的噪声容限,电路因无法有效地判断高低电平而导致异常,如下图所示:
为了改善这种共路噪声带来的影响,我们可以在每个芯片附近放置合适容值的旁路电容,由旁路电容建立电源与地之间的低阻抗回路,这样高频噪声就不会影响到其它门的正常工作,如下图所示:
在实际应用中,我们会使用电源平面与地平面(减小分布电感,这些属于高速PCB设计内容,我们将在系列专栏文章中进行详细讲解),并配合旁路电容来为每一个芯片提供良好的低阻抗回路,如下图所示:
但我们在文章《电容》已经介绍过,实际的电容都有其自谐振频率,电容在高于自谐振频率时等效为一个电感,亦即不再是个电容了。我们也计算过10uF贴片陶瓷电容的自谐振频率约为1.6MHz,假设我们的芯片工作在10MHz(谐波频率成分甚至会达100MHz以上),此时并联10uF的电容相当于是不存在的(对于高频噪声成分相当于是开路的),因此,旁路电容的容量过大将起不到高频旁路的作用,另外,并联多个小电容的也可以在达到前述两个功能的前提下提升总电容的自谐振频率,这一点可以参考文章《电容》
作为旁路电容的容值一般不会大于1uF(以文章《电容》中所示1nH ESL计算其自谐振频率约为5MHZ,同类型电容的容量越小则自谐振频率越高),那旁路电容应该至少需要多少呢?我们下一节结合数据手册定量计算一下0.1uF容值的由来。