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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: 艾克0928

[求助] 关于数据更新时刻的问题

[复制链接]
 楼主| 发表于 2017-7-14 15:18:59 | 显示全部楼层
回复 10# gaurson
(⊙o⊙)哦,受教了。那么请问在我设计的时候,为了避免延时的不确定性造成的干扰,我ctrl的值最好是在clk的上升沿期间保持稳定是吧?即如7楼(#7)图中所示的,是吗?
发表于 2017-7-15 16:00:04 | 显示全部楼层
蓝色!讨论前提是ctrl是来自clk域下的信号,如果是异步信号,没啥好讨论的。
另外,所有DFF描述加一个delay,可以在RTL仿真时模拟实际电路的门延时,自己看着也方便。
always@(posedge clk or negedge rst)
     begin
          if(!rst)
               B <= 0;
          else if(ctrl)
                        B <= #DLY A;
       end

如果你都按上面来描述,ctrl的沿也不会跟clk重合混淆自己了
发表于 2017-7-16 16:08:31 | 显示全部楼层
楼上说的方法可以,但有些时候可能不能做到在上升沿保持稳定,因为有可能是同步时钟一直采样下来的。
发表于 2017-7-18 21:56:52 | 显示全部楼层
如果ctrl信号是同步信号,那正确的应该是蓝色。出现红色的情况有一种可能是因为你在testbench中对ctrl信号的产生用的赋值是非阻塞赋值"=",如果用阻塞赋值"<="就不会有类似的额问题
发表于 2017-7-19 10:57:27 | 显示全部楼层
本帖最后由 lxq124lxq 于 2017-7-19 11:02 编辑



楼上正解,其实只是一个简单的仿真问题。
如果testbench和dut使用同一个时钟clk,在testbench中这样写:@(posedge clk) ctrl=1'b1;,那么由于阻塞赋值立即使ctrl生效,在dut中就可以直接采样到ctrl变化后的值,就会出现红色的波形;
如果写成@(posedge clk) ctrl<=1'b1; 那么由于非阻塞赋值不能立即使ctrl生效,在dut中采样到的是ctrl变化前的值;
或者写成:@(posedge clk) #0 ctrl=1'b1; 在dut中采样到的是ctrl变化后的值。
发表于 2017-7-20 20:20:40 | 显示全部楼层
4#正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 15:33 , Processed in 0.019263 second(s), 7 queries , Gzip On, Redis On.

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