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:テストする
テストにパスすると、クリアになります。