目次次へ番外編 Chap.4 ラダー図で加算器をつくる(1)

電子回路の教科書にダイオードと抵抗器だけで構成された論理回路(図4.1)が載っていて、なんかだまされたような気になったことはありませんか。

図4.1 ダイオードと抵抗器だけで構成された論理回路

「確かに、この回路は単体では動く。」(0Vを論理「0」、+5Vを論理「1」と考えると、この回路は2入力のAND回路です。)
「でも、この回路どうやって次の段に信号を伝えるんだろう?」

昔の記憶をたどってその教科書を探して読んだら、ちゃんと書いてありました。
この回路は段数を増やすと信号が減衰するで、出力にトランジスタ(増幅器)を接続するんだそうです。
DTL(Diode Transistor Logic)の原理でした。

ところで、リレーは段数を増やしても信号が減衰しない部品です。
リレーだけで計算機を作ることも可能です。
(歴史的にもそういうことになっています。)
ただ、頭で理解していても、実感としてピンとこない人が大半かと思います。
そこで、これから数回にわたり、ラダー図で計算機の構成要素のいくつかを作って動かしてみることにします。
とりあえずは

・4ビット加算器(加算機能のみのALUとも言える)
・メモリ(1bit×4アドレス)

を考えています。

作ったラダーは「番外編の命令語インタプリタ」で動作を確かめることになりますが、リレー回路を動かしているのと等価です。
暇とお金と興味のある人は、本当にリレーで作ってみるのも面白いかもしれません。
(私はしません。念のため!)

4.1 全加算器
一般的には、Nビットの加算器は「桁上げを考慮した1ビットの加算器」をN個接続して構成します。
この「桁上げを考慮した1ビットの加算器」を全加算器(Full Adder)と呼びます。

図4.2 全加算器

図4.2の全加算器の真理値表は、表4.1、表4.2のようになります。

表4.1 Yの真理値表
(図4.1の回路)
B\Ci
表4.2 Coの真理値表
(図4.2の回路)
B\Ci

表4.1、表4.2は次のように解釈します。
(1)YはA+Bの加算結果であるが、下位桁からの桁上げ(Ci=1)がある場合は、加算結果に更に1を加算する。(表4.1)
(2)(1)で桁上げがあった場合のみCo=1とする。(表4.2)

4.2 4ビットの加算器
この全加算器を図4.3のように4個接続すると4ビットの加算器になります。

図4.3 4ビット加算器
(全加算器を4個接続)

図を見てわるように、各桁の桁上げ信号(Co)を、上位桁のCiに入力することで、桁上げ処理を自動的におこなっています。

4.3 全加算器を論理式に変換
では、図4.3の構成要素である全加算器1個分を論理式で表してみることにします。
真理値表から論理式を導きだすのは、次のように機械的におこなえます。

「真理値表の出力が1の場合にのみ注目し、そのときの各入力条件の信号名の論理積を作り、これらの論理和が真理値表の論理式となる。
ただし、各入力条件の信号名の論理積を作るとき、入力が0の信号名だけは論理否定記号を付ける。」

表4.1、表4.2の真理値表にこの方法を適用して論理式を作ると次のようになります。

これで全加算器の論理式が出来上がりました。

4.4 論理式をラダー図に変換
次に、全加算器の論理式をラダーに変換してみることにします。
まず、図4.2の全加算器の入出力にI/O番号を割り当てます。
ここでは、表4.3のように割り付けることとします。

表4.3 I/O番号の割付
信号名 I/O番号
M0
M10
Ci MF
M20
Co M1F

何か非常に作為的な割付ですが、実は今後4ビットの加算器を「番外編の命令語インタプリタ」で動かしたときに見やすいようにしてあります。

I/O番号も決まったので、全加算器の論理式をラダー図に変換してみましょう。
とりあえず「番外編の命令語インタプリタ」の制限事項は考えないこととして、式のとおり素直にラダー図に置き換えてみます。(図4.5)

図4.4 全加算器のラダー図

このラダー図は「番外編の命令語インタプリタ」では制限事項がありそのまま動きませんが、一般のPLCやリレー回路はこのラダー図を実行することができます。
「番外編の命令語インタプリタ」で動かすのは次回のお楽しみ(?)とし、ここではこのラダー図がどんな動きをするかちょっと見てみます。
(例によって、ラダー図開発ツールLD Cv!を使いました。)

図4.5 全加算器の実行結果
(A=1、B=1、Ci=1のとき)

図4.5は、全加算器のラダー図に対して、A=1、B=1、Ci=1を入力した場合の実行結果です。
導通状態の部分が緑色になっています。
図4.5の状態は、図4.6の筆算をおこなっていることに相当します。

図4.6 1ビットの加算の筆算
(A=1、B=1、Ci=1のとき)

次回は、このラダーを「番外編の命令語インタプリタ」でも動くように書きして、それを4個接続して4ビットの加算をおこなってみます。
ここまでの考え方が間違っていなければ、たとえ4ビットでもちゃんと計算するはず(?)です。

目次次へ