岩の製作記

作ったものを適当に記録します

74HC181を手に入れたので初めての自作CPUを作った話

この記事は 自作CPU Advent Calendar 2023 12 日目の記事です。

こんにちは。岩です。 今回はタイトルの通り74HC181を手に入れたのでCPUを作ってみた話です。

きっかけ

地元某所のパーツショップでロジックICを物色していたら、74LS181を見つけ、店員さんに聞いたら奥にCMOSもあるよ~ということで74HC181をゲットしたのが始まりです。秋葉原でも日本橋でも大須でもない隠れスポットの方が意外と買う人がいなくて在庫が残っているのかも。

構成(CPU部)

渡波 郁 氏の『CPUの創りかた』で紹介されているTD4を8bit化、入出力を拡張し、ALUを74HC181 (ALU機能を持つロジックIC) に換装、RAMを追加したものです。CPU設計は初めてだったのでできるだけ簡単な構造になるようにしました。

構成(入出力部)

今回はCPUで電卓を作りたかったので、16キーのキーボードとVFDを扱うためのI/Oボードを別途用意しました。手持ちのVFDがダイナミック点灯方式のものだったので、折角なのでロジックICのみでラッチ入力→ダイナミック点灯を実現しました。

全回路図(CPU部)

見にくくて申し訳ありません。使用ICはほぼTD4と同じです。名前は電卓用8bitCPUということでDC8です。ROM、RAMは秋月に売っているものです。

全回路図(入出力部)

構成図と同じです。製作時にはロジックICは全て東芝品で揃えてみました。 こだわりポイントです。4511の6と9のフォントが気に入らなかったので、ロジックICを追加して矯正しています。

74HC181について

74HC181は24pinの4bit ALU機能を持つロジックICです。S0~S3の制御入力とモード入力M、合計5本の入力でコントロールでき、キャリー入力Cn、キャリー出力Cn+4を使ってbit数を増やすことができます。また今回は使用しませんでしたが、2つの入力を比較するA=B出力も備えています。これだけオープンコレクタなので扱いに注意が必要です。さらにルックアヘッド演算用のP、G端子を備えていますが、こちらも今回は使用していません。演算機能はいっぱいありますが、実用的なのは10種類ほどしかありません。181を使ったからと言って高度な演算が一発でできるというわけではないようです。やはりALUは自作すべきなのでしょうか。ただ古のロジックICを現代で動かすという点においては181はロマンの塊ですね。

命令一覧

CPUを作るのは初めてだったのでどのような命令が必要かよくわからず命令を乱立させてしまいました。色々ある割には分岐命令は1つしかなかったり不便な所も多いですが74HC181のおかげで多様な演算が1命令でできるようになっています。

製作

基板サイズは秋月の大サイズユニバーサル基板に合わせて155x210とし、チップLED・抵抗・コンデンサはJLCでPCBAしました。ROMはUV-EPROMを使う予定でしたが製作時学祭が迫っておりライタの製作が間に合わなかったため急遽ラズピコで代用(自作CPUとは...?)。総製作費は部品代と合わせて5万円くらい。

ハマりポイント

ROMエミュレータであるところのラズピコから生やしたレベル変換モジュールの電流吐出力が弱く、LEDをぶら下げただけで派手に電圧降下して異常動作していたため急遽LEDを何個か外す羽目に。良い子の皆さんはちゃんとデータシートを見て必要ならバッファを噛ましましょうね。

動作

フィボナッチ数の計算です。全ての出力にLEDをぶらさげたので賑やかです。やはり大量のLEDは自作CPUの醍醐味ですね。

電卓もできました(画面酔い注意)。今回は固定長命令を採用したためプログラム容量が256Bしかなく、6桁だと加算のみが限界でした。可変長命令にしてプログラムカウンタを増強するか、うまくプログラムすれば減算もできそうですが...。加算のみとは言いつつ、電卓なので入力処理の時に実は乗算もしています。ボタンを押すたびに10倍しますからね。

あとがきと展望

TD4を除けば初めての自作CPUでしたがとりあえず動作まで達成したので良かったです。今度は可変長命令と自作ALUに挑戦してみたいですね。自作CPUの沼は深そうだ...