基于NIOSII软件的流水灯实验

  • 一、实验任务
  • 二、硬件部分设计
    • (一)Qsys系统设计
    • (二)完成 Qsys 设计的后续工作
    • (三)逻辑连接和生成引脚
    • (四)芯片引脚设置
    • (五)编译
    • (六)分配物理针脚
  • 三、软件部分设计
  • 四、项目运行

一、实验任务

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

完成:1) 流水灯显示; 2) 串口循环输出“Hello Nios-II”字符串到笔记本电脑。

二、硬件部分设计

(一)Qsys系统设计

1、打开file->new->Qsys System File
2、保存

3、鼠标放在 clk_0 处点击右键 Edit 或是双击 clk_0 元件,对 Clock 进行时钟设置,设
为为 50M
4、添加CPU和外围器件
① 添加 Nios II 32-bit CPU
在“component library”标签栏中找到“Nios II Processor”后点击 Add(在查找窗口
输出 nios 即可)。
在 Nios Core 栏中选择 Nios II/f 选项,其他保持默认选项

在”Caches and Memory Interfaces”标签栏中保持默认设置(Instruction Cache 选择
4Kbytes)
其他各选项中保持默认设置,然后点击finish
将 nios2_qsys_0 重命名为 cpu,点击”Rename”即可重新命名

将 cpu 的 clk 和 reste_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连
② 添加 jtag uart 接口。
在标签栏中的查找窗口输入 jtag
在 JTAG UART-jtag-uart_0 的设置向导中保持默认选项,点击 Finish
将 jtag-uart_0 重命名为 jtag-uart
进行 clk、reset 以及 master-slave 的连线
③ 添加片上存储器 On-Chip Memory(RAM)核

在查找窗口输入 On Chip 找到”On-Chip Memory(RAM or ROM)”后点击 Add
在”Size”栏中的”Total memory size”窗口中输入 40960(即片上内存的大小为 40KB),其余选项保持默认,点击 Finish
将 onchip_memory2_0 改名为 onchip_ram
进行时钟、数据端口、指令端口的连接,完成后如下图所示

④ 添加 PIO 接口
在查找窗口输入 pio 找到”PIO”后点击Add
确定以下选项:Width 为 8bits,Direction 选择 output,其余选项保持默认,点击
Finish
在”Name”列中将pio_0 改名为 pio_led
进行时钟、数据端口、指令端口的连接

⑤ 添加片 System ID Peripheral 核
在查找窗口输入 sys 找到” System ID Peripheral”后点击 Add
保持默认选项,单击 Finish
在”Name”列中将 sysid_qsys_0 改名为 sysid
进行时钟、数据端口的连接

(二)完成 Qsys 设计的后续工作

1、基地址分配:点击 主界面菜单栏中的”System”下的”Assign Base Addresses”
完成后”Base”栏将出现不会重复的具体的地址
2、分配中断号:在”IRQ”标签栏下点选”Avalon_jtag_slave”和 IRQ 的连接点就会
为”jtag_uart”核添加一个值为 0 的中断号
3、指定 NIos II 的复位和异常地址:从”System Contents”标签栏
双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception Vector 为””onchip_ram.s1”,点击 Finish

完成后会自动连接所有复位端口
最终连接图
4、生成 Qsys 系统:点选”Generation HDL”标签栏中 Generate 按
钮生成 Qsys 系统
在弹出的窗口中点击save

完成后
5、在原理图(BDF)文件中添加 PD 生成的系统符号
新建一个block…/…file

在name输入框内输入kernel
6、加入 Quartus II IP File 文件,为了以后编译成功

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

(三)逻辑连接和生成引脚

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


3、将管脚”inclk0”改名为 clock,管脚”reset_reset_n”改名为 reset_n,
管脚 out_led_export[7…0]改为 out_led[7…0]

(四)芯片引脚设置

1、菜单里选择 Assignments-device,然后如下图所示点击 Device pin options
2、进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As
input tri-stated
3、特殊引脚设置,设置为常规引脚

(五)编译

编译过程中若出现can’t fit design in device可以尝试修改设备

(六)分配物理针脚

打开pin planner
管脚名称分配:
设置完成后,回到主界面再次编译

三、软件部分设计

1、打开 Nios II SBT for Eclipse
2、启动 Workspace 选择当前的项目目录,点 OK

3、创建工程
建立新的软件应用
点击后出现下图,在”SOPC Information File name”窗口中选择 kernel.sopcinfo
文件,以便将生成硬件配置信息和软件应用关联,CPU 栏会自动选择”CPU”。在”Project
name”输入”hello_world,”Project template”选择 Hello_World。点击 Finish。
4、修改自动生成的程序代码:

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

