文档章节

nios ii最小硬件开发

猪迪
 猪迪
发布于 2014/06/12 22:19
字数 1647
阅读 68
收藏 1

一、实验要求:

设计一个计算机系统:CPU+on_chip_ram+JTAG UART+“hello_world_small”

二、实验内容:

1. 进入quartusII,定义一个新project;

2. 进入sopc builder,建一个新系统,如lx_c:

1)选择一个cpu。其reset vect和exception vect要配置sram后才能确定。

2)配置一个sram。其内容可以初始化或定制。

3)From the System menu, select Auto-Assign Base Addresses.

3. 返回Q2,设计顶层entity:

1)添加lx_c。添加I/O pins。

2)编译。

4. 进入Nios II IDE,定义一个新的c/c++ project。

1)选择“hello_world_small”,指定软件在Q2中刚刚设计的计算机系统上运行。

2)仿真调试:即可进行debug:ISS。

注意:

1. 仅仅设计供仿真调试的系统时,fpga器件可以为auto;无需加PLL(为了使时钟更加稳定);无需“分配管脚”FPGA PIN;无需program和build all!

2. Nios II IDE中应用程序project的System Library Properties的属性很关键,其中设置了应用程序放在哪儿,使用的库,仿真的输出等等。

3. on_chip_memory中有memory init选项,可以定义memory的初始内容。

4. 在软核中要建JTAG UART,如果没有JTAG UART,则仿真时控制台console中不会输出“hello world”。

三、实验步骤

实验环境是Windows8(32位)+Quartus ii 9.0+Nios ii 9.0

1、打开Quartus II软件,选择“File| New Preject Wizard”,新建工程“Hello_world”。点击

Next,选择工程的安装路径,输入工程名,如图所示:

 

点击Next,输入要添加到工程中的设计文件,默认不添加。如图所示:

 

最后点击Finish,完成新工程向导。

2、打开“Tools| SOPC Builder…”进入SOPC Builder。(注意:若没有打开工程,“Tools| SOPC Builder…”不可选。)在“Create New system”对话框中为这个Nios II最小系统命名为“nios_small”

(注意该名称不能与工程名重复),默认“Verilog”硬件描述语言,点击“OK”。如图

 

 

1)点击“OK”,“Device Family”栏选择“CycloneII”,“clk”栏为“50”MHz。

2)添加片内RAM。双击左栏“Component Library”下的“Memories and Memory Controllers|

On-chip| On-Chip Memory(RAM or ROM)”。在“On-chip Memory”对话框中选择“RAM”,“Memory-4-Width”为32位,容量大小“Total Memory Size”为“16”Kbyte,CycloneII器件内部的存储器是有限的,因此不能选择太大。如图所示:

 

3)单击“Finish”完成,右击名称选择“Rename”,改名为“ram_0”。

4)添加NiosII CPU Core。双击左栏“Component Library”下的“Nios II Processor”,Nios II有三种标准:经济型、标准型、全功能型。我们选择经济型,复位向量Reset Vector Memory和异常向量Exception Vector Memory均选择ram_0,两者的偏移量不需要更改。如图所示:

 

然后默认单击“Next”,最后单击“Finish”完成。右击“cpu_0”可以更改名称,这里使用默认名称。

5 ) 添加串口UART 。双击左栏“Component Library” 下的“Interface Protocols| Serial|UART(RS-232 Serial Port)”,波特率为“115200”,无奇偶校验位,8位数据位,1位停止位。如图所示:

 

 

默认单击“Next”,最后单击“Finish”完成,添加到系统中。(注意:软件开发编程时要与这里模块组件名称一致。)最后添加组件完毕,如图所示

 

6)最小系统nios_small所需组件添加完毕,自动分配基地址和中断。分别点击菜单上的“System|Auto-Assign Base Adresses”和“System| Auto-Assign IRQs”。

7)单击“Next”。若要创建仿真工程文件,选择System Generation下的Simulation。本实验默认不选。单击Generate。(注意:完成后不要关闭SOPC Builder。)完成。

3 、在QuartusII 中, 点击“File” , 新建一个“Block Diagram/Schematic File” 顶层设计文件“hello_world.bdf”。如图所示:

 

双击空白处,显示Symbol对话框,点击“Project| nios_small”,然后点击“ok”,将SOPC Builder生成的最小系统nios_small添加到顶层设计文件中。如图所示:

 

4 、管脚分配。需要设置FPGA 没有用到的管脚的状态, 选择Assignments| Device , 弹出Settings-hello_world对话框,单击“Device&Pin Options”弹出该对话框,然后单击Unused Pins,选择“As inputs, tri-stated”,把不用的管脚置三态,否则,FPGA的功耗会比较大,芯片可能有些发烫。

如图所示:

 

单击Configuration,配置如图所示:

 

设置Dual-Purpose,如图所示:

 

点击“OK”,完成设置。

实验箱系统提供了一个完整的FPGA管脚分配文件.qsf。用记事本打开后,只需把该文件中的相应的管脚分配拷贝到hello_world.qsf文件中任意位置即可,勿忘保存文件。同时顶层设计文件中输入和输出管脚的名称也要和提供的.qsf文件中的名称一致,双击输入输出管脚可以更改名称.

