初学者读夏宇闻老师书上一个问题,是关于阻塞赋值和非.....

2019-07-16 01:11发布

阻塞赋值操作符用等号(即 = )表示。为什么称这种赋值为阻塞赋值呢?这是因为在赋值时先计算等号
右手方向(RHS)部分的值,这时赋值语句不允许任何别的 Verilog 语句的干扰,直到现行的赋值完成时
刻,即把 RHS 赋值给 LHS 的时刻,它才允许别的赋值语句的执行。
非阻塞赋值操作符用小于等于号 (即 <= )表示。为什么称这种赋值为非阻塞赋值?这是因为在赋值操作
时刻开始时计算非阻塞赋值符的 RHS 表达式,赋值操作时刻结束时更新 LHS。
这两句话读过来读过去还是同一句话么,计算RHS表达式,然后赋值么。谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
fafactx
1楼-- · 2019-07-16 02:56
一个立即赋值类似物理连线,一个经过时钟打拍,类似时钟同步后输出。。。
fantasy1989
2楼-- · 2019-07-16 05:02
你应该看一看例子:
always@(posedge clk)
begin
b=a;
c=b;
end

always@(posedge clk)
begin
b<=a;
c<=b;
end
这两句的不同。
前一个,所谓阻塞,是指b=a这个赋值完成之前,后面的c=b语句是不执行的,所以这个always块把a的现值传给b,b又传给了c,相当于把a赋给c;
后一个,这两个赋值没有前后,他把a的现值赋给b;b把自己当前值赋给c,所以没有把a的现值传给c;
你画一下电路图,或者综合后看一下电路,可以看出其中的区别。
tweb
3楼-- · 2019-07-16 07:25
楼上例子解析得不错!~
lirenkang
4楼-- · 2019-07-16 10:51
 精彩回答 2  元偷偷看……

一周热门 更多>