目录

  • 一、前言
  • 二、实验步骤
    • 第一步:硬件部分设计
      • 1)建立新项目
      • 2)进行 Qsys 系统设计
      • 3)完成 Qsys 设计的后续工作
      • 4)原理图设计
      • 5)编译工程及物理针脚分配。
    • 第二步:软件部分设计
      • 1)启动 Nios II SBT
      • 2)创建工程
      • 3)运行项目
  • 三、实验总结
  • 四、参考资料

一、前言

实验目的

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

实验设备

  • 硬件:PC 机、DE2-115 FPGA 实验开发平台;
  • 软件:Quartus II 13.1、Platform Designer、Nios II SBT(后两个软件可以从 Quartus II 13.1 中打开)。

实验内容

  • 使用 FPGA 资源搭建一个简单 Nios II 处理器系统,具体包括:
  • (1) 在 Quartus II 中建立一个工程;
  • (2) 使用 PD 建立并生成一个简单的基于 Nios II 的硬件系统;
  • (3) 在 Quartus II 工程中编译基于 Nios II 的硬件系统并生成配置文件 .sof;
  • (4) 在 Nios II SBT 中建立对应硬件系统的用户 C/C++ 工程,编写一简单用户程序,在 Nios II SBT 中编译程序生成可执行文件 .elf;
  • (5) 将配置文件 .sof 和可执行文件 .elf 都下载到 FPGA 进行调试运行。

实验原理

  • 控制 LED 灯闪烁的用户程序代码很小,可将其固化在片内 ROM 来执行。变量、堆栈等空间使用片内 RAM,不使用任何片外存储器。整个系统的框图如图 1 所示。
  • 从图 1.1 控制 LED 闪烁的系统框图可知,其它逻辑与 Nios II 系统一样可存在于 FPGA 中。Nios II 系统可与其它片内逻辑相互作用,取决于整个系统的需要。为了简单起见,本实验在 FPGA 内不包括其它逻辑。

二、实验步骤

第一步:硬件部分设计

1)建立新项目

  • 使用 Quartus II 新建项目:【File】→【New Project Wizard…】。
  • 继续点击【Next >】进入如下界面:选择工程保存路劲及工程名,然后点击【Next >】。
  • 继续点击【Next >】进入如下界面:芯片系列选择【Cyclone IV E】,再选择【EP4CE115F29C7】后,点击【Next >】。
  • 继续点击【Next >】,然后点击【Finish】即可创建完成。

2)进行 Qsys 系统设计

(1)打开 Qsys。

  • 点击【Tools】→【Qsys】。

(2)保存文件。

  • 点击【File】→【Save】。
  • 输入文件名 kernel ,然后点击【保存】。

(3)设置时钟。

  • 双击或者右键 clk_0 元件,点击【Edit】。
  • 时钟设为 50M Hz,然后点击【Finish】。

(4)添加 CPU 和外围器件。

——① 添加 Nios II 32-bit CPU。

  • 元件列表内搜索 “ nios ”,选择【Nios II Processor】,点击【Add…】。
  • 弹出元件配置窗口,保持默认配置即可,点击右下角的【Finish】完成配置。
  • 右击添加的 Nios II 32-bit CPU 元件,点击【Rename】,重命名为【cpu】。

说明:
(1)名字最前面应该使用英文;
(2)能使用的字符只有英文字母、数字、下划线 “ _ ”;
(3)不能连续使用 “ _ ”符号,在名字的最后也不能使用 “ _ ”。

  • 将 cpu 的 clk 和 reset_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连,如下图所示(点击结点即可连接)。

——② 添加 jtag uart 接口。

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

  • 搜索 “ jtag ” ,选择【JTAG UART】元件,点击【Add…】添加。
  • 弹出的配置窗口,依然保持默认配置,点击右下角【Finish】。
  • 再重命名为【jtag_uart】。
  • 进行 clk、reset、avalon_jtag_slave 的连线,以及中断 irq 连线,中断号设为 0。

——③ 添加片上存储器 On-Chip Memory(RAM)核。

  • 搜索框输入 “ On Chip ”,找到【On-Chip Memory(RAM or ROM)】,点击【Add…】添加。
  • 配置窗口内,设置内存为 40960(40 KB),其余保持默认,再点击【Finish】。
  • 重命名为【onchip_ram】。
  • 连接 clk1、s1、reset1 如下图所示。

——④ 添加 PIO 接口。

  • 搜索框输入 “ pio ”,选择【PIO (Parallel I/O)】后点击【Add…】添加。
  • 确定 Width 为 8 bits,Direction 选择 output ,其它保持默认。
  • 重命名为 【pio_led】。
  • 引出管脚:双击 Export 列的 external_connection ,命名为 out_led。
  • 连接 clk、reset、s1 如下图所示。

