【发布时间】:2019-12-27 12:03:14
【问题描述】:
以下是verilog代码
我正在尝试了解始终块内语句的工作方式。
我知道在verilog中使用=和非阻塞使用
如果 if 语句(带有阻塞语句)出现在阻塞语句之间会发生什么?
always(@posedge clk)
begin
if(en1)
begin
out1=c; //statement 1
out2=c+1; //statement 2
if(out2>5)
begin
out3=out1+out2;//statement 3
end
else
out3=0;
out4=out1-out2;
end
end
“if 语句”被合成到多路复用器中。是否会使用上一条语句中更新的值1 ???要求是 - 输出应该是三个语句顺序执行的。
但是当这在硬件中实现时,'if' 的多路复用器将与其他加法器分开。所以我认为中间的 if 语句 3 将与语句 1 和 3 并行工作。
我检查了模拟,取的值是最新的值——即好像它是按顺序工作的。
我的问题是
1.在其他作业之间使用“if statements”是否正确。
还是我应该使用另一种编程方法。使用阻塞语句时它会顺序运行吗?
2.这是否会在所有条件下都按顺序工作?
【问题讨论】:
-
感谢您的指出,但是......这个问题很相似......但我的困惑是 if 块之间的放置是否会影响序列。
标签: verilog fpga hdl sequential