エンコーダ
概要
- 目的: エンコーダは4対2プライオリティエンコーダで、アクティブな入力信号を最も優先度の高いアクティブ入力を表すバイナリコードに変換する組み合わせデジタル回路です。デコーダの逆操作を実行し、4つの入力ラインを2ビットのバイナリコードに削減します。
- 記号: エンコーダは、4つの入力ライン(D0、D1、D2、D3)と2つの出力ライン(Q0、Q1)を持つ長方形のブロックとして表されます。
- DigiSim.ioでの役割: デジタル回路における優先度検出、アドレス生成、および入力エンコーディングの基本的なビルディングブロックとして機能します。

機能説明
論理動作
エンコーダは、最も優先度の高いアクティブ入力のバイナリコードを出力するプライオリティエンコーダです。複数の入力が同時にアクティブな場合、エンコーダは最も番号の大きいアクティブ入力のコードを出力します。優先度の低い入力はドントケア(X)として扱われます。
真理値表(4対2プライオリティエンコーダ):
| D3 | D2 | D1 | D0 | Q1 | Q0 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | X | 0 | 1 |
| 0 | 1 | X | X | 1 | 0 |
| 1 | X | X | X | 1 | 1 |
入力と出力
入力:
- 4つのデータ入力(D0、D1、D2、D3): 4つの入力ライン。D3が最も高い優先度を持ち、D0が最も低い優先度を持ちます。
出力:
- 2つのバイナリ出力(Q0、Q1): 最も優先度の高いアクティブ入力を表す2ビットのバイナリコード。
設定可能なパラメータ
- 優先度処理: エンコーダは優先度解決を使用します。複数の入力がアクティブな場合、最も番号の大きい入力が優先されます。
- 伝搬遅延: 入力変化後に出力が変化するまでの時間。
DigiSim.ioでの視覚的表現
エンコーダは、片側に4つの入力ピン(D0-D3)、反対側に2つの出力ピン(Q0、Q1)を持つ長方形のブロックとして表示されます。回路に接続すると、接続ワイヤの色の変化によってアクティブな入力と結果のバイナリコードを視覚的に示します。
教育的価値
主要概念
- バイナリエンコーディング: 複数の信号をコンパクトなバイナリ形式にどのようにエンコードできるかを実演します。
- データ圧縮: 複数の信号ラインをより少ないラインに削減する方法を説明します。
- ワンホットからバイナリへの変換: ワンホットとバイナリ表現の関係を示します。
- 組み合わせ論理設計: エンコーディング機能のためのロジック回路の設計を紹介します。
学習目標
- 複数の入力信号をバイナリ形式にエンコードする方法を理解する。
- エンコーダとデコーダの補完的コンポーネントとしての関係を学ぶ。
- 基本エンコーダとプライオリティエンコーダの違いを認識する。
- 入力処理システムとアドレスジェネレータの設計にエンコーダを適用する。
- エンコーダがデジタルシステムで信号ライン数を効率的に削減する方法を理解する。
使用例/シナリオ
- キーパッドエンコーディング: キーパッドのボタン押下をバイナリコードに変換する。
- 優先度検出: 優先度要件を持つシステムで最も優先度の高いアクティブ入力を識別する。
- アドレス生成: ワンホット選択信号からバイナリアドレスを作成する。
- 入力処理: 各種入力フォーマットを標準化されたバイナリコードに変換する。
- 制御システム: 複数のステータス信号を処理用のコンパクトな形式にエンコードする。
技術ノート
- DigiSim.ioのエンコーダはプライオリティエンコーダです。複数の入力がアクティブな場合、最も優先度の高い(最も番号の大きい)アクティブ入力のバイナリコードを出力します。
- 4対2構成は4つの入力(D0-D3)を使用し、2ビットのバイナリ出力(Q0、Q1)を生成します。
- DigiSim.ioでは、エンコーダは入力変化に即座に応答し、プライオリティエンコーダの組み合わせ論理動作をモデル化します。
特性
- 入力サイズ: 4つの入力ライン(D0-D3)
- 出力サイズ: 2つの出力ライン(Q0、Q1)
- 伝搬遅延: 入力変化から安定した出力までの時間遅延
- ファンイン: エンコーダが処理できる入力ラインの数
- ファンアウト: 各出力が駆動できるロジックゲートの数
- 入力検証: 有効/無効な入力を検出するオプション機能
- イネーブル制御: 一部のエンコーダは動作を制御するイネーブル入力を含む
- 入力優先度: エンコーダが入力間の優先度を尊重するかどうか
- 消費電力: 動作中のエネルギー使用量
エンコーダの種類
基本エンコーダ
- 優先度や検証機能のないシンプルなエンコーダ
- 一度に1つの入力のみがアクティブと仮定
プライオリティエンコーダ
- 優先度に基づいて複数のアクティブ入力を解決
- 最も高い優先度の入力のコードを出力
- 「有効入力」出力フラグを含むことが多い
10進-BCDエンコーダ
- 10進からBCD(2進化10進)への変換用10対4エンコーダ
- 数字表示やキーパッドアプリケーションで使用
8進-バイナリエンコーダ
- 8進からバイナリへの変換用8対3エンコーダ
- コンピューティングシステムで一般的
16進-バイナリエンコーダ
- 16進からバイナリへの変換用16対4エンコーダ
- アドレスデコーディングアプリケーションで使用
キーボードエンコーダ
- キーパッドまたはキーボード入力用の特殊エンコーダ
- キー押下をバイナリコードに変換
アプリケーション
アドレス生成
- ワンホット信号からバイナリアドレスへの変換
- デジタルシステムでのメモリアドレッシング
入力周辺機器
- キーボードおよびキーパッド入力のエンコーディング
- スイッチアレイからバイナリへの変換
命令デコーディング
- CPUでの命令パターンのエンコーディング
- オペコード生成
制御システム
- 制御アプリケーションのステータスエンコーディング
- モード選択エンコーディング
デジタルマルチプレクシング
- マルチプレクサ制御のアドレス選択
- 通信システムでのチャネル選択
データ圧縮
- 複数の信号ラインをより少ないラインに削減
- パラレルデータをよりコンパクトなフォーマットに変換
実装方法
ロジックゲートアレイ
- 出力ビットパターンに基づいてORゲートを使用して入力を結合
- ディスクリートコンポーネントまたはIC形式で実装可能
集積回路
- 74148: 8対3プライオリティエンコーダ
- 74147: 10対4 10進-BCDプライオリティエンコーダ
- 74LS348: イネーブル付き8対3プライオリティエンコーダ
HDL設計
- case文または条件付き代入
- プライオリティエンコーダ用の優先度付きif-elseチェーン
- 異なるサイズに簡単にパラメータ化可能
ROMベース実装
- ROMに格納されたルックアップテーブルを使用
- 複雑なエンコーディングスキームに適している
回路実装(4対2プライオリティエンコーダ)
4対2プライオリティエンコーダは、優先度ロジック付きのORゲートを使用して実装できます:
graph LR
D1[D1] --> OR0[OR Gate]
D3[D3] --> OR0
OR0 --> Q0[Q0 Output]
D2[D2] --> OR1[OR Gate]
D3 --> OR1
OR1 --> Q1[Q1 Output]
ロジック: Q0はD1またはD3が最も優先度の高いアクティブ入力のときにHIGHになります。Q1はD2またはD3が最も優先度の高いアクティブ入力のときにHIGHになります。
ブール式(4対2プライオリティエンコーダ)
4対2プライオリティエンコーダの場合:
Q0 = D1·D̄2·D̄3 + D3
Q1 = D2·D̄3 + D3
簡略化(優先度ロジックにより最も番号の大きいアクティブ入力が優先):
Q0 = D3 + D1·D̄2
Q1 = D3 + D2
ここで + は論理OR、· は論理AND、D̄ はNOTを表します
関連コンポーネント
- デコーダ: 逆操作を実行(バイナリからワンホット)
- マルチプレクサ: データ選択のためにエンコーダと共に使用
- デマルチプレクサ: データ分配のためにデコーダと共に使用
- プライオリティアービタ: プライオリティエンコーダに類似するが異なる出力形式
- コードコンバータ: 異なるエンコーディングスキーム間の変換
- バイナリカウンタ: 状態検出にエンコーダを使用することが多い
- 比較器: エンコーダの原理を使用して実装される場合がある
- アドレスデコーダ: メモリシステムで使用される逆操作