「MAX 10 NEEK」へソフトコアCPUを組み込むMAX 10 FPGAで学ぶFPGA開発入門(9)(6/6 ページ)

» 2016年04月12日 12時00分 公開
[大原 雄介MONOist]
前のページへ 1|2|3|4|5|6       

 ではLED10個を全部点滅させるにはどうするか?であるが、PIOの場合、与える値のビットフィールドがそのままそれぞれのLEDのOn/Offとなる。つまり0bit目(LSB)がLED0、1bit目がLED1……となって、9bit目がLED9に相当する。というわけで、プログラムをList 3の様に書き換えて実行した結果がこちら(Movie02)である。ちゃんと全LEDが正しく点滅するのがお分かりいただけるかと思う。

Movie1:MAX10 NEEKのソフトCPUからLED10個を操作
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
List3

 次回はもう少しいろいろな周辺回路をNIOS IIからアクセスしてみたい。

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

Copyright © ITmedia, Inc. All Rights Reserved.