12. エンコーダとデコーダ

エンコーダとデコーダは、どちらも論理回路の一種で、エンコーダは、入力された信号を別の形式の符号に変換する回路であり、デコーダは符号化された信号をもとの信号に逆変換する回路である。
・エンコーダ:エンコーダは、入力された信号を別の形式の符号に変換する回路で、例えば、10進数を2進数に変換したり、文字コードをバイナリに変換したりするために使われる。
・デコーダ:デコーダは、符号化された信号をもとの信号に逆変換する回路で、例えば、2進数を10進数に変換したり、バイナリを文字コードに変換したりするために使われる。
エンコーダとデコーダは、キーボードやタッチパネルなどの入力装置等、さまざまな電子機器やシステムで広く使われている。キーボードで数字キーを押すと、エンコーダによってその数字に対応する2進数に変換され、この2進数は、コンピュータの内部で必要な処理が行われる。このように、エンコーダとデコーダは、デジタル機器の基本的な構成要素として欠かせない回路である。
ここでは、基本的なエンコード回路、デコーダ回路を例を挙げて説明する。

エンコーダ回路

エンコーダの基本的な回路である10進-2進エンコーダを考える。回路構成の外観は、図1のようになる。
10進から2進へのエンコーダは、10進数のデータを2進数のデータに変換する。具体的には、10進数の0から7の8つの数字について、8入力(A0、A1、A2、A3、A4、A5、A6、A7)のいずれか1つが値1をとるとして、それらの2進数に対応する3ビットの出力(B2、B1、B0)を生成するエンコーダを考える。例えば、A1=1ならば、(B2、B1、B0)=(0、0、1)、A7=1ならば、(B2、B1、B0)=(1、1、1)を得る。これを表1のように8入力3出力の真理値表として作成し、それに基づいて論理回路を実現すると図2のようになる。

図1 10進-2進エンコーダ
図2 10進-2進エンコーダの論理回路
A0A1A2A3A4A5A6A7B2(\(2^2\))B1(\(2^1\))B0(\(2^0\))
HLLLLLLLLLL
LHLLLLLLLLH
LLHLLLLLLHL
LLLHLLLLLHH
LLLLHLLLHLL
LLLLLHLLHLH
LLLLLLHLHHL
LLLLLLLHHHH
表1 10進-2進エンコーダの真理値表

デコーダ回路

デコーダの基本的な回路である2進-10進デコーダを考える。回路構成の外観は、図3のようになる。
2進から10進へのデコーダは、2進数のデータを10進数のデータに変換する。具体的には、2進数の3ビットの入力(B2、B1、B0)(000から111の2進数)から、8つの出力(A0、A1、A2、A3、A4、A5、A6、A7)のいずれか1つが値1を出力するデコーダを考える。例えば、(B2、B1、B0)=(0、0、1)ならば、A1=1、(B2、B1、B0)=(1、1、1)ならば、A7=1を得る。これを表2のように3入力8出力の真理値表として作成し、それに基づいて論理回路を実現すると図4のようになる。

図3 2進-10進デコーダ
図4 2進-10進デコーダの論理回路
B2(\(2^2\))B1(\(2^1\))B0(\(2^0\))A0A1A2A3A4A5A6A7
LLLHLLLLLLL
LLHLHLLLLLL
LHLLLHLLLLL
LHHLLLHLLLL
HLLLLLLHLLL
HLHLLLLLHLL
HHLLLLLLLHL
HHHLLLLLLLH
表2 2進-10進デコーダの真理値表