基于NIOS-II软核流水灯实现

基于NIOS-II软核流水灯实现,第1张

目录 一、相关原理介绍(一)NIOS-II(二)Osys 二、基于NIOS-II软核流水灯实现(硬件设计)(一)新建工程(二)Qsys 系统设计(三)完成 Qsys 设计的后续工作(四)新建一个原理图(五)进行逻辑连接和生成管脚(六)芯片引脚设置(七)编译工程 三、基于NIOS-II软核流水灯实现(软件设计)(一)打开 Nios II SBT for Eclipse(二)启动 Workspace(三)创建工程(四)修改程序(五)编译工程 四、运行流水灯项目配置 FPGA运行/调试程序结果显示 参考文献

一、相关原理介绍 (一)NIOS-II

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使用量

(二)Osys

Qsys是Quartus II中的一个系统集成工具,它是用来搭建、开发以及维护“系统”的平台,这个系统通常是指以Nios II处理器为核心的嵌入式系统,当然它也可以不包含Nios II处理器。我们知道,嵌入式开发需要同时具备硬件环境和软件程序,Qsys就是用来创建硬件环境的。它不同于ARM、单片机等处理器的固定硬件环境,而是可以根据自己的需求来搭建硬件环境,这也这是它的独到和创新之处。

二、基于NIOS-II软核流水灯实现(硬件设计) (一)新建工程

步骤:
①启动 Quartus II 软件
②选择File->New Project Wizard···
③出现界面直接Next
④填写工程的路径和名称
⑤然后接着Next
⑥出现如下图界面,按图进行相应 *** 作
⑦接着一路Next,直到Finish,完成工程的创建
详细步骤图解可查看博客:Quartus-II入门

(二)Qsys 系统设计

①启动 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,进行时钟、数据端口的连接

所有连线如图,认真检查修正

(三)完成 Qsys 设计的后续工作

①基地址分配,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-statedOK

(七)编译工程

①点击紫色小三角

②分配物理针脚,完成后关闭 Pin Planner,回到 Quartus Prime 主界面

③再次编译项目,硬件设计完成

三、基于NIOS-II软核流水灯实现(软件设计) (一)打开 Nios II SBT for Eclipse

在 Quartus-II 界面,点击Tools->Nios II Software Build Tools for Eclipse

(二)启动 Workspace

选择当前的项目目录,点 OK

(三)创建工程

建立新的软件应用

选择 kernel.sopcinfo文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在Project name输入 helloWorld快速查找,选择 Hello WorldFinish

(四)修改程序

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

编译完成

四、运行流水灯项目 配置 FPGA

连接 JTAG 到开发板

启动 Quartus Prime Programmer

添加下载文件,如图所示

运行/调试程序

用户将运行程序来观察编译代码的执行,在菜单栏中选择 Run →Run Configurations

配置 Run Configurations,转到 ”Target Connection” 标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入

结果显示

开发板的 LED 灯循坏闪烁

参考文献

基于NIOS-II软核流水灯实现

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/990174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存