基于 NIOSII 软核的流水灯实验

实验目的:
1.学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;
2.初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;
3.掌握 Nios II 软件的开发流程,软件的基本调式方法。
实验环境:
硬件:PC 机、DE2-115 FPGA 实验开发平台;
软件:Quartus II、Platform Designer、Nios II SBT
参考资料:利用Quartus-II进行仿真实验

一、硬件设计

1.建立新项目

和之前一样建立项目。
在这里插入图片描述

2.进行 Qsys 系统设计

(1)进入Qsys,建立并保存qsys文件
点击Tools——》Qsys
不同版本进入方法不一样
Quartus Prime 18版本:点击 Tools 下拉菜单下的 Platform Designer 工具

在这里插入图片描述
ctrl+s先保存一波,文件名为kernel,路径默认。
在这里插入图片描述
(2)进行器件编辑
在这里插入图片描述
在Library中搜索
①Nios II Processor并添加(Add)
在这里插入图片描述
选项基本默认,这几个地方需要注意

  • 在 Nios Core 栏中选择 Nios II/f 选项;
  • 在”Caches and Memory Interfaces”标签栏中保持默认设置(Instruction Cache 选择
    4Kbytes);
  • 在”JTAG Debug Module”标签栏中保持默认设置(注意勾选 Include JTAG Debug);
  • 然后将加入的器件重命名(Rename)为cpu
    ②JTAG UART
    在这里插入图片描述
    选项保持默认。
    然后将加入的器件重命名(Rename)为jtag_uart
    ③On-Chip Memory(RAM or ROM)
    在这里插入图片描述
    选项基本默认,这个地方需要注意
  • 在”Size”栏中的”Total memory size”窗口中输入 40960(即片上内存的大小为 40KB)。
    然后将加入的器件重命名(Rename)为onchip_ram
    ④PIO
    在这里插入图片描述
    选项基本默认,这个地方需要注意
  • Width 为 8bits,Direction 选择 output。
    然后将加入的器件重命名(Rename)为pio_led
    ⑤System ID Peripheral
    在这里插入图片描述
    选项保持默认。
    然后将加入的器件重命名(Rename)为sysid

器件添加完成
开始连线

clk与clk_0的clk相连;
后面器件的s1与cpu的data_master相连;
reset全部连接;
instruction要与onchip_ram的s1相连。

具体如下
在这里插入图片描述

  • 点击 PD 主界面菜单栏中的”System”下的分配基地址(Assign Base Addresses)
  • 双击clk_0设置时钟为50MHz(默认是这么多);
  • pio_led的Export设置为led_out(图上部分);
  • jtag_uart中断(IRQ)那边设置为0。
  • cpu的配置(双击cpu进行配置) Reset Vector 和 Exception Vector 为onchip_ram.s1
    在这里插入图片描述
    完成上述操作后
    (3)生成 Qsys 系统
    点击”Generation HDL”标签栏中 Generate 按钮生成 Qsys 系统。
    选项保持默认。
    在这里插入图片描述
    在这里插入图片描述
    (4)添加进PDF中
    在原理图(BDF)文件中添加 PD 生成的系统符号,将已生成的 kernel加到bdf 中。
    在这里插入图片描述
    在这里插入图片描述
    (5)加入 Quartus II IP File 文件,为了以后编译成功,请务必将对应的 Quartus II IP
    File (.qip) 加入项目中。
    点击 Assignments——》Settings
    在这里插入图片描述
    在这里插入图片描述
    如果出错,把.qsys和.cmp去掉

3.进行逻辑连接和生成管脚

(1)逻辑连接。开发板晶振为 50M,与系统默认一致,因此,这里我们不需要修改。
(2)在 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports 生成管脚。)
在这里插入图片描述

(3)将管脚”clk_clk”改名为 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 主界面后再次编译项目。至此完成项目的硬件设计。

二、软件设计

1.启动 Nios II SBT

点击 Tools——》Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse
在这里插入图片描述

启动 Workspace 选择当前的项目目录,点 OK
在这里插入图片描述

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,也可以点击Project——》Build
在这里插入图片描述
编译成功后
在这里插入图片描述

三、运行项目

1.配置 FPGA

2.运行/调式程序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值