FE EXAM

デコーダ(解読回路)

符号化された入力ビットを解読し、対応する1本の出力線を有効にする回路。

INTERACTIVE VISUALIZATION
入力ビット
有効な出力線
フェーズ
idle
入力符号
有効な出力線
シナリオ
ステップ1 / 5
STEP 1/5まだ入力が与えられていないデコーダ(=解読回路)には2本の入力線 A1・A0 と、4本の出力線 Y0〜Y3 があります。今はどの出力も0の状態です。これから2ビットの符号を与えると、その値に対応する1本だけが1になります。
デコーダ2ビット → 4出力0A10A0Y00Y10Y20Y30
真理値表(2ビット → 4出力)
A1A0Y3Y2Y1Y0
000001
010010
100100
111000
解説

📌
デコーダとは

デコーダA1A0Y0Y1Y2Y3

デコーダ(解読回路)とは、符号化された入力ビットを解読し、対応する1本の出力線を有効にする回路です。たとえば2ビットの入力を受け取ると、その値が指す番号の出力線1本だけを1にします。

身近な例で考えると、マンションの郵便受けに似ています。「2号室」という部屋番号(符号)を見て、たくさんある郵便受けのうち2号室の1つだけを開ける、というイメージです。番号という短い情報から、対応する1つだけを選び出します。

上のツールで▶ボタンを押すと、2ビットの入力が与えられ、その値に対応する1本の出力線だけが有効になるまでの流れを確認できます。

⚙️
動作の仕組み

デコーダは入力の2進値を10進数の番号として読み取り、その番号の出力線だけを1にします。残りの出力はすべて0のままです。つまり「いつでも出力のうち1本だけが有効」になります。

2ビット入力デコーダの動きは次のとおりです。
① 入力を読む:A1・A0 の2ビットを2進数の値として読み取る
② 番号を決める:その値(0〜3)が選ぶべき出力線の番号になる
③ 1本だけ有効に:その番号の出力線を1、他をすべて0にする

入力と出力の対応は次のようになります。
入力 00 → Y0 だけ1
入力 01 → Y1 だけ1
入力 10 → Y2 だけ1
入力 11 → Y3 だけ1

入力が n ビットあれば、出力線は最大 2^n 本もてます。2ビットなら4本、3ビットなら8本です。これは「番号を符号にまとめる」エンコーダのちょうど逆の働きです。上のツールの真理値表で、各入力に対応して1本だけが1になる様子を確認できます。

🏷️
用途(アドレスデコード等)

アドレスデコーダメモリ0メモリ1メモリ2

デコーダは「番号を指定して1つを選ぶ」場面であちこちに使われます。少ないビットで多くの対象から1つを選べるので、コンピュータの内部で重宝されます。

代表的な用途は次のとおりです。
アドレスデコード:CPU(=中央処理装置)が出したメモリのアドレス(番地)を解読し、その番地のメモリ素子だけを選んで読み書きする
命令デコード:プログラムの命令コードを解読し、対応する処理回路を有効にする
7セグメントLEDの点灯制御:数字の符号を解読し、点灯させるべき部分を選ぶ

とくにアドレスデコードは身近な例えで言えば、図書館で「請求番号」を渡すと、その番号の棚1つだけが選ばれるようなものです。たくさんのメモリ素子の中から、CPUが指定した1つだけを正確に選び出す。デコーダはこうした「番号→1つの選択」をハードウェアで高速にこなしています。

🔌
論理ゲートでの実装

A1A0¬¬ANDY0¬A1 ∧ ¬A0ANDY1¬A1 ∧ A0ANDY2A1 ∧ ¬A0ANDY3A1 ∧ A04つのANDゲートで各出力を作る(実線=その入力をそのまま、点線=反転)

デコーダの中身は、NOT ゲートと AND ゲートを組み合わせた論理回路です。2-to-4 デコーダなら、出力 4 本それぞれに対応する4 個の AND ゲートと、入力を反転するNOT ゲート(インバータ)で実現できます。

各出力の論理式。「その入力パターンのときだけ AND の結果が 1 になる」ように、必要な箇所だけ NOT で反転して AND に入れます。
Y0=入力 00 のとき 1 → Y0 = ¬A1 AND ¬A0
Y1=入力 01 のとき 1 → Y1 = ¬A1 AND A0
Y2=入力 10 のとき 1 → Y2 = A1 AND ¬A0
Y3=入力 11 のとき 1 → Y3 = A1 AND A0

なぜ AND ゲートを使うのか。AND は「両方の入力が 1 のときだけ 1 になる」性質を持ちます。各出力に「自分の入力パターンに完全一致するときだけ 1」を要求できるので、入力の組み合わせを丁度 1 通りずつ拾い出せます。「全部の条件がそろったときだけ点灯」というスイッチを 4 個並べているイメージです。

エンコーダは OR ゲートだけで作れましたが、デコーダは NOT + AND の組み合わせが必要になります。これは「いつでも 1 本だけが 1、ほかは必ず 0」という厳しい条件を満たすためです。

🔘
イネーブル信号(EN)付きデコーダ

EN=1:通常動作デコーダ入力10 → Y2=1その他は0Y0=0Y1=0Y2=1EN=0:全出力 強制0デコーダ入力に関係なく全部0000EN信号 = ON/OFF スイッチ1 で出力を有効化、0 で全出力ゼロ→ 複数デコーダの切替えに使える

