Register bank【NandGame編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Register bankレベル
Register bankレベルのゴールは、次に示す4つのレジスターを保持する回路を組むことです。
・A:アドレスレジスター
・D:データレジスター
・M:モード(?)レジスター
・PC:PCレジスター
ただし、各レジスターは16ビットを記憶しますが、内部にはバックアップレジスターも備えています。つまり、Register with backupレベルで実装したレジスター回路そのものとします。
・a=1のとき、入力XをAに格納する。
・d=1のとき、入力XをDに格納する。
・m=1のとき、入力XをMに格納する。
・j=1のとき、入力PCをPCレジスターに格納する。
・sb=1のとき、対応するバックアップレジスターに格納する。
[1]モード変更
mdは現在モード、swはモード変更を示します。
[2]割り込み
sw=1かつmode=1のとき、次のように値がレジスターに格納されます。
・レジスターAbのデータからAへ
・入力IRのデータをDへ
・値0をMへ
Register bankレベルを解く
1:4つのレジスターを配置する
4つのレジスターを配置して、RピンとRbピン、clピンをワイヤリングします。
ここまではほとんど自明にできあがります。
2:PCレジスター周りを実装する
どこから始めてもよいのですが、PCレジスターは用途がわかりやすいので、PCレジスター周りから実装していきましょう。
PC端子と「PCレジスターのXピン」をワイヤリングします。そして、PCレジスターにはjピンがあるので、j端子とワイヤリングします。
残りのピンについては同一名の端子とワイヤリングさせるだけです。
3:データレジスター周りを実装する
左から2番目のレジスターはデータレジスターです。次にデータレジスター周りを実装します。
データはX端子からくるので、データレジスターのXピンにワイヤリングします。Xピンからくるデータを記憶するのは、d端子が1のときです。つまり、d端子と「データレジスターのstピン」をワイヤリングします。
残りのsb、sw、mdピンについては、同一名の端子とワイヤリングします。
X0ピンには割り込み用のデータが入ってくる可能性がありますので、IR端子とワイヤリングします。
4:アドレスレジスター周りを実装する
一番左のレジスターはデータレジスターです。基本はデータレジスターと同様なワイヤリングになりますが、X0ピンはR0をフィードバックする形になります。
5:モードレジスター周りを実装する
モードレジスターについてもデータレジスターと同様なワイヤリングになります。ただし、指示されたとおりに、X0ピンにはゼロを与えます。
6:テストする
テストにパスすると、クリアになります。