学び直し25日目:5章 コンピュータアーキテクチャ⑤:プロジェクト-CPU(1)
記録
Memory に続き、CPU の HDL を考え中。まだコードは書けてないけど、おぼろげに何をやったらよいかは見えてきた気がします。
考え方
A 命令、C 命令(4章参照)の意味をひとつずつ理解して、接続を考えればよい。つまり、instruction (16bit) の各ビット(=制御ビット)を、どこに・どのように接続すればよいか考えるだけ。以下、16bit のざっくりした内訳。
A, C 命令共通
- 15bit:0 なら A 命令(0aaa aaaa aaaa aaaa)、1 なら C 命令(111a cccc ccdd djjj)
A 命令の場合
- 14~0bit (aaa aaaa aaaa aaaa)
- 定数 or データ操作するメモリアドレス or jump 後のメモリアドレス
C 命令の場合
- 14, 13bit (11)
- 未使用
- 12bit (a)
- ニーモニック。0 なら Aregister のデータ操作。1 なら Memory[A] のデータを操作
- 11~6bit (cccc cc)
- ALU への命令(どの bit を ALU のどこにつなぐかは、ALU の仕様参照)
- 5bit (d)
- 1 なら ALU の out を Aregister に保存
- 4bit (d)
- 1 なら ALU の out を Dregister に保存
- 3bit (d)
- 1 なら ALU の out を Memory[A] に保存
- 2, 1, 0bit (jjj)
- ALU の出力結果の正、負、ゼロと組合せて、PC の load, inc を決める。(And とか Or で組み合わせつつ PC に入力するはず)