【日更计划081】数字IC基础题【HDL部分】

2021-03-16 15:29:48 浏览数 (1)

上期答案

[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

0 人点赞