Menu
Coddy logo textTech

現在のウィンドウをクリアする

CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 33/38。

challenge icon

チャレンジ

難しい

5つのステップにわたって1つのSample Monitorを構築します。rstの後、enの前に優先度を持つ同期clearを追加します。clearは、そのエッジでen=1の場合でもデータを受け付けずにtotalをリセットします。リセットとイネーブルの動作は維持してください。テストベンチや以前の出力動作を含め、前のステップまでの内容をすべて維持してください。すべての入力値は既知です。各シナリオは最大40エッジであるため、totalは16ビットに収まります。固定テストベンチは、シナリオ1~9ではtotalを、シナリオ10~12ではtotalとcountを、シナリオ13~15ではtotal、count、alarmを出力します。このステップで有効になっているシナリオのみが採点対象です。

design.vを完成させ、モジュール名とポートを保持してください。ロックされたtestbench.vは入力を変更し、値が安定した後に出力を表示します。+CASE=1のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。designに出力、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに10進値を1行にまとめたもので、値は1つのスペースで区切り、改行で終わります。

自分で試してみよう

module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
    always @(posedge clk)begin
        if(rst)total<=0;else if(en)total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

RTL設計と検証のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