jinyux’s diary

IT業界初心者です。勉強したことをまとめています。

加算器

半加算器

これから2進数の足し算を行う論理回路を考えてみる。まずは一桁の2進数の足し算を考える。2つの入力をA, Bとし、その和がS, 繰り上がりをCとする。すると真理値表は以下のようになる。

A B S C
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1

真理値表のSに着目するとこれはA, BのXOR演算だとわかる。またCについてはAND演算である。よってこの回路は以下のようになる。

このような回路を半加算器と呼ぶ。半加算器は下位の桁からの繰り上がりを考慮できないので、複数桁の足し算を行うにはもっと改良が必要である。

全加算器

複数桁の足し算に対応した回路を考える。複数桁をもつ2つの2進数をA, Bとし、それぞれの右からi桁目(i=0, 1, 2, \cdots )の数をA_i, B_iとする。そして下位桁からの繰り上がりをC_iする。そうするとA_i, B_i, C_iが入力となる。そして該当桁の和をS_i, 上位桁への繰り上がりをC_{i+1}とすると、S_i, C_{i+1}が出力となる。この場合の真理値表は以下のようになる。

A_i B_i C_i C_{i+1} S_i
0 0 0 0 0
1 0 0 0 1
0 1 0 0 1
1 1 0 1 0
0 0 1 0 1
1 0 1 1 0
0 1 1 1 0
1 1 1 1 1

このような回路を全加算器と呼ぶ。全加算器は半加算器の組み合わせで得られることが知られている。具体的には以下のようになる。

図中の半加算器と書かれた四角形は前述の半加算器をひとまとめにして表したものである。

複数桁の足し算を行う回路

前述の全加算器は一桁の足し算を行うので複数桁の足し算のためにはやはり全加算器を組み合わせて使う。以下の回路は4桁の足し算を行う回路である。全加算器の繰り上がり出力C_{i+1}が次の桁のC_iに入力する。この組み合わせで複数桁の計算を実現できる。このような1bit加算器を直接につなぎ合わせて作成した加算器を順次桁上げ加算器と呼ぶ。


ANDアレイをつかった全加算器回路

余談であるがANDアレイを使った全加算器回路を考えてみる。前回で示したとおり、ANDアレイをつかうと機械的に回路を実装できる。今回は出力がS_i, C_{i+1}の2つであり、それぞれの出力が1になるときの入力パターンを真理値表から対応付けていけば以下の回路が出てくる。