8bit CPUを自作する(7)


回路設計

導入

ようやく回路を作ります。ここまで長かったですね(?)
これまでの6回で考えたブロックごとに基板を作ります。各ブロックをスタックして基板タワーを作ることが目標です。

命令デコーダ

これは第4回で書いた図をそのまま回路図に書くだけです。簡単だね。
M4のところを修正しました。

命令デコーダ

ALU

ALUは第2回第3回で書いたものを組み合わせていきます。

全加算回路とシフト回路でシートを分けました。そこからの出力をマルチプレクサで選択します。

ALU

全加算回路はさらにB入力のインバータと1bitの全加算器にそれぞれ分けてます。

全加算回路

全加算回路
インバータ

1ビットの全加算器はモジュールにしています。

1bit全加算器
3in MUX

シフト回路

さっき出てきた3入力マルチプレクサと2入力マルチプレクサx2を使ってシフト回路を作ります。 2入力マルチプレクサを2つまとめた理由は基板に起こすとサイズの問題でVカットできないことに気が付いたからです。

シフト回路
2in MUX x2
2in MUX

こっちの3入力マルチプレクサはモジュールではなく直接基板に載せるのでパッケージをほかの3入力マルチプレクサで共有しています。

3in MUX

Memory CTRL

最後までいい名前が思いつかなかったMemory CTRLです。 配線難易度の問題から基板を2枚に分けました。 第5回でいうところの"CTRL"とOut-Registerとフラグレジスタ、A,Bレジスタと入力の2つにしました。 それぞれのレジスタの共通部分を"Register-base"としています。これで1つのモジュールとしています。

Register-base

データの保持と入力を選択するマルチプレクサはさっきの2入力マルチプレクサを4つ並べたものを使います。ALUみたいに74HC157を使えばよかったのになぜこうしたのかは分かりません。

LD MUX Array

MEM CTRL0

MEM CTRL0

CTRLも第5回で書いた通りです。

CTRL

Out-RegisterはRegister-baseままです。

Out-Register

フラグレジスタは今回はすべてが同じタイミングで更新されるのでRegister-baseを流用します。 フラグ決定のロジックは第5回で書いた通りです。

フラグレジスタ

MEM CTRL1

74HC240だったのを74HC244に修正しました。

MEM CTRL1

Aレジスタの中身はRegister-baseです。しかしAの入力をALUとデータバスで切り替えるためにマルチプレクサを追加します(AIN MUX)。こっちでは74HC157を使っています。さらに出力もALUの入力とデータバスへの出力を制御するためにトライステートバッファを追加しました。

A-Register
AIN MUX

Bレジスタは出力にトライステートバッファが必要でした。Register-baseの後ろに74HC24074HC244がいます。

B-Register

入力はピンソケットとDIPスイッチの二つを用意しました。これも出力にトライステートバッファが必要です。

IN

ROM

ROMも面積の問題で実際のスイッチであるROM Memory Unitと第1回で示したROM CTRLをROM Process Unitの2枚に分けました。

ROM Memory Unit

第6回で示した通り16スイッチ使用します。74HC138を1つ/8SWで使用するので、8SWを単位としてシートを分けています。違いはGピンの接続です。 スイッチにダイオードアレイとしてシートを分けた理由は、回路図に起こしている途中に本当にダイオードを使用するか怪しかったのでスペース確保するためです。 74HC240のローの電圧が1.3Vほどで、秋月で売っているダイオードアレイのVFが1.2Vなのでこれを使うのはやめます。1N4148もVFが1Vなので怪しいです。なので今回はBSS84をダイオード接続して使います。 多分頭おかしいです。

ROM Memory Unit
ROM Unit0
ROM Unit1
ROM Switch
Diode Array

ROM Process Unit

こっちはマルチプレクサだけの回路です。

ROM Process Unit

プログラムカウンタ等

プログラムカウンタとクロック、リセット回路です。 クロックは半固定抵抗も用いて可変にしています。 他はTD4と同じですね。

PC

あとがき

やっと配線終わりました。10日ほどかかったんだね。3Dモデルの写真はこんな感じです。

3D

基板は年明けに注文するのでそれまでは次のCPUの構成を考えます。本当はタイトル通り8ビットを作るべきなんですけど......


2025-02-19追記: 第4回、第6回に示した修正を反映しました。

  • 命令デコーダのM4を修正
  • ROMのイネーブルを修正
  • MEM CTRL1の74HC240を74HC244に修正
  • Bレジスタの74HC240を74HC244に修正
  • INの74HC240を74HC244に修正