Menu
Coddy logo textTech

優先エンコーダ

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

エンコーダはリクエストビットをインデックスにマッピングします。複数のアクティブなリクエストには、明示的な優先順位ルールが必要です。if/else-ifチェーンでは先にある分岐が優先され、個別のvalid信号によって、リクエストがない状態とインデックス0が区別されます。

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

if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;

最初の true の分岐が優先されるため、最も上位のリクエストビットが優先されます。

優先順位を示し、リクエストがない場合の出力を明確に定義してください。

challenge icon

チャレンジ

中級

4ビットの req で最も上位のアサートされたビットを code にエンコードします。リクエストが1つでも存在する場合は valid を設定し、req がゼロの場合は code と valid をゼロにします。出力列:code、valid。すべての刺激値は既知の2進値です。

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

REQUIRED OUTPUT FORMAT: [Your translated content here]

自分で試してみよう

module dut (input [3:0] req, output reg [1:0] code, output reg valid);
    // このプレースホルダーをあなたの設計に置き換えてください。
    initial code = 0;
    initial valid = 0;
endmodule
quiz icon腕試し

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

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

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