开发板:小梅哥AC620
软件:quartus 13.1
- 介绍
软核处理器代表:nios II Xilinx 的 microBlaze核
nios II提供强大的HAL系统库支持
2004年推出nios II
在QSYS完成后生成一个系统模块,由QSYS最终生成的系统模块相当于传统的单片机或ARM
本课程任务:
搭建带有2KB指令高速缓存的NIOS II/s
4KB片内ROM存储器(on chip ROM)用来存储程序代码以及程序运行空间
4KB片内RAM存储器(on_chip RAM)用来读取变量、堆栈等空间
用户可以在nios II指令集仿真器(ISS)上仿真软件运行。如果读者拥有开发板以及USB blaster下载电缆,用户,将能目睹。
- 搭建QSYS
QSYS提供GUI界面,所有设置保存在一个以系统命名的qsys文件中。该系统创建了所有的qsys输出文件(HDL逻辑文件、C程序的头文件和库文件、模拟仿真文件等)
system.qsys:QSYS系统文件(.qsys)–用来描述系统的硬件架构
system.sopcinfo:sopc信息文件(.sopcinfo)提供给eclipse 硬件信息
时钟频率要求要与系统实际运行的时钟频率相匹配。否则一些设计到精确时序参数的外设(定时器、UART、SPI等等)可能无法正常工作
复位向量:用来设置CPU复位后从何处开始启动,我们可以将CPU的复位向量设置于FLASH,例如EPCS存储器。这样系统即可上电后自动从flash中复制程序代码到内存中并运行。该选项只有当CPU的存储器系统就绪后方可设置
异常向量:用来存放CPU处理异常事件的代码,例如终端处理代码。在一个典型的系统中,该向量应该指向一个低延迟的存储器,例如SDRAM、SRAM、或者片上存储器(on chip RAM)
fast TLB Miss Exception vextor: 不做介绍,与MMU相关
本选项主要设置CPU的数据和指令缓存部件
instruction cache:用来缓存NIOS II处理器的各种指令,该缓存大小从512字节到64K字节。
data cache:数据缓存用于存放缓存数据的大小,改缓存大小从512字节到64K字节。
添加ROM和RAM
不用使能非默认初始化文件,默认会有IDE编译生成给QSYS。
同理,创建4KB的RAM
添加PIO
设置4个bit的PIO
添加ID
当QSYS生成NIOS系统时,将为该NIOS II系统生成一个ID号。该标识会被写入SYSTEM ID寄存器中,供IDE编译器和用户辨别所运行的程序是否与目标系统匹配。
如果用户程序不是基于IDE的NIOS II系统,那么调试时,NIOS II将阻止用户下载程序到NIOS II系统,当然,我们也可以在调试时候,选择忽略系统ID的核对。
将其PIO双击导出
copy verilog代码
点击generate
搭建软件部分
将QSYS软核纳入工程
ctrl+K编译综合
分配管教
BSP工程创建时会根据.sopcinfo文件中定义的NIOS II系统的硬件信息,生成对应的设备驱动(drivers)HAL库(HAL)以及硬件信息头文件(system.h)
在左端将BSP关联起来
关闭优化
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main(void)
{
alt_u8 led = 0;
alt_u32 i;
while(1)
{
led = 0;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);//点亮LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
led = 1;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);//熄灭LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
}
return 0;
}
这部分代码在第二课讲解,为什么这么编写
注意事项:一旦重新编译quartus,就需要重新生成BSP
最后在开发板上面实现了小灯的闪烁。