1

私は Verilog の世界に本当に慣れていないので、なぜ私のプログラムが何も返さないのか理解できません。ボタンの押下をカウントする単純な 6 ビット アップ カウンターを作成しようとしています。コードは

module top (CLK, BTN_RST, LED, BTN_C);
    input CLK, BTN_RST, BTN_C; //
    output [5:0]LED;
    reg [5:0]LED;
    always @(posedge CLK or posedge BTN_RST) begin
         if (BTN_RST) begin
              LED <= 6'b000000;
           end
         else begin: COUNT           
              while (BTN_C) begin
                    LED <= LED + 1'b1;
                    disable COUNT;
              end
            end
    end
endmodule

そしてテストベンチは

module top_test;
    reg CLK;
    reg BTN_RST;
    reg BTN_C;
    reg [5:0]LED;

    initial begin
        CLK = 0;
        BTN_RST = 0;
        BTN_C = 0;
        #1 BTN_RST = 1;
        #5 BTN_RST = 0;
        #10 BTN_C = 1;
        #50;
    end

    always
    begin
    #5 CLK=~CLK;
    end

このコードは (iSim で確認できるように) コンパイルして実行しますが、LED 出力は XXXXXX です。ここでいくつかの間違いがあるだけでなく、テスト ベンチがどのように機能するか、入力と出力で正しい割り当てを行う方法も理解できていないと思います。誰でも私を助けてもらえますか?

4

1 に答える 1

3

テストベンチにデザインのインスタンスを追加する必要があります。現在、LED は X ではありません。0からカウントアップしているのがわかります。

module top_test;
    reg CLK;
    reg BTN_RST;
    reg BTN_C;
    wire [5:0]LED;

    initial begin
        CLK = 0;
        BTN_RST = 0;
        BTN_C = 0;
        #1 BTN_RST = 1;
        #5 BTN_RST = 0;
        #10 BTN_C = 1;
        #50;
    end

    always
    begin
    #5 CLK=~CLK;
    end

top dut (
        // Inputs:
    .BTN_C    (BTN_C),
    .BTN_RST  (BTN_RST),
    .CLK      (CLK),
        // Outputs:
    .LED      (LED)
);

endmodule

top_test で reg を LED のワイヤに変更しました。VCS をシミュレータとして使用すると、LED が 0 から増えていきます。しかし、Incisive に切り替えると、LED は 0 のままです。

while/disable コードが問題を引き起こしていると思います。もう少し標準的に見えるように再コーディングしました。

module top (CLK, BTN_RST, LED, BTN_C);
    input CLK, BTN_RST, BTN_C; //
    output [5:0]LED;
    reg [5:0]LED;
    always @(posedge CLK or posedge BTN_RST) begin
        if (BTN_RST) begin
            LED <= 6'b000000;
        end else if (BTN_C) begin           
            LED <= LED + 1'b1;
        end
    end
endmodule
于 2014-11-07T13:20:02.487 に答える