半加算器
概要
- 目的: 半加算器は、2つのバイナリ桁(ビット)の加算を行うデジタル組み合わせ回路です。和の出力とキャリー出力を生成し、2つのビットを加算した結果を表します。
- 記号: 半加算器は、2つの入力(AとB)と2つの出力(SumとCarry)を持つ「HA」とラベル付けされた長方形のブロックとして表されます。
- DigiSim.ioでの役割: 算術演算の基本的なビルディングブロックとして機能し、より複雑なデジタル加算器やバイナリ計算機の基盤を形成します。

機能説明
論理動作
半加算器は、2つの単一ビットのバイナリ加算を行い、2つの出力を生成します: Sum(結果ビット)とCarry(オーバーフロービット)。
真理値表:
| Input A | Input B | Sum (S) | Carry (C) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
ブール式:
- Sum (S) = A ⊕ B(XOR演算)
- Carry (C) = A · B(AND演算)
入力と出力
- 入力:
- Input A: 1ビットの第1バイナリ入力。
- Input B: 1ビットの第2バイナリ入力。
- 出力:
- Sum (S): 入力のモジュロ2和を表す1ビットの和出力。
- Carry (C): 両方の入力が1の場合のオーバーフローを表す1ビットのキャリー出力。
設定可能なパラメータ
- 伝搬遅延: 入力変化後に出力が変化するまでの時間。DigiSim.ioはイベント駆動シミュレータでこの遅延をシミュレートします。
DigiSim.ioでの視覚的表現
半加算器は、左側に入力、右側に出力を持つ長方形のブロックとして表示されます。半加算器として識別するためにラベル付けされています。回路に接続すると、接続ワイヤの色の変化によってピンのロジック状態を視覚的に示します。
教育的価値
主要概念
- バイナリ算術: バイナリ加算の基本プロセスを実演します。
- 組み合わせ論理: 基本ロジックゲートから複雑な演算をどのように構築できるかを示します。
- 多出力回路: 同じ入力から複数の出力を生成する回路を説明します。
- ビルディングブロック設計: 単純なコンポーネントを使用してより複雑なシステムを作成する概念を紹介します。
学習目標
- バイナリ加算の基本原理を理解する。
- XORゲートとANDゲートがどのように組み合わさって半加算器を形成するかを学ぶ。
- より複雑な算術回路の構築における半加算器の役割を認識する。
- 簡単なバイナリ計算機やカウンタの設計に半加算器を適用する。
使用例/シナリオ
- バイナリ加算: 最も基本的な1ビット加算操作の実行。
- カウンタ回路: バイナリカウンタ設計のコンポーネントとして使用。
- 全加算器の構成: 2つの半加算器とORゲートを組み合わせて全加算器を形成。
- ALUコンポーネント: 算術論理演算装置のビルディングブロックとして使用。
- バイナリ計算機: 簡単なバイナリ計算機回路の作成。
技術ノート
- 半加算器は前の加算操作からのキャリー入力を処理できないため、変更なしでは多ビット加算での使用が制限されます。
- 多ビットバイナリ加算には、複数の半加算器または全加算器をカスケード接続する必要があります。
- Sum出力は実質的にXOR演算であり、Carry出力はAND演算です。
- 物理的な実装では、Carry出力は通常Sum出力よりわずかに短い伝搬遅延を持ちます。
特性
- 伝搬遅延:
- Sum: 通常10-20ns(技術依存)
- Carry: 通常5-15ns(通常Sumより高速)
- 消費電力: 低
- ファンアウト: 通常10-50ゲート(技術依存)
- ゲート数: 2つの基本ゲートが必要(1つのXORと1つのAND)
- 回路の複雑さ: 低
- ノイズマージン: 中から高(実装技術に依存)
実装方法
基本ロジックゲートの使用
- Sum出力にXORゲート
- Carry出力にANDゲート
トランジスタレベル実装
- CMOS: 相補型MOSFETを使用
- TTL: バイポーラジャンクショントランジスタを使用
- 速度または電力に最適化可能
集積回路
- 74xxシリーズロジックファミリで利用可能
- より大きな加算器チップに組み込まれることが多い
- ALU(算術論理演算装置)回路の一部としても利用可能
FPGA/CPLD実装
- ルックアップテーブル(LUT)または専用加算器ロジックを使用
- パフォーマンスまたはリソース使用に最適化可能
回路実装
半加算器の基本的なゲートレベル実装:
graph LR
InputA[Input A] --> XorGate[XOR Gate]
InputB[Input B] --> XorGate
XorGate --> SumOut[Sum S]
InputA --> AndGate[AND Gate]
InputB --> AndGate
AndGate --> CarryOut[Carry C]
ロジック:
- Sum (S) = A ⊕ B: XORは入力が異なるとき1を生成
- Carry (C) = A · B: ANDは両方の入力が1のときのみ1を生成
アプリケーション
全加算器のビルディングブロック
- 2つの半加算器と1つのORゲートで全加算器を構成可能
- 多ビット加算器の基盤を形成
バイナリカウンタ
- シーケンシャルカウンタ回路で使用
- デジタルシステムでのアドレス生成に使用
算術論理演算装置(ALU)
- CPU算術演算の基本コンポーネント
- プロセッサでの加算演算に使用
デジタル信号処理
- デジタルフィルタおよび信号プロセッサで使用
- 積和演算のコンポーネント
エラー検出/訂正回路
- パリティジェネレータおよびチェッカで使用
- チェックサムおよびCRC計算のコンポーネント
制限事項
キャリー入力なし
- 前の加算からのキャリーを処理できない
- 多ビット加算には全加算器が必要
2入力の制限
- 2つのバイナリ桁の加算のみに限定
- 多ビット数には複数の半加算器が必要
関連コンポーネント
- 全加算器: キャリー入力を追加して半加算器を拡張
- リプルキャリー加算器: 直列に接続された複数の全加算器
- ルックアヘッドキャリー加算器: キャリー伝搬が高速な先進的加算器
- バイナリカウンタ: カウントに加算器を使用するシーケンシャル回路
- 算術論理演算装置(ALU): 数学演算に加算器を組み込む