Control Unit【NandGame編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Control Unitレベル
Control Unitレベルのゴールは、

NandGameのコントロールユニットの仕組み
・入力Iを命令にデコードする。
入力Iからは16ビット値が入ってきます。
最上位ビットで命令セットが決まります。

フラグs1、s0、sbは入力レジスターを選択します。

sb=1のときには、代わりにバックアップレジスターが選択されます。
Control Unitレベルを解く
1:control unitコンポーネントを配置して、入力ピンをワイヤリングします。

2:出力端子にセレクターをワイヤリングします。
特にX端子とPC端子は1つの16ビットセレクターを共有することに注意してください。

3:出力側のセレクター群(の一部)とcontrol unitコンポーネントの出力側のピン群を接続します。
セクレターの振り分けは、Iの上位2ビットが10bかどうかで行います。

4:I端子の13、5~0ビット目をセレクターの入力d1ピンに接続します。
特に、0ビット目のbはセレクターを介して出力端子sbとつなげることに注意してください。

5:control unitコンポーネントの出力ピンをワイヤリングします。

6:m、sb、swにつながっているセレクターのd0は常に0を与えます。

7:入力端子にあるレジスターA、D、M、PCのバックアップレジスターはそれぞれAb、Db、Mb、PCbに対応します。つまり、バックアップレジスターを使うか否かをsbで判定できます。sb=1ならバックアップレジスターを使うわけなので、16ビットセレクターを用意して制御ビットとsbを接続します。そして、D1側にバックアップレジスターの端子をワイヤリングするのです。

8:Iの7と8ビット目の2ビットで、4つのレジスター値を指定します。
ここでもセレクターを使います。3つの16ビットセレクターがあれば十分です。

9:テストする
テストにパスすると、クリアになります。
