書籍「CPUの創り方」(2003年)渡波郁 著

CPUの創り方

 この本は電子工作の入門書です。しかし入門書と言っても内容は壮大で、CPUを設計して自作しようというものです。電子工作初心者だけでなく、ある程度電子工作をしてきた人にも読みごたえのある一冊になっています。

作ったもの : TD4

TD4

 この本の中で設計しているCPUを実際に作りました。TD4とはTada Dousa-suru-dakei-no 4-bit CPU という意味です。

ICとCPUの違い

 ICは、決まった動作をしかできません。「こんな機能が欲しい」という時は、その機能を持ったICを買いに行かなければなりません。しかし、CPUは「プログラム」を実行することができます。これにより、プログラム次第で様々な動作をさせることができます。今回は、決まった動作しかできない「IC」を使って柔軟な動作の「CPU」を作りました。(と言っても、回路を設計したのは上の本の作者さんです。)

CPUの構成

CPUのbit数

 先にも書いたとおり、これは4bitのCPUです。4bit CPUというのは各レジスタが4bitでできているということです。

プログラムメモリ(ROM)

 写真左側に、16個のDIPスイッチが並んでいます。これがプログラムメモリ(ROM)です。8bitのDIPスイッチが16個あるので、16ByteのROMになります。普通、ROMといえば不揮発性のフラッシュメモリですが、TD4では物理的スイッチにより実現しています。

レジスタ(RAM)

 TD4には4bitのレジスタが4つあり、以下の役割があります。写真中央の縦に並んだ4つのICです。

  • プログラム・カウンタ
  • 汎用レジスタA
  • 汎用レジスタB
  • 出力レジスタ

算術論理演算装置(ALU)

 TD4は、4bit + 4bit の加算器を持っています。以上。

入出力

 入力は4bitで、写真中央最下部の4つのスライドスイッチです。これらのHigh/Lowをレジスタに取り込むことができます。
 出力も4bitで、それぞれに黄色のLEDがつながっています。

動作

 TD4にプログラミングするには、まずはアセンブリ言語を書きます。それをハンドアセンブル(アセンブリ言語を、2進法に変えること)をして、TD4のDIPスイッチにプログラムを書き込みます。

アセンブリ言語命令一覧

 プログラムメモリは8bitで1かたまりです。8bitのうち、左4bitがオペレーションコード、右4bitがデータになっています。

アセンブリコード表

動作周波数

 本の中ではハンドクロック(ボタンを押すたびにクロックが進む)と1HzのRCクロックが用意されていました。これに加えて、可変抵抗による可変クロックをつけました。
 クロックの最速は、344Hzでした。オシロスコープでクロックを見てみるっと、波が少し汚いです。これはRC発振を標準ロジックICのシュミットトリガで行ってるためだと思われます。

オシロスコープ

 そこで、クロックのソースをファンクション・ジェネレータに変えてみました。すると、約1MHzくらいまで動作しました。しかし、クロックが動くのが確認できても、プログラムを正常に実行しているのかは早すぎてわかりませんでした。

まとめ

 この本を読むと、CPUの構造が本当によくわかります。実在するCPUもこれの拡張にすぎません。 マイコンなどを使う時も内部の構造を知っていて使うのと知らずに使うのでは、生産性がかなり違うと思います。ブラックボックスと思い込んでしまうのはだめです。
 TD4を作るとハンダ付けの技術が上がります。本を読むだけでなく、実際に作ってみましょう。作り終わったら、楽しい楽しいデバック作業が待ってますよ(^^)

TD4 裏面