case(din)
2'b00: dout <= 2'b00;
2'b01: dout <= 2'b01;
default: dout <= 2'b11;
endcase
在always@(posedge clk)块中,当din为2'bxx时,dout输出值为2'b11。如图:


注意:modelsim仿真在最开始处,rst_n有一个下降沿(rst_n初值为0)或上升沿(若rst_n初值为1)。
当din为2‘bzz时,dout输出值为2’b11。如图:

在always@(*)块中,当din为2'bxx时,dout输出值为2'bxx。如图:

当din为2‘bzz时,dout输出值为2‘b11。如图:

因而,在always@(*)块中,dout最好初始化。
dout = 2'b11;
case(din)
2'b00: dout = 2'b00;
2'b01: dout = 2'b01;
default: dout = 2'b11;
endcase
以上均为modelsim功能仿真结果,上板子之后的结果没有试过。
补充:如果没有default:则dout输出值为2'bxx,不管是在always@(posedge clk)块中还是在always@(*)块中。
本文详细解析了Verilog HDL中case语句的使用,特别是在always块中的行为,以及在ModelSim环境下进行功能仿真的结果展示。重点讨论了在不同条件下dout信号的输出变化,强调了初始化在always@(*)块中的重要性。
1万+

被折叠的 条评论
为什么被折叠?



