デコーダ
概要
- 目的: デコーダは、バイナリコード入力を個々の出力ラインのセットに変換する組み合わせ論理回路で、各固有の入力コードに対して1つの出力のみがアクティブになります。コンパクトなバイナリ表現を「ワンホット」形式に展開します。
- 記号: DigiSim.ioのデコーダは、2つのバイナリ入力ライン(A0、A1)と4つの出力ライン(Y0、Y1、Y2、Y3)を持つ長方形のブロックとして表される2対4デコーダです。
- DigiSim.ioでの役割: デジタル回路におけるアドレスデコーディング、データルーティング、および制御信号生成の基本的なビルディングブロックとして機能します。

機能説明
論理動作
デコーダは、入力に存在するバイナリ値に基づいて正確に1つの出力ラインを活性化します。バイナリ入力の組み合わせに対応する出力のみがHIGHになり、他のすべての出力はLOWのままです。
真理値表(2対4デコーダ):
| A1 | A0 | Y0 | Y1 | Y2 | Y3 |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
入力と出力
入力:
- アドレス入力(A0、A1): どの出力が活性化されるかを決定する2つのバイナリ入力。
出力:
- 出力ライン(Y0-Y3): 4つの出力ライン。各固有の入力組み合わせに対して1つの出力のみがアクティブ(HIGH)です。
設定可能なパラメータ
- アクティブレベル: 出力がアクティブハイ(1)かアクティブロー(0)か。
- 伝搬遅延: 入力変化後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
デコーダは、左側または下側に2つの入力ピン(A0、A1)、右側または上側に4つの出力ピン(Y0-Y3)を持つ長方形のブロックとして表示されます。「2:4」のサイズ表記でラベル付けされています。回路に接続すると、接続ワイヤの色の変化によってどの出力がアクティブかを視覚的に示します。
教育的価値
主要概念
- バイナリエンコーディング/デコーディング: バイナリ値をワンホット表現に展開する方法を実演します。
- アドレス選択: バイナリアドレスが特定のメモリロケーションまたはデバイスを選択するためにどのように使用されるかを説明します。
- ワンホットエンコーディング: 多くの可能な信号の中で正確に1つのアクティブ信号を持つ概念を紹介します。
- 組み合わせ論理設計: 基本的な論理要素で複雑な機能をどのように実装できるかを示します。
学習目標
- バイナリ値が個々の選択ラインにどのようにデコードされるかを理解する。
- デコーダがデジタルシステムで効率的なアドレッシングをどのように可能にするかを学ぶ。
- メモリシステムと制御ユニットにおけるデコーダの役割を認識する。
- アドレスデコーディング回路と制御信号ジェネレータの設計にデコーダを適用する。
- デコーダをカスケード接続してより大きなデコーディング構造を作成する方法を理解する。
使用例/シナリオ
- メモリアドレッシング: アドレスビットに基づいて特定のメモリチップまたはメモリロケーションを選択する。
- 命令デコーディング: プロセッサで命令オペコードに基づいて制御信号を生成する。
- 入出力選択: アドレス値に基づいて特定の周辺デバイスを活性化する。
- ディスプレイ駆動: ディスプレイシステムでバイナリ値をセグメントパターンに変換する。
- 状態デコーディング: ステートマシンの現在の状態に基づいて特定の制御信号を生成する。
技術ノート
- DigiSim.ioのデコーダは、2つの入力(A0、A1)と4つの出力(Y0-Y3)を持つ2対4デコーダです。
- デコーダの入力数(n)と出力数(m)の関係は通常 m = 2^n です。
- デコーダをカスケード接続してより大きなデコーダを作成できます。例えば、2つの2対4デコーダに追加の入力を加えて3対8デコーダを作成できます。
- アクティブローデコーダでは、出力は通常HIGHで、選択されるとLOWになります。これはメモリチップセレクトアプリケーションでよく使用されます。
- DigiSim.ioでは、デコーダは入力変化に即座に応答し、これらのコンポーネントの組み合わせ論理動作をモデル化します。
デコーダの種類
バイナリデコーダ
- 標準的なnから2^nデコーダ(例: 2対4、3対8、4対16)
- バイナリコードをワンホット出力に変換
BCD-10進デコーダ
- BCDから10進ディスプレイに変換する4対10デコーダ
- ディスプレイアプリケーションで一般的
アドレスデコーダ
- メモリおよびI/Oアドレス選択に使用
- チップセレクト出力を含むことが多い
7セグメントディスプレイデコーダ
- バイナリ/BCD入力を7セグメントディスプレイ出力に変換
- 数字表示用の4対7デコーダ
デマルチプレクサ
- データルーティングに使用されるデコーダの特殊なケース
- 1つの入力を複数の出力の1つにルーティング
アクティブローデコーダ
- 出力は通常ハイで、アクティブ出力はローになる
- メモリシステムでよく使用
アプリケーション
メモリアドレスデコーディング
- 正しいメモリチップまたはメモリロケーションの選択
- メモリシステムでのチップセレクト生成
命令デコーディング
- CPUでの制御信号の生成
- オペコードの解釈
データルーティング
- 適切な処理ユニットへのデータの転送
- マイクロプロセッサでのバスアドレッシング
ディスプレイシステム
- 7セグメントディスプレイの駆動
- LCD/LEDマトリックスの制御
キーボード/キーパッドスキャニング
- マトリックスキーボードのスキャニング
- 入力デバイスの制御
デマルチプレクシング操作
- 通信システムでの信号ルーティング
- チャネル選択
制御信号生成
- 命令コードに基づく特定の制御信号の生成
- ステートマシンの出力
実装方法
ロジックゲートアレイ
- 必要に応じて入力インバータ付きのANDゲート
- ツリー構造に配置されることが多い
集積回路
- 74LS138: 3対8デコーダ
- 74LS154: 4対16デコーダ
- 74LS47: BCDから7セグメントデコーダ
NAND/NORゲート実装
- すべてのデコーダ機能にユニバーサルゲートを使用
- AND/ORよりも通常少ないゲート数で済む
HDL設計
- case文または条件付き代入を使用
- 異なるサイズに簡単にパラメータ化可能
ROMベース実装
- 複雑なデコーダ機能にルックアップテーブルを使用
- プログラマブルロジックアプローチ
回路実装(2:4デコーダ)
単純な2対4デコーダは、インバータ付きのANDゲートを使用して実装できます:
graph LR
InputA0[A0] --> NotGate0[NOT]
InputA1[A1] --> NotGate1[NOT]
NotGate0 --> AndGate0[AND]
NotGate1 --> AndGate0
AndGate0 --> OutputY0[Y0: 00]
InputA0 --> AndGate1[AND]
NotGate1 --> AndGate1
AndGate1 --> OutputY1[Y1: 01]
NotGate0 --> AndGate2[AND]
InputA1 --> AndGate2
AndGate2 --> OutputY2[Y2: 10]
InputA0 --> AndGate3[AND]
InputA1 --> AndGate3
AndGate3 --> OutputY3[Y3: 11]
出力選択: 各出力は一意の2ビットアドレスの組み合わせに対応します。
ブール式(2:4デコーダ)
2対4デコーダの場合:
- Y0 = Ā1 · Ā0
- Y1 = Ā1 · A0
- Y2 = A1 · Ā0
- Y3 = A1 · A0
ここで · は論理ANDを表し、Ā は論理NOTを表します
関連コンポーネント
- エンコーダ: 逆操作を実行(ワンホットからバイナリ)
- マルチプレクサ: セレクトラインに基づいて複数の入力の1つを選択
- デマルチプレクサ: 機能的に類似するが、パターン生成ではなくデータをルーティング
- プライオリティエンコーダ: 複数のアクティブ入力を処理する特殊エンコーダ
- ディスプレイドライバ: ディスプレイ制御用のデコーダを含むことが多い
- メモリアドレスデコーダ: メモリシステム用に特化
- プログラマブルロジックアレイ: デコーダ機能を実装可能