デコーダ/エンコーダ
英語表記: Decoder/Encoder
概要
デコーダ(Decoder)とエンコーダ(Encoder)は、デジタルシステムの中核を担う「組合せ回路」の一種であり、情報の流れを効率的に制御するために不可欠な論理回路です。この「論理回路とゲート」の文脈において、デコーダはNビットの入力から特定の出力を「選択」する役割を担い、エンコーダは多数の入力情報から効率的なバイナリコードへ「変換」する役割を担っています。これらは、コンピュータが複雑な処理を行うための、基本的な情報ルーティングと圧縮を実現している重要な要素だと言えるでしょう。
詳細解説
デコーダとエンコーダは、デジタル回路の教科書で必ずセットで登場する、非常に基本的な「組合せ回路」です。組合せ回路とは、その時点の入力信号のみによって出力が決定される回路のことで、この二つの回路は、私たちが現在学んでいる「選択と変換」という機能カテゴリーにぴったりと当てはまります。
デコーダ(Decoder):アドレス指定と選択の専門家
デコーダの最も重要な機能は、入力されたバイナリコード(Nビット)を解読し、それに対応する出力線(最大 $2^N$ 本)の中からただ一つだけを活性化することです。これはまさに、多数の選択肢の中から一つを「選択」するプロセスそのものです。
例えば、メモリを制御する場合、CPUがアクセスしたい場所を3ビットのアドレス(例:101)で指定すると、デコーダはその3ビットを解読し、$2^3=8$ 個のメモリブロックのうち、5番目のブロックだけをONにする信号を出力します。デコーダがなければ、CPUは8本の信号線を個別に操作しなければならず、非常に非効率になってしまいます。デコーダは、この複雑な選択作業を自動的に行ってくれるため、デジタルシステムの設計をシンプルかつ高速に保つことができるのです。
デコーダの内部は、基本的な「論理回路とゲート」であるANDゲートとNOTゲートを組み合わせて構成されています。特定の入力パターン(例えば、入力Aが1、入力Bが0、入力Cが1)が揃ったときのみ、対応するANDゲートの出力が真となるように設計されています。この仕組みのおかげで、デコーダは、デジタルシステムにおける「どこへ行くべきか」「何を選ぶべきか」という指示出しを一手に引き受けることができるのです。
エンコーダ(Encoder):効率的な情報変換の担い手
エンコーダはデコーダとは逆の働きをします。多数の入力線(最大 $2^N$ 本)の中から、どの線が活性化されたかを検出し、それをNビットの短いバイナリコードに「変換」して出力します。
エンコーダがなぜ必要かというと、システムの入力段階で情報量を圧縮するためです。例えば、キーボードには100個以上のキーがありますが、同時に押されるのは通常一つです。エンコーダは、100本の入力線から、押されたキーに対応するわずか7〜8ビットのコードに変換します。これにより、信号線の数を大幅に削減でき、システムの設計が簡素化されます。これは、情報を効率的に「変換」し、伝送帯域を節約するという、非常に重要な役割を果たしています。
特に実務で重要となるのが「優先エンコーダ」です。もし複数のキーが同時に押された場合、単純なエンコーダでは誤ったコードを出力してしまう可能性があります。優先エンコーダは、あらかじめ設定された優先順位に従い、最も優先度の高い入力のみに対応するコードを出力するようになっています。この機能は、外部からの不規則な入力を扱うデジタルシステムにおいて、安定した動作を保証するために欠かせません。
デコーダとエンコーダは、それぞれ「選択」と「変換」という明確な目的を持っており、この二つがセットで機能することで、デジタル情報がスムーズに、そして効率的にシステム内を流れるようになっているのです