原文地址点击这里:

前一节我们已经详细解释了旁路电容在数字电路系统中所起的基本且重要作用,即储能为高频噪声电流提供低阻抗路径,尽管还并未给旁路电容的这些功能概括一个“高大上”的名字,然而旁路电容所起的终极作用就是为了电源完整性(Power Integrity, PI,它与信号完整性(Signal Integrity, SI均为高速数字PCB设计中的重要组成部分,后续有机会我们将会进行详细讲解。

事实上,旁路电容的这两个基本功能在某种意义上来讲是完全统一的:你可以认为旁路电容的储能为高频开关切换(充电)提供瞬间电荷,从而避免开关产生的高频噪声向距离芯片更远的方向扩散,因为开关切换需要的能量已经在靠近芯片的旁路电容中获取到了,你也可以认为旁路电容提供了高频噪声电流的低阻抗路径,从而避免了高频开关时需要向更远的电源索取瞬间电荷能量。

有一定经验的工程师都会发现:旁路电容的容值大多数为0.1uF(100nF),这也是数字电路中最常见的,如下图所示为FPGA芯片的旁路电容:

那这个值是怎么来的呢?这一节我们就来讨论一下这个问题。

前面已经提到过,实际的电容器都有自谐振频率,考虑到这个因素,作为数字电路旁路电容的容量一般不超过 1uF,当然,容量太小也不行,因为储存的电荷无法满足开关切换时瞬间要求的电荷,那旁路电容的容量到底应该至少需要多大呢?我们用最简单的反相器逻辑芯片(74HC04)实例计算一下就知道了。

实际芯片的每个逻辑门基本结构如下图所示(以下均来自Philips 74HC04数据手册)

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

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

上图中,CI表示芯片信号引脚的输入电容(Input capacitance,CL表示输出负载电容(Output Load capacitance。对于每一级反相器,后一级反相器的输入电容CI即作为前一级开关的输出负载电容,当然,反相器开关本身也会有一定的输出寄生电容,它们也包含在CL内,一个逻辑非门(包含三个反相器)的所有等效负载电容就是内部逻辑阵列开关在切换时需要向电源VDD索取能量的来源(换言之,开关切换时需要对这个等效负载电容进行充放电操作),这个逻辑阵列开关等效电容在数据手册中通常用CPD(power dissipation capacitance per gate)表示,如下图所示 :

注意:在这个数据手册中,CPD是一个逻辑非门(Per Gate)的开关等效电容。

在74HC04芯片中,CPD就相当于是CL1、CL2、CL3的等效电容(不一定是简单的相加),而CL4取决于芯片外接负载,因此,我们也可以将电路等效如下图所示:

有人问:这个公式怎么来的?权威么?我书读得少,不要骗我!数据手册中有呀,如下图所示:

上图中的公式分成了两个部分,但结构是一模一样的,前面一部分与我们给出的公式是相同的,表示芯片内部逻辑阵列开关等效负载电容CPD的功耗,而后一部分与芯片外接负载CL有关(也称之为等效IO开关电容),输出引脚IO连接有多少个负载,就将相应负载电容CL的功耗全部计算起来,如下图所示:

有人问:输入电容CI就不计算进去吗?乖乖,对于芯片输出引脚连接的负载而言,负载的输入电容CI就是引脚的等效负载电容CL呀,输出负载连接(并联)越多,则等效负载电容CL就越大,消耗的功率也就越大,如下图所示:

一般而言,CL(CI)值是总是相对容易找到的,数据手册中通常都会有,因为输出连接什么负载你肯定是知道的,但CPD却不一定在数据手册能查得到,因此,我们在计算芯片的功耗时可能会分为芯片内与芯片外两个部分。

最基础的数据计算方法我们已经知道了,有两种方法可以估算旁路电容的最小容量:

第一种计算方法思路:逻辑阵列开关等效电容(CPD)需要获取足够的电荷能量,那芯片的旁路电容的容量必定不能比芯片总CPD更小,通常旁路电容的容量比芯片总CPD大25~100倍,我们称其为旁路电容倍乘系数(bypass capacitor multiplier,这里取个中间数50),由于74HC04包含六个逻辑非门,从数据手册上也可以查到CPD约为21pF,因此,芯片总CPD应为21pF×6=126pF,再考虑到50倍的旁路电容系数,旁路电容的容量必须要大于126pF×50=6.3nF。

以上计算的是芯片输出未连接负载的情况,假设反相器后面并接了10个逻辑非门(CMOS门电路的扇出系数一般为20~25),则此时等效电路如下图所示:

对于门1 来说,此时芯片的输出负载电容CL=10×CI=10×7pF=70pF,对于整个系统而言,这个CL也可以算是门1的逻辑阵列开关等效电容,因为从图上可以看出,它消耗的是门1的电源能量(而不是门2~门11),这样根据上述同样的算法,门1外接旁路电容的容量至少应为(21pF+70pF)×50=4.55nF,当然,这只是一个逻辑非门的计算结果,如果芯片中其它5个非门也是同样的负载连接,则需要的旁路电容容量至少应为4.55nF×6=27.3nF,在考虑到电路设计裕量情况下,我们可以直接选择100nF的旁路电容。

那功耗PD计算的意义在哪里?前面我们是走了狗屎运,芯片够简单,所以数据手册里提供了CPD的具体值,但更多的应用场合下是没有办法直接获取这个值的,我们看看更大规模集成芯片的情况。

透彻详解(3)旁路电容100nF_0.1uF的由来计算的更多相关文章

  1. 旁路电容的PCB布局布线透彻详解(4)

    原文地址点击这里: 前面使用了较多的篇幅介绍旁路电容的工作原理及其选择依据,我们已经能够为电路系统中相应的数字集成芯片选择合适的旁路电容,在实际应用过程中,旁路电容的PCB布局布线也会影响到高频噪声旁 ...

  2. oracle游标透彻详解分析

    主:本文来自:http://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理隐 ...

  3. 为什么PMOS比NMOS的沟道导通电阻大,速度慢,价格高-透彻详解

    原文地址点击这里: 在前一节,我们对PMOS与NMOS两种增强型场效应管的开关电路作了详细的介绍, 并且还提到过一种广为流传的说法:相对于NMOS管,PMOS管的沟道导通电阻更大.速度更慢.成本更高等 ...

  4. EEPROM工作原理透彻详解

    原文链接点击这里 EEPROM(Electrically Erasable Programmable read only memory)即电可擦可编程只读存储器,是一种掉电后数据不丢失(不挥发)存储芯 ...

  5. 【转载】Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码

    本文转载自脚本之家,源网址为:https://www.jb51.net/article/147429.htm 一.Python中日期时间模块datetime介绍 (一).datetime模块中包含如下 ...

  6. MapReduce过程详解(基于hadoop2.x架构)

    本文基于hadoop2.x架构详细描述了mapreduce的执行过程,包括partition,combiner,shuffle等组件以及yarn平台与mapreduce编程模型的关系. mapredu ...

  7. DFT计算过程详解

    DFT计算过程详解 平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一 ...

  8. GDT,LDT,GDTR,LDTR 详解,包你理解透彻(转)

    引自:http://www.techbulo.com/708.html 一.引入 保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成 段描述符寄存器: 存储段描述符 选择器:存 ...

  9. 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是 ...

随机推荐

  1. 【近取 key】Alpha 阶段任务分配

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 alpha阶段初始任务分配 我在这个课程的目标是 进一步提升工程化开发能力,积累团队协作经验,熟悉 ...

  2. tail -fn 1000 test.log | grep '关键字' 按照时间段 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

    Linux 6种日志查看方法,不会看日志会被鄙视的 2020-02-11阅读 7.3K0   作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽 ...

  3. QT发布 - 动态编译,删减以来dll

    经常看到网上有些论调说 Qt 程序无比庞大,甚至拿 .NET 程序来比,说 Qt 程序打包以后跟 .NET 安装包差不多大.由此影响了很多人对 Qt 的选择.我觉得有必要对此做一些澄清-- 显然这个说 ...

  4. SPECCPU2006 Spec2006 使用说明

    http://www.vimlinux.com/lipeng/author/penglee5.html Spec2006使用说明 五 10 十月 2014 By penglee 工具介绍 SPEC C ...

  5. Linux_防火墙与SElinux

    一.防火墙与SElinux 1.防火墙和selinux 防火墙 iptables          默认允许所以 firewalld         默认拒绝所有 ebtables 不认识,不管 se ...

  6. Linux服务之批量部署篇

    批量部署步骤: 1.检查环境 getenforce               #检查内核防火墙是否关闭 systemctl status firewalld       #检查firewalld是否 ...

  7. SQL注入和XSS攻击

    SQL注入 定义:黑客通过在请求的数据中填入特殊字符,影响服务器数据库操作程序正常执行,从而达到攻击的目的. 形式: 拼接SQL: 登录验证:前台输入 username:yan password:12 ...

  8. mysql基础之查询缓存、存储引擎

    一.查询缓存 "查询缓存",就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果. 如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经 ...

  9. Linux shell用sed批量更改文件名的相关内容

    示例 去除特定字符 目标:将指定目录下文件名中sprint替换为dev 方法: [root@Skip-ftp test]# for i in `ls` > do > name=`echo ...

  10. Navigation 在fragment之间用bundel传递数据

    使用 Bundle 对象在目的地之间传递参数 如果您不使用 Gradle,仍然可以使用 Bundle 对象在目的地之间传递参数.创建 Bundle 对象并使用 navigate() 将它传递给目的地, ...