作业帮 > 综合 > 作业

verilog语句中的always语句执行顺序问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/06 00:55:43
verilog语句中的always语句执行顺序问题
如果always语句块中的某个if语句中begin-end之间有两个或者两个以上的语句,那这些语句是顺序执行还是并行执行呢?
例如:
always @(posedge clk or negedge rst_n)
begin
if(clk_bps)
begin
num
举个例子当num==2,clk上升沿来了num要变成新值3,但是这个3要等到下一个clk上升沿到来才能赋给num,当前clk上升沿num值仍然保持为2,所以case中的判定条件num取值是加1前的!
再问: 有个问题需要探讨下: 我觉得是这样的:以你的例子为例,当num==2,clk上升沿来了num值加1变成新值3,但由于使用了非阻塞赋值语句,所以num加1语句和case块语句成为并行执行,故case(num)中的num的值还是加1前的值2;而这个clk上升沿结束后num值已经加1变成3了,即下一个clk上升沿到来之前寄存器num锁存值3,因为当下一个clk上升沿到来时,电路立刻对num值进行操作了。您看看是不是有问题~
再答: 我认为没问题!