verilog 一个assign的简单问题

问题描述:

verilog 一个assign的简单问题
在4位超前进位加法器的程序里面,有这么一段句子
assign c[0] = (p[0] & ci) | g[0];
assign c[1] = (p[1] & c[0]) | g[1];
assign c[2] = (p[2] & c[1]) | g[2];
这几个assign不是并行执行的吗?那第二,第三个式子中用到了c[0],c[1]不都是按顺序前面执行过的结果再运算吗?这个地方不太懂.
如果换成
1个回答 分类:数学 2014-12-15

问题解答:

我来补答
都是并行的没有错,但是assign是阻塞赋值,“阻塞”即是在当前的赋值完成之前阻塞其他赋值任务,当然有延时语句除外.所以c[0]先赋值,c[0]的值发生变化,激励c[1]变化,c[1]变化触发c[2]变化,所以结果就跟顺序执行的结果一样.
如果换成
 
 
展开全文阅读
剩余:2000