这是模块:
module test (output reg [7:0] Q_out, input [2:0] data_in);
always
begin
case (data_in)
3'b000: Q_out = 8'b10000000;
3'b001: Q_out = 8'b01000000;
3'b010: Q_out = 8'b00100000;
3'b011: Q_out = 8'b00010000;
3'b100: Q_out = 8'b00001000;
3'b101: Q_out = 8'b00000100;
3'b110: Q_out = 8'b00000010;
3'b111: Q_out = 8'b00000001;
endcase
end
endmodule
这是测试台
module test2();
reg [2:0]data_in;
wire [7:0] Q_out;
test uut (.data_in(data_in), .Q_out(Q_out));
initial begin
data_in=000;
#5;
data_in=001;
#5;
data_in=010;
#5;
data_in=011;
#5;
data_in=100;
#5;
data_in=101;
#5;
data_in=110;
#5;
data_in=111;
#5;
end
endmodule
在我进入模拟部分之前,一切似乎都有效。
然后,在我尝试模拟它之后,波形中没有真正显示出来。可能是什么问题呢?
test
您在模块中有一个无限循环。改变:
always
到:
always @*
由于您的模块没有延迟always
,因此它会在时间 0 处一直触发,并且时间不会在模拟中提前。通过添加敏感度列表 ( ),该模块仅在其任何输入 ( ) 更改状态@*
时触发。data_in
你也可以使用always_comb
. 请参阅 IEEE Std 1800-2017,第 9.2.2.2.2 节always_comb 与 always @ *的比较
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句