連載
» 2015年11月13日 07時00分 UPDATE

MAX 10 FPGAで学ぶFPGA開発入門(4):FPGAのLED制御プログラムを深く理解する (1/5)

FPGA開発に必要なHDLへの理解を深めるため、MAX 10に用意されているArduino I/Oを利用してのLチカを行い、多灯LEDの制御を含めたプログラミングも解説する。今回も連載で使う「MAX 10 FPGA 評価キット」の読者プレゼントをご用意。

[大原 雄介,MONOist]

Arduino I/OでのLチカ

 前回(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)。これで適当な名前を選んでプロジェクトを作成する。

このDesign ExampleはQuatus IIに標準で用意されている Photo01:このDesign ExampleはQuatus IIに標準で用意されている

 作成後のテンプレートファイルは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
List1

 ちょっとマニュアルが分かりにくいのだが、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チカをやってみた。

赤枠で囲った部分がJ3 Connector Photo02:赤枠で囲った部分がJ3 Connector
       1|2|3|4|5 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.