淘先锋技术网

首页 1 2 3 4 5 6 7

一、实验要求:

设计一个计算机系统: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 三种工具的了解。由于对环境的不熟悉,各个操作还处于探索阶段,按照要求一步一步做。在做的过程之中遇到很多问题,实验可能有很多不足之处,请大家指正和批评。


sopc入门-Hello from nios II

一、Quartus部分。1、新建工程。 注意,工程名不能和Quartus关键字和宏功能块名字相同,否则会出问题(****istoolarge)。2、启动sopcbuilder,创建一个系统,包含如下组建自动分配地址,配置reset和exception的地址...