NIOS II 创建示例设计_Quartus II 9.0

安装设计文件

在继续之前,您必须安装 Quartus II 软件和 Nios II 嵌入式设计套件。

 

分析系统要求

本部分介绍的教程示例设计的系统要求。设计的目标如下:

有关这些和其他组件,完整详细信息请参阅___<<NIOS II 外围设备>>。

 

启动 Quartus II 软件并新建设计项目

在设计之前,应该建立工作目录。每个设计都是一项工程,一般都单独建一个工作目录。

在此设置的工作目录为E:\sopc_project\led

1.启动 Quartus II 软件。

在 Windows 计算机上,单击<开始>,指向<程序>,Altera,Quartus II 9.0,然后单击 Quartus II 9.0。

2.启动New Project Wizard

选择File→New Project Wizard,弹出如图1所示对话框。单击该对话框最上一栏右侧的按钮“…”,设置当前工作目录。在第二栏设置当前工程名字,一般将顶层文件的名字作为工程名,例如工程名为sopc_led。第三栏是顶层文件的实体名。

clip_image001

3.把设计文件添加到工程中

单击Next按钮,弹出Add File对话框,如图2所示。在此可将有关的文件加入到工程中,选择默认即可。

clip_image002

4.选择目标器件

单击Next按钮,出现选择目标器件对话框,如图3所示。在Family选项中选择Cyclone II器件系列,并在Target device中选择第二项

在可选的设备列表中指定目标器件。可以通过右边的Filters“过滤”选择。在此选择EP2C35F484C8器件。用户可以根据自己开发板的情况进行不同的设置。

clip_image003

5.选择综合器和仿真器

单击Next按钮,则弹出选择仿真器和综合器的对话框EDA Tool Settings,如图4所示。如果选择默认的None,则表示选择Quartus II自带的仿真器和综合器。也可以选择其他第三方综合器和仿真器等专业EDA工具。

clip_image004

(5)、结束设置

单击Next按钮,出现工程设置信息显示画面,如图5所示,对前面设置情况进行了汇总。点击Finish按钮,即完成了当前工程的创建。在工程管理窗口中出现当前工程的层次结构显示,如图6所示。

clip_image006

clip_image008

创建一个新的 SOPC Builder系统

您可以使用 SOPC Builder来生成 Nios II 处理器的系统,添加所需的组件,并配置它们如何连接在一起。请执行以下步骤来创建一个新的 SOPC Builder系统:

1.在 Quartus II 软件中的工具菜单上单击 SOPC Builder。

SOPC Builder将启动并显示创建新的系统对话框。

2.键入 std_2c35 作为该系统的名称。

3.选择 Verilog 或 VHDL 作为目标硬件描述语言。以后当您生成的系统,SOPC Builder将输出中您选择的语言的设计文件。

4.单击确定。SOPC Builder GUI 将出现,显示系统目录选项卡。

如下图:SOPC Builder图形用户界面

clip_image010

使用SOPC Builder创建Nios II系统模块

可以使用 SOPC Builder来定义硬件特性的 Nios II 系统,例如,哪些 Nios II 核心要使用,以及哪些组件,包括在系统中。SOPC Builder并不定义软件行为,如在内存中存储的指令或发送 stderr 字符流的位置在哪里。

在本节中,您将执行以下步骤:

1.指定目标 FPGA 和时钟设置。

2.添加 Nios II CPU、 内存和其他组件。

3.指定基址和中断请求 (IRQ) 的优先事项。

4.生成 SOPC Builder系统。

SOPC Builder设计过程不需要是线性的。在本教程中的设计步骤为新用户了解的最简单的顺序显示。但是,您可以按不同的顺序来执行 SOPC Builder设计步骤。

指定目标 FPGA 和时钟设置

系统内容选项卡的目标和时钟设置部分指定系统中的 SOPC Builder系统关系到其他设备。请执行以下步骤:

1.选择匹配您的目标的 Altera FPGA 的设备系列。

在这里选择器件系列Device Family是cyclone II。

2. 系统的工作的外部时钟频率改为100 Mhz(双击它即可修改)。

clip_image012

添加Nios II CPU Core

选择SOPC Builder组件选择栏中的Component Library→Nios II Processor,双击或者单击下面的“ADD”,打开添加Nios II Processor对话框,如图10所示。

