初探NIOS II之hello_world

时间:2022-11-15 00:04:57

平台背景:

操作系统:win7  64bit

开发板:DE2-115

Quartus ii:15.0及配套的NIOS ii开发平台

一、硬件系统的建立

1、在Quartus里新建工程,这是很基本的就不在介绍了

2、新建一个bdf文件并保存,设置为顶层文件

初探NIOS II之hello_world

2、打开Qsys

3、添加NIOS ii process也就是我们的cpu,重命名为cpu,在这里选择f型的,这里不需要设置什么,Vector页要等我们添加好SDRAM、epcs或者是RAM后才可以设置现在是不会有这些选项的,其中Reset Vector Memory是指复位启动时Memory的类型与偏移量;Exception Vector Memory是指异常情况时Memory的类型与偏移量;

初探NIOS II之hello_world

4、从IP库里添加SDRAM Controller用于控制开发板上的SDRAM,当然这里我们也可以用on_chip_memory的RAM来做,不用RAM做的一个重要原因是FPGA上资源有限RAM的容量只能做到很小一般我们如果要编写一些小的程序还是可以用这个来做的。

SDRAM控制器的设置如下图:32bits,4个bank,13Row,10 column其他默认设置即可(这些参数一般根据开发板上的SDRAM的datasheet里的数据得出)Timing设为3,

初探NIOS II之hello_world

5、添加epcs控制器,这个主要是用来控制FLASH的,当我们想要把程序固化在开发板上的时候就需要将程序烧写到FLASH里就要用到epcs控制器,设置均为默认

初探NIOS II之hello_world

6、添加JTAG_UART接口(PC机与开发板进行数据传递用,包括烧写代码,接收发送数据)设置如下:

初探NIOS II之hello_world

7、添加System ID这个是系统的ID标示一般设为0当然也可以自己设置一个数

初探NIOS II之hello_world

8、手动连线,需要连线的主要有:

1)所有器件的时钟、复位接口;

2)非存储类器件的数据总线接口;

3)存储类器件的数据总线接口和指令总线接口;

4)中断接口;

初探NIOS II之hello_world

9、System-àAssign Base Address自动设置各个器件的地址,设置各中断优先级,

双击cpu设置Vector都为SDRAM

保存文件命名为kernel;

设置时钟为100MHZ(这主要是由SDRAM工作的频率所限制)这是系统的工作频率;

点击Generate HDL产生HDL代码,点击finish

10、在之前建立的bdf文件上双击空白处将上面建立的kernel文件添加进来,注意在工程目录的files里把synthesis文件夹里的qip文件添加进来,该文件里包括kernel里所含的IP核的信息不添加的话后面编译时会出错;

11、添加pll的IP核到bdf文件中,pll的输入时钟是50MHZ,速度等级为7,一路next到设置输出时钟处将c0进行2倍频道100MHZ;c1进行2倍频到100MHZ并调整相移位为-65(实际为-63);c0为系统的时钟给kernel,c1为SDRAM的时钟,他们同频不同相至于相位差怎么算还没后面再讨论;

12、点击finish完成PLL的设置添加到bdf文件中连接c0到kernel的clock,c1接一个output接口;

13、选中kernel右击选择Generate pins for symbol ports产生接口,pLL同理;

初探NIOS II之hello_world

14、编译,按照DE2-115引脚关系配置引脚,再编译;

到此硬件系统的搭建就完成了

二、软件系统的搭建

15、按如下所示打开NIOS开发软件

初探NIOS II之hello_world

16、新建NIOS工程,Nios II Application and BSP from templare

初探NIOS II之hello_world

17、将sopc信息文件指向刚刚产生的cpu文件,这样就利用这个sopc文件将软件与硬件连接起来了。

初探NIOS II之hello_world

18、project->Build all

下载文件到FPGA

初探NIOS II之hello_world

19、Run as->Nios II Hardware

初探NIOS II之hello_world

20、refresh connection

初探NIOS II之hello_world

21、点击run,一切工作正常出现下图

初探NIOS II之hello_world