Altifigence Academy

13 / 63 · 概念

DEMUX とデコーダ:選択した経路へデータを送る

MUX・DEMUX・デコーダの方向と役割を比較し、ワンホット・ワンホットまたはゼロの条件を検証します。

MUX は集め、DEMUX は分配します

MUXマルチプレクサ 選択信号に従い、複数の入力から一つを出力に接続する組合せ回路です。選択ビットと入力番号の対応を仕様で定めます。 詳しく見る は複数のデータ入力から一つを出力へ伝えます。DEMUXDEMUX 一つの入力データを、選択信号で指定した出力に送る回路です。選択されない出力の値も仕様で定めます。 は一つのデータ入力 d を選択した出力へ伝え、その他の出力を 0 にします。1-to-4 DEMUX の選択アドレスを s1s0s_1s_0 とすると、

y0=ds1‾s0‾,y1=ds1‾s0,y2=ds1s0‾,y3=ds1s0y_0=d\overline{s_1}\overline{s_0},\quad y_1=d\overline{s_1}s_0,\quad y_2=ds_1\overline{s_0},\quad y_3=ds_1s_0

enable 付きデコーダで同じ機能を見る

下の図では a1・a0 を選択アドレス、enable をデータ d として読んでください。出力名 d0~d3 は上式の y0~y3 に対応します。同じ組合せ関数でも、用途により異なる名前で呼ばれます。

enable をデータ入力と読むと DEMUX

d[i] = enable AND (2 × a1 + a0 = i)

アドレスが 10、データが 1 なら y2 だけが 1 です。データが 0 なら、選択された出力も含めてすべて 0 です。したがって、常にちょうど一つが 1 というワンホットワンホット 複数ビットのうち、ちょうど一つだけが 1 の表現です。全ビット 0 も許す条件は one-hot-or-zero と区別します。 詳しく見る条件は誤りで、すべての動作を表すには、「最大一つが 1」の one-hot-or-zero 条件が適切です。

選択線と実際の書込みイベントを区別する

四つのレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るの一つに書くとき、write_en を d、アドレスを選択に使えます。ただしデコーダデコーダ 二進コードに対応する出力線を有効にする回路です。enable があれば、無効時にすべての出力を 0 にできます。 詳しく見る自身は値を記憶しません。実際のレジスタはクロックエッジで対応する write enable とデータを受け取り、記憶します。組合せの選択線が変わっても、保存値が直ちに変わるわけではありません。

選択と記憶は二つの段階
  1. アドレス + write_en: どこへ書くか、書くかどうかを定義
  2. デコーダ: 選択した一つのレジスタの enable を生成
  3. クロックエッジ: 選択されたレジスタがデータを記憶

検証では選択出力の値だけでなく、他の出力がすべて 0 かも調べます。d=0 の四組と d=1 の四組を合わせて全 8 組です。この機能検査は、アドレス遷移中にグリッチがないことまで保証しません。

自分で考えてみましょう

選択アドレス s1s0=01 で、d=1 と d=0 の y3y2y1y0 を求めてください。四つのレジスタの enable が必ず一つだけ有効であるという検査は、いつ失敗しますか。

解説を見る

それぞれ 0010 と 0000 です。d または write_en が 0 なら、どの出力も有効にならないのが正常です。ちょうど一つという条件は d=1 のときだけ適用します。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。