わっふるぶろぐ

わっふるが日々の出来事をただただ書いていきます~

『CODE』第16章 メモリの構築

第16章では、いよいよメモリを構築していきます。メモリは、情報を保持できる装置です。

 

第14章では、フリップフロップ回路を紹介しました。

 

waffle202.hatenablog.com

 

レベルトリガー型Dタイプフリップフロップは、1ビットの情報を特定のレベルの場合に保持することができました。よって、これを複数用いることでメモリを構築していこうと思います。また、これに合わせて入出力の呼び方を↓のように変えます。

f:id:waffle202:20200309181128p:image

出力Qを「データアウト」と呼び、クロック入力を「ライト」と呼びます。

ライト信号は、データイン信号を回路に保存(書き込み)します。普段は0で、データを保存しています。書き込みをするときに1にし、新しいデータの書き込みを終えると0に戻して保存します。

第14章でも言ったように、この回路はデータに錠を掛けるのでラッチとも呼ばれています。ボックスで表現すると↓です。

f:id:waffle202:20200309181321p:plain

1ビットラッチ

ここで、今回やりたいことを↓にまとめます。

8個の1ビットラッチをつなぎ、そこへ1つのデータイン信号を使って個別に保存すること(書き込み)と、その各々の値を1つのデータアウト信号を使って調べること(読み込み)ができるようにします。

それには、ラッチと次に紹介する8線-1線セレクタ3線-8線デコーダを使います。

 

8線-1線セレクタは、8個のデータ入力と3個のセレクト入力を持っています。セレクト入力は、どのデータ入力を出力するか選びます。8つの入力から1つの出力を選ぶので「8線-1線セレクタ」と呼ばれます。ボックスで↓のように表現します。

f:id:waffle202:20200310165122p:image

真理値表は↓です。

f:id:waffle202:20200311162532p:image

例えば、セレクト入力が000なら出力はD0と同じになり、101なら出力はD5と同じになります。回路図はかなり複雑なのでここでは割愛しますが、この本では詳しい解説付きで図が載ってるので、ぜひ読んでみてください!

8線-1線セレクタを使って、8個のラッチの1つからデータアウト信号を選ぶことができるようになりました。↓がその回路です。

f:id:waffle202:20200310154916p:image

これで、読み込みができる出力側が完成しました。あとは、書き込みができる入力側を設計します。

 

入力側はライト信号とデータイン信号があります。各ラッチに個別に書き込めるようにしたいので、8線-1線セレクタに似た、8個のラッチから1つを選んでWrite入力と同じ値をそのラッチに出力する回路が必要です。

f:id:waffle202:20200311153528p:image

この回路は、3線-8線デコーダと呼ばれます。例えば、左の上と下のスイッチを閉じると、セレクト入力は101となり、右から6番目のラッチのライト信号とWrite入力が同じになり、他のラッチのライト信号は0になります。これのお陰で、データイン信号を1つにつなげても問題ありません。

 

これで、全ての準備が整いました!次のものが今回の要件を満たす完全な回路です!

f:id:waffle202:20200311163113p:image

デコーダセレクタへの3つのセレクト信号を同じにし、「アドレス」というラベルを付けます。この3ビットアドレスは8個の1ビットラッチのうち、どのラッチが参照されているのかを決定しています。

  • デコーダ側のアドレス入力は、ライト信号がどのラッチのデータイン信号を保存させるかを決定しています。
  • セレクタ側のアドレス入力は、8線-1線セレクタを制御してどのラッチのデータアウト信号を出力するかを決定しています。

 

今回の回路は、アドレス入力を変えるだけで、8個のラッチのそれぞれをランダムに読んだり書いたりできるため、ランダムアクセスメモリ(RAM)と呼ばれています。今回設計したRAMは8アドレスに1ビットを保存できるので、8×1のRAMと呼ばれます。

f:id:waffle202:20200312140231p:image

この章の後半では、このRAMを複数組み合わせることで、より大きな容量のメモリを構築していますが、尺の都合上ここでは割愛します。ぜひこの本で確認してみてください!

 

これまで、コンピュータを構成するほとんどの要素を説明してきました。正当なコンピュータと呼ぶためには、自動化をする必要がありますが、今回の『CODE』紹介はここで終わりにします。理由は最後の記事で説明します↓

 

waffle202.hatenablog.com