Menu
Coddy logo textTech

有効なサンプルを受け入れる

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

challenge icon

チャレンジ

難しい

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

design.v を完成させ、モジュール名とポートを維持してください。ロックされた testbench.v は入力を変更し、値が安定した後に出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。設計に表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに 1 行の 10 進値で、値同士は 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 total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

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

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