戻る リレーによる 4bit 加算回路  (4bit adder)


半加算器リレーによる半加算器 のページで、 基本論理回路やリレーを使って半加算器を作れることが分かりました。
半加算器は 2 進数の 1 桁の足し算ができます。

半加算回路2種


しかし、 2 進数1 桁だけの加算では、 面白くも何ともありません。

そこで、 4 ビットの加算回路を作ってみます。

複数のビットの加算をするには、下位の桁の加算で生じたキャリーも加えなくてはなりませんから、 1 桁加算するのに半加算器が 2 個必要になります。
ただし、最下位の桁には下位桁からのキャリーがないので、4 ビットの加算回路だと 2 × 3 + 1、 計 7 個の半加算器があればいいことになります。



下図が加算回路です。
一見複雑そうに見えますが、 単に半加算器が 7 個 組み合わせられているだけです。

この図のスイッチやリレーのコイル A0 〜 A3B0 〜 B3、 または下部の 2 進数 A, B の付近をクリックすると動きます。
4 桁の 2 進数の加算ができますから、試してみて下さい。










実際に加算回路を作ってみました。

web では試してもらえないのが残念ですが、スイッチを押す度にリレーがカチカチと動いて、 まぎれもなく 「電気回路が計算している」 ことが実感できます。

リレー
リレー式 4 ビット加算回路 (0110 + 0111 = 1101 の計算例)

トランジスタや IC は、リレーのような 「スイッチ」 と同じ働きをしますから、 リレーで計算できるのなら、 IC でも計算できるのに不思議はありません。
リレーだろうが半導体だろうが、ともかくスイッチを組み合わせていけば、 論理回路や演算回路、あるいはコンピュータといったようなものもできるんだということが理解しやすくなります。



リップルキャリー リレー式の加算器は、動作速度が遅いのも大きな特徴です。

例えば、A を 1111、B を 0000 (1111 + 0000 = 1111 の状態) にしておいて、B を 0001 にする (1111 + 0001 = 10000) と、 最下位ビットに 1 を加えたことによってキャリーが発生し、 それが次々に上位桁に波及していきます。 4 個のリレーが 「ジャッ」 という音を出すので、 計算に少し時間がかかっていることが分かります。
それを測定してみたのが左の図です。

A を 1111 にしておいて、B0 を 1 にすると、 まず C0 が 1 に、 ついで C0 が 1 になったために C1 が 1 に、 という風に、キャリーが上位桁に伝わっています。
図の横軸は一目盛が 5msec ですから、キャリーを計算するのにほぼ 10msec、 B3 が 1 になってから、約 40msec 後に C3 が 1 になっています。 4 ビットの 2 進数を加算するのに、0.04秒 かかったわけです。
もしこれが 32ビットの加算器であれば、計算に 0.3秒 かかることになります。

加算を何万回も繰り返すようなプログラムでは、加算だけで何時間もかかってしまいます。 リレーはやはり、 コンピュータには向きません。 (look-ahead carry adder という、キャリーを別途計算して、高速に処理できる加算回路もあります。)




関連事項: 半加算器   リレーによる半加算器  2進数の加算  


情報処理概論 に戻る   講義資料 に戻る   戻る  

*1 A0〜A3、B0〜B3 のスイッチを押すと、青、赤の線で囲まれている 3つの接点が動きます。 A、B の和に、更に下位桁からのキャリーを加えるために、もう1個の半加算器が使われています。 ベージュの楕円で示されている部分が、 おおむね、 それぞれの半加算器です。


  また、下図は論理回路で書いた加算回路です。HA はそれぞれ半加算器を表しています。 論理的には、上の図とまったく同じです。

Java applet 圧縮アーカイブファイル    自由利用マーク
update: 2007.08.02  address