在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6416|回复: 6

[求助] 在FPGA设计的时候添加门控时钟总是会有hold time违例

[复制链接]
发表于 2011-10-20 09:54:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我的门控时钟是基于latch的。在写RTL级代码的时候如下
always @ (en_start or clk)
begin
   if (~clk)
      ENC = en_start;
end
assign clk_gated = ENC&clk;

QQ截图未命名.jpg


请问各位一般做门控时钟的时候怎么做呢?
发表于 2011-10-20 10:08:30 | 显示全部楼层
一般都是做ASIC的时候再dc中用工具自动插入门控时钟的,像你上面这种搭电路的方法不可靠,
插入门控代码一般这样写:
always@(posedge clk or negedge rst_n)
begin
     if(!rst_n) D_out <= 1'b0;
    else if(EN) D_out <= D_in;
end
在dc中设置一些命令就可以插入你图上所示的门控时钟结构了,FPGA中DFF资源比较多,一般都不建议用latch了,如果fpga中也能有上图的单元结构的话,倒是可以用的,fpga中如果处理门控,还请高人帮助了哦
发表于 2011-10-20 11:01:16 | 显示全部楼层
你的时钟路径延时比数据大,自然会有问题。

FPGA中不要自己手工写门控时钟,有专门的例化可以调用,而且,尽量用使能。

你这样写门控时钟,时序分析都没法弄。
发表于 2011-10-20 11:17:35 | 显示全部楼层
在FPGA中最好不用门控时钟,可以尝试改成使能控制,使得整个设计都是同一个时钟下的同步设计,如下:
always @ (en_start or clk)
begin
   if (~clk)
      ENC = en_start;
end

always @(posedge clk or negedge reset_n) begin
  if(~reset_n)
     ~~~~
  else if(ENC)
    ~~~~
end
发表于 2017-6-5 13:23:48 | 显示全部楼层
设计中必须要门控又怎么处理,求答案
发表于 2017-6-6 08:35:24 | 显示全部楼层
发表于 2017-6-7 08:10:42 | 显示全部楼层

                               
登录/注册后可看大图

如果依照上述的圖來寫RTL Code的話,如下所示:
// RTL Code
module gate_clk_dff(
input
[1:0]
D_in,
output
reg [1:0]
D_out,
input
CLK,
input
EN);

reg
en_lat;
always@(CLK)
begin
     if(~CLK)
            en_lat <= #1 EN;
     else
            en_lat <= #1 en_lat;
end

assign GCLK = CLK && en_lat;

always@(posedge GCLK)
begin
      D_out <= #1 D_in;
end
endmodule

// TestBench
module tb_gate_clk_dff();
reg
[1:0]
D_in;
reg
EN;
reg
CLK;
wire
[1:0] D_out;
always

begin

#10 CLK <= 1'b1;

#10 CLK <= 1'b0;

end


gate_clk_dff gate_clk_dff(

.D_in (D_in),

.D_out(D_out),

.CLK
(CLK),

.EN
(EN)

);


initial

begin

CLK = 1'b0;

EN = 1'b0;

D_in = 2'b10;

repeat(2) @(posedge CLK);

@(negedge CLK);

EN = 1'b1;

repeat(3) @(posedge CLK);

$stop;

end


endmodule


至於會有hold time的問題應該是你用Gate Clock,所以軟體在算Timing 的時候會比較不好算.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-26 21:55 , Processed in 0.173608 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表