Menu
Coddy logo textTech

条件付きGenerate

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

generate-if は、定数 parameter を使用してハードウェア構造を選択します。特定のインスタンスに対してエラボレーションされるブランチは 1 つだけです。手続き型の if や、シグナルを使用する条件式は実行時に動作を選択するものであり、generate による構成を置き換えるものではありません。

関連する抜粋です。周辺の宣言と接続は課題内で提供されています。

generate
    if(INVERT) begin: inverted
        assign y = ~a;
    end else begin: direct
        assign y = a;
    end
endgenerate

parameter によって、このインスタンス用にどのドライバーを構築するかが選択されます。

定数の設定にはgenerate-ifを使用し、実行時の制御には通常のRTL選択を使用します。

challenge icon

チャレンジ

中級

条件付きのgenerateを使用します:MODE=0 の場合は a をそのまま通し、MODE=1 の場合は a の 8 ビットすべてを反転します。入力 b は使用しません。MODE は 0 または 1 のいずれかです。テストベンチは両方の構成をインスタンス化し、y0、次に y1 を出力します。

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

自分で試してみよう

module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
    assign y=0;
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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

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