clip_image014

这里给我们提供了三种类型:

Nios II/e占用资源最少600-800LEs,功能也最简单,速度最慢。

Nios II/s占资源比前者多一些,功能也多了,速度也要快一些。

Nios II/f占资源最多,功能也最多,速度最快。

选择的时候要根据你的需求和你的芯片资源来决定。在这里,我选择Nios II/f,功能和速度都可以得到满足。

下面的:

Reset Vector是复位后启动时的Memory类型和偏移量,

Exception Vector是异常情况时的Memory类型和偏移量。

现在还不能配置,需要SDRAM和FLASH设置好以后才能修改这里,这两个地方很重要。

点击Next,如下11所示,将Data master→Data Cache处选择为None,也就是关闭Data Cache。

clip_image016

接下来连续点击Next,一直到如图12为止。

clip_image018

这是设置JTAG Debug Module,即JTAG调试时所用到的功能模块。功能越多,需要的资源越多。这里我们选择Level 1即可,不需要过多其他的功能。点击Finish,结束Nios II Processor的建立后,如图13所示。

clip_image020

添加SDRAM模块

选择SOPC Builder组件选择栏中的system content→memories and memory controllers→SDRAM→SDRAM controller,双击或者单击下面的“ADD”,打开SDRAM controller的对话框。如图14所示。

clip_image022

在Presets中选择第一项Custom。

在data width中选择16.在Architecture中的chip select: 2 ,bank : 4。

在Address widths中的row: 13,column:9。

如图15所示。

clip_image023

点击Next,点击Finish,完成SDRAM控制器的设置。在这里我们用的SDRAM是两片HY57V561620。

添加EPCS控制器

选择SOPC Builder组件选择栏中的system content→memories and memory controllers→Flash→EPCS serial Flash。双击或者单击下面的“ADD”,打开EPCS serial flash controller的对话框。如图16所示。

clip_image025

直接点击Finish完成添加。

添加JTAG UART

选择SOPC Builder组件选择栏中的system content→Interface protocols→serial→JTAG UART。双击或者单击下面的“ADD”,打开JTAG UART的对话框。如图18所示。

clip_image026

直接点击Next→Finish完成。

添加systen ID模块

选择SOPC Builder组件选择栏中的system content→peripherals→Debug and performance system ID peripheral。双击或者单击下面的“ADD”,打开system ID peripheral的对话框。如图17所示。

clip_image027

点击Finish,完成System ID的建立。

添加PIO模块

选择SOPC Builder组件选择栏中的system content→peripherals→microcontroller peripherals→PIO。双击或者单击下面的“ADD”,打开PIO的对话框,配置成4位输出。如图19所示。

clip_image028

点击Next→Finish完成。

到此为止,基本的NIOS系统模块就建立完成了,如图20所示。

clip_image030

如上图所示,我们可以把各个模块的名称的后面的_0去掉,单击要修改的名字ctrl+r或右键选Rename,输入新名字即可。如21图所示.

clip_image032

指定基址和中断请求 (IRQ) 的优先事项。

我们需要对FLASH地址进行锁定,复位重启的地址我们锁定为0x00000000,双击cfi_flash_controller的base地址修改,修改完成后再点击它前面的小锁,使其锁住。表示地址已锁定,如图23所示。

clip_image034

接下来是地址自动分配操作,点击SYSTEM->Auto-assign Basic Addresses,如图24所示。

clip_image036

接下来是中断的自动分配,和地址自动分配一样,SYSTEM-> Auto-assign IRQs,如图25所示。也可以手动分配。

clip_image038

接下来我们需要对cpu进行设置,双击cpu,Reset Vector处的Memeory选择cfi_flash_controller,Exceptioni Vector选择sdram,其他不变,如图22所示.

clip_image040

点击Finish,完成cpu设置。

生成 SOPC Builder系统

生成Nios II系统,单击system Generation标签,在options下进行如图26所示的设置。

clip_image042

点击Generate。开始生成Nios II系统。需要等待一会儿。知道出现info:system generation was successful,如图27所示。表示已经编译好,点击Exit,回到了Quartus界面。

clip_image044

 

集成Nios II系统到Quartus II 项目

在本节中,您执行以下步骤来完成的硬件设计:

