最近在看《硬件架构的艺术——数字电路的设计方法与技术》,学习细化了很多之前模棱两可的知识点,偶尔来总结输出一下,今天就是这个主题——门控电路;

门控结构

相传在很多年前,时序逻辑里是没有门控电路的;

这句话我是听说的,估计我是没赶上那个时候,那时候最流行的触发器综合方式可能还是同步时钟使能结构:

这种结构呢在没有使能的情况下,触发器的D端是不会有信号跳变的。但是呢,此时时钟信号保持翻转触发器的内部电路也保持活跃,因此没有降低功耗的效果,于是后来进一步出现了门控时钟的结构;

最简单容易想到的门控时钟触发器的结构如下图:

通过en信号来控制时钟开关,当en信号当拍为0是,触发器时钟电路不翻转,Q端输出信号保持,功耗降低。但是这样做存在一个明显的问题,en信号显然是逻辑电路生成的,其满足建立时间和保持时间要求,但是当en信号维持时间过短时,时钟会被过早的关断:

或者说也有这种可能,产生时钟毛刺或误产生时钟脉冲:

因此作用clk1的en信号必须要能在时钟上升沿到时钟下降沿这个区间保持为一个常量,所以需要引入一个锁存结构:

clk信号作为锁存器的控制端,en信号为被锁存信号,当clk为1时锁存en信号,clk为0是透传en信号,对应的波形如下:

通过锁存器的锁存功能,en信号只要在上升沿附近保持稳定,即可保证产生完整的时钟脉冲;大部分的厂商会在标准单元库中提供“时钟门控单元”,比上面的结构会多一个test_se信号,在扫描测试时候使用:

当然,刚刚所说的只是在触发器级的时钟门控,门控时钟可以处于整个时钟树的任何节点,越靠近根部的门控时钟对于降低功耗的作用越明显,原因显而易见,整个电路结构的功耗整体由三部分组成:组合逻辑产生的功耗+触发器产生的功耗+时钟树功耗;靠近根部的门控结构不仅降低了大量触发器的功耗,同时降低了区域的时钟树功耗(时钟树功耗几乎占到了芯片功耗的50%);

逻辑做在D端还是EN端

复习完门控时钟后,回到我之前就思考的一个问题:组合逻辑是应该做在触发器的D端还是EN端?实话实说,目前我也没有答案,只能把我的认识写一下;

把信号更多的做在EN端使之为1的条件更为苛刻带来的好处是显而易见的:时钟被开启的概率更低,触发器的功耗更低;而困难的地方在于EN端的信号时序更加紧张,时序收敛更加困难;

关于EN端的信号时序更加紧张,时序收敛更加困难这个事情,看一下通常综合完的clk timing.rpt和clk gating timing.rpt对比下就会发现,gating的timing路径中一般会减去一个时间比如-100ps,那这个时间减的是什么呢?

说实话我不是非常确定,初步分析,D端的信号是相对clk_gating收时序,逻辑由clk_gating采样触发,在下一拍的clk_gating做建立和保持时间分析;而EN端的信号是相对clk收时序,由clk_gating采样触发,在下一拍的clk做建立和保持时间分析。而clk_gating相对clk是有向后的偏移量的,因此EN端信号由clk_gating触发在clk处收时序,减去100ps是不是合情合理的?

因此我的第一个认识就是:在EN端时序可以收敛的情况下,尽可能的把逻辑做在EN端,以降低功耗;

然而,插入门控电路是有面积和功耗损失的,毕竟平白无故的多了一个与门、一个或门、一个锁存器,因此一般只有在大于等于四个触发器共用一个门控结构才会有正收益;同时,越多的触发器共用一个门控结构,门控电路本身带来的面积与功耗代价就越小。那么,如果EN端逻辑做的过于复杂和专一,必然不利于触发器共用门控结构,因此如果一组信号EN信号相近,那么可以提取他们的公共EN部分逻辑做在EN端,其他逻辑做在各自的D端,来减少门控结构的数量

当然了,EN端越共用一般意味着控制粒度越粗,时钟开启的频率越高触发器功耗也更高,这两个方面本身相互制约,有时需要靠经验来选择了。

