module mux31_2(inp0,inp1,inp2,sel0,sel1, outres);
input inp0, inp1, inp2, sel0, sel1;
output outres;
assign outres = sel1 ? inp2 : (sel0 ? inp1 : inp0);
endmodule
always @(posedge clk or posedge reset)
if (reset)
X1 = 0; // reset
else
X1 = X2;
always @(posedge clk or posedge reset)
if (reset)
X2 = 1;// set
else
X2 = X1;
verilog仿真器并不能保证always块的执行顺序,在上面的代码中,由于使用了阻塞赋值,因此会导致竞争现象。如果我们使用不同的仿真器,always块的执行顺序不同可能会导致不同的结果。推荐使用非阻塞赋值。
你答对了吗
欢迎在留言区给出你的答案,正确答案将在下一期公布,或者到下面的文章获取答案
END