Clk Gating的verilog写法及简析-基础小知识(六)


clk gating主要用于低功耗,本文主要从verilog的使用方法上进行介绍,仅供参考。~~~

1.2 clk gating

原理为clk_en使能之后才会将clk_in输出,减少子模块动态翻转,但是clock_en的使用并不是异步使用,在clk_in为低电平时同步进clk_in时钟域。具体原因见时序图。

module e203_clkgate (
  input   clk_in,
  input   test_mode,
  input   clock_en,
  output  clk_out
);
reg enb;

always@(*)
  if (!clk_in)
    enb = (clock_en | test_mode);

assign clk_out = enb & clk_in;

endmodule

在这里插入图片描述

clk_en一开始与clk_in为异步关系,直接与操作的话可能导致某些clk输出时钟周期不完整,例如导致clk_1时钟出错。当采用同步之后的enb信号之后,输出的clk_2的每一个时钟周期都是完整的时钟。

易错点:采用上述方法一般会在时钟之间引入延时,ASIC设计时Synopsys会考虑这一延时作相应优化。

当FPGA设计时直接用逻辑如此设计时,存在仿真与上板结果不一致的可能,一种是利用内置clk_gate原语解决,或者直接采用pass through的方法clk_out=clk_in。

参考文档

【1】https://github.com/Lichee-Pi/Tang_E203_Mini/blob/master/src/e203_clkgate.v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paul安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值