8対3エンコーダ
概要
- 目的: 8対3エンコーダは、8つの相互排他的な入力ラインを、どの入力ラインがアクティブかを表す3ビットのバイナリコードに変換するデジタル組み合わせ回路です。
- 記号: 通常、8つの入力(I0-I7)と3つの出力(Y2、Y1、Y0)を持つ長方形のブロックとして表されます。
- DigiSim.ioでの役割: 不可欠なデータ削減コンポーネントとして機能し、ワンホット信号をよりコンパクトなバイナリ表現に変換して、より効率的な処理と伝送を可能にします。

機能説明
論理動作
8対3エンコーダは、8つの入力ラインのうちどれがアクティブかを検出し、アクティブな入力に対応する一意の3ビットバイナリコードを生成します。標準エンコーダでは、常に1つの入力のみがアクティブである必要があります。
真理値表:
| Inputs | Outputs | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| I7 | I6 | I5 | I4 | I3 | I2 | I1 | I0 | Y2 | Y1 | Y0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
注: 常に1つの入力のみがアクティブ(ハイ)である必要があります。基本エンコーダでは、複数のアクティブ入力またはすべての入力が非アクティブの状態は無効な条件を表します。
入力と出力
入力:
- I0-I7: 8つの1ビット入力。標準エンコーダでは通常、一度に1つのみがアクティブです。
出力:
- Y2: 3ビット出力コードの最上位ビット(MSB)。
- Y1: 3ビット出力コードの中間ビット。
- Y0: 3ビット出力コードの最下位ビット(LSB)。
設定可能なパラメータ
- 入力アクティベーションレベル: 入力がアクティブハイかアクティブローか。
- 出力ロジック: 出力が正論理か負論理か。
- プライオリティエンコーディング: エンコーダが複数のアクティブ入力を処理するための優先度ロジックを持つかどうか。
- 有効出力信号: エンコーダが有効な入力条件を示す信号を生成するかどうか。
- 伝搬遅延: 入力変化後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
8対3エンコーダは、左側に8つの入力ピン(I0-I7)、右側に3つの出力ピン(Y2、Y1、Y0)を持つ長方形のブロックとして表示されます。回路に接続すると、接続ワイヤの色の変化によってアクティブな入力と対応するバイナリ出力を視覚的に示します。
教育的価値
主要概念
- バイナリエンコーディング: 複数の信号ラインをよりコンパクトなバイナリ表現にエンコードする方法を実演します。
- データ削減: 情報を表現するために必要な信号ラインの数を削減する方法を示します。
- コード変換: ワンホット(ユーナリ)コードからバイナリコードへの変換を説明します。
- 組み合わせ論理: 有用なデジタル機能におけるORゲートの実用的な応用を提示します。
- 信号マルチプレクシング: 信号選択とチャネル識別に関連する概念を紹介します。
学習目標
- デジタルシステムが複数の信号をバイナリ形式に効率的にエンコードする方法を理解する。
- 入力のアクティベーションと対応するバイナリ出力コードの関係を学ぶ。
- 無効な入力条件の課題とその処理方法を認識する。
- 配線の削減とデータパスの簡素化を伴うシステムの設計にエンコーディングの概念を適用する。
- デジタルシステムにおけるエンコーダとデコーダの論理的双対性を理解する。
使用例/シナリオ
- キーボードエンコーディング: 複数のキー入力を処理用のバイナリコードに変換する。
- プライオリティ割り込み処理: 複数の割り込みソースをプロセッサ用のバイナリベクタにエンコードする。
- センサ入力処理: 複数のセンサアクティベーションをコンパクトなバイナリデータに変換する。
- メモリバンク選択: 現在アクティブまたはアドレスされているメモリバンクをエンコードする。
- 入力デバイス選択: アクティブな入力デバイスを識別するバイナリコードを生成する。
- 状態エンコーディング: ステートマシンの状態信号をコンパクトなバイナリ表現に変換する。
- マルチプレクサ制御: 個々の制御ラインからマルチプレクサを制御するためのセレクト信号を生成する。
技術ノート
- 8対3エンコーダは以下のブール式を実装します: Y0 = I1+I3+I5+I7、Y1 = I2+I3+I6+I7、Y2 = I4+I5+I6+I7。
- 基本エンコーダは複数のアクティブ入力をうまく処理できません。そのような場合にはプライオリティエンコーダが必要です。
- I0のアクティベーションは、追加ロジックなしではすべての入力が非アクティブの状態と区別できません。
- 一部のエンコーダ実装には、少なくとも1つの入力がアクティブであることを示す「有効」出力が含まれます。
- 優先度ロジックを持つエンコーダは、最も番号の大きいアクティブ入力に対応するバイナリコードを出力します。
- DigiSim.ioでは、エンコーダの動作はアクティブ入力に対する適切な出力生成を含む標準的なエンコーダ機能をモデル化します。
特性
- 入力構成:
- 8つの入力(I0-I7)。通常、一度に1つのみがアクティブ
- アクティブハイ入力(1がアクティブな入力を表す)
- 出力構成:
- 3つの出力(Y2、Y1、Y0)が3ビットバイナリコードを表す
- Y2が最上位ビット(MSB)
- Y0が最下位ビット(LSB)
- 機能:
- ワンホット入力(単一のアクティブライン)をバイナリに変換
- 8つの信号ラインを3つのバイナリラインに削減
- 伝搬遅延:
- 通常5-15ns(技術依存)
- 一般に同等サイズのデコーダより短い
- ファンアウト:
- 各出力は通常10-50ゲートを駆動(技術依存)
- ロジックレベル:
- 標準ロジックファミリ(TTL、CMOS)と互換
- 回路の複雑さ:
- 中程度(複数のORゲートが必要)
- 同等のデコーダ回路より複雑さが低い
- 制限事項:
- 基本エンコーダには無効な状態がある(複数のアクティブ入力)
- 単純な実装ではすべてゼロ入力の処理がない
実装方法
- ORゲートの使用
- 各出力ビットは特定の入力をORすることで形成
- 各出力のブール式:
- Y0 = I1 + I3 + I5 + I7
- Y1 = I2 + I3 + I6 + I7
- Y2 = I4 + I5 + I6 + I7
graph LR
I1[I1] --> OR0[OR Gate]
I3[I3] --> OR0
I5[I5] --> OR0
I7[I7] --> OR0
OR0 --> Y0[Y0 LSB]
I2[I2] --> OR1[OR Gate]
I3 --> OR1
I6[I6] --> OR1
I7 --> OR1
OR1 --> Y1[Y1]
I4[I4] --> OR2[OR Gate]
I5 --> OR2
I6 --> OR2
I7 --> OR2
OR2 --> Y2[Y2 MSB]
エンコーディングパターン: 各出力ビットは、そのビット位置が設定されている入力がアクティブな場合にHIGHになります。
プライオリティエンコーダ実装
- 複数の入力がアクティブな場合を処理
- 最も優先度の高いアクティブ入力のコードを出力
- 追加の優先度ロジックとイネーブルを使用
マルチプレクサの使用
- マルチプレクサと固定入力で実装可能
- あまり一般的ではないが、特定のFPGAアーキテクチャで有用
集積回路
- 74xxシリーズロジックファミリで利用可能(例: 74148)
- プライオリティエンコーディング機能付きで実装されることが多い
- イネーブル入力と有効出力フラグを含むバージョンもある
アプリケーション
アドレスエンコーディング
- 複数のセレクトラインからバイナリアドレスへの変換
- メモリバンク選択エンコーディング
- プロセッサでのレジスタ選択
入力処理
- 複数のセンサ入力からバイナリ値への変換
- コンピュータシステムでのキーボードエンコーディング
- ユーザ入力選択エンコーディング
マルチプレクサ制御
- より大きなマルチプレクサシステムのセレクト信号の生成
- 通信システムでのチャネル選択
- デジタルシステムでの入力ソース選択
割り込み処理
- 複数の割り込みソースをバイナリ値にエンコード
- プロセッサシステムでのプライオリティ割り込み処理
- マルチデバイスシステムでのデバイス識別
データ圧縮
- 信号ラインを削減するための基本的なデータエンコーディング形式
- ワンホットコードからバイナリ表現への変換
- 通信システムでのより大きなエンコーディングスキームの一部
デジタル計装
- 複数のレンジ選択からバイナリ制御信号への変換
- テスト機器でのモード選択エンコーディング
- デジタルディスプレイでの表示フォーマット選択
ステートマシンの実装
- デジタルコントローラでの状態遷移のエンコーディング
- シーケンシャル回路での状態表現の削減
- 制御ユニットでのコマンドデコーディング
制限事項
入力競合解決
- 標準エンコーダは複数のアクティブ入力に対して未定義の動作をする
- 複数入力での信頼性の高い動作にはプライオリティエンコーディングが必要
全ゼロ入力条件
- 基本エンコーダはすべての入力が非アクティブの状態とI0がアクティブの状態を区別できない
- 正しい動作のために追加の有効信号出力が必要な場合がある
伝搬遅延のばらつき
- 異なるパスが異なる遅延を持つ場合がある
- 入力遷移中にグリッチが発生する可能性
ノイズ感度
- ノイズによる不正なエンコーディングの影響を受けやすい
- ノイズの多い環境では入力フィルタリングが必要な場合がある
入力拡張の制限
- より多くの入力のためのカスケード接続が困難
- 8入力以上には追加ロジックが必要
回路実装の詳細
ブール式
8対3エンコーダは以下のブール式で記述できます:
Y0 = I1 + I3 + I5 + I7
Y1 = I2 + I3 + I6 + I7
Y2 = I4 + I5 + I6 + I7
ここで:
- I0からI7は入力
- Y0、Y1、Y2は出力
- "+"は論理ORを表す
プライオリティエンコーダロジック
プライオリティエンコーディング機能のために、最も優先度の高い入力のみが出力に影響するように追加ロジックが必要です:
Y0 = (I1 AND NOT(I2, I4, I6)) OR (I3 AND NOT(I4, I6)) OR (I5 AND NOT(I6)) OR I7
Y1 = (I2 AND NOT(I4, I6)) OR (I3 AND NOT(I4, I6)) OR I6 OR I7
Y2 = I4 OR I5 OR I6 OR I7
有効出力ロジック
有効な入力条件(少なくとも1つの入力がアクティブ)を検出するため:
VALID = I0 OR I1 OR I2 OR I3 OR I4 OR I5 OR I6 OR I7
関連コンポーネント
- 4対2エンコーダ: 4つの入力を2つの出力にエンコードする、より単純なバージョン
- 16対4エンコーダ: 16の入力を4つの出力にエンコードする、より大きなバージョン
- プライオリティエンコーダ: 複数のアクティブ入力を解決する拡張エンコーダ
- 3対8デコーダ: バイナリからワンホットコードに変換する逆操作を実行
- BCDエンコーダ: 10進入力をBCD(2進化10進)に変換する特殊エンコーダ
- マルチプレクサ: エンコードされた値に基づくデータ選択のためにエンコーダと共に使用されることが多い
- バイナリエンコーダ: バイナリ表現に変換するエンコーダの一般的な用語
- キーパッドエンコーダ: キーパッド入力処理用の特殊エンコーダ