ではLED10個を全部点滅させるにはどうするか?であるが、PIOの場合、与える値のビットフィールドがそのままそれぞれのLEDのOn/Offとなる。つまり0bit目(LSB)がLED0、1bit目がLED1……となって、9bit目がLED9に相当する。というわけで、プログラムをList 3の様に書き換えて実行した結果がこちら(Movie02)である。ちゃんと全LEDが正しく点滅するのがお分かりいただけるかと思う。
List 3:
/*
* "Hello World" example.
*
* This example prints 'Hello from Nios II' to the STDOUT stream. It runs on
* the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example
* designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT
* device in your system's hardware.
* The memory footprint of this hosted application is ~69 kbytes by default
* using the standard reference design.
*
* For a reduced footprint version of this template, and an explanation of how
* to reduce the memory footprint for a given application, see the
* "small_hello_world" template.
*
*/
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
int main()
{
printf("Hello from Nios II!\n");
unsigned long cnt = 0;
long delay;
while(1)
{
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, (cnt&0x3ff));
for(delay = 0; delay < 20000; delay++);
cnt++;
}
return 0;
}
endmodule
次回はもう少しいろいろな周辺回路をNIOS IIからアクセスしてみたい。
周辺機器の充実した「MAX 10 NEEK」で本格的な開発を目指す
FPGAのソフトコアCPUをベンチマークで測定する
FPGA上でソフトコアCPUを動かす手引き
よろしいならばダイナミック点灯だ――FPGAでLEDをダイナミックにLチカさせる
FPGAのLED制御プログラムを深く理解する
FPGAでのLチカをVerilog HDLで理解する
「MAX 10 FPGA」のテスト環境を構築する
なぜFPGAが注目されるのか、開発ボードに触れて確認するCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク
よく読まれている編集記者コラム