上期答案
[166] 编写verilog模块,使用“?:”运算符实现3:1mux
代码语言:javascript复制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
[167] 用下列两段代码进行建模,这两种代码风格有什么问题?
代码语言:javascript复制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块的执行顺序不同可能会导致不同的结果。推荐使用非阻塞赋值。
你答对了吗
本期题目
[168] 同步复位和异步复位之间有什么区别?如何使用verilog进行同步复位和异步复位建模?
[169] “==”和“===”有什么区别?
欢迎在留言区给出你的答案,正确答案将在下一期公布,或者到下面的文章获取答案
END