検索
連載

FPGAの内蔵温度センサーから値を得るMAX 10 FPGAで学ぶFPGA開発入門(13)(4/6 ページ)

アルテラのFPGA「MAX 10」には温度センサーが内蔵されており、自身の温度を測定可能だ。メガファンクション「ALTPLL」を使い、内蔵センサーからの値を得るまでを試みる。

Share
Tweet
LINE
Hatena

「TEMP_LED2.v」の編集

 やっとTEMP_LED2.vの編集である。List 1が編集前、List 2が編集後となる。まずaltpll_pllを呼び出し、input Clockには50MHzのMAX10_CLK1_50を指定、出力には別にadc_clkというwireを割り当てた。これを含めてTEMP_LED2_QSYSをu2として呼び出している。それぞれのmodule宣言は、altpll_pll.vhdとTEMP_LED2_QSYS.vの先頭でそれぞれ定義されているので、これを参考に割り当てれば良い。ここまで終了したらコンパイルし、エラーがなければそのままProgrammerでMAX 10 NEEKに書き込んでQuartus II側の作業は完了である。

//=======================================================
//  This code is generated by Terasic System Builder
//=======================================================
 
module TEMP_LED2(
 
	//////////// CLOCK //////////
	input 		          		ADC_CLK_10,
	input 		          		MAX10_CLK1_50,
	input 		          		MAX10_CLK2_50,
	input 		          		MAX10_CLK3_50,
 
	//////////// KEY //////////
	input 		          		FPGA_RESET_n,
	input 		     [4:0]		KEY,
 
	//////////// LEDR //////////
	output		     [9:0]		LEDR,
 
	//////////// HEX //////////
	output		     [6:0]		HEX0,
	output		     [6:0]		HEX1,
 
	//////////// PS2 //////////
	inout 		          		PS2_CLK,
	inout 		          		PS2_CLK2,
	inout 		          		PS2_DAT,
	inout 		          		PS2_DAT2,
 
	//////////// Humidity and Temperature Sensor //////////
	input 		          		RH_TEMP_DRDY_n,
	output		          		RH_TEMP_I2C_SCL,
	inout 		          		RH_TEMP_I2C_SDA
);
 
 
 
//=======================================================
//  REG/WIRE declarations
//=======================================================
 
 
 
 
//=======================================================
//  Structural coding
//=======================================================
 
 
 
endmodule
List1
//=======================================================
//  This code is generated by Terasic System Builder
//=======================================================
 
module TEMP_LED2(
 
	//////////// CLOCK //////////
	input 		          		ADC_CLK_10,
	input 		          		MAX10_CLK1_50,
	input 		          		MAX10_CLK2_50,
	input 		          		MAX10_CLK3_50,
 
	//////////// KEY //////////
	input 		          		FPGA_RESET_n,
	input 		     [4:0]		KEY,
 
	//////////// LEDR //////////
	output		     [9:0]		LEDR,
 
	//////////// HEX //////////
	output		     [6:0]		HEX0,
	output		     [6:0]		HEX1,
 
	//////////// PS2 //////////
	inout 		          		PS2_CLK,
	inout 		          		PS2_CLK2,
	inout 		          		PS2_DAT,
	inout 		          		PS2_DAT2,
 
	//////////// Humidity and Temperature Sensor //////////
	input 		          		RH_TEMP_DRDY_n,
	output		          		RH_TEMP_I2C_SCL,
	inout 		          		RH_TEMP_I2C_SDA
);
 
 
 
//=======================================================
//  REG/WIRE declarations
//=======================================================
 
wire adc_clk;
 
 
//=======================================================
//  Structural coding
//=======================================================
 
	altpll_pll u0 (
		.inclk0	(MAX10_CLK1_50),
		.c0		(adc_clk),
		.locked	(adc_pll_locked_ext)
	);
 
 
	TEMP_LED2_QSYS u1 (
		.adc_pll_clock_ext_clk			(adc_clk),
		.adc_pll_locked_ext_export		(adc_pll_locked_ext),
		.clk_clk								(MAX10_CLK1_50),
		.hex0_pio_export					(HEX0),
		.hex1_pio_export					(HEX1),
		.key_pio_export					(KEY),
		.ledr_pio_export					(LEDR),
		.reset_reset_n						(1'b1),
      .rh_temp_drdy_n_pio_export 	(RH_TEMP_DRDY_n),
      .rh_temp_i2c_scl_pio_export	(RH_TEMP_I2C_SCL),
      .rh_temp_i2c_sda_pio_export	(RH_TEMP_I2C_SDA)
	);
endmodule
List2

関連キーワード

アルテラ | FPGA関連 | FPGA


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る