——⑤ 添加片 System ID Peripheral 核。

  • 搜索 “ sys ”,选择【System ID Peripheral】后,点击【Add…】添加。
  • 保持默认配置,点击【Finish】。
  • 重命名为 【sysid】。
  • 再连接 clk、reset、control_slave 如下图所示。

——⑥ 完整 Qsys 系统设计。

  • 所有元件及相关连线情况如下图所示:

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

(1)基地址分配。

  • 点击【System】→【Assign Base Addresses】。
  • 完成后,【Base】一列不再出现重复的具体的地址。

(2)指定 Nios II 的复位和异常地址。

  • 双击 cpu 配置属性,在【Core Nios II】栏。
  • 配置 Reset Vector 和 Exception Vector 为【onchip_ram.s1】。

(3)使用 FPGA 资源。

  • 点击【Generate】→【Generate…】。
  • 如果提示是否保存 .qsys 文件,选择保存。
  • 点击【Generate】,再点击【Save】。
  • 点击【Close】关闭窗口。
  • 最后关闭 Qsys 窗口,返回到 Quartus 窗口。

4)原理图设计

(1)新建原理图文件

  • 点击【File】→【New…】。
  • 选择【Block Diagram/Schematic File】,再点击【OK】。
  • 点击元件按钮,搜索前面创建的【kernel】,放置在原理图上。

(2)加入 Quartus II IP File 文件。

  • 点击【Assignments】→【Settings】。
  • 选择 kernel.qip 文件,是在 ..\kernel\synthesis 目录下,选中并打开它。
  • 点击【Add】添加进去。,再点击【OK】。

(3)进行逻辑连接和生成管脚。

  • 右击 kernel 模块,点击【Generate Pin for Symbol Ports】生成管脚。
  • 双击管脚名,重命名为 clk、reset_n、pio_led[7…0] 即可。

(4)芯片引脚设置。

  • 点击【Assignments】→【Device】。
  • 点击【Device Pin Options】。
  • 将未用的引脚设置为【As input tri-stated】。
  • 将特殊引脚设置为常规引脚【Use as regular I/O】,最后点击【OK】。
  • 再点击一次【OK】。

(5)保存原理图文件。

  • 如下图所示。

5)编译工程及物理针脚分配。

(1)编译工程

  • 点击播放按钮,开始编译工程。
  • 无错即可。

(2)分配物理针脚

  • 点击【Pin Planner】快捷键。
  • 按照下图所示分配针脚:
  • 关闭针脚配置界面,回到 Quartus 后再次编译项目。
  • 至此完成项目的硬件设计。

第二步:软件部分设计

1)启动 Nios II SBT

  • 点击【Tools】→【Nios II Software Build Tools for Eclipse】。
  • 工作空间选择该项目文件夹。

2)创建工程

  • 点击【File】→【New】→【Nios II Application and BSP from Template】。
  • 选择 kernel.sopcinfo 文件,再输入工程名,选择 Hello World ,最后点击【Finish】即可。
  • 打开 hello_world.c 文件,修改为如下代码。
#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;
}
  • 右击工程名,点击【Build Project】编译。
  • 编译完成。

3)运行项目

(1)配置 FPGA。

  • 首先连接 JTAG 到开发板,确定 PC 已正确安装驱动、防火墙不会影响到 JTAG 的正常工作。
  • 最后给开发板上电。
  • 启动【Quartus Prime Programmer】。
  • 添加下载文件,然后点击【Start】开始下载,下载成功后关闭,回到 Eclipse 主界面。

(2)运行/调试程序。

  • 点击【Run】→【Run Configurations…】。
  • 转到【Target Connection】标签栏,点击右侧的【Refresh Connections】将 USB-Blaster 加入,如下图所示:
  • 点击【Apply】后点击【Run】。
  • 下载完成后,可以看到 Console 里打印信息:Hello World,且开发板上流水灯显示。


三、实验总结

  • 通过这次串口通信及流水灯实现,大致可以掌握 SOPC 开发流程,以及Qsys 硬核及 Nios II 软核的搭建方法,也可以了解到流水灯的工作原理,也可以自行修改方向、速度等参数来改变流水灯的状态。

四、参考资料

[1] 基于Nios II的hello world

