[FPGA]基于Qsys的第一个Nios II系统设计

(2013-12-12 21:50:08)

标签:

fpga

niosii

qsys

helloword

quartusii

分类: 嵌入式

[FPGA]基于Qsys的第一个Nios II系统设计

一、基本说明

1、软件平台:Quartus II 13.0(64-bit)

Nios II 13.0 Software Build Tools for Eclipse

2、硬件平台:Altera Cyclone II EP2C8Q208C8N

二、设计目标

完成FPGA平台上的“Hello Word”实现,实现方式:基于Qsys的Nios II系统设计。

三、具体步骤

1、打开Quartus II 13.0(64-bit),新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 Next> 进入下一步。分别设置工程工作目录、工程名称。这里需要注意的是工程工作目录中请使用英文,不要含有空格等,否则在后面使用Nios II IDE的时候会出现问题。设置好后如图1所示。然后进行下一步。

图 1 设置工程工作目录、工程名称

2、添加已经存在的文件,这里我们没有需要添加的文件,直接单击 Next> 进入下一步。进行器件设置。我们使用的 Cyclone II 家族的 EP2C8Q208C8 芯片,选择好后直接进入下一步。进行EDA工具设置,由于我们工程中不进行仿真等,故不进行设置,如果需要进行ModelSim仿真,则在Simulation行中,选择Tool Name 为ModelSim-Altera(这里根据所安装的ModelSim版本进行选择),Format(s)选择为Verilog HDL(这里也是根据所掌握的硬件描述语言进行选择)。点击 Next> ,进入了Summary(摘要)页面,然后单击 Finish 完成即可。

3、新建 Block Diagram/Schematic File (方块图/原理图文件)。单击 File -> New..,选择Design Files中的Block Diagram/Schematic File,单击OK即可。完成后结果如图2所示。

图 2 新建Block Diagram/Schematic File

4、启动Qsys 工具,进行硬件部分设计。单击 Tools -> Qsys ,进入Qsys设置界面,如图3所示。系统已经默认添加了时钟模块,名称为 clk_0 ,这里我们选中 clk_0,右击,选择Rename,将其名称更改为clk。以下再添加任何模块,我们都进行类似的名称更改,更改名称的方法类似,就不在重复叙述了。

5、添加软核处理器的各部分模块。我们总共需要添加Nios II Processor、On_ChipMemory(RAM or ROM)、JTAG UART、System ID Peripheral这4个模块。首先熟悉一下 Qsys 的界面。左面Component Library,是系统提供的元件库,里面有一些构成处理器的常用模块。右面是已经添加到系统的模块,也就是说,Nios II 软核处理器是可以定制的,根据具体需要来。我们在Component Library中搜索Nios II Processor,双击即可进行配置。首先需要选择的是Nios II 核心的类型。Nios II 软核的核心共分成三种,为e型、s型以及f型。

图 3 Qsys设置界面

e型核占用的资源最少,功能也最简单,速度最慢。s型核占用资源其次,功能和速度较前者都有所提升,f型核的功能最多,速度最快,相应的占用资源也最多,选择的时候根据需求和芯片资源来决定,这里我们选择s核。然后单击 Finish,结束当前配置。

下面添加片内存储器,在元件库中搜索 On Chip Memory。双击进行设置。我们主要设置Size中的Data width和Total memoy size。Data width设置的是数据位宽,这里我们设置成16位。Total memoy size设置的是片内资源的大小,需要根据芯片资源进行合理设置,这里我们设置为10240 bytes。单击 Finish,结束当前配置。

下面添加Jtag下载调试接口。在元件库中搜索 jtag uart。双击进行设置。由于我们的系统没有特殊要求,因此这里我们选择默认配置即可。单击 Finish 结束当前配置。

下面添加系统ID模块。系统ID是系统与其他系统区别的唯一标识。在元件库中搜索 system id peripheral,双击进行设置。这里我们随便进行设置,如设置为1234。单击 Finish,结束当前配置。

下面需要进行的连线,即将右面 Connections栏目中的相关线通过设置节点进行连接。首先所有模块的clk和复位reset需要连接起来。然后片内存储器On-Chip Memory的s1和处理器nios2_qsys的data_master和instruction_master相连。JTAG调试模块jtag_uart的avalon_jtag_slave和处理器nios2_qsys的data_master相连。系统ID模块sysid_qsys的control_slave和处理器nios2_qsys的data_master相连。最后,处理器nios2_qsys的中断和jtag_uart的中断相连接。最终的完成效果如图4所示。

图 4 Qsys Connections完成效果

6、进行软核的相关设置。首先双击nios2_qsys,进入处理器设置模块。在Core Nios II栏目下,将Reset vector memory 和 Exception vector memory 设置为onchip_memory.s1。

