TJD4 vol.3 挫折とプログラムカウンタ 汎用ロジックicだけで作るcpu
お久しぶりです,masudaです!
ずいぶんと待たせてしまいましたが今回もやっていきます.
今回はいろいろと内容がありますので覚悟して読んでください(?)
進捗どんなもん?
自分の記事を読んでいて思ったんですけど,自分が理解していることを文字に起こさな過ぎている気がして,私にとっては分かり切ってる進捗や内容などが,読んでくださる方に伝わっていないなーとおもって.
で,一番気にしてるところは全体の進捗はどんなもんなのかだと思うんですよね.
てことでこんなものを作成してみました.
これがCPU(というかコンピュータ)の全体図と制作過程の進捗です.
基本的にここから仕様変更はないと思います.
まず,CPUを実現するためにはこのモジュール,このモジュールが必要だよなー,と漠然としたイメージしか想像できていない段階の箇所は黄色で示しています.
次に,入力はこれで,このICを使って,出力はこうで,こう配線すれば実現するはずだ!と頭の中で回路が作られている状態は緑色で示しています.
そして,実際にユニバーサル基板に実装して,動作確認を完了している段階で青になります.
残念ながら配線してみたらうまく動かなかった・・・というファクターを紫で示しています.
第1回でリセット,クロック回路
第2回でALU
第3回,今回はプログラムカウンタが完成しました.
モジュール分解するとレジスタ2つと解釈できるので進捗表にはPレジスタCレジスタと表記しました.
入力コントローラとALUセレクタ
で,ここでみなさん気になるのが紫色の箇所なんですが.
前回の記事投稿から,まずALUセレクタに着手したのですが,どうしてもうまく動かなくて.
どうにもこうにもならないので入力コントローラを気晴らしに配線してみたんです.動きませんでしたケド.笑
で,この2点に関しては大学が始まったら詳しい友達に聞いてみようと思います.
8ビットプログラムカウンタ
ここでTD4の泣き所コーナー.
なんとTD4はプログラムカウンタが4ビットです.(!?!?ありえない話‼)
簡単に言うと,プログラムが16行しか書けません.
しかも1行に書けるプログラムは単純で原初的なものしかありません.
これでは,まともなプログラムが書けるだけの容量があるとは言えません.
TJD4では実用的な運用を念頭に置いていますので,プログラムが256行書けるようにカウンタを8ビットにしたいと思います.
使うのは74hc163.
TD4でも使われている4ビットカウンタですね.
実はこのカウンタ,4ビットの出力が全て1であるときにだけ1を出力するQOというピンがあります.
これを使って,下位4ビットと上位4ビットで2つの74hc163を使います.
下位のカウンタは常にカウントアップさせておいて,上位のカウンタは下位のQOが1の時だけカウントアップするようにします.
そうすると上位のカウンタは16回に1回しかカウントアップしないわけですから全体を見ると8ビットのカウンタとしてみなすことができます.
写真と動画
前々から思っていたんですけどね,このサイトmp4が投稿できないんですよ.
kusoですね.
これがgifなら貼れるんだなー.256色しかないけどね.
右の基板がリセット&クロック回路,左の基板がプログラムカウンタです.
右の基板から16Hzのクロックを取ってきている状態です.
プログラムカウンタを見てみるとしっかり下位から上位への信号を受け渡しが上手くいっていることが見て取れると思います.
リセットボタンを押すと8ビットが00000000にリセットされそこからまたカウントアップしていきます.
もちろんジャンプ命令にも対応して任意の8ビットを代入することもできます.
そして回路もキレイでしょー?
前回のカオス空間とは打って変わって整頓され規則正しいものになって大満足です.
感想
ALUレジスタと入力コントローラの原因は早く解消したいと思います.
Aレジスタ,Bレジスタ,Xレジスタ,YレジスタはPレジスタとほぼ変わらないのでサクッと完成させちゃいたいところですね.
ではまた.