基于 Nios II 的串口打印和流水灯设计【使用 Quartus 软件】【掌握 SOPC 开发流程】相关推荐

  1. 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计

    基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计 必看!!视频讲解 基于51单片机的LED彩灯霓虹灯心形流水灯设计 这里写目录标题 1 开发环境 2 功能说明介绍 3 仿真图 4 ...

  2. 【Nios II】以SOPC开发流程完成流水灯以及串口输出实验

    一.前言 实验内容及步骤 使用 FPGA 资源搭建一个简单 Nios II 处理器系统,具体包括: (1) 在 Quartus Prime 中建立一个工程: (2) 使用 PD 建立并生成一个简单的基 ...

  3. 基于NIOS II的液晶显示设计——自定义图形库

    基于NIOS II的液晶显示设计--自定义图形库 下面是我写的简单图形库 // graphics.h / #ifndef GRAPHICS_H_ #define GRAPHICS_H_ #includ ...

  4. HDMI系列之一:基于Nios II的HDMI显示图片

    一休哥将在本文中介绍一个基于Nios II的HDMI显示图片的工程.我将主要分三个部分来介绍这一工程,从而实现工程效果. 1. Nios II的常规使用套路 2. 自定义HDMI IP核的制作 3. ...

  5. 单片机串口中断控制流水灯c语言,基于单片机AT89C51控制的中断控制流水灯_课程设计报告...

    <基于单片机AT89C51控制的中断控制流水灯_课程设计报告>由会员分享,可在线阅读,更多相关<基于单片机AT89C51控制的中断控制流水灯_课程设计报告(25页珍藏版)>请在 ...

  6. 基于verilog流水灯设计

    使用verilog语言实现流水灯设计并进行仿真波形验证如下: 下面是在vivado下仿真截图: 流水灯顶层模块包括分频器和状态机组成 顶层模块如下: module ledwater( input cl ...

  7. 基于51单片机的花样流水灯设计(源码+仿真+设计报告)

    资料编号:113 采用51单片机的IO控制多个LED灯,实现多种模式的流水风,全套资料齐全:具体功能请看下方演示视频 113-基于51单片机的花样流水灯设计(源码+仿真+设计报告) 单片机最小系统介绍 ...

  8. FPGA零基础学习:LED流水灯设计

    FPGA零基础学习:LED流水灯设计 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的"傻瓜式"讲解,让电子.信息.通信类专 ...

  9. 物联网系列⑤——基于ESP8266与点灯科技平台的氛围灯设计(接入小爱同学)

    物联网系列⑤--基于ESP8266与点灯科技平台的氛围灯设计(接入小爱同学) 一.设计目标 二.电路设计 三.思路介绍 四.ESP8266代码 一.设计目标 使用点灯科技平台接入物联网,可通过手机点灯 ...

最新文章

  1. mac os10.11上使用proxychains
  2. html+not选择器,CSS3属性选择器与(:not)选择器_html/css_WEB-ITnose
  3. 这些机房布线规范你都知道吗
  4. 【Android】Activity的四种launchMode
  5. pjsua帮助手册(中文)
  6. c 跟r语言运行速度,1. R语言运行效率分析(5)
  7. mysql convertgrp_Mysql中几种sql的常见用法
  8. B22-SVN在iOS开发的使用中遇到的问题
  9. 十字链表存储稀疏矩阵
  10. 一个简单的makefile编写(gcc)
  11. 《统计决策论及贝叶斯分析》
  12. C#中Panel控件和GroupBox控件(未完成)
  13. cad审图软件lisp_CAD审图标记下载_CAD审图标记官方下载_CAD审图标记v4-华军软件园...
  14. 1080驱动此图形驱动程序_如何更新图形驱动程序以获得最佳游戏性能
  15. dubbo源码导入eclipse
  16. 42、我的C#学习笔记8
  17. 本地通过cmd开启一个服务
  18. 用vfloppy安装CDLinux到硬盘,并修改缺省extra路径参数
  19. ubuntu开机没有ens33解决方法
  20. C++中的this关键字

热门文章

  1. NV显卡 终于被我查到了
  2. ati jti jwt 和_JWT jti和kid属性的说明
  3. CSS实现鼠标不可点击,样式设置以及不可点击事件的行为
  4. Jackson 解析j@JsonIgnorePropertiesson数据之忽略解析字段注解
  5. 通达信板块监控指标_通达信板块监测指标公式
  6. P7963 [NOIP2021] 棋局
  7. 【图像语义分割】Large Kernel Maters--Improved Semantic Segmentation by Global ConvNet
  8. 小型直播系统系列-乐聊TV的开发(二)
  9. 黑白棋python代码框架_Python实现黑白棋人机对弈
  10. “音乐床”网页引用本地歌曲最佳途径