naoto64さんの1bit CPUを動かしてみました

Electronics

1bit CPU組み立てキットがスイッチサイエンスさんで販売開始とのことで、これは何だろうと調べてみたところ開発者のnaoto64さんがドキュメントをGitHubに公開されていました。早速ドキュメントを確認してみました。

GitHub - naoto64/1bit-CPU: 1bit CPU using 74HC series logic IC.
1bit CPU using 74HC series logic IC. Contribute to naoto64/1bit-CPU development by creating an account on GitHub.

1bit CPUの概要

1bit CPUですが、4個の74HC系のICで構成されており、ROMはDIPスイッチです。命令セットは以下の2つしかありませんが、使用例のようにパラメタやアドレスで工夫することができます。

命令機械語使用例
ADD A, Im0機械語で0 1とすればレジスタAに1加算。レジスタAの内容はビット反転する。
これでLEDの点灯・消灯ができる。(=Lチカ)
0 0とすれば0を加算なので何もしない(=NOP)
JMP Im1機械語で1 0とすれば0番地にジャンプとなるが、
これを0番地で実行した場合は1番地に進まないので0番地で停止(=HLT)する。

3つのLEDが実装されており、それぞれCLOCK, PC(Program Counter), レジスタAの状態を示します。

  • CLOCKはシステムクロックです。これは常に点滅を繰り返してCPUにクロックを供給し続けます。
  • PCはプログラムカウンタで、0番地は消灯、1番地が点灯です。通常はCLOCKの1サイクルの間隔で、点滅を繰り返すことになります。JMP命令でPCを停止状態にもでき、その場合はPCが点灯したままになったり、消灯したままになります。
  • レジスタAは1bitの汎用レジスタです。ADD命令で1を加算すると0/1が反転することになります。

ROM容量は4bitですので、動作は全部で16パターンになります。これらの一覧表がGitHubにまとまっています。

これはぜひ試してみたいものです。回路図を見たところ手持ちのパーツで製作できそうでしたので、まずはブレッドボードに載せてみました。

ブレッドボードで実装してみる

ブレッドボードで実装したものは写真のようになりました。スイッチサイエンスさんで販売されているキットに合わせてLEDの色はClock: Blue, Green: PC, Red: Registerとしました。

配線はごちゃごちゃしていますが、GitHubにある命令パターンが正しく動作していることが確認できました。

ユニバーサル基板に実装して小型化してみる

せっかくなのでブレッドボードのパーツをユニバーサル基板に乗せ換えてみました。使用したユニバーサル基板は秋月電子のDIP-IC用パターン Cタイプ(72×47mm)です。今回の回路であれば十分実装できる大きさです。DIP-IC用のパターンとなっているので電源周りもシンプルにできそうです。このユニバーサル基板は初めて使ったのですが、使いやすい感じでした。

実際にユニバーサル基板に実装した1bit CPUです。コンパクトに収まりました。

裏面はいつものAWG30ラッピングワイヤーで配線です。やはり組み立てキットのほうが楽だと思います。

ユニバーサル基板で製作したものも問題なく動作しました。

現在はピンヘッダから電源を供給していますが、今度秋月電子に行ったときにUSB電源供給用USB Type-Cコネクタ DIP化キットを買ってきて取り付ける予定です。(そのため左側を少し空けてあります。)

まとめ

この1bit CPUはロジック回路の実験として面白い素材だと思いました。このようなアイデアを公開いただいたnaoto64さんに感謝です。

タイトルとURLをコピーしました