11 / 63 · 概念
デコーダ・ワンホット選択・有効な入力
二進アドレスを個別の選択線に変換し、enable・範囲・選択の不変条件を設計します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
アドレスを選択線に変換する
ビットのデコーダデコーダ 二進コードに対応する出力線を有効にする回路です。enable があれば、無効時にすべての出力を 0 にできます。は、入力アドレスを最大 本の出力の一つへ変換します。enable を持つ出力 は、次のように定義できます。
2-to-4 デコーダでは、、、、 です。enable が 0 なら全出力が 0、1 ならちょうど一つだけが 1 です。
enable=1 でアドレス a1a0 を変えると、d0~d3 の一つだけが有効になります。enable を 0 にし、すべての選択線が無効になることも確認してください。
d[i] = enable AND (2 × a1 + a0 = i)
デフォルト値で全実行経路の出力を定めます
module decoder2 (
input logic en,
input logic [1:0] addr,
output logic [3:0] select
);
always_comb begin
select = 4'b0000;
if (en) begin
case (addr)
2'd0: select = 4'b0001;
2'd1: select = 4'b0010;
2'd2: select = 4'b0100;
2'd3: select = 4'b1000;
default: select = 4'b0000;
endcase
end
end
endmodule最初のデフォルト代入は、前の出力値を記憶しないよう全実行経路を覆います。always_comb と記述するだけで、未定義の分岐が自動的に正しい回路になるわけではありません。
出力数が 2 の累乗でない場合
10 台の装置を選ぶには 4 ビットのアドレスが必要ですが、10~15 は無効です。この場合、全出力 0、エラーフラグ 1 といった方針を仕様で定めます。未使用コードだからといって、任意の出力が許されるわけではありません。
検証では入力と出力の対応だけでなく、複数の選択線が同時に有効にならないか、disable ならすべて無効かを検査します。これらの不変条件不変条件 許可されたすべての実行で、常に真でなければならない条件です。例えば深さ 4 の FIFO の格納数は常に 0 以上 4 以下です。 詳しく見るは、メモリの write enable やバス選択回路で特に重要です。デコーダが大きくなるほどアドレス信号のファンアウトと配線負荷も増えるため、階層的なデコードを考慮します。
自分で考えてみましょう
10 出力のアドレスデコーダを設計します。必要なアドレス幅、無効な入力の数、en=0 で必ず満たす条件を定めてください。
解説を見る
アドレスは ビットで、無効なコードは 6 個です。en=0 ではアドレスに関係なく全選択線が 0 でなければなりません。無効なアドレスでも全出力を 0 にし、別のエラーを示す仕様を選べます。