微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于clock gate的替换问题!

关于clock gate的替换问题!

时间:10-02 整理:3721RD 点击:
clock gate由于在低功耗方面的优势在asic中很常见,但是在fpga中应该不好用吧?
我这几天在验证代码的时候,发现里面很多的clcok gate,代码是大体这样的:
module (clk_in,en,clk_out);
input    clk_in,en;
output  clk_out ;
reg en_reg;
always @(clk_in,en)  
  if(~clk_in)en_reg 《= en;  // latch;
assign clk_out = en_reg & clk_in;
endmoudle
这个gate在代码中用了很多,我的时序仿真信号基本全是X,问题应该是处在这个gate上,但是这个gate怎么换呢?
有个朋友告诉我去掉latch就可以,但是去掉之后行为仿真都不对了,所以应该不能这样换的!
我把锁存器换成触发器 :
always @(negedge clk_in)  
   en_reg 《= en;  ff;
行为仿真倒是对的,可是时序仿真好像错了,不知道该怎么办了,请大家指教!
这个必须换吗?该怎么换呢?
先谢了!

换成这个是必须的:(门控时钟必须是低通)
always @(negedge clk_in)  
   en_reg 《= en;  ff;

但为啥没有复位端呢?
时序错是指什么?把错误报出来看看,把复位端加上再试试

fpga中没用过,学习

二楼的兄弟,谢谢你的回复!
这个有必要加复位端吗?因为信号变化已经一样了 啊?
加复位端该加哪个信号啊?谢谢!
时序错误指的是布局布线后仿真的结果和功能仿真的完全不一样!

后来如何解决的?

Altera FPGA里clock gate用set_net_delay加四条约束就好了,毫无压力。

没有看到代码有什么问题
不过我很关心“我的时序仿真信号基本全是X,问题应该是处在这个gate上” 你的这个结论是怎么得出的?

如果是FPGA原型验证,你直接assign就好。因为fpga只是function验证,

en_reg这个信号在rst的时候初始化一下试试;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top