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

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

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

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

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

Input and Output【NandGame編】

はじめに

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

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Input and Outputレベル

コンピューターを役立てるには、外界とやりとりできる必要があります。モニター、キーボード、タッチセンサー、ネットワークインターファースなどのハードウェアデバイスを通じて行われます。

本レベルでは、ランプとボタンというシンプルなハードウェアデバイスを用います。

ゴールは、設計したコンピューターに入出力できるように機能を追加することです。

  • 入出力
    • ランプとボタンを接続し、メモリーアドレスのようにアクセスできるようにする。
  • デバイスへの出力
    • ランプはXのビット値で制御できる。
      • 1ビット目(0スタート)が1のとき、ランプはオン信号を得る。
      • 0ビット目が1のとき、ランプはオフ信号を得る。
    • st(ストア)が1、cl(クロック信号)が1のときに、ハードウェアに信号を得る。
  • デバイスからの入力
    • ボタンの状態は、コンポーネントの出力の15ビット目に示される。
      • ボタンが押されると、15ビット目は1になる。逆に押されていなければ、0になる。
    • 入寮信号はすぐに読み取れる。

Input and Outputレベルを解く

1:用意されたコンポーネントを確認する

まずはbuttonコンポーネントです。ボタンをクリックすると押すアクションになります。押すと1を出力、離すと元に戻って0を出力します。

buttonコンポーネント

次はlampコンポーネントです。通常の電球と違って、入力ピンが2つあります。onピンに1を与えるとランプが点灯します。一度点灯すると、onピンが0になっても点灯状態が維持されます。ただし、offピンに1を与えると強制的に消灯します。これはonピンよりも強い制限です。「offピンが1」⇒「onピンが1」のように後からonピンが1になってもランプは消灯したままです。

lampコンポーネント

当該回路の入力端子であるstとltに接続して、手動で0,1を切り替えてテストしてみてください。次は順にstとclを操作した状況になります。

splitterコンポーネントは、16ビット値を16本のバスに分岐します。

splitterコンポーネント

bundlerコンポーネントは、16本のバスを集約して16ビット値にします。

bundlerコンポーネント

2:ハードウェアに出力する回路を実装する

splitterコンポーネントを配置して、0ビット目と1ビット目にランプを接続します。ただし、stとclが共に1のときにランプを制御するため、Xとsplitterコンポーネントの間にセレクターを置きます。

3:ハードウェアから入力する回路を実装する

スイッチのON・OFFを15ビット目に設定したビット列をOutput端子から出力します。そのためにbundlerコンポーネントを利用します。