2017-02-21 10 views
0

私はVerilogを多少新しくしています。だからこの質問は非常に簡単かもしれません。 私はVerilogを使って有限状態機械をシミュレートしようとしています。 簡単な説明: 三つの状態があります:0,1 & 2.デフォルトでは、状態は、入力が入力10 状態である場合にのみ、2〜01 状態の変化である場合にのみ1を0 状態変化であります入力が00の場合のみ0に戻ります。 コードは正常にシミュレートされていますが、出力が得られません。問題を手伝ってください。エラーフリーのVerilogコードのシミュレーション出力が得られません

コード:(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 

テストベンチ:(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 
+0

ANSIとANSI以外のヘッダースタイルが混在しているため、コンパイラの警告が表示されます。 ANSIスタイルでは、ネットと変数をportと同じ名前で再宣言するべきではありません。 'output [3:0]'を 'output reg [3:0]'に変更し、 'State'の' wire'と 'reg'宣言を削除してANSIヘッダスタイルに準拠させてください。 'state'はまた、ブロックしていない代入(' <= ')、代入をブロックする(' = ')で割り当てられるべきです。 – Greg

答えて

0

私はあなたの代わりにStateTestBench.vのstate.vをシミュレートすると思います。あなたのテストベンチにはバグがあるので!出力し、状態はワイヤでなければなりません。

+0

ありがとう!これは私の問題を解決しました。 –

関連する問題