実用的なデコーダの多くには、イネーブル(Enable、有効化)信号と呼ばれる追加の入力があります。これはデコーダ全体の ON/OFF スイッチとして働きます。

動作
EN = 1:通常通り動作。入力 A1A0 に応じて 1 本の出力が 1 になる
EN = 0:入力が何であっても、すべての出力が強制的に 0 になる(デコーダの動作を一時停止)

なぜ便利か:デコーダの拡張
たとえば 2-to-4 デコーダを 2 個使って 3-to-8 デコーダ相当を作れます。新しく追加した 1 ビットの上位アドレスを、それぞれのデコーダの EN として与えると、上位ビットが 0 のときは 1 個目だけ、1 のときは 2 個目だけが動作します。これで合計 8 本の出力を選び分けられます。

メモリ分割でも活躍。コンピュータが複数のメモリ IC を組み合わせて大きなメモリ領域を作るとき、上位アドレスをデコードしてどの IC を選ぶかを決めます。このとき各 IC のチップセレクト端子(CS、=EN と同じ役割)にデコーダの出力をつなぐと、必要な IC だけが反応する仕組みになります。

身近な例で言うと、マンションのインターホンのようなものです。インターホンの主電源(EN)が ON のときだけ、特定の部屋の番号を押せばその部屋のチャイムが鳴ります。電源(EN)が OFF なら、どの番号を押しても何も鳴りません。

📏
デコーダの種類とサイズ

デコーダは入力ビット数によってサイズが分かれます。「N ビットの入力 → 最大 2^N 本の出力」の関係で、入力が 1 ビット増えるごとに出力数は2 倍に増えていきます。

呼び名入力線出力線計算主な用途
2-to-42本4本2² = 4小規模選択
3-to-83本8本2³ = 88ビット選択
4-to-164本16本2⁴ = 16メモリ番地選択
BCD→7セグ4本7本0〜9 を変換7セグLED表示

BCD-to-7セグメントデコーダは特殊なデコーダで、4 ビットの BCD(2 進化 10 進数)コードを受け取り、7 セグメント LED の点灯パターン(7 本の出力)に変換します。たとえば入力が 0010(=2)なら、7 セグの「a, b, d, e, g」の 5 本を 1 にして「2」の形を表示します。電卓や時計の数字表示でおなじみの仕組みです。

必要なゲート数
2-to-4 デコーダ:AND ゲート 4 個 + NOT ゲート 2 個
3-to-8 デコーダ:AND ゲート 8 個 + NOT ゲート 3 個
4-to-16 デコーダ:AND ゲート 16 個 + NOT ゲート 4 個
このように、出力数(=必要な AND ゲート数)が指数的に増えるのがエンコーダとの大きな違いです。

エンコーダの「N → log₂(N)」とデコーダの「N → 2^N」は、「log と 2^」の対関係になっています。ペアで覚えると、丸暗記ではなく仕組みとして理解できます。

🔢
7セグメントLEDデコーダの仕組み

BCD入力0010(=2)BCD-to-7segデコーダ7本の制御信号「2」の形7セグメントの各部分名a=上, b=右上, c=右下, d=下, e=左下, f=左上, g=中央「2」を表示するには: a, b, d, e, g を点灯(5本)          c, f を消灯

7 セグメント LEDは、電卓・デジタル時計・家電のディスプレイなどで数字を表示するための部品です。7 本の発光帯(セグメント)a〜gを組み合わせて、0〜9 の数字を表示します。

仕組み。BCD(4 ビットで 0〜9 を表す符号)を受け取った BCD-to-7セグメントデコーダは、内部の真理値表を参照して「この数字を表示するなら、どのセグメントを点けるか」を決め、7 本の出力線で各セグメントを制御します。

各数字の点灯パターン
0:a,b,c,d,e,f を点灯(g 消灯)→「□」のような枠
1:b,c だけ点灯 → 右側の縦棒
2:a,b,d,e,g を点灯(c,f 消灯)→「2」の形
8:全部点灯 → 全部光る

なぜ専用のデコーダがあるのか。BCD(4 ビット)から 7 セグの「どこを光らせるか」への変換は、人間にとっては当たり前でも、回路にはかなり複雑な対応表です。専用のデコーダ IC を使うことで、CPU から「4 ビットの数字を送るだけ」で表示でき、ソフトウェアやハードウェアが単純になります。

身近に言えば、「数字の絵」を組み立てるパズルセットのようなものです。BCD という指示書を見て、決まった部品(セグメント)を組み合わせて数字を作る。デコーダがその指示書を読み取って組立て指示を出す職人さん、というイメージです。

練習問題

🎯
基本情報技術者 練習問題

Q1.デコーダ(解読回路)の説明として最も適切なものはどれか。
A.符号化された入力ビットを解読し、対応する1本の出力線を有効にする回路
B.複数の入力のうち有効な1本の番号を符号に変換する回路
C.複数の入力から選択信号で1つを選んで出力する回路
D.クロックの立ち上がりで値を保持する回路
Q2.2ビットの入力をもつデコーダの出力線は最大何本か。
A.2本
B.3本
C.4本
D.8本
Q3.デコーダに入力 10(=2)が与えられたとき、有効になる出力線はどれか。
A.Y0
B.Y1
C.Y2
D.すべての出力線

関連コンテンツ