7、然后,单击 System -> Assign Base Addresses,这时候我们会发现下部Messages窗口中原先的错误全部没有了,变为0 Errors,0 Warnings。如果不是这个结果,返回去按步骤检查。

8、接着,单击 File -> Save,进行保存,这里我们保存文件名为nios_qsys。

9、最后,选择Generation选项卡,设置Create simulation model为None,然后单击下面的Generate,进行生成。时间较长,大家耐心等待。生成完成后单击close即可,然后关闭Qsys回到Quartus II界面。

10、双击Block1.bdf的空白处,打开Symbol对话框。单击右下角的MegaWizard Plug-In Manager…,进入宏模块调用界面,选择Creat a new custom megafunction variation,单击 Next> 进入下一步,在What name do you want for the output file下面的地址后面添加输出文件的名称,如原来内容为

F:/FPGAandCPLD/Demo/NIOS/HelloWord_nios/,

添加后为F:/FPGAandCPLD/Demo/NIOS/HelloWord_nios/pll_nios  。然后在右侧搜索框中搜索ALTPLL,选中即可,这一步主要为系统添加时钟模块,然后单击 Next>进入下一步。

11、弹出ALTPLL设置对话框,这里我们在 General栏目的What is the frequency of the inclk0 input?地方,将时钟更改为50MHz,然后连续单击 Finish完成操作,这时会弹出一个Quartus II IP Files对话框,单击Yes完成即可,不需要进行任何操作。然后单击Symbol对话框中的OK即可,然后将模块放在Block1.bdf中即可。

12、再次双击打开Symbol对话框,方法同第10步。选择左侧的Libraries -> Project –> nios_qsys,然后单击OK即可,将nios_qsys放置在空白处。

13、再次双击打开Symbol对话框,方法同第10步。在Name中输入input,这时右侧会显示输入信号图标,单击OK完成将其放置在空白处即可。重复此步骤,共添加两个输入到空白处,然后按照同样步骤添加两输入与门(and2)到空白处。

14、将两个输入信号图标更名为sys_clk和reset_n,然后按照图5所示连接摆放好。

图 5 连接图示

15、单击File -> Save,进行文件保存,名称默认即可,如helloword.bdf。

16、单击Assignments –> Pin Planner,添加两个Node Name为sys_clk和reset_n,对应的引脚为28和112。然后关闭Pin Planner对话框即可。

17、单击 Project -> Add/Remove Files in Project…,单击File name后面的浏览按钮,选择.qsys文件,单击Add将其添加进来,然后单击OK。

18、现在进行编译即可。单击Processing -> Start Complilation,进行编译。编译时间过长,大家耐心等待,通过后,将其下载到FPGA中,具体的下载过程,这里就不在追溯,大家可以参考其他资料学习。注意一点:下载后,不要断电,否则下载的东西全部丢失,这是由FPGA特点决定的,大家可以自己了解一下。

硬件部分到此结束,下面进行软件部分设计。

19、打开Nios II 13.0 Software Build Tools for Eclipse,首先,需要进行Workspace Launcher(工作空间)路径的设置,接触过Eclipse的朋友都熟悉,自己设定即可,需要注意的是路径中不要含有空格等,然后单击OK即可。

20、新建工程。单击File -> New -> Nios II Application and BSP from Template,弹出Nios II Application and BSP from Template对话框。先选择对应的SOPC系统,单击SOPC Information File name后面的浏览按钮,选择我们之前硬件部分做好的软核文件,后缀名为.sopcinfo,这里一定要注意,选择的文件一定要对应起来,否则会因为软硬不匹配导致系统失败。我这里选择的nios_qsys.sopcinfo,然后系统会自动读取CPU name,我们不用再进行设置,下面填写Project name,这里我们填

写为helloword,工程模板(Project template)使用默认的即可。然后单击Finish完成即可。这时候会在左侧的Project Explorer中生成两个工程文件,如图6所示。

图 6 生成的工程文件

我们双击打开helloword工程下面的hello_word.c文件,就可以看到c语言代码,我们添加一句printf("Hello word! \n");  然后,右击我们的helloword工程,选择Nios II -> BSP Editor,进入Nios II BSP Editor配置界面。我们主要在main选项卡下hall中进行配置。具体配置内容见图7。然后单击Generate,生成BSP库。生成完成后,单击Exit退出即可。

21、下面我们编译helloword工程。右击选择Build Project。第一次编译的话,时间也会比较常,耐心等待一下。

图 7 Nios II BSP Editor配置

