図書館で「CPUの創りかた」を借りて読んでみたところ、CPUをつくりたくてたまらなくなってしまいました。
勢いのままに制作を開始しとりあえず完成させることはできたのですが、ずいぶん不恰好なものになってしまいました(サムネイルを見ていただけるとすぐにわかると思います)。
せっかくなので作成記録を残しておきます。
部品
品名 | 個数 | 値段 |
---|---|---|
100uF 16V 電解コンデンサ | 1 | 17 |
10uF 16V 電解コンデンサ | 3 | 51 |
74HC10 | 1 | 55 |
74HC14 | 1 | 50 |
74HC32 | 1 | 28 |
74HC74 | 1 | 33 |
74HC138 | 2 | 100 |
74HC153 | 2 | 118 |
74HC161 | 4 | 396 |
74HC283 | 1 | 187 |
74HC540 | 1 | 119 |
DIPスイッチx4 | 1 | 44 |
DIPスイッチx8 | 16 | 1,232 |
単極双投(SPDT)トグルスイッチ | 2 | (家にあったやつ 200円くらい) |
DIP14 ICソケット | 4 | 160 |
DIP16 ICソケット | 9 | 450 |
DIP20 ICソケット | 1 | 69 |
USB_C Receptacle | 1 | (Amazonで購入 10個399円) |
ピンヘッダ 2.54mm 1x2 | 2 | --- |
ピンヘッダ 2.54mm 1x4 | 2 | --- |
ピンヘッダ 2.54mm 1x8 | 2 | (家にあったやつ 合わせて30円くらい) |
部品のほとんどは樫木総業で注文しました。 合計で大体 4,000円 でした。
後々基板(PCBA)に大体 6,000円 かかったので、合計 10,000円 ほどでつくれたことになります。
設計
回路
設計には KiCad 7 を使用しました。
![クロック・リセット回路](https://media.yamanekovillage.com/td4_circuit_clock_reset.webp)
クロック・リセット
![CPU・電源回路](https://media.yamanekovillage.com/td4_circuit_cpu.webp)
CPUと電源
![ROM回路](https://media.yamanekovillage.com/td4_circuit_rom.webp)
ROM
高画質版(SVG)は こちら からご覧いただけますよ!
ほとんど本に載っている回路のままですが、 こちらのブログ を参考に、74HC154 を入手性の良い 74HC138 に置き換え、実行中のメモリ位置を表示するようにしました。
また、電源をDCジャックではなく USB C から取るようにしました。
基板
![クロック・リセットとCPUと電源の基板](https://media.yamanekovillage.com/td4_pcb_cpu.webp)
クロック・リセットとCPUと電源
![ROM基板](https://media.yamanekovillage.com/td4_pcb_rom.webp)
ROM
基板料金と運送料の関係上 10cm x 10cm に収めたかったので、CPU達とROMとで基板を分けました。
はじめての基板設計だったのでなかなか楽しかったです。 フットプリントの選定ミスをやらかしてしまいましたけどね。
まぁ動いたからヨシ!!
ちなみにこの画像は修正版のものです。 修正前のやつは撮り忘れちゃいました。 修正したのはピンヘッダとトグルスイッチのフットプリントです。
組み立て
JLCPCBに注文した基板が届いたので組み立てていきま...あれ?
なんかピンヘッダ用の穴がちっちゃいな...
そう、実物が届いたタイミングでようやく設計ミスに気づきました...
このあと、トグルスイッチ用の穴が小さいことも発覚
といっても、また 6,000円払うのもな〜と思ったのでこの基板のまま続行することにしました。 このときは動作するかどうかもわかりませんでしたし
ピンヘッダ用のところにはんだ付けしようとしてもうまくいかなかったので、電気的に同じDIPスイッチやピンソケットの足を KiCad で確認して配線しました。
なかなか芸術的です。
完成!
テスト
こちらのページ にのっているテストプログラムを実行してみました。
![テスト1](https://media.yamanekovillage.com/td4_test1.webp)
out im 命令テスト
![テスト2](https://media.yamanekovillage.com/td4_test2.webp)
mov A,im / add A,im / mov B,A / mov B,im / add B,im / mov A,B / out Breg / jmp im 命令テスト
![テスト3](https://media.yamanekovillage.com/td4_test3.webp)
in A / in B / jnc im 命令テスト
問題なさそうです!
感想
設計ミスに気づいたときは焦りましたが、ちゃんと動作してくれて安心しました。
これで私も CPU制作経験者 になったわけです!☆
といっても今回はほぼ本のままにつくっただけですので、次は独自設計でつくってみたいですね。
「CPUの創りかた」はとってもわかりやすいのでおすすめですよ!
そしてもし読んだなら、せっかくですのでCPUをつくっちゃいましょう! とてもいい経験になりますよ〜
ガーバーファイル
ガーバーファイル(修正版)とKiCad7プロジェクトファイルは GitHub においてあります。 JLCPCB用に書き出したものなので他の製造業者で問題なく使用できるかは不明です。
JLCPCBに発注する場合、PCBAに使用するパーツのページでBasic以外のものは実装しないようにしないと高つくので注意してくださいね。
アプリを作ったりしています! よかったらみていってくださいね→
つくったもの
今のイチオシ↓