没有获得无错误的verilog代码的模拟输出

时间:2017-02-21 18:46:40

标签: verilog

我对verilog有点新鲜。所以这个问题可能很简单。 我试图使用verilog来模拟有限状态机。 简要描述;简介: 有三种状态:0,1& 2.默认情况下,State为0。 仅当输入为01时,状态才会变为1。 仅当输入为10时,状态才变为2。 仅当输入为00时,状态才会变回0。 代码正在成功模拟,但我没有得到输出。请帮我解决这个问题。

代码:(State.v)

module State(
    input clk,
    input reset,
     input [3:0] in,
     output [3:0] out,
     output [3:0] state
    );

     wire clk,reset;
     wire [3:0] in;
     reg [3:0] out;
     reg [3:0] state;

     always @(posedge clk or posedge reset)
      begin
      if (reset == 1)
        begin
            state = 0;
        end
      else 
        begin
            case (state)
                0: if(in == 2'b01)
                         state = 1;
                        else
                         state = 0;
                1: if(in == 2'b10) 
                        state = 2;
                      else
                       state = 1;
                2: if(in == 2'b00)
                        state = 0;
                      else
                       state = 2;
                default: state = 0;     
            endcase 
        end 
     end    

     always @(*)
        begin
            case (state)
                0: out = 2'b00;
                1: out = 2'b01;
                2: out = 2'b10;
                default: out = 2'b00;
            endcase     
        end     

endmodule

Testbench:(StateTestBench.v)

module StateTestBench;

    // Inputs
    reg clk;
    reg reset;
    reg [3:0] in;

    // Outputs
    reg [3:0] out;
    reg [3:0] state;

    always
        begin
            #1 clk = !clk;
        end 

    // Instantiate the Unit Under Test (UUT)
    State uut (
        .clk(clk), 
        .reset(reset), 
        .in(in),
        .out(out),
        .state(state) 
    );

    initial begin
        // Initialize Inputs
        clk = 0;
        reset = 0;

        #1 reset = 1;
        #10 reset = 0;
        #5 in = 2'b00;
        #10 in = 2'b01;
        #10 in = 2'b10;



    end

endmodule

1 个答案:

答案 0 :(得分:0)

我猜你模拟state.v而不是StateTestBench.v。因为你的测试平台有bug!输出和状态必须是电线。