外部入力で取り込んだ値によってプログラムを制御するオリジナルCPUでバイナリコード入門(12)(1/2 ページ)

オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第12回では、外部入力を取り込みその値によってプログラムを制御することに挑戦する。

» 2024年01月25日 08時00分 公開
[今岡通博MONOist]

はじめに

 前回に引き続きオリジナル4ビットCPU「DL166」を用いてバイナリコーディングの演習を始めます。

 その前に、みなさんは話題の生成系AI(人工知能)チャットをお使いになったことはおありでしょうか。筆者も遅ればせながら先日から使ってみました。かなり的確な答えが返ってくる半面、あたかも本当のことのようにうそをつく「ハルシネーション」も多々あるといわれています。そこで「オリジナル 4ビットCPU DL166について教えてください」と尋ねてみたのですが、事実誤認が甚だしかったのでこの場を借りて正しておきたいと思います。

 AIチャットいわく「DL166は1970年代に米国のメーカー(実在する)で設計/製造されたCPU」ということになっています。実際には、2017年に成田からシアトル(シータック空港)に行くデルタ航空のDL166便の中で設計したCPUで、その便名をとってCPUにDL166と命名したというのが本当の話です。それ以外は大体合ってるのが何とも不思議なんですよね。皆さんもAIチャットのいうことをうのみにしないようにしてくださいね。

 さて今回のバイナリコーディング演習では、外部入力を取り込みその値によってプログラムを制御することに挑戦したいと思います。生物の進化の歴史においても、カンブリア紀に生物が外部環境を知覚する機能を持ったことで爆発的に進化が加速したといわれています。コンピュータでも外部入力を受け付けることができるようになったおかげで単に計算だけでなくさまざまな制御にも使われるようになってきました。

⇒連載「オリジナルCPUでバイナリコード入門」バックナンバー

事前準備

 これまでと同様に「Tang Nano 9K(以下、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」はプログラミングの基礎学習に最適』を参考にしてください。

タクトスイッチを使えるようにする

 ここからは、Tang Nanoの基板に搭載されているタクトスイッチをDL166のプログラムから使えるようにします。

 対象となるタクトスイッチは、Tang Nanoの基板に搭載されているUSB Type-Cコネクターを左側に向けたときに、コネクターの上下にある2つの白いスイッチのうち、下側のスイッチです。ちなみに上側にあるスイッチはリセットスイッチです。これはもうおなじみですね。

 先述したプロジェクトの中に/src/instructions.cstというファイルがあります。これはCPUを記述しているVerilog-HDLの中ではシンボルとして扱われている信号線を実際のFPGAのピンに割り当てるためのファイルです。その中に以下の1行(リスト1)を追加してください。どこでも結構です。この記述の意味はVerilog-HDLの中では4ビット分のバス表記の最下位ビットにFPGAの3番ピンを割り当てています。これはレジスタR5の最下位ビットに反映されます。

IO_LOC "btn[0]" 3;
リスト1 /src/instructions.cstへの追加行

 最初のプログラムbutton1.asmはタクトスイッチがレジスタR5の最下位ビットに関連付けられているかを確認するためのものです。プログラムは以下の1行だけですが、0番地のjmp 0で見かけ上何もしないプログラムになっています(リスト2)。

ram[0] <=8'b1001_0000;  // jmp 	0
リスト2 button1.asmのコード
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.