■实例中,Quartus II SOPC Builder系统模块化项目。

■分配 FPGA 针脚。

■编译 Quartus II 项目。

■验证时间。

 

配置工程

我们要对工程配置一下了,在左侧边框栏右键点击,如图47所示。

clip_image045

点击setting后,如图48所示,点击Device and Pin Options。

clip_image047

点击后如图49所示,点击Configuration。

clip_image049

点击后,将use configuration device改为EPCS16,如图50所示。

clip_image050

实例化 SOPC Builder系统模块 Quartus II 项目中

首先创建一个顶层文件,在Quartus II 窗口中选择File→New,打开如图28所示的窗口,选择block Diagram/schematic File,即建立原理图文件。

clip_image052

点击File→save As…保存为sopc_led.bdf,如图29所示。

clip_image054

在sopc_led.bdf中的空白处双击,即可弹出symbol窗口。选择project→std_2c35,如图30所示。点击OK,将系统模块添加到了顶层模块中。如图31所示。

clip_image056

clip_image058

建立锁相环PLL模块。

接下来的工作我们需要建立一个锁相环,对时钟进行倍频,我们板子上是50MHz的有源晶振,我们要将其倍频到100MHz满足我们前面所设定的NOIS软核的时钟,还需要为SDRAM提供100MHz的时钟。下面我们就开始锁相环PLL模块。在sopc_led.bdf的空白处双击鼠标,点击megawizard plug-in manager…如图32所示。

clip_image060

出现如图33 点击Next

clip_image061

选中IO下的ALTPLL,将锁相环命名为PLL,如图34所示。

clip_image063

点击下一步,将General 的速度设置为8,输入时钟为50Mhz,如图35所示。

clip_image065

设置好以后,点击Next,将下图中选中的地方去掉后。如图36所示。

clip_image067

连续点击Next,直到出现C0输出频率的设置,将倍频设置为2,输出100Mhz时钟,如图37所示。

clip_image069

设置好以后点击Next,选中USE this clock,使用这部分给SDRAM提供时钟,时钟频率为100Mhz,偏移量为-75deg。如图38所示。

clip_image071

设置好以后,连续点击Next,中间没有需要修改的,最后点击Finish,完成PLL的建立,然后点击OK,回到Quartus界面,将我们建好的PLL放到空白处。

接下来的工作就是将PLL连接到NIOS软核上。如图39所示。

clip_image073

分配 FPGA 的针脚

PLL和std_3c25上点击右键后点击Generate Pins for symbol ports,这一步作用就是生成管脚,通过命名以后分配真实的引脚。如图40所示。

clip_image074

生成引脚后,如图41所示。

clip_image076

修改引脚的名称,使其具有意义,与脚本文件中的引脚命名相对应,修改完成后如图42所示。

clip_image078

脚本文件分配管脚

先将脚本文件复制到工程文件下面如图43所示。

clip_image080

我们将会提供给大家写好的TCL文件,到时候大家根据我给大家的TCL文件,将相应的管脚命名即可。修改好以后,按图44所示操作。

clip_image081

点击以后,出现45图,我们选择第一个EP2C35F484C8.tcl。点击RUN。

clip_image082

出现如图46图,说明脚本文件运行成功了。

clip_image084

编译 Quartus II 项目

点击Start Compilation如图52所示的按钮,开始编译。接下来就开始了又一个漫长的编译过程了,大家又可以休息一会了。

clip_image086

经过了漫长的编译过程,如果没有问题,编译成功后将出现如图52所示的对话框。

clip_image088

点击确定,编译过程全部结束。我们可以通过编译报告来看看我们用了多少资源,如图53所示。

clip_image090

下载到目标 FPGA 的硬件设计

1. 打开编程窗口和配置文件

在Quartus II 中直接点击Programmer或选择主菜单Tools—>Programmer,打开编程窗口,如下图所示,在Mode下拉列表框中有4种编程模式可以选择:JTAG、Active Serial 、Passive Serial和In-Socket。为了直接对FPGA进行配置,选择JTAG模式,并选中下载文件右侧的第一个小方框Program/Configure,注意核对下载文件的路径与文件名。如果此文件没有出现或者有错,可以单击左侧Add File 按钮,手动配置所需下载的文件是sopc_led.sof。

clip_image092

2. 设置编程器

