基于 NIOSII 软核的流水灯实验

基于 NIOSII 软核的流水灯实验

实验目的

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

实验步骤

  1. 建立新项目
    选择板子类型

在这里插入图片描述

  1. 进行Qsys系统设计
    (1)打开qsys功能 tools–>Qsys

在这里插入图片描述

(2)保存

在这里插入图片描述
(3). 设置时钟,鼠标双击clk_0元件或右键编辑clk_元件,对Clock进行时钟设置,设为50M.
在这里插入图片描述
(4).添加 CPU 和外围器件。从 PD 的元件池中选择以下元件加入到当前设计的系统中:
Nios II 32-bit CPU、jtag uart、片上存储器、PIO、system ID。
(1).添加Nios II 32-bit CPU
①搜索该元件
在这里插入图片描述
② 在Nios Core栏中选择Nios II/f选项,默认即可
在这里插入图片描述
③将nios2_qsys_0重命名为cpu
在这里插入图片描述
④将cpu的clk和restet_n分别与系统时钟clk_0的clk和clk_reset相连
在这里插入图片描述

注意:对模块命名要遵循以下规则:

  • 名字最前面应该使用英文;
  • 能使用的字符只有英文字母、数字和下划线“_”;
  • 不能连续使用“”符号,在名字的最后也不能使用“”。

(5). 添加 jtag uart 接口。jtag uart 接口是 Nios II 嵌入式处理器新添加的接口元件,通过内嵌在 Intel FPGA 内部的 JTAG 电路,可以实现在 PC 主机与 Qsys 系统之间进行串行字符流通信。
① 添加过程与上面雷同,配置保持默认即可。
在这里插入图片描述
② 将其重命名为jtag_uart
在这里插入图片描述
③进行clk、reset以及master-slave的连线。
④进行终端irq连线
在这里插入图片描述

(6)添加片上存储器On-Chip Memory(RAM)核
①查找元件
在这里插入图片描述
②配置RAM
在这里插入图片描述
③将其改名为onchip_ram
④进行时钟、数据端口、指令端口的连接
在这里插入图片描述
(7)添加PIO接口,配置保持默认就行
在这里插入图片描述
(8)添加片 System ID Peripheral 核
在这里插入图片描述
(9)IP核的连接
clk,reset,datamaster需要和其他所有IP核连接,nios ii的指令端口(instruction_master)只与存储器进行连接,nios ii中的jtag_debug_model_reset与外部IP核进行连接 。jtag端口的中断信号的连接,其中0表示中断的优先级(可以进行设置)
结果
在这里插入图片描述
(10)进行基地址分配
在这里插入图片描述
(11)连接所有复位端口
在这里插入图片描述
(12)指定 NIos II 的复位和异常地址:从”System Contents”标签栏
双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception
Vector 为””onchip_ram.s1”,点击 Finish。
在这里插入图片描述
以上步骤做完后
在这里插入图片描述
3.生成Qsys系统:Generate–>Generate
在这里插入图片描述
生成文件
在这里插入图片描述

原理图设计

1.新建原理图文件
在这里插入图片描述
2.添加元件
在这里插入图片描述

3.加入Quartus 文件
(1)寻找文件
在这里插入图片描述
(2)添加文件
在这里插入图片描述
4.进行逻辑连接并生成管脚
在这里插入图片描述

5.对管脚进行重命名
在这里插入图片描述
6.芯片引脚设置
(1)Assignments–>device–>Device pin options。
在这里插入图片描述
(2)进行unused pin设置,可能会受到外部信号的干扰,将未用引脚设置为As input tri-stated。
在这里插入图片描述
(3)特殊引脚设置为常规引脚
在这里插入图片描述
7.编译工程
8.分配物理引脚
在这里插入图片描述
9.关闭页面,再次编译项目

软件部分设计

1.启动Nios II Software Building Tools for Eclipse
在这里插入图片描述
2. 选择项目路径
在这里插入图片描述
3. 创建工程
在这里插入图片描述

  1. 选择kernel.sopcinfo文件
    在这里插入图片描述
    5.输入项目名
    在这里插入图片描述
    6.编辑代码
    在这里插入图片描述
    代码:
#include <stdio.h>
#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;
 //串口打印
 printf("Hello world!\n");
 //流水灯循环
 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<5000000)
 		 i++;
   }
 return 0;
}

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

运行项目

配置FPGA

1连接JTAG到开发板
2. 启动Quartus Prime Programmer。
在这里插入图片描述

  1. 如下图所示,添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回
    到 Eclipse 主机面。
    在这里插入图片描述

运行/调试程序

(1) 用户将运行程序来观察编译代码的执行。用户可以在目标硬件上或 Nios II 指
令集仿真器(ISS)上运行程序。本节实验只讲述在目标硬件上调试和运行程序。在 C/C++
Projects 视图中右击 hello_led_0 工程文件夹,然后在弹出的快捷菜单中选择 Run As→Nios II
Hardware 运行程序,也可以在菜单栏中选择 Run →Run Configurations,如下图所示。
在这里插入图片描述
注意,在目标板上运行程序前,要确保 USB Blaster 下载电缆已经连接好,要保证已经
使用硬件系统对 FPGA 完成配置,即完成第(1)步。
配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh
Connections 将 USB-Blaster 加入,如下图所示。
在这里插入图片描述
Apply 后,Run。下载完成后,可以看见 Console 里打印信息“hello from Nios
II!”(第一段代码实现),如下图所示:
在这里插入图片描述

参考文档
基于NIOS II的流水灯实验](https://blog.csdn.net/qq_43279579/article/details/115933154)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值