デコーダ

この記事はセルオートマトンによるCPU作成連載記事の9本目です。(2022/12/20)

7セグメントディスプレイを作り、2進数を10進数に変換する仕組みも理解したので、任意の2進数をディスプレイに表示したいのですが、まだ必要な回路がありますのでこれから準備していきます。まずはデコーダです。

デコーダとは、2進数の数値を入力信号として、その数値に対応する出力をする回路です。例えばこんな動きをする回路です。

左の回路はカウンタで、0から15を順番に出力しています。右の回路がデコーダです。4ビットの入力信号を左から受け入れ、下方向に16本のいずれかを出力します。

応用です。次の例では入力が3の倍数(0, 3, 6, 9, 12, 15)のときにのみOnを出力し、それ以外はOffとなる回路です。たまにゴミが出てきますが、これは許容することにします。

CPUの中では入力が特定のパターンのときにだけ出力するという回路が多く必要で、このように格子状の回路がたくさんできます。

次は出力が2つあるパターンです。Fizz Buzz問題です。入力が3の倍数と5の倍数のときに出力をします。

これをソフトウェアで実装すると

if (x % 3 == 0) {
  ...;
} else if (x % 5 == 0) {
  ...;
}

のようなコードになり、剰余計算が必要になりますが、ビット数が限られていればこのようにハードウェアで実装されていると処理が速いです。

連載目次に戻る