見出し画像

TJD4 vol.6 命令デコーダ 汎用ロジックicだけで作るcpu制作記録

こんにちはmasudaです!
今回は命令デコーダについて説明しようと思っていたんですが,いったん配線だけ報告して第7回で命令セットの説明を使用と思います.
ということで第6回,始まります.

進捗

現在の進捗です.
だんだん全体が見えてきました.


命令デコーダってなんですか?

CPUについて詳しくない人にとっては聞き慣れない単語だと思いますが,いわゆる信号の解凍器のことです.
ROMに命令を格納していますが,命令の種類は全部で45個あります.
2^5 = 32, 2^6 = 64 となり,45通りの情報を写像的に表現するためには,最低6ビットの情報が必要になりますし,7ビット以上にすることはメモリーのムダだと言えます.

どんな命令が格納されているのかは,1命令6ビットで表現できることはわかりましたが,実際には命令はそれぞれのicの操作入力になっている必要があります.例えば8入力のセレクタに3ビットの操作,ALUに3ビットの操作,プログラムカウンタの更新には1ビットなど,,,
今回のシステムでは,操作線の合計は12本,つまり情報で言うと12ビットの情報を持っている必要があります.

たとえばアセンブラ「LDA, B」を
ROMに保存するときは「100001」
「100001」を命令デコーダの入力とし,「010001111011」を命令デコーダの出力とするような回路をつくりたいです.

実装方法

で,実際にこの回路を実現するときに,どんなアプローチがあるのかというと,ROMボードと論理回路との2通りがあると思います.
最初に考えた時,6ビットの情報を入力にして12ビットの情報を出力にするとなるとかなりのANDとORを必要になるだろうなと思ったのですが,アセンブラを工夫することでデコーダ出力を実現するANDORを少なくなる事にきがついて,大量のDIPスイッチを使ってROMボードをつくるよりもずっとお手軽で単純な回路になることが分かりました.
...現在自室には大量のDIPスイッチがあるのでどなたか購入して頂けないでしょうか....

写真

命令デコーダは3枚の基板で作成しました.
デコーダ出力は,ROMから6ビット,フラグレジスタから4ビットを考慮して12ビットを出力しますが,
一番下の基板は,ROMのみの参照で出力が確定する11ビットの処理,
二番目の基板は,フラグレジスタを考慮しなければ出力が確定しない,ジャンプの判断に使う1ビットの処理,
一番上の基板は,それら12ビットの情報をLEDで視覚的に確認できるようにし,バッファを噛ませたものになります.
基板には今まで電源配線が埋め込まれている基板を使用していましたが ,バッファみたいにあまりたくさんの5VとGNDを使わない場面では配線の邪魔になりますので今回は一枚だけ色が少し異なるものを採用しています.



感想

命令デコーダは個人的に一番ブラックボックス的な箇所だったので,こここが終わって一安心といいた感じです.
このまま命令セットの記事も一期に書いていきますので興味があればそちらの方も読んでみてください!

この記事が気に入ったらサポートをしてみませんか?