【芯片前端】关于门控电路和逻辑做在D端还是EN端的思考相关推荐

  1. 【芯片前端】四年经验|芯片前端|IP设计岗|面试问题|总结分享

    面试基本落下帷幕,对聊到的问题和知识点做一下总结.很多问题回答的不好,结束后也进一步的思考了很多又有了一些新的拓展,也一并总结在这里. 异步FIFO相关 1.异步FIFO的实现原理. 把关键知识点说清 ...

  2. 论文解读:门控时钟的gating ratio如何提升

    如何让一个clock gater能够gate更多的flip-flops? 如果两个flip-flops的enable和clk相同,那自然可以用同一个clock gater来gate.一般来说,一个mo ...

  3. Verilog基础知识3(门控时钟及FPGA时钟使能处理)

    需求说明:Verilog设计 内容       :第一部分  门控时钟                   第二部分  门控时钟和时钟使能的理解(附代码) 来自       :时间的诗 第一部分  门 ...

  4. 【数字IC/FPGA】门控时钟

    门控时钟介绍 功耗是芯片设计中非常重要的一个指标,研究表明,在芯片功耗的组成中,有高达40%甚至更多是由时钟树消耗掉的.这个结果的原因也很直观,因为这些时钟树在系统中具有最高的切换频率,而且有很多时钟 ...

  5. 门控时钟设计001:什么是门控时钟?如何产生门控时钟?

    什么是门控时钟? Clockgating:在数据无效时,将寄存器时钟关闭的技术,能够有效降低功耗, 是低功耗设计的重要方法之一.门控时钟其实就是一个逻辑模块,在寄存器的输入数据无效时,将寄存器的输入时 ...

  6. PIC 1508 TIM1的定时器门控的理解

    TIM1的门控部分还是有点理解难度的.看了两个多小时的数据手册,最后总结出来其实TIM1的门控就是硬件三态门,只是在简单的三态门逻辑基础上有提升.控制TIM1计数的门控源有4个,分别如下图所示 一般常 ...

  7. 门控时钟:Clock fating

    1.门控时钟定义 门控时钟是低功耗设计的一种方法,在数据无效时将寄存器的时钟关闭,以此来降低动态功耗.主要应用于低功耗领域.具体实现为:在寄存器输入数据无效时,将寄存器输入时钟置0. 门控时钟在 AS ...

  8. 1.3 测控电路的信号类型、测控电路的类型与组成、测控电路的发展趋势

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

  9. educoder基本SR锁存器+门控SR锁存器+与非门构成的门控SR锁存器

    基本SR锁存器 任务描述 本关任务:在Logisim中,构建由两个或非门构成的基本SR锁存器. 相关知识 锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状 ...

最新文章

  1. 生成批量缩率图_Windows系统实战之:批量生成某类型文件
  2. PyQt5——布局管理
  3. add_metrology_object_generic将测量对象添加到计量模型中
  4. 软件分析与设计:分析什么?如何设计?
  5. 达内培训c语言,【达内C  培训教程】C语言实例 分数之和
  6. java面试-Java并发编程(六)——线程间的通信
  7. Java web中使用JQuery加载某页面后,自动调用Servlet(GET方法,POST方法)
  8. 华为与五粮液签署战略合作协议
  9. 一种内存泄露检查和定位的方法
  10. c246芯片组服务器主板,支持Xeon E-2100系列:ASRock 华擎 发布 C246M WS 主板
  11. 新生代民工 书籍推荐
  12. 数据驱动的物流网络体系
  13. Web CAD SDK 14.1.0 New Crack
  14. mysql 嵌入式linux版本_PHP专栏 : MySQL 数据库安装详细
  15. stm32mp157开发板MIC 接口测试方法
  16. Kali Linux 详细安装步骤
  17. 马毅:低维模型与深度模型的殊途同归(神经网络、压缩感知和低秩分解与补全)
  18. 浅谈 AOP 什么是 AOP ?
  19. LEETCODE 137.Singel Number ii
  20. python制作图片_python制作斗图生成器

热门文章

  1. python中exec是什么意思_Python中的exec()
  2. GIT 报错:Branch ‘master‘ set up to track remote branch ‘master‘ from ‘origin‘
  3. 求小于整数N的最大素数
  4. 校园网及入网计算机管理制度,校园网用户入网管理规定
  5. 使用itext将HTML 生成PDF文件
  6. 聊聊 MyBatis 中的设计模式
  7. web程序无法访问:The requested resource () is not available.错误
  8. B 站上有哪些很好的学习资源?
  9. 学校项目过程中知识点 Java 2015/9/15 晚
  10. 使用Go+WebSocket练习总结