FPGA開発に必要なHDLへの理解を深めるため、MAX 10に用意されているArduino I/Oを利用してのLチカを行い、多灯LEDの制御を含めたプログラミングも解説する。今回も連載で使う「MAX 10 FPGA 評価キット」の読者プレゼントをご用意。
前回(FPGAでのLチカをVerilog HDLで理解する)では「MAX 10 FPGA」を利用したLチカ動作を細かく紹介したので、もうちょっとここから先に進めてみたい。前回はオンボードのLEDを使って行ったが、今回からはArduino I/Oを利用してみたい。
といってもそう難しい話ではない。連載の第2回(「MAX 10 FPGA」のテスト環境を構築する)で「Design Template」に“Restore Factory Settings LED Flash”を使ったが、今回は“MAX 10 Evaluation Kit Baseline Desing”を選べばよい(Photo01)。これで適当な名前を選んでプロジェクトを作成する。
作成後のテンプレートファイルはList 1の様になっている。プログラムで利用できるI/Oの一覧が全部module宣言の中に含まれている「だけ」である。まずはオンボードのLEDの代わりに、Arduino互換のI/OピンにLEDをさして、これをLチカさせてみることにしたい。
module top( // Switch Inputs input SWITCH1, input SWITCH2, input SWITCH3, input SWITCH4, input SWITCH5, //LED Outputs output LED1, output LED2, output LED3, output LED4, output LED5, //Clock from oscillator input Clock, //Analog input in Arduino connector input Arduino_A0, input Arduino_A1, input Arduino_A2, input Arduino_A3, input Arduino_A4, input Arduino_A5, input Arduino_A6, input Arduino_A7, //Arduino I/Os inout Arduino_IO0, inout Arduino_IO1, inout Arduino_IO2, inout Arduino_IO3, inout Arduino_IO4, inout Arduino_IO5, inout Arduino_IO6, inout Arduino_IO7, inout Arduino_IO8, inout Arduino_IO9, inout Arduino_IO10, inout Arduino_IO11, inout Arduino_IO12, inout Arduino_IO13, //Reset Pin input RESET_N, //JTAG enable input JTAGEN, //There are 40 GPIOs. In this example pins are not used as LVDS pins. //NOTE: Refer README.txt on how to use these GPIOs with LVDS option. inout DIFFIO_L20N_CLK1N, inout DIFFIO_L20P_CLK1P, inout DIFFIO_L27N_PLL_CLKOUTN, inout DIFFIO_L27P_PLL_CLKOUTP, inout DIFFIO_B1N, inout DIFFIO_B1P, inout DIFFIO_B3N, inout DIFFIO_B3P, inout DIFFIO_B5N, inout DIFFIO_B5P, inout DIFFIO_B7N, inout DIFFIO_B7P, inout DIFFIO_B9N, inout DIFFIO_B9P, inout DIFFIO_B12N, inout DIFFIO_B12P, inout DIFFIO_B14N, inout DIFFIO_B14P, inout DIFFIO_B16N, inout DIFFIO_B16P, inout DIFFIO_R14P_CLK2P, inout DIFFIO_R14N_CLK2N, inout DIFFIO_R16P_CLK3P, inout DIFFIO_R16N_CLK3N, inout DIFFIO_R18P, inout DIFFIO_R18N, inout DIFFIO_R26P_DPCLK3, inout DIFFIO_R26N_DPCLK2, inout DIFFIO_R27P, inout DIFFIO_R28P, inout DIFFIO_R27N, inout DIFFIO_R28N, inout DIFFIO_R33P, inout DIFFIO_R33N, inout DIFFIO_T1P, inout DIFFIO_T1N, inout DIFFIO_T4N, inout DIFFIO_T6P, inout DIFFIO_T10P, inout DIFFIO_T10N ); endmodule
ちょっとマニュアルが分かりにくいのだが、Arduinoは本来4組のコネクタピンを持っている。このうちMAX10 Evaluation Boardが互換なのは3組だけである。Photo02で言えば、右上のJ3と左下のJ4(の一部)、それと右下のJ5がArduino互換の信号が「一部」出ている。J3コネクタの場合、上がJ3.1、下がJ3.8となっており
pin番号 | 信号名 | 用途 |
---|---|---|
J3.1 | ANALOG_VREF | Arduino analog Vref Input |
J3.2 | GND | Arduino GND input |
J3.3 | ARDUINO_IO13 | Arduino digital I/O input to FPGA |
J3.4 | ARDUINO_IO12 | |
J3.5 | ARDUINO_IO11 | |
J3.6 | ARDUINO_IO10 | |
J3.7 | ARDUINO_IO9 | |
J3.8 | ARDUINO_IO8 | |
と規定されている。今回はJ3.3(ARDUINO_IO13)とGNDにLEDをさして、これでLチカをやってみた。
Copyright © ITmedia, Inc. All Rights Reserved.