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

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

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

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

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

General-purpose Memory【NandGame編】

はじめに

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

コーストFIRE中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

General-purpose Memoryレベル

General-purpose Memoryレベルのゴールは、一般的な用途のメモリー回路を実装することです。

ここでいう一般的な用途とは、あるアドレスへ読み込み・書き込みでき、別のアドレスにも同時に読み込み・書き込みができることを指します。

今回のメモリー回路は4つの16ビットレジスターを備えており、2ビットのアドレスでアクセスできます。

基本的な仕様は次のとおりです。

・a1とa0の2ビットでアドレスAを指定する。

・出力*Aには、アドレスAに格納されている値とする。

・st=1の場合、入力XをアドレスAに格納する。

・出力Iは、pc0とpc1で与えられたアドレスPCに格納された値とする。

・clはクロック信号。

General-purpose Memoryレベルを解く

1:4つの16ビットレジスターを配置する

解説どおりに4つの16ビットレジスターを配置します。

2行2列のメモリーセルと考えるとわかりやすいので、2×2の形で並べます。

clについては直結するだけです。

入力のX端子を各レジスターのXピンに接続します。st=1にならなければ、レジスターの内容は書き換わらないので、すべてを単純に直結して問題となりません。

2:メモリーアドレスの指定をワイヤリングする

a1とa0をそれぞれ、メモリーセルの列と行を指定するものとして考えます。これは3つのデマルチプレクサー(switchコンポーネントで代用)で実現できます。

stをONにしてから、a0とa1のON・OFFを手動でテストしてみて、各レジスターのstピンに1が入力されていることを確認します。

3:出力の*A端子をワイヤリングする

各レジスターからの出力をアドレス値によって振り分けます。そのために、3つのセレクターを使います。

セレクターのワイヤリングについては、ステップ2のデマルチプレクサーのワイヤリングを参考にしてください。

4:出力のI端子をワイヤリングする

ステップ3ではA端子で振り分けていましたが、ここではPC端子で振り分けます。

同様にして3つのデマルチプレクサーを配置して、同様のワイヤリングで実現できます。

5:テストする

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

※テストパターンが少ないらしく、I端子の実装をしていなくてもクリアになります。