デジタル回路 回路 組合せ回路 論理回路 高専2年生

【組合せ回路②】2進加算器

今回は前回勉強した全加算回路を利用して、並列加算器と桁上がり先取り回路を設計する方法について詳細に説明します。

全加算回路を使用した並列加算器と桁上がり先取り回路は、主にデジタルコンピューティングと電子工学の分野で広く利用されています。これらの概念と設計は、以下のような場面で特に役立ちます。

  1. コンピュータプロセッサの設計:
    • コンピュータの中心的な機能である算術論理演算ユニット(ALU)の一部として使われます。ALUは、加算、減算、論理演算などの基本的な算術演算を行います。
  2. 電子計算機の開発:
    • 電子計算機は、多数のデータを迅速に処理する必要があるため、高速な加算器が必要です。
    • 並列処理により、複数のビットを同時に加算できるため、計算速度が向上します。
  3. 組み込みシステムとロボティクス:
    • 組み込みシステムやロボットでは、リアルタイムでのデータ処理が不可欠です。
    • これらのシステムで使用されるマイクロコントローラやマイクロプロセッサにおいて、効率的な加算処理が求められます。

並列加算器(リップルキャリイ型)

今回は2つの4ビット数(つまり、2つの4桁の二進数)を同時に加算するための回路を考えてみます。

下の図の通り,必要な数だけ全加算器(FA)を並べ,前の段からの桁上がりを次段の桁上がりに入力する構成になっています。実際のコンピュータで4ビット同士の加算(0100)と(0110)を行う場合を考えてみます。

計算する2進数はレジスタに格納されます。レジスタは、コンピュータの中心的な部品であり、小さなデータ量を一時的に保存するための高速メモリです。レジスタはコンピュータのプロセッサ内にあり、データや命令、アドレスなどを素早くアクセスできるようにする重要な役割を果たしています。

被加数(0100)と加数(0110)がレジスタAとレジスタBに置かれます。加算器の結果はアキュームレータ(Accumulator)に格納されます。アキュームレータはコンピュータの中央処理装置(CPU)内にある特別な種類のレジスタです。主に算術演算や論理演算の結果を一時的に格納するのに使われ、コンピュータの演算処理において中心的な役割を果たします。

本回路では下位の桁上がりの結果を踏まえて順番に加算を行っていきます。これをリップルキャリィと良い、リップルキャリイ型の加算回路と呼ばれることもあります。この回路では桁数が大きくなると最後の桁上がりが得られるまで多大な時間がかかってしまいます。よって通常の加算器は次に述べる桁上げ先取り回路を付加して高速に処理しています。

桁上げ先取り回路(キャリイルックアヘッド型)

基本のアイデア

桁上げ先取り回路は、加算器を高速化するための特別な方法です。普通の加算器(リップルキャリー加算器と呼ばれる)は、1つの桁から次の桁へと、順番に加算を行います。これは、各桁の加算が前の桁の結果に依存しているため、時間がかかります。桁上げ先取り回路は、全ての桁を一度に見て、どの桁で「桁上げ」(キャリー)が発生するかを先に計算します。これにより、加算の速度が速くなります。

重要な用語

  • 生成(Generate): 2つのビットが両方とも1の場合、その桁で新しいキャリーが「生成」されます。
  • 伝播(Propagate): 2つのビットのうち少なくとも1つが1の場合、前の桁からのキャリーが次の桁へ「伝播」します。
  • キャリー(Carry): 加算で次の桁に伝わる余分な値です。たとえば、1 + 1 = 2 の場合、2は10(二進数)となり、次の桁へ1が伝わります。

4ビット加算器の例

4桁の数字を考えます。各桁をA_i​ とB_iとします(ここでi は0から3の数字です)。桁上げ先取り回路では、以下のように計算します。

生成と伝播の計算:

生成:G_i = A_i \cdot B_i

この関数は、加算する各ビット Ai​とBi​が両方とも1(真)の場合、その桁でキャリー(桁上げ)が生成されることを示します。つまり、その桁で「1 + 1」が発生し、次の桁へ1を伝える必要がある場合です。

伝播:P_i = A_i \oplus B_i

この関数は、加算する各ビットの一方または両方が1の場合に、前の桁からのキャリーが次の桁へ伝播(移動)する可能性があることを示します。XOR(排他的論理和)を使用して、一方のビットが1で他方が0の場合、または両方が1の場合に真(1)を返します。

キャリーの計算:

各桁のキャリーC_(i)は、その桁と前の桁の生成と伝播の値から計算されます。

各桁のキャリー計算:

初期キャリー入力: C_(in) これは最初の桁に影響を与える外部からのキャリー入力です。

最初の桁: C_0 = G_0 + P_0 \cdot C_{in} 

この式は、最初の桁でキャリーが生成されるか(G0​)、または前のキャリー入力(Cin​)が次の桁へ伝播するかを計算します。

2番目の桁:C_1 = G_1 + P_1 \cdot G_0 + P_1 \cdot P_0 \cdot C_{in}

この式は、2番目の桁でキャリーが生成されるか、または1番目の桁のキャリーが伝播するか、さらに初期キャリー入力が伝播するかを計算します。

3番目の桁:C_2 = G_2 + P_2 \cdot G_1 + P_2 \cdot P_1 \cdot G_0 + P_2 \cdot P_1 \cdot P_0 \cdot C_{in}

この式は、3番目の桁でキャリーが生成されるか、または前の桁のキャリーが連鎖的に伝播するかを計算します。

4番目の桁:C_3 = G_3 + P_3 \cdot G_2 + P_3 \cdot P_2 \cdot G_1 + P_3 \cdot P_2 \cdot P_1 \cdot G_0 + P_3 \cdot P_2 \cdot P_1 \cdot P_0 \cdot C_{in}

この式は、4番目の桁でキャリーが生成されるか、または前の桁のキャリーが連鎖的に伝播するかを計算します。

このように、各桁のキャリー計算式は、その桁と前の桁のキャリー生成と伝播の状態を考慮して、次の桁へのキャリーの有無を決定します。これにより、各桁の加算を行う際にキャリーを迅速に計算でき、全体的な加算プロセスが高速化されます。

回路構成

以上により実際に回路を構成すると以下のようになります。回路図を覚える必要はありませんが、どのような働きをするか、どのような設計になっているかは理解しておいてください。

課題

桁上がり先取り回路付き2ビット全加算器を設計してください。

真理値表と回路図を示す事。真理値表及び回路図はdraw.ioで作図し、作図したファイルをレポート用紙に張り付けてを提出する事。

提出先及び〆切は別途指定します。

Follow me!

-デジタル回路, 回路, 組合せ回路, 論理回路, 高専2年生
-, , ,

PAGE TOP