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

时间:2013-07-02 05:56:20

标签: verilog

我的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

1 个答案:

答案 0 :(得分: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 。然后日志文件将包含以下内容:

$dumpfile("dump.vcd"); $dumpvars;

更新:波形转储

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

如果您使用其他工具生成波形,请参阅手册。在推动刺激之前需要调用系统任务的可能性的97%,就像$monitor.和{{1}}

一样