アルテラのFPGA「MAX 10」には温度センサーが内蔵されており、自身の温度を測定可能だ。メガファンクション「ALTPLL」を使い、内蔵センサーからの値を得るまでを試みる。
この連載ではFPGA開発を学ぶため、アルテラのFPGA「MAX 10」を用いた開発手法を紹介している。ここ数回は各種周辺機器も備えたMAX10搭載開発ボード「MAX 10 NEEK」を使った周辺機器の利用方法を取り上げており、今回はODT(On Die Temperature)センサーを利用する仕組みを解説したい。
手法としては、以前にこの記事(MAX 10 FPGAで学ぶFPGA開発入門(6):FPGA上でソフトコアCPUを動かす手引き )で紹介したもので、まずは前回のサンプルスケッチをそのまま再現して、そこからいくつか追加することにしたい。というわけで、まずは前回手順のご紹介。
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”とする |
ここまでは前回と同じである。
Copyright © ITmedia, Inc. All Rights Reserved.