输出在2x4解码器测试平台中不会持续变化

问题描述 投票:-1回答:1

我的2x4解码器代码:

`timescale 1ns/100ps
module decoder(in,out);
   input [1:0]in;
    output [3:0]out;
    reg [3:0]out;
always@(in)
    begin

            case(in)
                2'b00:out = 4'b0001;
                2'b01:out = 4'b0010;
                2'b10:out = 4'b0100;
                2'b11:out = 4'b1000;


                default:out = 4'b1111;
        endcase


        end
    endmodule

// **我已经编写了2x4解码器和测试平台的行为代码。我在输出中看到的只是它向我显示输出为11 ...即0011.我希望看到输出随着输入的变化而不断变化。

can any body show my mistake ??**

一段代码//

 `timescale 1ns / 100ps


        module decoder_t;

          reg [1:0]in;
          wire [3:0] out;



    decoder decoder1 ( .in(in),.out(out) );

    initial 
       begin

    #10 in=2'b00;
    #10 in=2'b01;
    #10 in=2'b10;
    #10 in=2'b11;


    #10 $stop;

       end

    endmodule
verilog
1个回答
2
投票

Verilog按预期运行。最好的猜测是用户在in观察out$stop的值而不是之前。我的建议是添加一个$monitor语句来报告值的变化。

例如,在测试台上的$monitor("%t: in:%b out:%b", $realtime, in, out);之前添加#10 in=2'b00;。然后日志文件将包含以下内容:

     0: in:xx out:xxxx
   100: in:00 out:0001
   200: in:01 out:0010
   300: in:10 out:0100
   400: in:11 out:1000

更新:波形转储

假设您正在转储到所有版本的IEEE Std 1364和IEEE Std 1800中定义的标准值更改转储(VCD)文件。在驱动刺激之前添加$dumpfile("dump.vcd"); $dumpvars;(即在#10 in=2'b00;之前)。有关所有IEEE Std 1800-2012 (available for free from IEEE)系统任务的使用,请参阅IEEE Std 1364-1995第15节(第18节,更新版本的IEEE 1364)或$dump*第21.7节。

如果您使用其他工具生成波形,请参阅手册。在驱动刺激之前需要调用系统任务的几率为97%,就像$dumpvars$monitor.一样

© www.soinside.com 2019 - 2024. All rights reserved.