連載
» 2016年08月10日 09時00分 UPDATE

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

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

[大原雄介,MONOist]

 この連載ではFPGA開発を学ぶため、アルテラのFPGA「MAX 10」を用いた開発手法を紹介している。ここ数回は各種周辺機器も備えたMAX10搭載開発ボード「MAX 10 NEEK」を使った周辺機器の利用方法を取り上げており、今回はODT(On Die Temperature)センサーを利用する仕組みを解説したい。

 手法としては、以前にこの記事(MAX 10 FPGAで学ぶFPGA開発入門(6):FPGA上でソフトコアCPUを動かす手引き )で紹介したもので、まずは前回のサンプルスケッチをそのまま再現して、そこからいくつか追加することにしたい。というわけで、まずは前回手順のご紹介。

プロジェクト作成からQSYSでの追加まで

  • System BuilderでCLOCK / LED×10 / 7-Segment×2 / Button×5 / Humidity Sensorをチェックしてプロジェクトを生成(Photo01)
Photo01 Photo01:名前はまたもやひねりもなく「TEMP_LED2」にした
  • System Builderで生成したプロジェクトファイルを、Quartus IIのプロジェクトディレクトリにコピー
  • Quartus II(今回も15.0を利用)を起動し、生成したプロジェクトファイル( TEMP2_LED.qpf )を開く。
  • QSYSを起動し、以下のコンポーネントを追加する。
QSYS起動後に追加するコンポーネント
プロセッサコア ”Processors and Peripherals” → ”Embedded Processors” → ”NIOS II Processor”で追加。種別はNIOS II/eを指定
JTAG UART ”Interface Protocols” → ”Serial” → ”JTAG UART”
オンチップメモリ ”Basic Functions” → ”On Chip Memory” → ”On-Chip Memory (RAM or ROM)”。メモリ容量は128KBとし、”Initialize memory content”のチェックを外しておく。またこれを追加後に、nios2_gen2_0のプロパティを開き、”Vectors”タブで”Reset Vector”と”Exception Vector”を共に”onchip_memory2_0.s1”に設定する
LEDR(LED×10) ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを10bit、DirectionはOutputを指定し(Photo02)、名前を”LEDR”に変更する。またConduitを”ledr_pio”とする
HEX0(7セグメントLED #1) ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを7bit、DirectionはOutputを指定し、名前を”HEX0”に変更する。またConduitを”hex0_pio”とする
HEX1(7セグメントLED #2) ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを7bit、DirectionはOutputを指定し、名前を”HEX1”に変更する。またConduitを”hex1_pio”とする
KEY(Button×5) ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを5bit、DirectionはInputを指定し、名前を”KEY”に変更する。またConduitを”key_pio”とする
RH_TEMP_I2C_SCL ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを1bit、DirectionはOutputを指定し、名前を”RH_TEMP_I2C_SCL”に変更する。またConduitを”rh_temp_i2c_scl_pio”とする
RH_TEMP_I2C_SCL ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを1bit、DirectionはBidirを指定、追加後に名前を”RH_TEMP_I2C_SDA”に変更する。またConduitを”rh_temp_i2c_sda_pio”とする
RH_TEMP_DRDYN ”Processors and Peripherals” → ”Peripherals” → ”PIO(Parallel I/O)”でPIOを追加する。この際Widthを1bit、DirectionはInputを指定、追加後に名前を”RH_TEMP_DRDY_N”に変更する。またConduitを”rh_temp_drdy_n_pio”とする

 ここまでは前回と同じである。

関連キーワード

アルテラ | FPGA関連 | FPGA


       1|2|3|4|5|6 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.