目次次へ番外編 Chap.8 ラダー図でメモリをつくる(1)

以前、ラダー図で計算機の構成要素を作って動かしてみようということで、加算器を作り、命令語インタプリタ上で動作させてみました。
今回は、第2弾として、ラダー図でメモリに挑戦します。
ラダー図でメモリといえば、真先に自己保持回路が思い浮びます。
しかし、自己保持回路は、1を書込むセット入力と、0を書込むリセット入力が別々にあります。
今回は、計算機の構成要素としての汎用的なメモリを考えるため、1つの入力から与えられた0または1のデータを、そのまま記憶させる仕様とします。

8.1 自己保持回路
まず、自己保持回路の復習から始めましょう。
図8.1に自己保持回路を示します。

図8.1 自己保持回路

この回路は、次のような動作をおこないます。

(1)セット入力M0を1にすると、コイルM100が1になります。
(2)その後、このセット入力M0を0に戻しても、コイルM100は1のままです。
(セット入力M0を0に戻しても、この接点と並列に接続されているM100が1のため、コイルM100は励磁され続けます。)
(3)この状態は、リセット入力M1を1(このとき、M1のb接点は切れる)にして、コイルM100が励磁されなくなるまで保持します。
(4)セット入力、リセット入力が両方0のときは、出力が0となります。すなわち、リセットが優先します。

の自己保持回路をブラックボックスとして、入出力のみに注目すると、図8.2のように表せます。

図8.2 自己保持回路の入出力

また、この自己保持回路の真理値表は、表8.1のようになります。

表8.1 M100の真理値表
(図8.1の自己保持回路)
M0\M1
以前の状態を保持

8.2 1ビット記憶回路
自己保持回路では、セット入力、リセット入力という2つの入力によって記憶するデータを与えました。
このようなデータの与え方は、計算機のメモリとしては例外的です。
今回は、計算機の構成要素としての汎用的なメモリを考えるわけですから、1つの入力から与えられた0または1のデータを、そのまま記憶させることにします。
最終目標は、1ビット×4アドレスのアドレスデコーダ内蔵のメモリを考えていますが、とりあえずその基本的な構成要素である1ビットを記憶する回路(以下、1ビット記憶回路とよぶ)を考えてみましょう。
1ビット記憶回路の入出力は、図8.3にようにします。

図8.3 1ビット記憶回路の入出力

この記憶回路は、書込指示(WR)を1にすることで、その時点のデータ入力(DI)の値が記憶されます。
書込指示(WR)が0のときは、読出モードとなるため、データ出力(DO)には以前記憶された値が出力されます。
この動作を、真理値表に表すと表8.2のようになります。

表8.2 DOの真理値表
(図8.3の1ビット記憶回路)
WR\DI
以前の状態を保持 以前の状態を保持

8.3 1ビット記憶回路をつくる
では、この1ビット記憶回路を、ラダー図で作ってみることにします。
まず、最初に考えられる方法が、自己保持回路の流用です。
自己保持回路のセット入力、リセット入力に与える信号を工夫することによって、外部からは1ビット記憶回路に見えれば成功です。
以下、この方法について検討します。

まず、1ビット記憶回路に1を書込む条件を考えます。
表8.2の真理値表を見てわかるように、1ビット記憶回路に1を書込む条件は、DI=1かつWR=1です。
次に、1ビット記憶回路に0を書込む条件を考えます。
これも、表8.2の真理値表を見てわかるように、1ビット記憶回路に0を書込む条件は、DI=0かつWR=1です。
これらの条件を、図8.4のように、それぞれ自己保持回路のセット入力、リセット入力に与えれば、外側からは1ビット記憶回路に見えるはずです。

図8.4 自己保持回路のセット入力、リセット入力に条件を与える

実際に、ラダー図でできた自己保持回路のセット入力、リセット入力を、図8.4に示す条件に置き換えると、図8.5のようになります。
(青枠部分がセット入力、赤枠部分がリセット入力に相当します。)
今回は、ラダー図開発ツールLD Cv!でラダー図を作成したため、LD Cv!の仕様により、末尾にEND命令を付加しています。

図8.5 1ビット記憶回路

8.4 1ビット記憶回路の動作確認
図8.5の1ビット記憶回路をLD Cv!上でシミュレーションをおこない、実際に動作を確認してみましょう。
表8.3にしたがってM0(DI)、M1(WR)を変化させたとき、M100(DO)が表8.3の通り変化すれば、1ビット記憶回路は正常に動作しています。

表8.3 1ビット記憶回路の動作確認
M0(DI)
M1(WR) M100(DO) 説明
シミュレーション開始
DI=1にする(WR=0のため、記憶内容は0を保持)
WR=1にする(1を書込)
WR=0に戻す(WR=0のため、記憶内容は1を保持)
DI=0にする(WR=0のため、記憶内容は1を保持)
WR=1にする(0を書込)
WR=0に戻す(WR=0のため、記憶内容は0を保持)
DI=1にする(WR=0のため、記憶内容は0を保持)

実際に、LD Cv!上でシミュレーションしてみると、表8.3のように動作することがわかります。

次回は、この1ビット記憶回路を使って、1ビット×4アドレスのアドレスデコーダ内蔵のメモリを作ってみることにします。

目次次へ