Lチカ再び、オリジナル4ビットCPUで外部出力制御を行うオリジナルCPUでバイナリコード入門(14)(1/2 ページ)

オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第14回では、オリジナル4ビットCPU「DL166」に外部出力デバイスとなるLEDをつないで制御し、Lチカを行う。

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

はじめに

 前回に引き続き、オリジナル4ビットCPU「DL166」を用いたバイナリプログラミングの演習を始めます。今回は、DL166に外部出力デバイスを接続してプログラムから制御します。手始めとして接続するのはLEDです。前回紹介したセンサーと組み合わせるとプログラム次第でいろんなことができそうですね。

事前準備

 今回は電子工作の要素も含みますのでブレッドボードが必須となります。

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

LEDを外付けする

 今回、ブレッドボードを介して接続するLEDを紹介しておきましょう。図1がそのLEDの写真です。

図1 図1 アノード側に抵抗を付けたLED[クリックで拡大]

 LEDには2本のリード線があります。1つがアノード(図1内下側)で、もう1つがカソード(図1内上側)です。これらには極性があって、アノード側からカソード側に電流が流れます。この時にLEDを点灯させるには適切な電流にする必要があります。そのためには抵抗を挟む必要があるのですが、筆者の場合は図1のようにアノード側に抵抗をはんだ付けし、その箇所に収縮チューブをかぶせて使っています。ブレッドボードや機器の出力確認など外付け抵抗なしに使えるので便利です。

 筆者はこのLEDについて、3.3〜5Vの範囲で使うことを想定していますので数百Ωの抵抗を使っています。ちなみにカソード側からアノード側に電流は流れません。このLEDをTang Nanoに接続するわけですが、どこに接続するか検討してみましょう。

 図2がTang Nanoのピン配置図ですが、隣にGNDがあることから、図2内の赤枠で囲んだGNDとピン番号32を使うことにしましょう。

図2 図2 Tang Nanoのピン配置。右下にある赤枠内のGNDと32番ピンを使う[クリックで拡大]

 プログラムは連載第9回「たかがLチカされどLチカ、バイナリコードでLEDを点滅させる」で紹介したblink7.asmを流用します。その内容はリスト1に再掲しておきます。プログラムの動作についは連載第9回記事を参照してください。

ram[0]<=8'b1010_0001;  // mvi R0,1
ram[1]<=8'b00_001_000; // mov R1,R0
ram[2]<=8'b1010_0000;  // mvi R0,0
ram[3]<=8'b00_110_000; // mov R6,R0
ram[4]<=8'b00_110_001; // mov R6,R1
ram[5]<=8'b1001_0000;  // jmp 	3
リスト1 blink7.asmのコード
       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.