JavaScriptを有効にしてください

TD4作ってみた

 ·   ·  ☕ 3 分で読めます

「CPUの創りかた」のTD4を製作しました。製作時点で購入できた部品についてまとめてあります。


作ったもの

ロジックICで自作する4bit CPUを「CPUの創りかた」をもとに作りました。集積度が高いのが好きなので、秋月電子のユニバーサル基板のBタイプに収めてあります。実際に作ってデバッグしていくとCPU内のデータの流れがよく理解できました

howtomakeCPU

デバッグしやすいように動作確認がとれる部分ごとに製作していきました。

  1. ROMを作って単体で動作確認
  2. クロック回路を作って単体で動作確認
  3. 命令デコーダを作ってROMとクロック回路をつなげて動作確認
  4. 残りをすべて実装して完成

ROM

TD4のオリジナルの回路に加えて、実行中の命令を示すLEDをつけました。ダイオードはカソードコモンのダイオードアレイを使っています。使用したDIPスイッチは幅が狭く実装密度を上げたい場合はおすすめです。

普通のDIPパッケージの部品を使うときもハーフピッチ基板を使うとピンの隙間に配線を通せて便利です。
ROM

クロック回路

ICの電源ピンからクリップで電源を供給して動作確認しました。

命令デコーダ

同じ種類のゲートを入れ替えて配線が簡単になっています。

CPU中心部

74HC161はSOPパッケージのものしか入手できなかったのですが、ICの裏に配線を通したかったので変換基板を使って表側に実装しました。レジスタAとレジスタBの値を青色LEDで示せるようになっています。出力レジスタは出力のLEDで、プログラムカウンタはROMの緑色LEDで確認できます。
CPU1
CPU2

主要部品購入先

74HC154は入手できなかったため、こちらの記事を参考に74HC138で置き換えました。3-to-8デコーダを2つ使って4-to-16デコーダを作ります。

オリジナル    用途型番購入先
74HC74キャリーフラグTC74HC74AP (フリッププロップ)秋月
74HC161レジスタ・プログラムカウンタTC74HC161AF (4ビットカウンタ)秋月
74HC153データセレクタTC74HC153AP (4chマルチプレクサ)秋月 マルツ
74HC32命令デコーダTC74HC32AP (OR)秋月
74HC283ALUCD74HC283E (加算器)千石
74HC10命令デコーダTC74HC10AP (NAND)千石
74HC154アドレスセレクタTC74HC138AP (3-to-8ラインデコーダ)秋月
74HC540アドレス出力TC74HC540AP (インバータ)千石
74HC14クロック回路TC74HC14AP (シュミットトリガ)秋月
DIPスイッチROMKSD82 (DIPスイッチ 8P)秋月
ダイオードROMCE880 (ダイオードアレイ)秋月

詰まったところ

カウンタICの使い方

TD4ではカウンタICのカウントアップ機能を殺してレジスタを作ります。最初はこのあたりをよく理解せずに配線を始めていて、74HC161のENTピンとENPピンをLに落としていませんでした。このため電源を入れるとレジスタAとBが勝手にカウントアップしました。加算回路を調べても正常だったので本を読み直すとICのカウントアップ機能が原因だったことが分かりました。

プルアップ配線ミス

スイッチのプルアップ抵抗を電源側ではなくスイッチ側につけてしまいました。これは実装した翌日に基板を見て気づきました。製作物も製作者も一晩寝かすとデバッグが進みますよね。

はんだ付け接触不良

レジスタAが常にロードされるような挙動から、レジスタAの74HC161の接触不良に気づきました。

セキュキャンのLT会資料

セキュリティ・キャンプ全国大会2022のLT会でTD4について発表しました。


8bitマイコン
著者
8bitマイコン
組み込み周りで遊ぶ宇宙好き