基于 NIOSII 软核的流水灯实验
实验目的
(1)学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;
(2)初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;
(3)掌握 Nios II 软件的开发流程,软件的基本调式方法。
实验步骤
- 建立新项目
选择板子类型
- 进行Qsys系统设计
(1)打开qsys功能 tools–>Qsys
(2)保存
(3). 设置时钟,鼠标双击clk_0元件或右键编辑clk_元件,对Clock进行时钟设置,设为50M.
(4).添加 CPU 和外围器件。从 PD 的元件池中选择以下元件加入到当前设计的系统中:
Nios II 32-bit CPU、jtag uart、片上存储器、PIO、system ID。
(1).添加Nios II 32-bit CPU
①搜索该元件
② 在Nios Core栏中选择Nios II/f选项,默认即可
③将nios2_qsys_0重命名为cpu
④将cpu的clk和restet_n分别与系统时钟clk_0的clk和clk_reset相连
注意:对模块命名要遵循以下规则:
- 名字最前面应该使用英文;
- 能使用的字符只有英文字母、数字和下划线“_”;
- 不能连续使用“”符号,在名字的最后也不能使用“”。
(5). 添加 jtag uart 接口。jtag uart 接口是 Nios II 嵌入式处理器新添加的接口元件,通过内嵌在 Intel FPGA 内部的 JTAG 电路,可以实现在 PC 主机与 Qsys 系统之间进行串行字符流通信。
① 添加过程与上面雷同,配置保持默认即可。
② 将其重命名为jtag_uart
③进行clk、reset以及master-slave的连线。
④进行终端irq连线
(6)添加片上存储器On-Chip Memory(RAM)核
①查找元件
②配置RAM
③将其改名为onchip_ram
④进行时钟、数据端口、指令端口的连接
(7)添加PIO接口,配置保持默认就行
(8)添加片 System ID Peripheral 核
(9)IP核的连接
clk,reset,datamaster需要和其他所有IP核连接,nios ii的指令端口(instruction_master)只与存储器进行连接,nios ii中的jtag_debug_model_reset与外部IP核进行连接 。jtag端口的中断信号的连接,其中0表示中断的优先级(可以进行设置)
结果
(10)进行基地址分配
(11)连接所有复位端口
(12)指定 NIos II 的复位和异常地址:从”System Contents”标签栏
双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception
Vector 为””onchip_ram.s1”,点击 Finish。
以上步骤做完后
3.生成Qsys系统:Generate–>Generate
生成文件
原理图设计
1.新建原理图文件
2.添加元件
3.加入Quartus 文件
(1)寻找文件
(2)添加文件
4.进行逻辑连接并生成管脚
5.对管脚进行重命名
6.芯片引脚设置
(1)Assignments–>device–>Device pin options。
(2)进行unused pin设置,可能会受到外部信号的干扰,将未用引脚设置为As input tri-stated。
(3)特殊引脚设置为常规引脚
7.编译工程
8.分配物理引脚
9.关闭页面,再次编译项目
软件部分设计
1.启动Nios II Software Building Tools for Eclipse
2. 选择项目路径
3. 创建工程
- 选择kernel.sopcinfo文件
5.输入项目名
6.编辑代码
代码:
#include <stdio.h>
#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;
//串口打印
printf("Hello world!\n");
//流水灯循环
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<5000000)
i++;
}
return 0;
}
- 右键单击项目名称,在弹出的菜单中选择Build Project,如下图
8.编译完成
运行项目
配置FPGA
1连接JTAG到开发板
2. 启动Quartus Prime Programmer。
- 如下图所示,添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回
到 Eclipse 主机面。
运行/调试程序
(1) 用户将运行程序来观察编译代码的执行。用户可以在目标硬件上或 Nios II 指
令集仿真器(ISS)上运行程序。本节实验只讲述在目标硬件上调试和运行程序。在 C/C++
Projects 视图中右击 hello_led_0 工程文件夹,然后在弹出的快捷菜单中选择 Run As→Nios II
Hardware 运行程序,也可以在菜单栏中选择 Run →Run Configurations,如下图所示。
注意,在目标板上运行程序前,要确保 USB Blaster 下载电缆已经连接好,要保证已经
使用硬件系统对 FPGA 完成配置,即完成第(1)步。
配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh
Connections 将 USB-Blaster 加入,如下图所示。
Apply 后,Run。下载完成后,可以看见 Console 里打印信息“hello from Nios
II!”(第一段代码实现),如下图所示:
参考文档
基于NIOS II的流水灯实验](https://blog.csdn.net/qq_43279579/article/details/115933154)