新たな教材となる「Tang Nano 9K」を使ってLEDマトリクスを制御する:オリジナルCPUでバイナリコード入門(4)(3/3 ページ)
オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第4回は、バイナリコーディングを学ぶための新たな教材となる「Tang Nano 9K」とVerilog-HDLコードを使ってLEDマトリクスを制御する。
IDEが出力したコード生成時のサマリー
リスト1は、Tang Nano 9KのIDEが出力した生成時のサマリーです。なおプロジェクトファイルの場所は'*'でふせています。
General Project File: C:\************************\tangnano\fpga_project\fpga_project.gprj Synthesis Tool: GowinSynthesis Target Device Part Number: GW1NR-LV9QN88PC6/I5 Series: GW1NR Device: GW1NR-9C Package: QFN88P Speed Grade: C6/I5 Core Voltage: LV
Verilog-HDLのコード
リスト2は、ここまで説明したLEDドットマトリクスを点灯するロジックをVerilog-HDLで記述したものです。前回の記事も参考になりますし、プログラミング経験があれば内容は大体分かると思います。ROW側はカソードですので全て0にしています。COL側はcounterの特定のビットを指定したCOL番号の値としています。これらはcounterがクロックごとに加算されますので、刻々とこれらの値は変わっていきます。
module matrix ( input clk, input rst,output [7:0] col,output [7:0] row); reg [32:0] counter; assign col[0]=counter[30]; assign col[1]=counter[29]; assign col[2]=counter[28]; assign col[3]=counter[27]; assign col[4]=counter[26]; assign col[5]=counter[25]; assign col[6]=counter[24]; assign col[7]=counter[23]; assign row[0]=0; assign row[1]=0; assign row[2]=0; assign row[3]=0; assign row[4]=0; assign row[5]=0; assign row[6]=0; assign row[7]=0; always @(posedge clk or negedge rst) begin if (!rst) counter <= 0; else counter <= counter + 1; end endmodule
ピンコネクション情報
拡張子「.cst」のファイルにはリスト3の情報が収められています。Verilog-HDLのコードで使われているシンボル名とTang Nano 9Kのピン番号の関連付けを行っています。
IO_LOC "clk" 52; IO_LOC "rst" 4; IO_LOC "col[0]" 74; IO_LOC "col[1]" 34; IO_LOC "col[2]" 40; IO_LOC "col[3]" 71; IO_LOC "col[4]" 41; IO_LOC "col[5]" 72; IO_LOC "col[6]" 76; IO_LOC "col[7]" 77; IO_LOC "row[0]" 70; IO_LOC "row[1]" 75; IO_LOC "row[2]" 51; IO_LOC "row[3]" 73; IO_LOC "row[4]" 30; IO_LOC "row[5]" 42; IO_LOC "row[6]" 33; IO_LOC "row[7]" 35;
おわりに
今回は演習教材の動作を確認するために、Tang Nano 9Kの基板上に直接LEDマトリクスをはんだ付けするというちょっとトリッキーな手段を取りました。もし、読者の皆さんが手元で実機を試してみたいのであれば、キットまたは完成品を用意することを検討したいと思います。また、自作する場合は、Arduinoで使われているようなピンが長めのソケットを使えばもっと簡単にLEDドットマトリクスをTang Nano 9Kにマウントできるでしょう。まだ、その長めのソケットは手元に届いてないのですが、今後の連載の中で紹介する機会もあるかと思います。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「オリジナルCPUでバイナリコード入門」バックナンバー
- ≫連載「注目デバイスで組み込み開発をアップグレード」バックナンバー
- ≫連載「Black Hatでハードウェアハック!」バックナンバー
- 【バイナリコーディング演習】FPGAボードでLチカとPWMによるLED点灯を試す
オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第3回は、オリジナル4ビットCPUを用いたバイナリコーディングの前段階の演習として、入手が容易なFPGAボードを使ってVerilog-HDLで簡単な回路プログラムを組んでみる。 - HDLソースコードからオリジナルCPU「DL166」の内部動作を理解する
オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第2回はオリジナルCPU「DL166」のHDLソースコードを基に内部動作について解説する。 - オリジナル4ビットCPU「DL166」はプログラミングの基礎学習に最適
オリジナル4ビットCPUを用いてバイナリコードを学ぶ本連載。第1回はオリジナルCPU「DL166」のインストラクションセットについて解説する。 - マブチモーターをArduinoで制御する
「マブチモーター」でもおなじみ「直流ブラシ付きモーター」は安価で入手性もよいモーターです。これをArduinoで制御するとしたら、何を理解して何を用意して、どんなプログラミンが必要でしょうか。実験します。 - 初歩から学ぶ、マイコン開発とARMプロセッサー
組み込みの世界では最も成功したプロセッサの1つ「ARM」を用いたマイコン開発にチャレンジします。クラウド開発環境「mbed」を使い、プログラムを書きながら回路をブレッドボードに実装、動作を確認しながらさまざまな内蔵デバイスの使い方をマスターしていきます。