このページの目次
組合論理回路
組合論理とは
組合論理 — 出力は現在の入力のみによって決まり、記憶機能を持ちません。
一般的な組合論理回路
マルプレックス回路 (MUX)
デコーダ (Decoder)
n ビット入力 → 2ⁿ ビット出力 (一度に1ビットのみが1になる)
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
用途: アドレスデコーディング (チップセレクト信号)、7セグメントディスプレイ駆動
代表的なチップ: 74HC138 (3→8), 74HC154 (4→16)
エンコーダ (Encoder)
デコーダの逆操作: 2ⁿ ビット入力 → n ビット出力
優先エンコーダ: 複数の入力が同時に有効な場合、最も優先度の高いエンコーディングを出力
代表的なチップ: 74HC148 (8→3 優先エンコーダ)
加算器
ハーフアッダー (Half Adder)
フルアッダー (Full Adder)
リップルキャリー vs キャリーロクアヘッド
リップルキャリー (Ripple Carry):
桁上げが段々伝播 → 遅延が大きい (n×t_fa)
単純で面積が小さい
キャリーロクアヘッド (Carry Lookahead):
すべての桁上げを並列計算 → 遅延が小さい (O(log n))
複雑度が高く、面積が大きい
代表的なチップ: 74HC283 (4ビット キャリーロクアヘッド加算器)
コンパレータ
プログラマブル論理
基本的な考え方
ゲート回路を組むのではなく、プログラム可能なデバイスで任意の論理を実現する
PAL/GAL: 与える配列はプログラム可能 + 或る配列は固定
CPLD: 複数のPALブロック + プログラマブルな相互接続
FPGA: ルックアップテーブル (LUT) + フリップフロップ + プログラマブルな相互接続
FPGA の LUT
2ⁿ 入力の LUT は、任意の n 入力論理関数を実現可能
3-LUT: 8個のSRAMセルで真理値表を保存 + 3段のMUXツリー
→ 任意の3入力ブール関数!
代表的なチップ: 6-LUT (Xilinx), 4-LUT + 加算器 (Intel ALM)
时序の問題
伝播遅延 (tpd)
入力が出力に安定して反映されるまでに必要な時間
複数のゲートが直列の場合: 総遅延 = 各ゲートの遅延の和
クリティカルパス: 遅延が最も長いパス → 回路の最大動作周波数を決定する
競争とハザード
複数のパスで遅延が異なる場合 → 出力にグリッチが発生する可能性がある
検出: カルノー図において、隣接する主項の間でカバーされていない部分がある
解決策: 冗長項を追加するか、出力でクロック同期する (レジスタで1サイクル遅延させる)
一般的な応用
| 回路 | 機能 | チップ |
|---|---|---|
| 3ステートバッファ | バス接続の制御 | 74HC125/126 |
| バストランシーバ | 双方向データ伝送 | 74HC245 |
| ラッチ | レベルトリガーによる保持 | 74HC373/573 |
| シフトレジスタ | 直列/並列変換 | 74HC595 |
キーワード: 組合論理, MUX, デコーダ, 加算器, コンパレータ, FPGA, LUT, グリッチ, クリティカルパス