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



半加算器リレーによる半加算器のページで、 基本論理回路やリレーを使えば、 半加算器を作れることが分かりました。
半加算器は 2 個の 2 進数の足し算ができます。
0 + 1 = 1、 1 + 1 = 10 などが計算できる 「賢い」 回路です。
しかし、 2 進数 2 個、「1 + 0 = 1」 だけでは、 もの足りないのも事実です。

半加算回路2種






そこで、 リレーを使った 4 ビットの加算回路を作ってみした。
4 ビットなら 10 進数 1 桁の足し算ができるので、 なんとか “計算機” といえそうです。


まず、 Java アプレットバージョン。

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

下図がその回路図です。
複雑そうに見えますが、 半加算器を単に 7 個 組み合わせただけです。 縦に長い回路図をここでは 4 列に分けて書いてあるので、 各列の @ や A は全部つながっています。 一番下 (右下) に電池があり、 A0 〜 A3、 B0 〜 B3 のスイッチを ON にするとそれぞれのリレーが動きます。

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









こちらは実機バージョンです。

「マジ、 機械が計算するんだ」 ということを学生たちに納得させてあげたくて、 作ってみました。
上の回路図とまったく同じもので、 半加算器が 7 個 (リレーが 14 個) あり、 大きく光っているのが 和 (S)、 小さく光っているのは キャリー (C) を表す LED です。 A (赤) と B (橙) の押しボタンスイッチがそれぞれ 4 個ずつあります。 これを両手の指で押して 「計算」 します。

スイッチを押すと瞬時にリレーがカシャカシャと動いて、 まぎれもなく 「機械が計算している」 ことが実感できます。
当然のことながら、 デタラメにスイッチを押しても、 瞬時に正しい加算の結果が表示されます…。 これって、 結構快感です。

リレー式 4 ビット加算機
リレー式 4 ビット加算機。 0110 + 0111 = 1101 を計算しています。




リップルキャリー リレー式の加算機は、 動作速度が “遅い” のも特徴のひとつです。
リレーの接点が動くのに、 わずかながら、 時間 (数ミリ秒) がかかるからです。

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

それを測定したのが左の図です。
A を 1111 にしておいて、 B0 を 1 にすると、 まず C0 が 1 に、 ついで C0 が 1 になったために C1 が 1 に、 という風に、 キャリーが上位桁に伝わっています。

図の横軸は一目盛が 5 msec です。 各桁でキャリーが 1 になるのにほぼ 10 msec、 B0 が 1 になってから、 約 40 msec 後に C3 が 1 になっています。
4 ビットの 2 進数の加算に 0.04 秒 かかったわけです。

もしこのリレーで 32 ビットの加算機を作ったとすると、 計算に 0.3 秒かかることになります (これはこれできっと壮観で、 面白かろうとは思いますが…)
そんな加算機で何万回も加算を繰り返すプログラムを実行すると、 何時間もかかってしまいます。
リレーの作動時間は数ミリ秒ですが、 コンピュータは 1000 分の 1 秒もあれば何万もの命令を実行できます。 リレーはやはり、 コンピュータには向いていません。



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


情報処理概論 に戻る   目次 に戻る  戻る  


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

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

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