5、编译工程

6、编译工程
编译完成后:

四、项目运行

1、配置 FPGA
(1)配置FPGA连接 JTAG 到开发板,确定 A.已正确安装驱动。B. 防火墙不会影响到 JTAG
的正常工作。最后给开发板上电。
(2) 如下图所示,启动 Quartus Prime Programmer。

添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回
到 Eclipse 主机面

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

Apply 后,Run。下载完成后,可以看见 Console 里打印信息“hello from Nios II!

FPGA的NIOS-II开发入门相关推荐

  1. 【原创】FPGA (Verilog/NIOS II/Microblaze) 编程小提醒

    1.打开NIOS II IDE  建立好工程以后,先编译一下(Ctrl+B),然后打开system.h检查下目标硬件信息是否正确, 避免选择错误的目标硬件. 2.在NIOS II IDE 编写程序的时 ...

  2. 【连载】【FPGA黑金开发板】NIOS II那些事儿--LED实验(四)

    声明:本文为原创作品,版权归本博文作者所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 这一节,我将给大家讲解第一个与硬件有关的程序,虽然内容简单,却极具代表性. ...

  3. NIOS II软核处理器

    前不久,Altera 正式推出了Nios II系列32位RSIC嵌入式处理器.Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPG ...

  4. 音频电平vu显示表软件下载_正点原子开拓者 Nios II资料连载第十章MCU TFT-LCD图片显示实验...

    1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者 Nios II开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://w ...

  5. Nios II 系统的Avalon总线

    开始接触fpga 的 Nios II 软核处理器,对其中比较重要的总线协议做一下笔记 基于Nios II处理器的片内系统互连主要依靠的是Avalon-MM总线和Avalon-ST总线. Nios II ...

  6. 【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)

    为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人. 首先需要声明一点,下面部分问题来自网络,如果版权 ...

  7. FPGA 之 SOPC 系列(六)Nios II 程序开发 II

    FPGA 之 SOPC 系列(六)Nios II 程序开发 II 今天给大侠带来今天带来FPGA 之 SOPC 系列第六篇,Nios II 程序开发 II,希望对各位大侠的学习有参考价值,话不多说,上 ...

  8. FPGA学习[2]——致敬Mbed!使用C++开发NIOS II

    前言 NIOS II项目搭建 Hello World on Nios ii 点亮LED 快速的开发:使用C++的类 前言 在上一篇文章中博主介绍了如何让nios ii跑在板子自带的SDRAM里,这样大 ...

  9. 【连载】【FPGA黑金开发板】NIOS II那些事儿--串口实验(六)

    声明:本文为原创作品,版权归本博文作者所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 简介 这一节,我们来说说RS232,俗称串口.大家对这东西应该很了解,没什 ...

  10. 【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)

     声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org)所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 前言 从今天开始,NIO ...

最新文章

  1. 模型与logit_基础方法 | 如何用Logit回归模型写论文?
  2. all controls within the same view will share the same data Model
  3. mysql实现读写分离
  4. 异步http 超时_具有CompletableFuture的异步超时
  5. ant java 返回_使用Ant自动化我们的java项目生成
  6. parseInt和valueOf
  7. linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
  8. HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】
  9. ContextCapture Smart3D 使用问题汇总
  10. ERP实施中需掌握的基本财务基础知识
  11. Outlook添加新浪邮箱时的配置细节——登录密码
  12. 基于51单片机的简易计算器proteus仿真 数码管显示
  13. linux tty core code,linux tty core 源码分析(8)
  14. windows系统查看sn编码
  15. Ubuntu apt update无论使用什么源都出现类似的错误
  16. 深度解析CentOS通过日志反查***
  17. NSI打包脚本加入文件详细信息
  18. 量子力学常用知识汇总 (部分)
  19. PHP实现获取毫秒时间戳的方法
  20. 文件上传——FileItem接口方法

热门文章

  1. idv和vdi的优劣势_VDI和IDV两种桌面虚拟化的方案对比
  2. 什么无线耳机音质最好,无线耳机品牌排行榜
  3. password unchanged Authentication token manipulation error
  4. 计算机机房门尺寸,门的宽度是多少
  5. 数码相机导入计算机软件,佳能相机照片导入电脑软件(Image Transfer Utility)
  6. 计算机管理器没有注册类别,Win10电脑系统没有注册类别怎么解决
  7. android动态指示箭头,自定义选项卡指示器(箭头向下指示器)
  8. Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
  9. 1.27 Cubemx_STM32H7 软\硬件I2C
  10. 当我说要做大数据工程师时他们都笑我,直到三个月后……