门控时钟和时钟MUX

门控时钟和时钟MUX

1.门控时钟

最近做ASIC的FPGA原型验证,遇到了门控时钟的问题。在这里记录下来。

门控时钟在ASIC设计中经常使用。门控时钟可以通过时钟使能信号关闭模块,进而降低功耗。

但是在FPGA里面门控时钟会占用较多的时钟资源,按照我的理解FPGA使用组合逻辑生成的门控时钟驱动能力弱,会导致延时较大,时序违例。

一般的思路是将门控时钟替换为使能时钟。就是将时钟使能信号改为寄存器使能信号。

Vivado软件比较智能,可以通过综合策略中设置“gated_ clock_conversion”为auto,让软件自动推断优化门控时钟。

上图是典型的门控时钟代码和综合出来的原理图。门控时钟经组合逻辑输出。

下面打开Vivado中的门控时钟优化选项。

这里提一下打开门控时钟优化有两种方法,一种是综合策略中设置,另一种是代码中在门控时钟信号声明前添加属性**( gated clock =“true”*)**

可以看到原理图中使能信号连接到了FDRE的CE(时钟使能信号端),被优化为了时钟使能寄存器。

关于更多综合策略的选项设置可以参考Xilinx的官方文档《ug901-vivado-synthesis》的第49页。

2.时钟MUX

ASIC设计中也经常用到时钟MUX结构,在FPGA里面我们使用时钟选择BUF进行替换。

首先查看时钟MUX的原始代码和综合出的原理图:

时钟MUX采用简单的组合逻辑实现,这样时钟切换的时候有很大隐患。可能导致毛刺,时钟驱动能力减弱。

上图是采用Vivado器件原语实现的时钟MUX。能做到时钟的无缝切换,同时可以提高时钟的驱动能力。 BUFGMUX的参数设置为“SYNC”的时候,会在另一个时钟上升沿完成切换,如果设置为“ASYNC”,即便其中一个时钟是空的也能正常切换。

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值