我对等待语句的确切含义感到困惑。
在这种情况下会发生什么:
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
Run Code Online (Sandbox Code Playgroud)
wait语句是否阻塞?是个
@(posedge vif.clk)
Run Code Online (Sandbox Code Playgroud)
每次在循环内执行,无论等待表达式的计算如何?
在这种情况下:
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
Run Code Online (Sandbox Code Playgroud)
#0 fact_log2_samp_t = vif.fact_log2_samp;
仅当 wait 表达式的计算结果为 true 时才执行wait() 之后的代码吗?
在这种情况下
forever begin
wait (vif.xn_valid == 1'b1);
@(posedge vif.clk);
end
Run Code Online (Sandbox Code Playgroud)
循环会阻塞,直到表达式(vif.xn_valid == 1'b1)为 true,然后阻塞,直到出现posedgeon vif.clk。
语句wait将阻塞,直到条件为真。如果条件已经为真,则立即继续执行。
在这种情况下:
forever begin
wait(vif.cyc_tic == 1'b1) @(posedge vif.clk) #0 fact_log2_samp_t = vif.fact_log2_samp;
end
Run Code Online (Sandbox Code Playgroud)
循环会阻塞,直到表达式(vif.cyc_tic == 1'b1)为 true,然后阻塞,直到出现posedgeon vif.clk。它等同于:
forever begin
wait(vif.cyc_tic == 1'b1);
@(posedge vif.clk);
#0 fact_log2_samp_t = vif.fact_log2_samp;
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47216 次 |
| 最近记录: |