3対8デコーダ
概要
- 目的: 3対8デコーダは、3ビットのバイナリ入力コードを8つの相互排他的な出力ラインに変換し、入力値に基づいて正確に1つの出力ラインを活性化するデジタル組み合わせ回路です。
- 記号: 通常、3つのバイナリ入力(A0、A1、A2)、1つのイネーブル入力(EN)、および8つの出力(Y0-Y7)を持つ長方形のブロックとして表されます。
- DigiSim.ioでの役割: デジタルシステムにおけるアドレスデコーディング、メモリ選択、データデマルチプレクシング、および制御信号生成に不可欠なビルディングブロックとして機能します。

機能説明
論理動作
3対8デコーダは、バイナリ情報をワンホット出力形式に「デコード」し、各固有の入力組み合わせに対して8つの可能な出力ラインの1つのみがアクティブになります。有効時、入力のバイナリ値に対応する出力ラインが活性化され、他のすべての出力は非アクティブのままです。
真理値表:
| Enable | A2 | A1 | A0 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | X | X | X | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
注: Xは「ドントケア」を意味します。一部の実装ではアクティブロー出力またはアクティブローイネーブルを使用し、上記の出力ロジックが反転する場合があります。
入力と出力
入力:
- A0: 3ビットバイナリ入力の最下位ビット(LSB)。
- A1: 3ビットバイナリ入力の中間ビット。
- A2: 3ビットバイナリ入力の最上位ビット(MSB)。
- EN: デコーダがアクティブかどうかを制御するイネーブル入力。
出力:
- Y0-Y7: 8つの相互排他的出力。デコーダが有効な場合、一度にアクティブになるのは1つだけです。Y0はバイナリ入力000に対応し、Y1は001に対応し、Y7の111まで続きます。
設定可能なパラメータ
- 出力ロジック: 出力がアクティブハイかアクティブローか。
- イネーブルロジック: イネーブル入力がアクティブハイかアクティブローか。
- 複数イネーブル: 一部の実装では、複数のイネーブル入力(AND/OR機能付き)をサポートします。
- 伝搬遅延: 入力変化後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
3対8デコーダは、左側に入力ピン(A0、A1、A2、EN)、右側に8つの出力ピン(Y0-Y7)を持つ長方形のブロックとして表示されます。回路に接続すると、接続ワイヤの色の変化によってアクティブな出力を視覚的に示します。
教育的価値
主要概念
- バイナリデコーディング: デジタルシステムがコンパクトなバイナリコードを個々の制御ラインにどのように変換するかを実演します。
- ワンホットエンコーディング: バイナリ値を1つのビットのみがアクティブな形式でどのように表現できるかを示します。
- アドレスデコーディング: メモリおよびI/Oシステムで使用される基本的な技術を説明します。
- 信号デマルチプレクシング: バイナリアドレッシングに基づいて信号を転送する概念を提示します。
- 組み合わせ論理: ANDゲートとNOTゲートを使用した組み合わせ回路設計の実用的な例を提供します。
学習目標
- バイナリ値を相互排他的な出力信号にデコードする方法を理解する。
- デジタルシステムにおけるバイナリアドレッシングとコンポーネント選択の関係を学ぶ。
- デコーダが最小限の入力ラインで複数のサブシステムの効率的な制御をどのように可能にするかを認識する。
- メモリアドレッシング、周辺選択、および制御信号生成にデコーダの概念を適用する。
- デコーダをカスケード接続または結合してより大きなデコーディング構造を作成する方法を理解する。
使用例/シナリオ
- メモリチップ選択: デコーダを使用してアドレスビットに基づいて8つのメモリチップの1つを選択する。
- I/Oデバイスアドレッシング: 8つの可能なオプションから特定の周辺デバイスを活性化する。
- 命令デコーディング: プロセッサで命令オペコードに基づいて制御信号を生成する。
- マルチプレクスディスプレイ制御: マルチディジットディスプレイシステムでどのディジットを活性化するかを選択する。
- テストポイント選択: テスト信号を8つの可能なテストポイントの1つにルーティングする。
- ステートマシンの実装: デジタルコントローラで状態固有の制御信号を生成する。
- データルーティング: 3ビットのセレクタに基づいてデータを8つの可能な宛先の1つに転送する。
技術ノート
- 3対8デコーダは、3つのインバータと8つの4入力ANDゲートを使用して実装できます。
- 各出力ラインは次のブール関数に従います: Y(n) = EN • An • Am • Ak(nは出力番号、An、Am、Akはアドレスビットまたはその補数)。
- 一般的なIC実装には、74138(アクティブロー出力の3対8デコーダ)および74238(アクティブハイ出力の3対8デコーダ)があります。
- 2つの3対8デコーダを追加のアドレスビットでカスケード接続して4対16デコーダを作成できます。
- 伝搬遅延は、技術に応じて標準IC実装で通常10-25nsです。
- DigiSim.ioでは、デコーダは適切な出力活性化を含む標準的なデコーダICの動作を正確にモデル化します。
特性
入力構成:
- 3つのバイナリアドレス入力(A0、A1、A2)
- オプションのイネーブル入力(EN)
- 使用するロジックファミリに準拠した入力負荷
- 標準ロジックレベル(通常TTLまたはCMOS互換)
- 一部の実装ではアクティブローイネーブルを含む場合がある
- 複数のイネーブル入力(AND/OR機能)を含む場合がある
- 静電気放電に対する入力保護が一般的
出力構成:
- 8つの相互排他的出力(Y0-Y7)
- 実装に応じてアクティブハイまたはアクティブロー出力
- ワンホットエンコーディング(有効時に一度にアクティブな出力は1つだけ)
- デコーダが無効の場合、すべての出力が非アクティブ
- 標準デジタル負荷の駆動が可能
- ワイヤードOR機能のためのオープンコレクタ/オープンドレインバリアントを含む場合がある
- 一部の実装ではラッチ出力を備える
- 出力負荷が伝搬遅延に影響
機能:
- 3ビットバイナリコードを8つの出力ラインの1つに変換
- 相互排他的出力(ワンホットエンコーディング)
- イネーブル入力が全体的な動作を制御
- 組み合わせ論理動作(クロック不要)
- より大きなデコーダのためにカスケード接続可能
- バイナリからユーナリへのコンバータ
- チップ選択ではアクティブロー出力でよく使用
- 出力は現在の入力状態のみによって決定
伝搬遅延:
- 入力から出力: 通常7-20ns
- イネーブルから出力: 通常8-25ns
- 技術依存(TTL、CMOSなど)
- すべての出力ラインにわたる一貫した遅延が望ましい
- 高速メモリシステムでの重要なパラメータ
- 出力負荷の影響を受ける
- 温度と電圧に敏感
- システムタイミングとアドレスセットアップ要件に影響
ファンアウト:
- 通常10-20の標準負荷を駆動
- 出力電流能力はロジックファミリによって定義
- 高ファンアウト状況ではバッファリングが必要な場合がある
- チップセレクトアプリケーションでの重要なパラメータ
- アクティブ出力はターゲットデバイスに十分な駆動を提供する必要がある
- ロジックファミリの仕様に準拠
- 同じファミリ内のデバイス間で異なる場合がある
消費電力:
- 低から中程度の電力要件
- CMOS実装では静的電力が最小
- 動的電力はスイッチング周波数とともに増加
- アクティブ出力の数に比例
- 技術依存(CMOSが最も低い静的電力)
- ファンアウト負荷とともに電力が増加
- 典型値: アクティブ時5-25mW、スタンバイ時<1mW(CMOS)
回路の複雑さ:
- 中程度の複雑さ
- 基本ロジックゲートで実装
- ANDベースまたはNANDベースの実装が一般的
- 8つの個別のデコードパスが必要
- イネーブル機能のための追加ロジック
- 集積実装により外部コンポーネント数が削減
- 提供される機能に対して最小限の複雑さ
実装方法
ゲートレベル実装
- 基本ロジックゲート(AND、NOT)から構築
- 各出力には4入力ANDゲート(3つのアドレス入力 + イネーブル)が必要
- 入力インバータが必要に応じて補数信号を生成
- イネーブル信号はすべての出力に共通
- デコーダ機能の直接実装
- デコーダ動作の明確な教育的な例
- 直接的だが多くのゲートが必要
- 規則的な構造がレイアウトを簡素化
NAND/NOR実装
- 適切な反転を伴うNANDまたはNORゲートを使用
- 特定のロジックファミリでより効率的なことが多い
- アクティブロー出力を自然に生成する場合がある
- TTL実装で一般的
- 技術における一般的なゲートタイプを活用
- コンポーネント数を削減可能
- 性能が向上する場合がある
- 多くの集積回路での標準的なアプローチ
集積回路実装
- 専用デコーダIC: 74xx138(3対8デコーダ)
- 各種機能: イネーブル、ラッチ、オープンコレクタ
- 異なるロジックファミリで利用可能
- タイミングと負荷が十分に特性化
- 標準インターフェースとピン配置
- メモリおよび周辺アドレスデコーディングでよく使用
- カスケード接続用の複数イネーブル入力
- コスト効率が高く、省スペースのソリューション
カスケード2対4デコーダ
- イネーブル制御を持つ2つの2対4デコーダ
- MSBがどのデコーダがアクティブかを選択
- よりモジュラーなアプローチ
- より小さな一般的なコンポーネントを使用
- 2対4デコーダがすでに利用可能な場合に潜在的に有用
- 2レベルのデコーディングにはタイミングへの影響がある可能性
- デコーダカスケードの原理を実演
- より大きなデコーダのビルディングブロック
PLA/ROM実装
- プログラマブルロジックアレイアプローチ
- AND-OR構造を使用
- FPGAおよびCPLD実装で利用
- 各種デコーディングスキームに構成可能
- カスタムアドレッシングスキームに柔軟
- より複雑だが非常に多目的
- 最新のプログラマブルデバイスで一般的
- 速度またはリソース使用に最適化可能
デマルチプレクサベース実装
- 入力をハイに固定した1対8デマルチプレクサ
- アドレス入力がルーティングを制御
- デコーダと機能的に同等
- デコーダ機能の代替的な視点
- 既存のデマルチプレクサコンポーネントを活用可能
- デコーディングとデマルチプレクシングの関係を説明
- 特定の文脈で設計またはリソースの利点がある場合がある
マルチプレクサベース実装
- 構成されたマルチプレクサでデコーダ機能を実装可能
- 直感的ではないが多目的なアプローチ
- FPGA実装で一般的
- 利用可能なリソースを効率的に活用
- マルチプレクサが豊富な場合に好まれる場合がある
- 異なる構造の機能的同等性を実演
- 高度な実装技術
アプリケーション
メモリアドレスデコーディング
- RAM/ROMチップ選択
- メモリバンクの活性化
- アドレス空間の分割
- メモリマップドI/O選択
- キャッシュウェイ選択
- ページ選択
- メモリインターリービング制御
周辺デバイス選択
- I/Oデバイスアドレッシング
- 周辺チップセレクト
- バススレーブ選択
- ポートアドレッシング
- デバイスマルチプレクシング
- チャネル選択
- ハードウェアリソース割り当て
命令デコーディング
- CPU命令デコーディング
- オペコードデコーディング
- マイクロコードアドレッシング
- 実行ユニット選択
- ステートマシンの実装
- 制御信号生成
- 操作選択
デマルチプレクシング
- データルーティング制御
- チャネル選択
- 出力ポート方向
- 信号分配
- バスルーティング
- データパス制御
- 選択的ブロードキャスト
制御信号生成
- シーケンサの実装
- ステートマシン出力
- 制御ワード生成
- タイミング信号の作成
- 選択的リセット/プリセット
- モード選択
- システム構成
ディスプレイシステム
- ディスプレイディジットの選択
- LEDマトリックスの行/列駆動
- LCDセグメント選択
- ディスプレイメモリアドレッシング
- キャラクタジェネレータアドレッシング
- ディスプレイモード制御
- セグメントデコーダ
テストとデバッグ
- テストポイント選択
- 診断出力ルーティング
- デバッグ信号選択
- ビルトインセルフテスト制御
- スキャンチェーン制御
- エラーコード生成
- 故障分離
制限事項
ファンアウトの制限
- 限られた電流駆動能力
- 高負荷アプリケーションではバッファリングが必要な場合がある
- アクティブ出力はすべての接続デバイスを駆動する必要がある
- 負荷の高い出力は遅延が増加
- 最大動作速度を制限する可能性
- チップセレクトアプリケーションで重要
- 追加のバッファ段が必要な場合がある
伝搬遅延の影響
- アドレスセットアップ時間の要件
- 最大動作周波数を制限
- メモリアクセスタイミングのクリティカルパス
- タイミングハザードを導入する可能性
- アドレス変更から出力安定化までの遅延
- カスケードデコーダは遅延が増加
- 同期設計でのシステムクロックレートに影響
消費電力の考慮事項
- 多くの出力が同時に変化する場合に重要
- 動作周波数とともに増加
- バッテリ駆動デバイスでは重要
- 遷移中に電源電圧ドロップを引き起こす可能性
- 高速アプリケーションでのグラウンドバウンス
- 高速システムでの熱管理
- アドレス遷移中の電力スパイク
スケーラビリティの課題
- 入力の線形増加に対して出力の指数関数的増加
- 大きなデコーダには大量のリソースが必要
- より大きなデコーダでのピン数の制限
- カスケード接続で追加遅延が発生
- サイズとともに複雑さが大幅に増加
- サイズとともに消費電力が増加
- テストの複雑さが指数関数的に増加
動作上のハザード
- 入力遷移中のグリッチ
- 遷移中に複数の出力が一時的にアクティブ
- アドレスセットアップ時間とホールド時間の違反
- イネーブル入力のノイズ感度
- 大きなカスケードシステムでの部分的デコーディング
- イネーブル信号のタイミングが重要
- 非同期システムでのレースコンディション
回路実装の詳細
ANDゲートを使用した基本3対8デコーダ
graph TB
A0[A0] --> NOT0[NOT]
A1[A1] --> NOT1[NOT]
A2[A2] --> NOT2[NOT]
EN[Enable]
NOT0 --> AND0[AND]
NOT1 --> AND0
NOT2 --> AND0
EN --> AND0
AND0 --> Y0[Y0: 000]
A0 --> AND1[AND]
NOT1 --> AND1
NOT2 --> AND1
EN --> AND1
AND1 --> Y1[Y1: 001]
NOT0 --> AND2[AND]
A1 --> AND2
NOT2 --> AND2
EN --> AND2
AND2 --> Y2[Y2: 010]
A0 --> AND3[AND]
A1 --> AND3
NOT2 --> AND3
EN --> AND3
AND3 --> Y3[Y3: 011]
NOT0 --> AND4[AND]
NOT1 --> AND4
A2 --> AND4
EN --> AND4
AND4 --> Y4[Y4: 100]
A0 --> AND7[AND]
A1 --> AND7
A2 --> AND7
EN --> AND7
AND7 --> Y7[Y7: 111]
ロジック: 各出力は、対応する3ビットアドレスパターンが存在し、イネーブルされている場合にアクティブになります。
74HC138 3対8デコーダ集積回路
ピン構成:
| Pin Group | Signal | Function |
|---|---|---|
| Inputs | A, B, C | Address inputs (A0-A2) |
| Enables | G1 | Active-HIGH enable |
| Enables | /G2A, /G2B | Active-LOW enables |
| Outputs | Y0-Y7 | Active-LOW outputs |
| Power | Vcc, GND | +5V and Ground |
イネーブル条件: G1=1 AND /G2A=0 AND /G2B=0のときにデコーダがアクティブ
出力選択: C:B:Aアドレスに基づいて一度にLOWになる出力は1つだけ
注: 74HC138はアクティブロー出力(Y0-Y7)と3つのイネーブル入力を持ちます: G1(アクティブハイ)、G2AおよびG2B(両方ともアクティブロー)。G1=1、G2A=0、G2B=0のときにデコーダが有効になります。
関連コンポーネント
- 2対4デコーダ: 2つの入力と4つの出力を持つ、より小さなデコーダ
- 4対16デコーダ: 4つの入力と16の出力を持つ、より大きなデコーダ
- バイナリ-7セグメントデコーダ: バイナリ値を7セグメントディスプレイパターンに変換
- BCD-10進デコーダ: BCDを10の出力に変換
- プライオリティエンコーダ: 優先度付きでワンホットからバイナリに変換する逆操作
- デマルチプレクサ: 1つの入力を複数の出力の1つにルーティング
- アドレスデコーダ: メモリアドレッシング用に特化したデコーダ
- 命令デコーダ: CPU命令処理用に特化したデコーダ
- バスデコーダ: コンピュータシステムでのバスアドレスデコーディングに使用
- バイナリ-グレイコードコンバータ: デジタルシステムにおける関連する変換コンポーネント