Nios II是应用于Intel FPGA的嵌入式软核处理器,它是Qsys嵌入式系统的核心部件,具有较强的性能和可定制特性。我们可以在一片FPGA内部构建多个Nios II处理器,它们可以作为主CPU,也可以是协处理器,在同一芯片内部协调有序地完成整个复杂系统的各项功能。Nios II处理器内核是32位RISC架构(精简指令集架构)处理器,它包含了大多数现代32位处理器中常见的基本架构元素。
Nios II的三种产品:
Nios II/f(快速)——最高的系统性能,中等FPGA使用量
Nios II/s(标准)——高性能,低FPGA使用量
Nios II/e(经济)——低性能,最低的FPGA使用量
Qsys是Quartus II中的一个系统集成工具,它是用来搭建、开发以及维护“系统”的平台,这个系统通常是指以Nios II处理器为核心的嵌入式系统,当然它也可以不包含Nios II处理器。我们知道,嵌入式开发需要同时具备硬件环境和软件程序,Qsys就是用来创建硬件环境的。它不同于ARM、单片机等处理器的固定硬件环境,而是可以根据自己的需求来搭建硬件环境,这也这是它的独到和创新之处。
二、基于NIOS-II软核流水灯实现(硬件设计) (一)新建工程(二)Qsys 系统设计步骤:
①启动 Quartus II 软件
②选择File->New Project Wizard···
③出现界面直接Next
④填写工程的路径和名称
⑤然后接着Next
⑥出现如下图界面,按图进行相应 *** 作
⑦接着一路Next
,直到Finish
,完成工程的创建
详细步骤图解可查看博客:Quartus-II入门
①启动 Qsys ,Tools->Qsys
②点击 File -> save
,在文件名中填写为 kernel
,保存
③鼠标放在 clk_0 处点击右键 Edit
或是双击 clk_0 元件
④对 Clock 进行时钟设置,设为为 50M
(如图)
⑤添加 Nios II 32-bit CPU,在搜索框中输入nio
,找到【Nios II Processor】,点击Add
保持默认配置,选择Finish
将 nios2_qsys_0 重命名为 cpu
,右击选择 Rename
将 cpu 的 clk 和 reste_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连
⑥添加 jtag uart 接口,搜索栏输入 jtag
找到 【JTAG UART 】,然后点击 Add
保持默认选项,点击 Finish
,然后将 jtag-uart_0 重命名为 jtag-uart
,进行 clk、reset 以及 master-slave 的连线,中断 irq 连线,结果如图所示
⑦添加片上存储器 On-Chip Memory(RAM)核,搜索栏输入 On Chip
找到 【On-Chip Memory(RAM or ROM)”】后点击 Add
修改Total memory size为 40960
(即片上内存的大小为 40KB),其余选项保持默认,点击 Finish
将 onchip_memory2_0 改名为 onchip_ram
,然后进行时钟、数据端口、指令端口的连接,如图所示
⑧添加 PIO 接口,输入 pio
找到 【PIO】 后点击Add
如下图所示,Width 为 8bits
,Direction 选择output
,其余选项保持默认,点击Finish
将pio_0 改名为 pio_led
,并在在 Export 栏处双击,把输出口引出来,并命名为 out_led
,然后进行时钟、数据端口、指令端口的连接
⑨添加片 System ID Peripheral 核,搜索栏输入 sys
找到 【 System ID Peripheral”】后点击 Add
,保持默认选项,单击 Finish
,将 sysid_qsys_0 改名为 sysid
,进行时钟、数据端口的连接
所有连线如图,认真检查修正
①基地址分配,System->Assign Base Addresses
显示如图
②分配中断号:在IRQ Tags下,点击Avalon_jtag_slave 和 IRQ 的连接处,就会为 jtag_uart 核添加一个值为 0 的中断号
③指定 NIos II 的复位和异常地址:从 ”System Contents” 标签栏双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception Vector 为 onchip_ram.s1
,点击 Finish
④点击System->Create Global Reset Network
,完成后会自动连接所有复位端口
⑤生成 Qsys 系统:Generate->Generate...
d出如下界面,点击Generate
选择保存
成功啦!点击 Close
关闭窗口,然后也可以关闭 Qsys 主界面了
①file->new ->Design Files->Block Diagram/Schematic File
,然后在该原理图(BDF)文件中添加 Qsys 生成的系统符号
新建原理图添加元件—详细步骤图解可查看博客:Quartus-II入门
②点击 Assignments->Settings
,添加 kernel.qip
文件
③点击OK
确定,点开再看看诶,完成了
在 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports
生成管脚
如下图
①菜单里选择 Assignments->device
②点击 Device pin options
③进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As input tri-stated
,OK
①点击紫色小三角
②分配物理针脚,完成后关闭 Pin Planner,回到 Quartus Prime 主界面
③再次编译项目,硬件设计完成
在 Quartus-II 界面,点击Tools->Nios II Software Build Tools for Eclipse
选择当前的项目目录,点 OK
建立新的软件应用
选择 kernel.sopcinfo
文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在Project name输入 helloWorld
快速查找,选择 Hello World
,Finish
将 hello_world.c
中的程序修改为流水灯控制程序
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
const alt_u8
led_data[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
int main (void) {
int count=0;
alt_u8 led;
volatile int i;
while (1)
{
if (count==7)
{count=0;}
else
{count++;}
led=led_data[count];
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
i = 0;
while (i<500000)
i++;
}
return 0;
}
(五)编译工程
右键单击项目名称,选择 Build Project
编译完成
连接 JTAG 到开发板
启动 Quartus Prime Programmer
添加下载文件,如图所示
运行/调试程序用户将运行程序来观察编译代码的执行,在菜单栏中选择 Run →Run Configurations
配置 Run Configurations,转到 ”Target Connection” 标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入
结果显示开发板的 LED 灯循坏闪烁
参考文献基于NIOS-II软核流水灯实现
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)