オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第13回では、オリジナル4ビットCPU「DL166」にタクトスイッチやフォトセンサーをつないで、そこから得られる値をDL166で読み込めるようにする。
前回に引き続きオリジナル4ビットCPU「DL166」を用いてバイナリプログラミングの演習を始めます。今回は「Tang Nano 9K(以下、Tang Nano)」にセンサーをつないで、その値をDL166で読み込めるようにします。最初にタクトスイッチを外付けで接続してから、続けてフォトセンサーの接続にも挑戦します。
⇒連載「オリジナルCPUでバイナリコード入門」バックナンバー
今回は電子工作の要素も含みますのでブレッドボードが必須となります。タクトスイッチとフォトセンサーも必要ですが、これらの部品の説明は本記事の中で行います。
これまでと同様に、Tang NanoにLEDドットマトリクスを搭載したものを用います。連載第4回記事『新たな教材となる「Tang Nano 9K」を使ってLEDマトリクスを制御する』を参考にしてください。また、LEDマトリクスの見方は連載第9回記事が参考になります。
Tang Nano搭載のFPGAの製造元であるGOWIN SemiconductorのIDE(統合開発環境)も必要です。インストール時にドキュメントがダウンロードされますのでそれを参考にしてください。これらのドキュメントには日本語版も含まれています。
本稿で紹介するVerilog-HDLやサンプルコードは以下のリポジトリから入手したください。
⇒DL166の命令セットのプロジェクトがあるGitHubのリポジトリはこちら
また、本記事で紹介するサンプルコードにおける命令セットの意味や使い方は、DL166の仕様を紹介した連載第1回記事『オリジナル4ビットCPU「DL166」はプログラミングの基礎学習に最適』を参考にしてください。
図1にはTang Nanoのピン配置が示されています。タクトスイッチは、GNDと31番ピンに接続します。図1内の右下にある赤枠で囲った箇所です。GNDと31番ピンはブレッドボードの穴を1個分空けて接続します。
図2は、ブレッドボードを介してタクトスイッチと、Tang NanoのGNDと31番ピンに接続しているところです。タクトスイッチには4本ピンがあります。タクトスイッチの形状は長方形であり、図2で示されるように横方向にブレッドボードの穴で3個分、縦方向に4個分のところにタクトスイッチのピンがあります。タクトスイッチを押下すると穴3個分の両端が両方とも導通しますが、4個分の両端は両方とも常に導通しています。
図2ではよく見えませんが、タクトスイッチの反対側にも2本のピンがあります。タクトスイッチを押下するとTang Nanoの31番ピンがGNDに落ちるようになります。GNDに落ちるので電気的には0なのですが、CPUに取り込む際に負論理処理をしていますので、タクトスイッチが押されるとDL166はこのピンの状態を1と認識します。
ただし、タクトスイッチを外付けする際に接続するピンの設定を変更しておく必要があります。それはプルアップ抵抗を入れておくことです。今回、31番ピンを入力ピンとして使うわけですが、入力用に設定されているピンはとても抵抗値(インピーダンス)が高いので、そのピンが開放されている状態、タクトスイッチだと押下されていない状態では値が特定できません。そのためプルアップ抵抗を入れてそのピンが開放の状態では1に確定します。プルアップ抵抗の一端はTang Nanoの31番ピン、もう一端はプラス電源に接続します。
Copyright © ITmedia, Inc. All Rights Reserved.