分配完管脚后系统如图所示:

 

5、最后编译系统。点击菜单中图标,编译系统,编译完成后,不要关闭Quartus II。

 

6、回到“SOPC Builder”界面。单击系统生成界面上的“NiosII IDE”按钮运行NiosII IDE。

7、进入NiosII IDE界面,关闭Welcome。选择“File| Switch Workspce…”,更改工作区为hello_world存放的文件夹。如图所示:

 

 

新建工程, 选择“File| New| Project” , 在New Project 对话框中选择“Nios II C/C++Application”, 点击“Next”,左栏中选择“Hello World”模板,工程名默认为“hello_world_0”,

SOPC Builder System选择刚生成的最小系统文件“nios_smallNaNf”,cpu为已定制的“cpu_0”,如图所示:

 

 

单击“Next”,对话框中选择“Create a new system library named”,然后单击“Finish”,完成建立工程的过程。

8、系统设置。右击工程名“hello_world_0”,选择“System Libray Properties”,进入系统设置界面。选择“Small C library”,否则应用程序文件太大,“ram_0”空间不够。如图所示,点击“OK”。

 

9、修改代码,加入学号信息:

 

10、选择“Project| Build all”进行编译,输出结果:

 

11、实验结束

四、实验小结

本次实验通过使用 SOPC Builder 定制一个只含“cpu、on_chip_ram、uart”最小 NiosII 系统完成硬件开发。然后使用NiosII IDE 9.0编写应用程序,编译完成软件开发。

在实验中我学习了使用 SOPC Builder 定制最小 NiosII 系统的硬件开发过程,使用 NiosII IDE编写简单应用程序的软件开发过程和用 QuartusII、SOPC Builder、NiosII IDE 三种工具的配合使用的方法,加深了对 QuartusII、SOPC Builder、NiosII IDE 三种工具的了解。由于对环境的不熟悉,各个操作还处于探索阶段,按照要求一步一步做。在做的过程之中遇到很多问题,实验可能有很多不足之处,请大家指正和批评。


© 著作权归作者所有

上一篇: 2014/6/13
猪迪
粉丝 6
博文 134
码字总数 180528
作品 0
海淀
程序员
私信 提问
NIOS2随笔——uCOS-II实时操作系统

1. 概述 本设计采用NIOS2 32位处理器,实现uCOS-II实时操作系统的使用,实现两个任务同时运行,一个LED闪烁,一个串口打印。硬件平台采用ETree的开发板(某宝提供),如下图所示: 2. uCOS-II...

shugenyin
2017/10/03
0
0
小插曲:我和Nios II的故事

想必学习Altera家FPGA的小码农们都会有一个共同的困扰吧,那就是Nios II该不该学的问题。这个问题说白了,就是学Nios II到底有没有用。观点1、无用论,常常会听FPGA群里的某位前辈说道,目前...

qq_39210023
2017/07/16
0
0
QUARTUSII 11.0 中的SOPC中如何更改NIOS II(如增加一个POI)

1 在SOPC中增加了PIO 2 在eclips中的BSP项目中 重新构建BSP( 右键NIOS II -> generate BSP) 3 更改APP代码 4 build project...

SamXIAO
2015/12/30
48
0
语音合成的思路、语音的声学特征、声音采样的一些资料

语音合成:把语音波形文件重现,以一种灵活的方式,只用极少数的基础数据,比如元音辅音的语音参数,那么首先需要研究元音辅音的语音学性质。 先从元音开始,根据相关资料,不同的元音是由相...

FreeBlues
2012/06/24
5.4K
0
nios-spi进阶实验:SPI环路用NIOS处理器生成激励数据发送、接收并验证

实验要求: 本次实验是在上一次spi自环和nios软核练习实验基础上的进阶实验。在nios软核和de0开发板之间建立spi通讯自环,用NIOS处理器生成激励数据(发送),并且用NIOS处理器读取结果数据(...

weixin_41033536
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Eureka应用注册与集群数据同步源码解析

在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() t...

Java学习录
9分钟前
1
0
Java描述设计模式(15):责任链模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景描述 1、请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批当 3<day<=5 天,部门经理审批当 day>5 天...

知了一笑
20分钟前
3
0
总结:数组与链表

1、内存申请:数组在内存上是连续的空间;链表,内存地址上可以是不连续的。 2、查询速度:数组可以随机访问,链表必须顺序访问,即从首个元素开始遍历,逐个查找,所以数组查询很快。 3、写入...

浮躁的码农
28分钟前
3
0
HashMap源码分析

read

V丶zxw
46分钟前
5
0
Python字符串或JSON字符串转字典dict、列表list

有3种方法 1、使用ast模块 >>> import ast>>> s = '["test",1]'>>> ast.literal_eval(s)['test',1]>>> s = '{"test":1}'>>> ast.literal_eval(s){'test': 1} 2、eval函数,这个......

编程老陆
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部