GW をフルに使って自作界隈では有名な「CPUの創りかた」の TD4 を作ってみました。
実は2年前にすでにパーツ類は購入済みだったのですが、当時はアセンブリや機械語の経験がなかったため本の命令フォーマットのところがいまいち理解できず、結局作らずじまいになってしまっていました。
現在は、コンパイラ作成の経験のおかげで多少なりともアセンブリの読み書きにも慣れていたので、比較的すいすいと内容を理解することができました。
概ねオリジナルの TD4 と同じ実装にしましたが、ROM の横に LED を追加したのと、74HC154 が手に入らなかったので 74LS138 を使ったところがオリジナルとの主な変更点です。74HC154 以外の IC は秋月やマルツ経由で Digi-Key から購入して揃えました。 74HC154 の置き換えに関してはこちらの方の投稿を参考にさせていただきました。
オリジナルからの変更点|cuboktahedron|note
全体像はこんな感じ
配線がなかなか苦しいことになっています。基本的には黒いビニール線を使いましたが、作成途中でカラフルなビニール線を買っていたことを思い出したのでなんとなく使ってみました。作成初期から使っていたら、どこをどこに配線したのかが見やすかったかもしれません。
今回は配線する前には回路図を改めて書いていたので配線箇所を間違えることなく進めることができました。
こまめに接続確認もしていたので手戻り作業を減らすことができたのかなと思います。 ただ、線と線の間隔が狭すぎたところは、はんだ付けしている最中に隣の線のビニールを溶かしてしまったようでショートが起きてしまいました。 最終的な動作確認のときに想定外の動作に気づいたのでそのときは絶望しかなかったですが、すぐにに原因箇所が見つかってスパゲッティコードのデバッグ沼に踏み込むことはありませんでした。
今回簡易的なものとはいえ CPU を作ってみたことで、コンパイラを作ったときに疑問に思ったニーモニックと機械語との1対1の対応関係や、その機械語を CPU はどのように解釈するのかといったところを身を以て学ぶことができた思います。 とはいえ、 IC で CPU 作るのは結構結構辛いなぁと思ったので次回作成するときは FPGA を使ったり、配線の負担を減らすためにプリント基板を使いたいと思いました。