旁路电容0.1uF,是怎么来的?
以下文章来源于电子制作站,作者Jackie Long

各种原创实用的电子开发设计文件,包括EDA每周不定期更新和发布工具/平台的学习指南、电子产品生产材料或教程及相关内容!
旁路电容在数字电路系统中起着基本而重要的作用,,虽然旁路电容的这些功能还没有总结出一个高的名字,但旁路电容的最终作用是均为高速数字PCB我们将详细解释设计的重要组成部分。
事实上,旁路电容的这两个基本功能在某种意义上是完全统一的:你可以认为旁路电容为高频开关切换(充电)提供瞬时电荷,避免开关产生的高频噪声扩散到远离芯片的方向,因为在芯片附近的旁路电容器中获得了开关切换所需的能量,您也可以认为旁路电容器提供了高频噪声电流的低阻抗路径,从而避免了高频开关需要向更远的电源索取瞬时电荷能量。
有一定经验的工程师会发现旁路电容的容值大多是0.1uF(100nF),这也是数字电路中最常见的,如下图所示FPGA芯片旁路电容:

正如前面提到的,实际电容器有自谐振频率。考虑到这一因素,数字电路旁路电容的容量一般不超过 1uF,当然,容量太小也不好,因为存储的电荷不能满足开关切换时瞬时所需的电荷,那么旁路电容的容量至少应该是多少呢?我们使用最简单的反相器逻辑芯片(74HC04)计算实例。
实际芯片每个逻辑门的基本结构如下图所示(以下均来自)Philips 74HC04数据手册)

而每个CMOS反相器的基本结构如下图所示(具体参考文章逻辑门(1)):

每个逻辑都不是门(Gate)由三个反相器串联组成,如下图所示(为什么芯片这样设计可以参考文章逻辑门):

上图中输入电容器用于每一级反相器,后一级反相器CI也就是说,作为前一级开关的输出负载电容器,反相器开关本身也有一定的输出寄生电容器,它们也包含在内CL在内部,逻辑非门(包括三个反相器)的所有等效负载电容都是在切换内部逻辑阵列开关时需要电源VDD要求能源(换句话说,开关切换时需要对等效负载电容器进行充放电)通常用于数据手册CPD(power dissipation capacitance per gate)表示,如下图所示:

注:在本数据手册中,CPD逻辑非门(Per Gate)开关等效电容器。
在74HC04芯片中,CPD就相当于是CL1、CL2、CL3的等效电容(不一定是简单的加)CL因此,我们也可以将电路等效如下图所示:


有人问:这个公式是怎么来的?权威吗?我读的书少别骗我!数据手册如下图所示:

上图中的公式分为两部分,但结构完全相同。前一部分与我们给出的公式相同,表示,然后一部分与芯片外负载CL相关(也称为),输出引脚IO连接有多少个负载,就将相应负载电容CL计算所有功耗,如下图所示:

有人问:输入电容CI不算吗?乖乖,对于芯片输出引脚连接的负载,负载输入电容CI引脚等效负载电容CL啊,输出负载连接(并联)越多,等效负载电容CL如下图所示:

一般而言,CL(CI)值总是比较容易找到,通常在数据手册中,因为你必须知道输出连接的负载,但是CPD但不一定能在数据手册中找到,所以在计算芯片功耗时,我们可能会分为芯片内部和芯片外部。

