Register with backup【NandGame編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Register with backupレベル
Register with backupレベルのゴールは、次の回路を組むことです。入力の16ビット値をバックアップしておき、用意されたいくつかの入力フラグで出力する値を切り替える回路を組むことです。
回路には16ビットレジスターRとその対になるバックアップレジスターRbを内蔵しており、レジスターの現在値を出力します。
入力st=1の場合、入力XをRに格納します。st=1かつsb=1の場合、XをレジスターRbに格納します。
[1]割り込み
sw=1かつmd=1のとき、Rの値をRbに格納し、入力X0をRに格納します。
[2]レジューム
sw=1、md=0のとき、レジスターが保持する値はスワップ(交換)されます。すなわち、Rの値をRbに、Rbの値をRに格納します。
入力 | ・st ・sb ・X ・sw ・mod ・X0:sw=1のときは無視する。sw=0 ・cl:クロック信号 |
出力 | ・R:16ビット。 ・Rb:16ビット。 |
何がどこに格納されるかは、4つの入力フラグ(st、sb、sw、mod)に依存します。文章だけだと複雑に見えるので、真理値表で正確に入出力パターンを確認してください。
st(入) | sb(入) | sw(入) | md(入) | R(出) | Rb(出) |
---|---|---|---|---|---|
0 | - | 0 | - | - | - |
1 | 0 | 0 | - | X | - |
1 | 1 | 0 | - | - | X |
0 | - | 1 | 0 | Rb | R |
0 | - | 1 | 1 | X0 | R |
1 | 0 | 1 | 1 | X0 | X |
Register with backupレベルを解く
1:今回の回路は2つのレジスターを備えているので、2つのregisterコンポーネント(16ビットD-FFレジスター)を配置します。
2つのレジスターの現在値は、出力RとRbからそれぞれ出力しますので、直結でワイヤリングします。
2:入力フラグstとswによる挙動を回路に組み込みます。
入力フラグsw=1のタイミングでレジスターの内容を書き換える処理を追加します。
3:入力フラグmdの挙動を追加します。
md=1なら、X0を扱うことになります。
4:テストする
テストにパスすると、クリアになります。