この記事はセルオートマトンによるCPU作成連載記事の19本目です。(2023/01/26)
今回の回路は読み取り専用のメモリ(ROM)です。入力をアドレスとみなしてそのアドレスに入っている値を出力します。値を書き換えることはできず、回路に値がハードコーディングされています。デコーダの組み合わせで実現できます。格子状の回路の上半分がデコーダになっており、下半分が値が書き込まれているエリアです。
下のサンプル回路は入力が0から12までだった場合に書き込まれている値を出力します。13以上の入力では値がなくて0を出力します。左のボタンでアドレスを設定できます。アドレスに応じて右から数値が出力されます。
入力(アドレス) | 出力(保存されている値) |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 8 |
6 | 13 |
7 | 21 |
8 | 34 |
9 | 55 |
10 | 89 |
11 | 144 |
12 | 233 |
次の回路では、ROMの入力側にカウンタを接続し、出力側にディスプレイを接続しました。動かすとメモリに保存されている値が順番に表示されていきます。ディスプレイは表示が落ち着くまで少し時間がかかります。
このROMには保存されている内容はさきほどと同じです。たまたまフィボナッチ数列の数字が保存されているため、ディスプレイにはフィボナッチ数が順番に表示されます。