デコーダー設計
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 85/90。
チャレンジ
decoderは、2進数を入力として受け取り、その数値に基づいて1つの出力のみをハイ(1)にします。1つのビットだけがホット(1)で、それ以外のすべてのビットがコールド(0)になるため、この出力は「ワンホット」と呼ばれます。
真理値表 (2-to-4 デコーダ)
| 入力 (in) | out0 | out1 | out2 | out3 |
|---|---|---|---|---|
| 00 | 1 | 0 | 0 | 0 |
| 01 | 0 | 1 | 0 | 0 |
| 10 | 0 | 0 | 1 | 0 |
| 11 | 0 | 0 | 0 | 1 |
モジュールインターフェース
| ポート | 方向 | ビット幅 | 説明 |
|---|---|---|---|
in | input | 2 bits | 2進数入力 (0〜3) |
out0 | output | 1 bit | in = 00 のときにアクティブ |
out1 | output | 1 bit | in = 01 のときにアクティブ |
out2 | output | 1 bit | in = 10 のときにアクティブ |
out3 | output | 1 bit | in = 11 のときにアクティブ |
あなたのタスクは、case 文を使用して以下のモジュールを完成させることです。
行うこと:
in = 2'b00のとき、out0 = 1、その他は 0in = 2'b01のとき、out1 = 1、その他は 0in = 2'b10のとき、out2 = 1、その他は 0in = 2'b11のとき、out3 = 1、その他は 0
自分で試してみよう
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: always @(*) ブロックと case (in) を追加
// 2'b00: out0=1, 他は0
// 2'b01: out1=1, 他は0
// 2'b10: out2=1, 他は0
// 2'b11: out3=1, 他は0
endmodule