1bit CPU を自作してみました。CPUがどんな原理で動いているか知りたかったので、最も簡単なモデルで試してみました。
回路図
※KiCadの回路図はGitHubよりダウンロードできます。
スペック
項目 | スペック |
---|---|
汎用レジスタ | 1bit x 1 |
アドレス空間 | 1bit |
ROM容量 | 4bit |
命令セット | ADD, JMP |
プログラムカウンタ | 1bit |
フラグレジスタ | 未実装 |
算術演算 | 1bitの加算(XOR) |
最高クロック周波数 | 8MHz程度 |
IC総数 | 4個 |
以上のような超低性能コンピュータです。プログラムは2行しか書けません。1bitしか扱えないため、1+1は0になります。ほぼ何もできないコンピュータです。
命令セット
命令 | 機械語 | 説明 |
---|---|---|
ADD A, Im | 0 | AレジスタにIm(イミディエイトデータ)を加算する。 |
JMP Im | 1 | Imで指定した先の番地へジャンプする。 |
プログラム例
Aレジスタに1を加算し続けるプログラム
ADD A, 1
JMP 0
Aレジスタに1を加算するだけのプログラム
ADD A, 1
JMP 1
何もしないプログラム
JMP 0
プログラムの書き込み
スイッチが無かったので、ダイオードをスイッチ代わりにしました。プログラムを書き込むときは、0にしたいビットのダイオードを取り外します。1にしたいビットのみダイオードを取り付けます。これで書き込み完了です。