AC620FPGA NIOS II学习笔记——LED闪烁
简介
NIOS II是一个软核操作系统,是利用FPGA内部的逻辑资源构造的一个CPU内核
Quartus配置步骤
NIOS核
e系列会更省资源,但是性能会降低
f系列相反
现在都是None无法选择,因为还没有添加ROM与RAM
ROM&RAM
添加 rom与ram
CPU ID
创建CPU ID,(因为同一个FPGA可能会被创建多个CPU,所以需要对其进行编号)
IO
创建IO口
内部连线
在连接内部总线时,对于会存储指令的部件需要将指令总线进行连接,对于只存放数据的只连接数据总线
时钟、地址分配
这个时候信息栏会报许多错误,原因是地址有冲突
但首先需要设置CPU的外部CLK频率
修改地址可以手动修改
也可以自动生成
就此大功告成
工程代码
module nios_led(
clk,
rst,
led
);
input clk,rst;
output led;
nios u0(
.clk_clk(clk),
.reset_reset_n(rst),
.led_export(led)
);
endmodule
全部完成后创建顶层module,就可以烧写到板子里了
Eclipse配置步骤
这是第一次使用这个软件,他的作用是使用C语言对软核NIOS进行编写代码
打开后,若第一次打开可能需要等一段时间,然后指定工作空间。
工程创建
打开软件后创建模板工程
在这里需要指定sopcinfo文件,他会自动识别出CPU
选择Hello World Small模板
代码修改
因为Hello world模板需要用到printf函数调用串口,但是并没有实现串口,所以直接编译会报错,需要将代码进行修改
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main()
{
alt_u8 led = 0;
alt_u32 i;
/* Event loop never exits. */
while (1)
{
led = 0;
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);
i = 500000;
while(i--);
led = 1;
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);
i = 500000;
while(i--);
}
return 0;
}
工程配置
将编译器的优化功能关闭
目标板连接与代码下载
在下载代码到目标板之前需要做写配置
选择下载目标
这里需要注意,必须SystemID 与 SystemTimestamp的目标与期望都相等才可以
若出现SystemTimestamp不相等,是因为烧进板子里的软核 与 eclipse 基于的 BSP文件 不相匹配,需要刷新Eclipse的工程
总结
其实总体来说难点不多,多的是一些细节,不注意可能会掉坑里,貌似eclipse不支持热重载,所以外部文件变化后他也没有更新,就导致出了差错