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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4163|回复: 7

[求助] sv中两种延时区别:a<=#10 b 和#10 a <=b;

[复制链接]
发表于 2016-12-16 15:17:28 | 显示全部楼层 |阅读模式

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

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

x
always @ *  begin  a <= #10 b; end
always @ *  begin  #10 a <= b; end
第一种可以正确延时,第二种就比较诡异了,求指教到底啥区别呢
发表于 2016-12-16 16:33:16 | 显示全部楼层
假如B当前值变为1,  5个时间单位后变为2.
第一种:将B的值(1)10个时钟单位后赋给A;
第二种:10个时间单位后将B的值(2)赋给A;

总结:第一种是将B的当前值延迟10个时间单位后赋给A;第二种是延迟10个时间单位后B的值赋给A;
 楼主| 发表于 2016-12-16 17:15:01 | 显示全部楼层
回复 2# icemanlv


第二种按理解是这样的,可是仿真结果不太一样啊。。。
发表于 2016-12-19 20:11:49 | 显示全部楼层
从实际芯片设计的案例来看,第二种的写法意义不大,而且很容易引起仿真的奇怪问题
发表于 2016-12-22 06:45:52 | 显示全部楼层
本帖最后由 RichKoala 于 2016-12-25 12:42 编辑

always @ *  begin  b1 <= #10 a; end
第一种是真实的延迟处理,直接将信号a延迟10赋值给信号b1

第二种是可以按照以下代码理解:延迟10时间单位后,将a当前时刻信号值赋值信号b2
always @ *
begin
  #10;
b2 <= a;
end

示意图

示意图
发表于 2016-12-24 19:51:10 | 显示全部楼层
回复 1# zgl5566

如果b的默认值为0      b在5ns时变为1
      b在6ns时变为2
      b在7ns时变为3
则:a<=#10 b                                                        #10 a <=b
       a在15ns时变为1                                                   a在15ns时采集b的值即3
       a在16ns时变为2                                                   a一直保持3
       a在16ns时变为3
发表于 2016-12-26 09:21:10 | 显示全部楼层
前面已经说的很明白,同一2l,5l
发表于 2016-12-28 18:10:45 | 显示全部楼层
回复 1# zgl5566

1)描述传输延迟,可以理解为信号在路径上传输花费时间到达目的;
2)描述惯性延迟,可以理解为信号延迟一段时间开始传输,下于这个时间的毛刺都会被吸收掉;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-9-22 01:20 , Processed in 0.020784 second(s), 8 queries , Gzip On, Redis On.

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