図5はTang nano 9Kのピン配列を示した図です。十字キーはこの図5でいうところの左上あたりに接続されます。図3で示した十字キーの裏面の配線図と合うように十字キーの基板をブレッドボードに挿し込みます。Tang Nano 9Kの36番ピン(図5の左上から3番目のピン)はGND(グランド)に設定していますのでTang Nano 9Kと十字キーの下を通して十字キーのGNDに接続してください。
それと、AボタンとBボタンは、図5で示したTang Nano 9Kの左下あたりに挿し込みます。Aボタンは69番、Bボタンは68番のピンに接続します。AボタンのGNDは、図5の右下から2番目のGND(69番と反対側にあるピン)に接続し、BボタンのGNDにはそこからジャンパー線で渡しています。
それでは早速これらのボタンがTang Nano 9Kにきちんと接続されているか確認してみましょう。以下のリスト1は、VerilogHDLで書いた十字キーの接続を確認するためのコードです。
module cpu(input [3:0]btn,output [5:0]leds,output low,input Abtn,Bbtn); assign low=0; assign leds[0]=btn[0]; assign leds[1]=btn[1]; assign leds[2]=btn[2]; assign leds[3]=btn[3]; assign leds[4]=Abtn; assign leds[5]=Bbtn; endmodule
Tang nano 9Kの基板上には6個のLEDがあってFPGAから制御できるようになっています。実はもう1個LEDがあるのですが、それは電源が入っていることを示すためのものです。Tang nano 9Kを使っていていつも思うのですが、そのLEDが他のLEDと同じ列に並んでいてしかも同じオレンジ色(もしかしたらアンバーかもしれない)なんですね。だから他の6個のLEDと見間違えやすいんです。次に製品改良するのであれば、色を変えるなり場所を変えるなりといった対策をしていただきたいところです。
話を戻しますが、十字キーとAボタンとBボタンの接続を、これら6個のLEDを点灯させることによって確認します。なお、リスト1では、十字キーとAボタン、Bボタンを6個のLEDそれぞれに割り当てています。
次のリスト2は、物理制約ファイルと呼ばれるもので、VerilogHDLで記述されている入出力の信号線を実際のFPGAのピンに割り当てるものです。
IO_LOC "Abtn" 69; IO_PORT "Abtn" PULL_MODE=UP; IO_LOC "Bbtn" 68; IO_PORT "Bbtn" PULL_MODE=UP; IO_LOC "btn[0]" 38; IO_PORT "btn[0]" PULL_MODE=UP; IO_LOC "btn[1]" 37; IO_PORT "btn[1]" PULL_MODE=UP; IO_LOC "btn[2]" 27; IO_PORT "btn[2]" PULL_MODE=UP; IO_LOC "btn[3]" 28; IO_PORT "btn[3]" PULL_MODE=UP; IO_LOC "low" 36; IO_LOC "leds[0]" 10; IO_LOC "leds[1]" 11; IO_LOC "leds[2]" 13; IO_LOC "leds[3]" 14; IO_LOC "leds[4]" 15; IO_LOC "leds[5]" 16;
これら2つのリストを用意して、FPGAメーカーのGOWIN Semiconductorから提供されているIDEによりFPGAに書き込むファイルを生成します。それを、IDEをインストールしているPCからUSBケーブル経由でTang nano 9Kに書き込むことで実装できます。
いかがでしょう。それぞれのタクトスイッチに対応したLEDが点灯することをご確認いただけたでしょうか。もし思い通りにLEDが点灯しない場合は十字キーの基板のはんだ付けかブレッドボード上のジャンパー線の配線の不具合が考えられます。そのあたりをもう一度見直して試してみてください。
次回の後編は、この十字キーを用いたアプリ開発に挑戦します。お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.