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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 15032|回复: 22

问verilog:阻塞和非阻塞赋值的顺序问题?

[复制链接]
发表于 2003-8-7 09:44:14 | 显示全部楼层 |阅读模式

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

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

x
假如有两个always块a,b,其敏感信号一样
在a中使用非阻塞赋值"<="
在b中使用阻塞赋值"="
那么每次敏感信号来后,是不是总是b块中赋值语句先执行,然后才是a中的赋值语句执行

就比如下面的程序段:
always(posedge clock)
begin
.....
i<=i+1;
......
end
always(posedge clock)
begin
......
case(i)
0:a=i;
1:a=i+1;
...
endcase
end
假如clock上升沿来前,i是0,那么进入always块后,在第2个块里的case语句中判断时
i是1还是0?仿真看来是i=0
是不是同样敏感信号下,always块中阻塞赋值和非阻塞赋值同时存在时,都是阻塞赋值先执行完,再轮到非阻塞赋值?(时序如果不是这样,我又得改程序了)
刚开始接触veilog,实在太菜,这个问题总是不明白,希望谁能详细解释一下,谢谢了
发表于 2003-8-7 10:44:01 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

这个问题是比较蹊跷,其实呢你知道基本意思就可以了,只要在时序快里就用<=
其实在这两个模块里用〈= 还是 = 的结果都是一样的。
发表于 2003-8-7 11:05:45 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

在第二个always块里,i的值是没有改变之前的,这与赋值形式没有关系。可以这样,你把第二个always块里的=换成<=,然后把两个always块合到一起,就明白了。
发表于 2003-8-7 11:25:40 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

其实只要遵循这样的原则:时序电路用<=,组合电路用=
就对了.
 楼主| 发表于 2003-8-7 13:05:57 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

thanks!
发表于 2003-8-7 15:14:58 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

两个always是并行还是顺序执行?
 楼主| 发表于 2003-8-7 15:40:02 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

并行啊,always块都是并行执行吧
发表于 2003-8-8 10:34:01 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

因为两个always块是并行(同时)执行的,所以用什么赋值方法都一样.但是在同一个always块中就不一样,=会立即执行(下一行就可以用),而<=要等到所有右边的计算完成后,才赋值.
发表于 2003-8-18 11:19:58 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

对实践来说,时序用《=,组合用=,不必讨论语法问题
发表于 2003-8-18 13:08:15 | 显示全部楼层

问verilog:阻塞和非阻塞赋值的顺序问题?

同意
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-20 21:36 , Processed in 0.040415 second(s), 9 queries , Gzip On, Redis On.

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