目录
前言
本篇博客主要是学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。实现在DE2-115开发板上分别用Verilog和Nios软件编程两种方式完成LED流水灯显示。
一、实验设备
硬件:PC 机、DE2-115 FPGA 实验开发平台;
软件:Quartus Prime 18.1、PlatformDesigner、Nios II SBT
二、硬件设计
进行 Qsys 系统设计
新建kernel.qsys文件:
设置clk时钟:
添加 Nios II
添加 jtag uart 接口
添加片上存储器 On-Chip Memory(RAM)核
添加 PIO 接口
添加片 System ID Peripheral 核
连线及中断:
分配基地址:
配置 Reset Vector 和 Exception Vector 为”onchip_ram.s1”
点击 Qsys 主界面菜单栏中的 ”System” 下的 ”Create Global Reset Network”。完成后会自动连接所有复位端口
生成 Qsys 系统:点选 ”Generation HDL” 标签栏中 Generate 按钮生成 Qsys 系统,保存文件
三、逻辑连接
1.新建BDF文件,将设计好的系统符号引入
2.生成管脚:
3.添加 kernel.qip 文件:
4.芯片引脚设置:
5.进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As input tri-stated
6.设为常规引脚
7. 编译成功:
四、软件设计
打开Nios II Software
选择工程目录:
创建工程:
在 hell_word.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,如下图所示。
五、运行项目
1、配置 FPGA
1、连接 JTAG 到开发板,确定 A.已正确安装驱动。B. 防火墙不会影响到 JTAG
的正常工作。最后给开发板上电。
2、启动 Quartus Prime Programmer。
3、添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回到 Eclipse 主机面。
2、运行/调式程序
1、用户将运行程序来观察编译代码的执行。用户可以在目标硬件上或 Nios II 指令集仿真器(ISS)上运行程序。本节实验只讲述在目标硬件上调试和运行程序。在 C/C++ Projects 视图中右击 hello_led_0 工程文件夹,然后在弹出的快捷菜单中选择 Run As→Nios II Hardware 运行程序,也可以在菜单栏中选择 Run →Run Configurations。
注意:
在目标板上运行程序前,要确保 USB Blaster 下载电缆已经连接好,要保证已经使用硬件系统对 FPGA 完成配置,即完成第(1)步。
2、配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入。
3、Apply 后,Run。
六、实验结果
流水灯
七、总结
本次实验,我了解了nios II 的基本使用方法,实现了Quartus通过USB-Blaster检程序烧录到开发板上。