在配置好下载文件sopc_led.sof后,要进行编程器设置。如果是首次使用Programmer进行连接下载,则须将试验系统与USB通信电缆连接好并打开电源。这时,系统提示用户安装USB-Blaster的驱动程序,用户须指定驱动程序存放的路径,然后进行安装。安装成功后,在编程窗口中Hardware Setup按钮的右边显示出USB-Blaster编程方式。以后再打开编程窗口时,只要USB电缆连接好,电源打开,系统就会自动设置成USB-Blaster编程方式。

3. 下载配置文件

单击编程窗口左侧的Start按钮,编程器开始把配置数据下载到FPGA中。这时,在下载进度条Progress段会显示下载数据的百分比,如下图。当下载完成时,会在信息窗口出现下载成功的消息。

clip_image094

 

 

使用 Nios II IDE 的软件开发

创建新的 Nios II C/c + + 应用程序项目

1.启动 IDE Nios II。在 Windows 计算机上,单击开始,指向程序,Altera、 Nios II EDS 9.0,然后单击 Nios II IDE 9.0。

2.在Nios II IDE中,选择FileàNewàProject,开启新项目对话框,选择Altera Nios IIàC/C++ Application,如下图:

clip_image095

3.单击Next按钮,进行新项目的设定。在这个步骤中提示用户指定新项目名、项目工作路径、目标硬件及新项目模板。在此选择项目模板为Hello World,设定项目名为Hello_led,设定工作路径为D:\sopc_project\led\software,单击SOPC Builder System右边的Browse按钮,选择前面生成的ptf文件,因为Nios II IDE需要从这个文件中获取该系统的相关信息。如下图所示:

clip_image097

4.然后单击Next按钮,进入下一步,为项目创建系统库。系统库是设备驱动程序集,提供对目标硬件的访问,如下图所示:

clip_image099

5.这样,整个新项目创建完成了,单击Finish按钮,出现下图:

clip_image101

修改源程序文件

修改程序的文件名。如下图所示,选中Hello_World,右键选择Rename。键入hello_led.c。

clip_image103

修改程序,双击helllo_led.c。编辑它,如图所示:

clip_image105

编译项目

1.右键单击 hello_led,然后单击System Library Properties。如下图:

clip_image107

2.单击System Library。

3.更改以下设置以减少编译的可执行文件的大小。如下图:

clip_image109

a.开启程序从不退出。

b.关闭支持 c + +。

c.关闭清洁退出 (刷新缓冲区)。

d.打开小 C 库。

4.单击确定以关闭属性对话框并返回到 IDE工作台。

5.单击ProjectàBuild All或按ctrl+B键,对项目进行编译。如下图:

clip_image110

编译进度:

clip_image112

编译完成:

clip_image114

运行程序

在项目编译调试之后,就可以运行程序了。运行方式有:Nios II Hardware、Nios II Instruction Set Simulator,分别是目标板运行、指令集仿真器运行。

运行程序的方法可以有如下几种:

选择RunàRun As,这种方式比较简单、快捷。

选择RunàRun…,此运行方式可进行一些具体的设置。

使用工具栏中运行图标clip_image115也可以运行程序。

在此,选择RunàRun…,出现如下图所示的窗口。

clip_image117

根据需求选择采用的目标连接,在此选择Nios II Hardware,然后右键单击New按钮,添加要运行的项目,如下图所示。

clip_image119

如上图所示的右侧包含5个标签,可以根据要求进行相关的设定。其中Main标签显示运行工程的名称,最下方复选框Validate Nios II system ID before software download 为选择在软件下载前是否验证Nios II系统ID,默认情况为选中,即验证系统ID;Target Connection标签用于建立目标连接,选择JTAG电缆、JTAG设备及Nios II 终端通信设备;Debugger标签用于调试配置。

设置完成后,单击Run按钮,则在控制台上显示运行结果“Hello_LED!”,如下图所示,同时在开发板上显示跑马灯,运行成功。

clip_image121

当然,如果用户没有开发板,则可以采用指令集仿真运行。使用指令集仿真运行,可以选择RunàRun AsàNios II ISS运行工程,同样出现“Hello_LED”运行结果如下图所示。

clip_image123

原文地址:https://www.cnblogs.com/CXATG/p/2982819.html