当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

Instruction【NandGame編】

2023年12月16日

はじめに

いつもブログをご覧いただきありがとうございます。

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Instructionレベル

Instructionレベルのゴールは、ALU回路とCondition回路(条件判定回路)を内蔵した回路を組むことです。

※将来的に当該回路(Instruction回路と呼ぶことにする)は複合メモリーと組み合わせてコンピューターを構成することになります。

入力・I:ALUやCondition回路への命令。
桁に注目して0~11ビット目には、指定の動作が割り当てられている。
12ビット目については、ALUへの入力YがAか*Aを指示する。12ビット目が0ならA、1なら*Aになる。
※ALUの入力XはDになる。
・A:Aレジスターへの入力値。
・D:Dレジスターへの入力値。
・*A:RAMに保存するデータ値。
出力・R:ALU演算の結果。
・a:複合メモリー(Combined Memory)の制御用フラグの1つ。
・d:複合メモリーの制御用フラグの1つ。
・*a:複合メモリーの制御用フラグの1つ。
・j:ALUの出力が、0~2ビット目で指定された条件を満たしているかどうか。

Instructionレベルを解く

1:ALU周辺の回路を実装する

splitterコンポーネントを使って、入力Iを各桁ごとにワイヤーに分岐します。これで各コンポーネントにフラグピンに接続できます。

aluコンポーネントを配置します。入力Iの仕様より、splitterコンポーネントの6~10はaluコンポーネントの各フラグにそのまま接続されます。

当該レベルの説明で、ALUの入力Xと入力Yについて言及されています。ALUの入力Xは当該回路の入力D、入力YはIの12ビット目でAか*Aのどちらかになります。

先にALUの入力Xの配線をしてしまします。これは単純に入力Dと直結すればよいだけです。

aluコンポーネントの入力Yは、Aか*Aのどちらかになります。Iの12ビット目(0スタート)で切り替えるということは、splitterコンポーネントでいう12番ピンで切り替えることになります。水道管に例えると、切り替え弁でYへのルートを制御することに相当します。それを実現するためにselect 16コンポーネントがぴったりです。

aluコンポーネントの出力が残っています。これについては、当該回路のOutputに自然に接続できます。

2:condition回路周辺を実装する

キャンバスにconditionコンポーネントを配置します。

conditionコンポーネントのltピン・eqピン・gtピンを使って、0と比較して条件内容を指定します。これはsplitterコンポーネントの0~2とそのままつなげます。

conditionコンポーネントのXピンには、判定対象となるデータ値を与えます。当該回路でいえば、aluコンポーネントの出力ピント接続します。

そして、conditionコンポーネントの出力ピンは、当該回路の出力j端子と接続します。

これでcondition回路周辺の実装は完了になります。

3:未配線のところを完了させる

当該回路の出力の3端子については、Iの4~6ビット目、すなわちsplitterコンポーネントの3~5ピンに対応するので、直結するだけです。

以上で当該レベルのクリアとなります。