「MAX 10 NEEK」でストップウォッチを開発し、内蔵メモリから起動する:MAX 10 FPGAで学ぶFPGA開発入門(11)(5/10 ページ)
アルテラのFPGA「MAX 10」を搭載した開発ボード「MAX 10 NEEK」にはLEDやフラッシュメモリなどの各周辺機器が備えられている。今回はLEDを使ったストップウォッチを開発し、内蔵メモリから起動する。
「光るLED」を「ストップウォッチ」に
さて、これだけでは何の意味も無いので、これをストップウォッチに仕立ててみたい。0秒から99.9秒まで測定できるものだ。
まずはタイマーを追加する必要がある。ということでQSYSに戻り、新たに"Processors and Peripherals" → "Peripherals" → "Interval Timer"を選んで追加する(Photo08)。この際に、irqの線をCPUとつなぐ事を忘れない様に。デバイスを追加するとアドレスが変わるので、再び"Assign Base Address"を呼んでアドレスを再配置してからGenerate HDLでHDLを再生成。その後にQuartus IIに戻り、コンパイルを行ってからProgrammerで書き込み直すところまでの手順は先ほどと同じである。
さて、次はNIOS IIのプログラムである。連載第7回で既に言及したが、NIOS IIではSystem Timer(Interval Timer)を追加することで、Alarm機能とTimeStamp機能を排他的に利用できる(FPGAのソフトコアCPUをベンチマークで測定する:タイマーの組み込み)。
第7回で利用したのはTimeStampだが、今回はAlarmを利用してみたい。Alarmは名前の通り、指定した時間にCallback Routineの起動が可能である。要するにTimerを利用した割り込み機能だ。割り込みそのものはalt_irq系の関数が用意されているのだが、こちらはMicro C/OS-II環境(Photo07で、"Hello World"の上にある選択肢)でないと利用できないので、今回は見送った。
さてそんなわけで、Alarmを使ってみることにする。まずはEclipseでstopwatch_bpsのコンテクストメニュー → "Nios II" → "BSP Editor..."を指定してBSP Editorを起動し、ここで"sys_clk_timer"に"One_ms_Timer"を選択する。これが終わったらGenerateを押してBSPを生成、stopwatch_bsp自身を再ビルドする。プログラムは、以下List 4の様に書き換えた。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「MAX 10 NEEK」に搭載されたDDR3メモリを使う
MAX10搭載開発ボード「MAX 10 NEEK」には各周辺機器が備えられており、その中にはDDR3メモリも含まれる。ソフトコアCPU「Nios II」からの利用も含めて手順を紹介する。 - 「MAX 10 NEEK」へソフトコアCPUを組み込む
周辺機器の充実したMAX10搭載開発ボード「MAX 10 NEEK」に、ソフトコアCPU「NIOS II」を組み込み、ソフトコアCPUからボード搭載LEDの制御までを紹介する。 - 周辺機器の充実した「MAX 10 NEEK」で本格的な開発を目指す
FPGA開発において周辺機器(回路)は見落とせない要素の1つ。タッチパネルや各種出入力などを備えた「MAX 10 NEEK」を導入して、本格的な開発を目指す。 - FPGAのソフトコアCPUをベンチマークで測定する
FPGA「MAX10」に「NIOS II」と呼ばれるソフトIPコアを導入することで、ソフトコアCPUを構築できる。ではその処理能力はどれほどか。ベンチマークソフトで測定してみよう。 - FPGA上でソフトコアCPUを動かす手引き
これまでFPGAの開発基礎としてLチカなどを紹介してきたが、今回はちょっと目先を変えてFPGA上でのCPUコア動作に取り組む。今回も連載で使う「MAX 10 FPGA 評価キット」の読者プレゼントをご用意。