基于 NIOSII 软核的流水灯

该实验详细介绍了如何使用Quartus和PlatformDesigner进行硬件系统设计,包括Qsys系统设计、Quartus生成原理图。在软件部分,涉及NiosIISBT的启动、工程创建、程序修改和编译。最后,实验阐述了如何配置FPGA并运行调试程序,展示了流水灯控制程序的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验二


前言

硬件:PC 机、DE2-115 FPGA 实验开发平台;
软件:Quartus Prime 18.1、Platform Designer、Nios II SBT

一、硬件部分设计

创建一个新项目,芯片选择上次一样的。

(1)、Qsys系统设计

1.点击tools的Qsys选项(或 Platform Designer)。
2.启动后,点击 File-save,在文件名中填写为 kernel后点击 OK。
在这里插入图片描述
3.鼠标放在 clk_0 处点击右键 Edit 或是双击 clk_0 元件,对 Clock 进行时钟设置,设为 50M。
在这里插入图片描述
4.添加 CPU 和外围器件。从 PD 的元件池中选择以下元件加入到当前设计的系统中:Nios II 32-bit CPU、jtag uart、片上存储器、PIO、system ID。
例:在“component library”标签栏中找到“Nios II Processor”后点击 Add(在查找窗口输出 nios 即可)。
在这里插入图片描述
在 Nios Core 栏中选择 Nios II/f 选项,其他保持默认选项。
在这里插入图片描述
其余器件同理,均保持默认设置即可。依次添加。
5.将器件名重命名,点击”Rename”即可重新命名。
将各个器件的 clk 和 reste_n等属性分别与系统时钟 clk_0 的 clk 和 clk_reset 等相连。

其中,添加 On-Chip Memory(RAM or ROM)时,在”Size”栏中的”Total memory size”窗口中输入 40960(即片上内存的大小为 40KB)。

所有器件添加并连接完成后如下所示:
在这里插入图片描述
5.基地址分配:点击 PD 主界面菜单栏中的”System”下的”Assign Base Addresses”。完成后”Base”栏将出现不会重复的具体的地址,如下图:
在这里插入图片描述
分配中断号:在”IRQ”标签栏下点选”Avalon_jtag_slave”和 IRQ 的连接点就会
为”jtag_uart”核添加一个值为 0 的中断号。如下图所示:
在这里插入图片描述
指定 NIos II 的复位和异常地址:从”System Contents”标签栏
双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception
Vector 为””onchip_ram.s1”,点击 Finish。下图所示:
在这里插入图片描述
点击 Qsys 主界面菜单栏中的”System”下的”Create Global Reset Network”。
完成后会自动连接所有复位端口。
在这里插入图片描述
6.生成 Qsys 系统:点选”Generation HDL”标签栏中 Generate 按
钮生成 Qsys 系统。如下图所示
在这里插入图片描述

(2)、quartus生成原理图

1.在原理图(BDF)文件中添加Qsys生成的系统符号,在空白处双击将已生成的 kernel加入当前工程文件下。
在这里插入图片描述
2.加入 Quartus II IP File 文件,为了以后编译成功,请务必将对应的 Quartus II IP File (.qip) 加入项目中。
在这里插入图片描述
3.进行逻辑连接和生成管脚
逻辑连接。开发板晶振为 50M,与系统默认一致,这里我们不需要修改。
在 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports 生成管脚。
将管脚”inclk0”改名为 clock,管脚”reset_reset_n”改名为 reset_n,管脚 out_led_export[7…0]改为 out_led[7…0]。如下图所示:
在这里插入图片描述
4.芯片引脚设置
菜单里选择 Assignments-device,然后如下图所示点击 Device pin options。
在这里插入图片描述
进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As
input tri-stated。
在这里插入图片描述
特殊引脚设置,设置为常规引脚。
在这里插入图片描述
5.编译工程
回到 Quartus II 主界面后编译项目。
在这里插入图片描述
6.分配物理针脚
进入 Pin Planner 界面。按照开发板提供的管脚名称分配针脚,下图所示:
在这里插入图片描述
完成后关闭 Pin Planner,回到 Quartus Prime 主界面后再次编译项目。至此完成项目的硬件设计。

二、软件部分设计

下面使用 Nios II Software Build Tools for Eclipse 来完成当前项目的软件开发。

(1)、启动 Nios II SBT

1.按照下图所示点击 Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse。
在这里插入图片描述
2.启动 Workspace 选择当前的项目目录,点 OK。
然后出现 Nios II SBT for Eclipse 主界面
在这里插入图片描述

(2)、创建工程

1.建立新的软件应用,如下图所示:
在这里插入图片描述
2.点击后出现下图,在”SOPC Information File name”窗口中选择 kernel.sopcinfo 文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在”Project name”输入”hello_world,”Project template”选择 Hello_World。点击 Finish。
在这里插入图片描述

(3)、修改程序

在 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;
}

(4)、编译

右键单击项目名称,在弹出的菜单中选择 Build Project。编译完成后如下图所示:
在这里插入图片描述

三、运行项目

(1)、配置FPGA

1.连接 JTAG 到开发板,确定 A.已正确安装驱动。B. 防火墙不会影响到 JTAG 的正常工作。最后给开发板上电。
2.启动Programmer。
3.如下图所示,添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回到 Eclipse 主机面。
在这里插入图片描述

(2)、运行/调式程序

1.右键工程,选择 Run As→Nios II Hardware 运行程序,也可以在菜单栏中选择 Run →Run Configurations,如下图所示。
在这里插入图片描述
2.配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入,如下图所示。
在这里插入图片描述
3.Apply 后,Run,观察到LED灯循环闪烁。

流水灯


总结

本次实验让我学习 了Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值