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

目录

一、实验设备

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

三、基于NIOS-II软核流水灯实现(软件设计)

四、运行流水灯项目


一、实验设备

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

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

1、 新建一个工程

选择目标芯片:cycloneIVE系列的EP4CE11529C7,这里根据自己板子的芯片型号选择即可
一些 Quartus-II的基本操作请参考:
Quartus-II实现D触发器的三种方式
FPGA实现1位全加器设计

2、 Qsys 系统设计
a. 点击 Tools 下拉菜单下的 Qsys 工具

b. 启动 Qsys 后,点击 File —> save,如图 1.7 所示,在文件名中填写为 kernel,后点击 OK

c. 鼠标放在 clk_0 处点击右键 Edit 或是双击 clk_0 元件,对 Clock 进行时钟设置,设为为 50M

d. 添加 CPU 和外围器件

 添加 Nios II 32-bit CP

在 “component library” 标签栏中找到 “Nios II Processor” 后点击 Add

在 Nios Core 栏中选择 Nios II/f 选项,其他保持默认选项 

在 ”Caches and Memory Interfaces” 标签栏中保持默认设置 (Instruction Cache 选择
4Kbytes)
 

在 ”Advanced Features” 标签栏中保持默认设置 

在 ”MMU and MPU Settings” 标签栏中保持默认设置 

在 ”JTAG Debug Module” 标签栏中保持默认设置 

点击 Finish 回到 Qsys 界面
将 nios2_qsys_0 重命名为 cpu,点击 ”Rename” 即可重新命名 

将 cpu 的 clk 和 reste_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连 

 添加 jtag uart 接口。 

jtag uart 接口是 Nios II 嵌入式处理器新添加的接口元件,通过内嵌在 Intel FPGA 内部的 JTAG 电路,可以实现在 PC 主机与 Qsys 系统之间进行串行字符流通信 

同样,在 ”Component Library” 标签栏中的查找窗口输入 jtag 找到 ”JTAG UART ”,然后点击 Add 

在 JTAG UART-jtag-uart_0 的设置向导中保持默认选项,点击 Finish 

返回 ”System Contents” 标签栏可以看到新加入的 ”JTAG UART” 核。在 ”Name” 列中将 jtag-uart_0 重命名为 jtag-uart

进行 clkreset 以及 master-slave 的连线
进行中断 irq 连线 

 添加片上存储器 On-Chip Memory(RAM)核
在左侧 ”Component Library” 标签栏中的查找窗口输入 On Chip 找到 ”On-Chip
Memory(RAM or ROM)”
 后点击 Add

在 ”Size” 栏中的 ”Total memory size” 窗口中输入 40960(即片上内存的大小为 40KB),其余选项保持默认,点击 Finish 

返回 ”System Contents” 标签栏可以看到新加入的 ”On-Chip Memory” 核。在 ”Name”
列中将 onchip_memory2_0 改名为 onchip_ram 

进行时钟、数据端口、指令端口的连接 

 添加 PIO 接口
在左侧 ”Component Library” 标签栏中的查找窗口输入 pio 找到 ”PIO” 后点击Add

确定以下选项:Width 为 8bitsDirection 选择 output,其余选项保持默认,点击
Finish 

返回 ”System Contents” 标签栏可以看到新加入的 ”PIO” 核。在 ”Name” 列中将
pio_0 改名为 pio_led。并在在 Export 栏处双击,把输出口引出来,并命名为 out_led
进行时钟、数据端口、指令端口的连接 

 添加片 System ID Peripheral 核
在左侧 ”Component Library” 标签栏中的查找窗口输入 sys 找到 ” System ID
Peripheral”
 后点击 Add

保持默认选项,单击 Finish

返回 ”System Contents” 标签栏可以看到新加入的 ” System ID Peripheral” 核。在 ”Name” 列中将 sysid_qsys_0 改名为 sysid

进行时钟、数据端口的连接 

3、完成 Qsys 设计的后续工作
 基地址分配:点击 Qsys 主界面菜单栏中的 ”System” 下的 ”Assign Base Addresses”
如下图所示 

 分配中断号:在 ”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”。完成后会自动连接所有复位端口

 生成 Qsys 系统:点选 ”Generation HDL” 标签栏中 Generate 按钮生成 Qsys 系统

如果提示是否保存.qsys 文件,请选择保存 

点击 Close 后关闭窗口后,再关闭 Qsys 主界面

 在 Quartus-II 中新建一个原理图,然后在该原理图(BDF)文件中添加 Qsys 生成的系统符号

 点击 Assignments-Settings,添加 kernel.qip 文件

4、进行逻辑连接和生成管脚
 在 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports 生成管脚,然后将管脚命名如下:

** 5、芯片引脚设置**
 菜单里选择 Assignments-device,然后如下图所示点击 Device pin options

 进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As

6、编译工程 

7、分配物理针脚

完成后关闭 Pin Planner,回到 Quartus Prime 主界面后再次编译项目。至此完成项目的
硬件设计
 

三、基于NIOS-II软核流水灯实现(软件设计)

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

 在 Quartus-II 界面,点击Tools,然后点击 Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse

 启动 Workspace 选择当前的项目目录,点 OK

 创建工程
a. 建立新的软件应用

b. 在 ”SOPC Information File name” 窗口中选择 kernel.sopcinfo 文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在 ”Project name” 输入 ”helloWorld” ,Project template选择 Hello World。

 修改程序
将 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
a. 连接 JTAG 到开发板

c. 添加下载文件,如图所示

② 运行/调试程序

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

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

Console 里打印结果如下:

实验效果
显示结果如下

QQ视频20240514144154

 五、总结

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

六、参考文献

基于NIOS-II软核流水灯实现_nios中断实验-CSDN博客

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值