我们已经知道了最基本的数据计算方法,有两种方法可以估计旁路电容的最小容量:
第一种计算方法思路:旁路电容的容量通常比芯片总容量大CPD大25~100倍,我们称之为旁路电容倍乘系数(bypass capacitor multiplier,因为74HC04包含六个逻辑非门,也可以从数据手册中找到CPD约为21pF,因此,芯片总量CPD应为21pF×6=126pF,再考虑到50倍的旁路电容系数,旁路电容的容量必须要大于126pF×50=6.3nF。
以上计算的是芯片输出没有连接负载,假设反相器后面有10个逻辑非门(CMOS门电路的风扇系数一般为20~25),此时等效电路如下图所示:

对于门1此时,芯片输出负载电容器,对于整个系统来说,这个CL也可以算是门1逻辑阵列开关等效电容,因为从图中可以看出,它消耗的是门1的电源能量(而不是门2~门11),所以根据上述算法,门1外接旁路电容的容量至少应该是,当然,这只是一个逻辑非门的计算结果。如果芯片中的其他五个非门是相同的负载连接,则旁路电容量至少应为,我们可以直接选择100nF旁路电容。
前面我们是走了狗屎运,芯片够简单,所以数据手册里提供了CPD的具体值,但更多的应用场合下是没有办法这个值的,我们看看更大规模集成芯片的情况。
大规模逻辑芯片的旁路电容容量的计算原理也是大体一致的,逻辑阵列开关每秒钟转换的次数至少会以百方来计算(MHz),我们以ALTERA公司FPGA CYCLONE IV芯片来计算一下外接负载时负载电容(不包括内部逻辑开关阵列等效电容CPD,为什么?下面会提到)所消耗的功率。
假设IO供电电源电压VCCIO为3.3V,时钟频率为100MHz,负载数量为30个(也就是输出外接了负载的IO引脚),输出引脚的平均负载电容为10pF,则旁路电容的容量至少应为:10pF×30×50=15000pF=15nF。
对于FPGA之类的大规模集成芯片,内核电压VCCINT或IO电压VCCIO都会有多个,如果计算某一个电源引脚所需的旁路电容的容量,还需要除以这些电源引脚的个数,如下图所示:

不同封装芯片的VCCIO数量是不一样的,F256/U256(BGA)封装有20个,而E144(QFP)封装只有12个,但是FPGA的VCCIO是按BANK来供电的(就是VCCIO后面带的那个数字,数字相同表示BANK相同,不了解FPGA的读者不必深究),不应该直接除了这个总数,如果这30个连接的负载分布在2个BANK,对于E144封装每个BANK约有2个VCCIO电源,仅需要除以数量4就行了,因此,单个电源引脚所需要的旁路电容容量应至少约为3.75nF。
我们可以用灭火的水龙头来理解:当芯片只有一个电源引脚时,相当于灭火的水龙头只有一个,而芯片有多个电源引脚时,相当于灭火的水龙头有多个,在火灾危害程度相同的情况下,需要灭火的用水量是一定的,因此,对于有多个水龙头的情形而言,单个水龙头需要的用水量需求就少了,当然,总的用水量肯定是一样的,亦即总的旁路电容值是不会变化的。
上面只是计算芯片外接负载时需要的旁路电容容量,那如何计算内部逻辑阵列等效电容呢?,但是这个值通常是不提供的,因为这个值会随实际电路逻辑规模的大小与功能而有很大的不同,那就没有办法了吗?NO!
我们可以用测量仪器实际测量出FPGA芯片在具体逻辑功能应用时所消耗的动态功率PD,或使用配套的功耗分析软件进行功耗的计算,总而言之,,再根据之前的功耗计算公式反推出CPD,如下所示:

27.8nF已经不小了,再乘上50倍旁路电容的倍数,则旁路电容的总容量至少应为,因此,动态功耗越大的芯片需要在旁边放置更多的旁路电容就是这个道理。
另外一个计算方法是:

当PMOS管(上侧带圈圈)开关打开时,VDD电源对芯片逻辑阵列开关等效电容CPD充电,CPD电容两端的电压会上升,旁路电容C1两端的电压(VDD)将会下降,因为旁路电容C1的部分电荷已经转移到了CPD中,为了维持电压VDD变化不超过0.1V,我们可以根据需要转移的电荷量与VDD电压的允许变化量求出旁路电容的最小容量。
我们还是以一个逻辑非门驱动10个逻辑非门的情况来计算CPD的大小,如下图所示:


如果芯片中的其它5个逻辑非门也是同样的负载连接,则旁路电容的最小容量至少应为4.55nF×6=27.3nF,这个计算结果与前一种方法相差无几。在考虑设计裕量的情况下,我们也会使用100nF(0.1uF)的旁路电容。
事实上,以上两者估算的本质是完全相同的,我们同样可以用水龙头的比喻来理解旁路电容容量的计算原理,但同一道菜上得太多就没意思了,我们换另做一道菜来吃:
假设芯片逻辑开关总等效电容CPD(不仅包括芯片本身的CPD,也包括负载总电容CL)相当于一个取水的杯子,而旁路电容C1相当于储藏水源的地方,我们认为储水之地的水位相当于电源电压VDD,如果储水之地是一只盛满水的小碗,那么CPD这只杯子从小碗中取一杯水(也就是CPD充满电的总电荷)后,小碗中的水位就会下降(相当于电源VDD下降),因为两者储水的空间相差并不大,而如果储水之地是一大缸水,则从中取同样CPD一杯水对这缸水的水位影响非常小,因此,如果你想要这个水位(VDD)变化越小,则储水之地(旁路电容的容量)就必须比CPD要大得多。
https://mp.weixin.qq.com/s/25ixHQn_I9meqf-5lRWHpg