基于 NIOSII 软核的流水灯实验

目录

一、实验目的

二、实验原理

​ 三、实验步骤

(一) 硬件部分设计

1).创建项目

2).进行Qsys系统设计

3).完成Qsys设计的后续工作

 (二) 软件部分设计

四、实验结果

五、总结

参考


一、实验目的

(1)学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;
(2)初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;
(3)掌握 Nios II 软件的开发流程,软件的基本调式方法。

二、实验原理

控制 LED 灯闪烁的用户程序代码很小,可将其固化在片内 ROM 来执行。变量、堆栈等空间使用片内 RAM,不使用任何片外存储器。其它逻辑与 Nios II 系统一样可存在于 FPGA中。Nios II 系统可与其它片内逻辑相互作用,取决于整个系统的需要。

三、实验步骤

(一) 硬件部分设计

1).创建项目

2).进行Qsys系统设计

1.点击 Tools 下拉菜单下的 Platform Designer 工具

 2.保存命名为kernel

3.双击clk_0,对Clock进行时钟设置,设置为50M

4.添加Nios ll 32-bit CPU

在Nios Core栏中选择Nios II/f选项,其他保持默认选项,然后点击finish

 

右键选择重命名,重命名为cpu;
将cpu的clk和reste_n分别与系统时钟clk_0的clk和reste_n相连

5.添加itja uart接口

保持默认,点击finish

 

将jtag-uart_0重命名为jtag-uart;
进行clk、reset以及master-slave的连线;

 6.添加片上存储器On-Chip Memory(RAM)核

 

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

重命名为onchip_ram;
进行时钟、数据端口、指令端口的连接;

7.添加PIO接口

 

Width为8bits,Direction选择output,其余选项保持默认,点击finish;

重命名为pio_led,并在export栏处双击,将输出口引出来,并命名为out_led;
进行时钟、数据端口、指令端口的连接;

8.添加片System ID Peripheral核

 

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

 3).完成Qsys设计的后续工作

1.基地址分配:点击system下的Assign Base Address

2.分配中断号:在IRQ标签栏下选择Avalon_itag_slave和IRQ的连接点就会jtag_uart核添加一个值为0的中断号;

3.双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception 
Vector 为””onchip_ram.s1”,点击 Finish

 4.点击Qsys主界面菜单栏中的system下的Create Global Reset Network

最终完成的连接图

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

 6.在原理图(BDF)文件中添加 PD 生成的系统符号

 加入 Quartus II IP File 文件

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

 kernel 模块内点击鼠标右键选取 Generate Pin for Symbol Ports 生成管脚

将管脚”inclk0”改名为 clock,管脚”reset_reset_n”改名为 reset_n,管脚 out_led_export[7..0]改为 out_led[7..0]。

编译工程

 ​​​​​​按照开发板提供的管脚名称分配引脚,如图所示,配置完成后再次编译工程

 (二) 软件部分设计

1.启动Nios ll SBT

选择Tools-Nios II Software Build Tools for Eclipse,打开Nios II SBT for Eclipse

workplace选额当前目录

 

 

2.创建工程

在SOPC Information File name窗口中选择kernel.sopcinfo文件,CPU栏中选择cpu,在Project name输入hello,Project template选择Hello_World

 

 系统会自动生成一个打印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()
{
  int count=0;
  alt_u8 led;
  volatile int i;
  while(1)
  {
	  if (count==8)
	  {
		  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;
}

 3.编译程序
右键项目名称,选择Build Project,

四、实验结果

1.配置FPGA

启动Nios II->Quartus Prime Programmer

 2.运行程序

选择Run->Run Configurations

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

运行结果
在这里插入图片描述

 

 

五、总结

初步了解了 SOPC 的开发流程, Nios II 软件的开发流程,软件的基本调式方法。

参考

 基于 NIOS-II 软核的流水灯_nios流水灯_https://blog.csdn.net/weixin_56102526/article/details/124038769

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值