「CPUの創りかた」を読んで実際に4bitCPUをつくってみた
CPUの創り方ってどんな本
10個のICで4bitのCPU(4bit)を作ってCPUの原理を理解しようというのが主旨の本です。発売日が2003年なので多くの方が製作に取り組んでいて、製作者のサイトも結構あります。今更感も満載ですが、ただただ自己満足のためにブログに書きます。
4bitCPUのスペック
以下の仕様のCPUを作ることになります。
本の中ではTD4と呼ばれています。
汎用レジスタ 4bit×2
アドレス空間 4bit(16バイト)
プログラムカウンタ 4bit
フラグレジスタ 1bit
算術演算 4bitの加算のみ
動作クロック 3Mhz程度
トランジスタ数 約1500
命令とかの具体的な内容は本よみましょー。
製作期間
〇2020年3月中旬から5月のGWにかけて実施
(半年くらいたったので内容は結構忘れてしまいました)
〇本の読み込み
⇒1週間(平日夜+土日)
〇KiCADでのプリント基板設計期間
⇒KiCAD初心者でしたが2週間程度で完成(土日6~8時間、平日1,2時間)
〇部品選定
⇒1週間(平日夜)
〇実装 (はんだづけ)
⇒休日5日ほぼ掛かり切り
頑張れば社会人でもつくれますがそれなりの時間は使います。
コロナで緊急事態宣言もあり、家にこもってひたすら作ってました。
電子工作慣れてる人ならもっと早そう。
ハードウェア製作の指針
〇プリント基板とユニバーサル基板の両方を使って製作する
⇒どちらも体験したかったので。
プリント基板はマイクロマウスでも使う
ユニバーサル基板もやっておいて損はないと思った(プリント基板がどれだけ便利か知るためには、原点を知っておいた方がいいかな~という考え)
〇プリント基板は外注で作る
⇒Elecrowを利用した。プリント基板は頑張れば自宅で作ることもできるらしいが、道具の購入が面倒くさい。
〇表面実装をやってみる
⇒3216サイズのチップ抵抗を実装した
ロジックICも16本足のものを4個表面実装した
この技術もマイクロマウスの設計で必要
〇機能の拡張はやらない
碌に電子工作やったことないので、へたに手を出してデバッグに時間がかかり、投げ出すことになるのが一番いやだった
ネットを見ていると命令を変更(拡張?)している人もいる。
使った部品と道具
基本的には、以下のサイト様に書いてあった部品と道具をそのまま使っています。すごく参考にしました。
完成品
3つの基板に分割し、それをコネクタでつなぐ形にして実装した
メイン回路:CPUのメイン部分。クロック、リセット、ROM以外の部分がここに集約されている。
クロック&リセット回路:クロックの生成、クロックの切り替え、リセットボタンなどを実装した基盤
ROM:DIP SWを16個とりつけた基板、ここはプリント基板で実装した。
ハーネス長いですが、他の既製品探したり自分で作るのが面倒だったので妥協です。
ROM
途中でショートしてダイオードアレイ1つから煙出た!
クロック&リセット回路
以下の写真のとおり
KiCADである程度配線パターンを考えておいて実装した
この回路で使う無極性コンデンサは一応アノードとカソードがある
今回の回路であればたぶんどっちでも正しく動作する
メイン回路
以下の写真の通り
ショートしてコンデンサ 一つから煙出た!
裏面もひどいありさまです。
プリント基板製作
製作は回路CADで回路図を書いて、部品配置や配線を実施後にプリント基板製作業者(今回はelecrow)にお願いしました。
回路CADは初めて使いました。KiCADというフリーソフトのVer5.1ですが、無料なのに機能が豊富でよいです。
使い方は以下のURLの資料を購入して勉強しました。
トランジスタ技術のバックナンバーとかを購入してもいいかもです。
ネットにもいろいろ情報ありますが、まとまった情報がサッと欲しかったのでマネーパワーで解決です。
2層基板で以下のように部品配置と配線を実施しました。気楽に動けばいいやで作っているので、正直なところ良い配線なのか悪い配線なのか検討もついてませんでした。
素人なりのノイズ対策として直角配線はしないようにしたり、ベタグランドを試してみたりしました。
KiCADの機能として3Dビューもあります。3Dデータはネットで拾ってきたり、最初から用意されてるものを使えばいいので難しいことは無いです。
ちなみに、ピン幅を間違えたので無理くり部品を取り付けられるように頑張りました。
金額は輸送費込みで4000円くらいだった記憶です。
電子工作的なノウハウ
〇基本的なはんだ付けの方法は村田製作所のサイトを見て勉強した
〇表面実装に関して
・ KiCADのフットプリントは手半田用フットプリントのほうがよさそう ??
(通常のものだと、幅が狭くて実装が難しかった)
・ 2.54mmピッチのスルーホールを置いたとき、間に線1本くらいなら通せる。
市場の製品とかだと、2本くらい通していたりするらしい?
UEWに関して
・ ちょっと使いにくかった
毎回熱で被覆を溶かすのがかなり面倒で、一番時間がかかったところかもしれない。
被覆を溶かすためのいいやり方を模索して、効率を上げる必要がある
ただ、被覆部分は絶縁はしっかりしてくれるので、データ線とかにはつかえる
注意する点としては、配線し終わったUEWに小手先があたらないように気を付けないと、気づかないうちに被覆がはがれれてショートする原因になる。
・ 使い方について。
被覆を溶かすときは、こて先にはんだを少しつける
こて先の半田にUEWを接触させると被覆を溶かすことができる
UEWは少しはんだをはじくようで、こての上で半田がはじかれて移動してしまう。
頑張ってはんだを追いかけまわして、被覆をはがす必要がありここに時間がかかった
半田ポットがあれば、被覆を剥ぐのは楽になるかも。
終わりに
・しんどいけど面白い。動けば感動するのは間違いない。時間があれば製作するのをおすすめ。
・電子工作初心者がいきなり製作は難しい気はするが、2,3作品目くらいにちょうどいいかもしれない。個人的には知らないことがたくさん書いてあったので、電子工作をする上での勉強になったし回路図も読めるようになってきた。CPUの動作の勉強にもなると思う。
・ショートには注意
メイン回路の配線材はUEWをつかったが、はんだごての熱で意図しない部分の被覆がやぶれてしまっていたのが原因でショートした。
・今後FPGAで32bitCPU作って、C言語で書いたプログラムを実装できるようにするのもありかなと思った。CPUの作り方10講という本も購入した。こちらはFPGAでcpu回路を作るようなもの。半分くらい読んで、fpgaのシミュレータのところで積んでしまっているのでどっかで続きやりたい。