CPUをつくろう -ROMの設計編-

ROMとは

Read Only Memoryの略、データを保存しておく装置。Read onlyだから「読み取り専用」のメモリである。プログラムの命令コードやデータをここに書き込んでおき、プログラム実行時にここからデータを読み出す。そしてROMは不揮発性(電源を切ってもデータが消えない)のメモリである。パソコンであればHDDやSSDを指す。他にもフラッシュメモリやCD-ROMと言ったものがある。

まぁ読み取り専用と言いながら書き込みも出来るのだが、ROMの場合は特殊な方法を用いないと書き込むことは出来ないし書き込み時間も遅い。HDDなら磁気で書き込むし、CD-Rならアモルファス合金にレーザー照射して書き込む。SSDやフラッシュメモリーは電気的に書き込めるのだが…

書き込めるのにRead onlyとは良く分かりづらいが、要するにプログラム実行中は読み取り専用として動くということ。プログラム実行中に計算したデータを書き込んだりはしない。プログラムを動かして色々計算して最後に何か保存しておきたい時、このROMに保存しておく。という使い方をする。(OSがSwap領域として使う場合は除く)

ROMをどうやって作るか

先述のとおり、ROMとは「電源を切ってもデータが消えない読み取り専用のメモリ」である。世の中にはHDDやフラッシュメモリもあるが、そんなものは使えないから自作する。

ROMはスイッチを使って作る事ができる。スイッチを閉じたら0、開いたら1という具合に作る。これならスイッチを手動で切り替えて0、1を入力(書き込み)できるし、スイッチを切り替えない限り電源を切っても状態は保存される。(不揮発性)

まずはスイッチとプルアップ抵抗

スイッチを使って0、1を切り替えるにはどうするか?ここではプルアップ抵抗というものを使って実現する。

回路は下記の様になる。スイッチの片側をGND(0V)に接続し、反対側を出力とする。出力は抵抗Rを介して電源(5V)に接続する。出力が抵抗を介して電源に吊られている。この抵抗を「プルアップ抵抗」と言う。

ここでスイッチを開閉するとどうなるだろうか?

まずはスイッチが開いている状態。スイッチが開いていると出力側はどこにも接続されていないため電流が流れない。電流が流れないとプルアップ抵抗Rで電圧降下が起こらない。よって出力は5V、すなわち1となる。

∴スイッチ開で、出力1

つぎにスイッチが閉じた場合を考える。スイッチを閉じると出力側はGNDに接続されるため電流が流れる。そうするとプルアップ抵抗Rで電圧降下が起きて出力は0Vとなる。

∴スイッチ閉で、出力0

これが1bit分のメモリとなる。ROMを作るにはこの回路を複数接続していく。