幼女でもできる自作CPUチップ (2)

 前回の記事

ourfool.hatenablog.com

で書いた設計フローのうち、仕様設計が確定したのでこれについて書く。

 まず、汎用レジスタは5bitとした。今回作るCPUは5bitのCPUということになる。プログラムカウンタも5bitとする。動作周波数は数Hz~数kHzまでを考慮して設計する。

 5bitというすこぶる気持ち悪い値を選んだ理由としては、4bitだとあまりにオリジナリティのないものができそう、と想像したことが大きい。4bitと比べてやや設計は煩雑になる。これが後々後悔につながらないことを祈るばかりである。

 汎用レジスタ、プログラムカウンタが5bitということで、アドレス空間はそのまま2^5=32Byte…ではなく2^5=32種類のアドレス×命令長10bitというやはりすこぶる気持ち悪い感じになる。プログラムは最大で32ステップとなる。貧弱な気もする一方で、頑張ればいろいろできそうな気もする微妙なライン。

 たとえば、現在PCに使われているような64bitのCPUだと形式状は2^64=16EByteとかいうわけわからんアドレス範囲を扱える*1。これと比べると流石にどうしようもないが、それはそれ、これはこれ、としよう。

 IOはCPU内蔵で単純な5bitパラレルポートとする。具体的なアプリケーションは謎だが今後考えていけばなんとかなるはずだろう。

 クロック、リセット回路、ROM(RAM?)は外部に作る。このあたりはdip部品で基板上に実装する。ただし、全部を載せようとすると基板が巨大になる懸念もある。いま考えているところでは、ROMの基板を4段、CPU+クロック、リセット回路を積んだ基板を1段、とし、Arduinoシールド的なノリで5段積層にするつもりである。数kHz動作までならタイミング的な話は特に考えなくともなんとかなるのではないかと期待を抱いている。

f:id:ourfool:20150429235715p:plain

何よりなんかかっこいいのでこれでいきたい。なおROMは現状だとdipスイッチで実装するつもりだが、物量地獄回避のためRAMを使う可能性もある。ただそれはそれで面倒、かつ外部からの書き込みが必要になるとどうも自作感が薄れてくるので本命はdipスイッチ32個である。

 次回はCPUの具体的な動作をRTL記述する。随分構想が固まってきたのでここは早めに突破してなんとか回路設計、レイアウト設計に時間*2を使っていきたい…

*1:当然ながら16EByteのメモリ実装は物理的に不可能なので、いろいろと工夫がなされている、このあたりは単純化するとどんどん技術的に間違った話となっていくので打ち止めにする。

*2:実のところ、今回のCPUチップ試作にはそれなりのアテとそれに伴う締切が存在する。とんでもなくまたとない機会なので、是が非でも利用したいと思う一方、現状では間に合わない算段となっている。