22、编译完成后,右击工程,选择Run As -> Nios II Hardware,弹出Run Configurations对话框,默认Project选项卡中Project name和Project ELF file name应该都是有内容的,没有的选一下。然后进入Target Connection选项卡,Connections中如果没有东西的话,单击右侧的Refresh Connection来查找我们的下载器,查找后我们单击System ID Prroperties…,进行系统ID检测,检查是否是我们之前设置的ID号,无误后点击Apply,然后再点击Run,这是程序会被自动下载,最终在Nios II Console选项卡中会显示下载完成后程序运行的结果,即发回两句话,具体效果如图8所示。

图 8程序运行效果

至此,整个实验结束,恭喜你坚持到最后并成功完成了本次任务,加油,少年!!

fpga新建nios的更多相关文章

  1. 初探NIOS II之hello_world

    平台背景: 操作系统:win7  64bit 开发板:DE2-115 Quartus ii:15.0及配套的NIOS ii开发平台 一.硬件系统的建立 1.在Quartus里新建工程,这是很基本的就不 ...

  2. FPGA技术的发展历史和动向

    本文关键字:fpga技术,fpga发展, fpga培训,FPGA应用开发入门与典型实例 一.FPGA技术的发展历史 纵观数字集成电路的发展历史,经历了从电子管.晶体管.小规模集成电路到大规模以及超大规 ...

  3. Nios内部RAM固化配置

    选择BSP Editor->Settings ->Advanced->hal->linker,然后勾选allow_code_at_reset.当然如果勾选enable_alt_ ...

  4. 《FPGA全程进阶---实战演练》第一章之FPGA介绍

    1 什么是FPGA FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列.FPGA是在PAL.GAL.CPLD等可编程器件的基础上发展起来的新 ...

  5. Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术

    Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术 这里主要是针对EP3C系列FPGA的Nios程序固化到EPCS中的方法做简要说明.硬件 ...

  6. 【小梅哥SOPC学习笔记】Altera SOPC嵌入式系统设计教程

    Altera SOPC嵌入式系统设计教程 第1章 概述 SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出来的一种灵活.高效的SOC解决方案.它 ...

  7. OSD(On Screen Display )技术(转)

    源:OSD(On Screen Display )技术 OSD 是 On Screen Display 的缩写,是应用在 CRT/LCD 显示器上,在显示器的荧幕中产生一些特殊的 字形或图形,让使用者 ...

  8. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  9. 关于怎么将Quartus和Nios程序一起固化到FPGA里面

    系统:win8.1 SDK:Quartus II 14.1 FPGA:Cyclone IV 1.将Quartus生成的.pof文件(配置Flash即可自动生成,这里不讨论),与Nios生成的.elf文 ...

随机推荐

  1. babel简介——简单介绍与实用(转)

    博客讲解内容如下: 1.babel是什么 2.javascript制作规范 3.babel转译器 4.babel的使用 5.常见的几种babel转译器和插件 6.babel最常见配置选项 7.babe ...

  2. IDEA使用一套代码启动多个应用

    在为公司开发一个消息中心,开发过程中需要模拟多个消费者.具体方式: 1.编辑应用配置 2.复制应用配置 3.重命名配置 4.修改端口,-Dserver.port=9991

  3. C/C++题库

    1.下面的代码输出什么?为什么? void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6)?puts(“>6”):puts(“ ...

  4. webpack 自动运行,及打包 img css json 的操作 npm插件的使用方法

    没有指令操作的属性生产环境,有指令操作的属于开发环境 webpack:输入指令后,便会自动开启一个浏览器 需要插件:open-browser-webpack-plugin 生产环境 想使用 node. ...

  5. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_1 Mybatis中编写dao实现类的使用方式-查询列表

    就是自己写实现类的方式来开发 直接finish 把之前写的CRUD的代码复制到过来. 在把之前pom.xml里面的包的依赖也复制过来 复制到当前的pom.xml内 允许自动导入 以上步骤就是复制了一个 ...

  6. Python学习之==>内置函数、列表生成式、三元表达式

    一.内置函数 所谓内置函数就是Python自带的函数 print(all([0,2,3,4])) #判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4])) #判断可迭代的对 ...

  7. 5.1.k8s.ConfigMap

    ConfigMap #ConfigMap用于保存配置数据的键值对,可用来保存单个属性,或配置文件 #ConfigMap创建 #使用yaml文件创建ConfigMap #cm-demo.yaml kin ...

  8. Vue中使用JSX语法

    一 项目结构 二 App组件 <template> <div id="app"> <fruit/> </div> </temp ...

  9. 【FICO系列】SAP ABAP&FI FI/CO接口:待更新的不一致的FI/CO凭证标题数据

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP ABAP&FI ...

  10. swagger 访问格式

    boot工程格式如下 http://10.166.10.169:8085/swagger-ui.html 非boot工程加个自己项目名 http://10.166.10.169:8085/xxx/sw ...