第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx

上传人:b****3 文档编号:3894897 上传时间:2023-05-06 格式:DOCX 页数:49 大小:1.96MB
下载 相关 举报
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第1页
第1页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第2页
第2页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第3页
第3页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第4页
第4页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第5页
第5页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第6页
第6页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第7页
第7页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第8页
第8页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第9页
第9页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第10页
第10页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第11页
第11页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第12页
第12页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第13页
第13页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第14页
第14页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第15页
第15页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第16页
第16页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第17页
第17页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第18页
第18页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第19页
第19页 / 共49页
第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx

《第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx》由会员分享,可在线阅读,更多相关《第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx(49页珍藏版)》请在冰点文库上搜索。

第3章 SOPC开发流程及Quartus II的使用SOPC技术与应用.docx

第3章SOPC开发流程及QuartusII的使用SOPC技术与应用

SOPC设计包括硬件和软件两部分。

硬件设计:

主要基于QuartusII和SOPCBuilder,软件设计:

基于NiosIIIDE。

本章详细讲述了相关内容。

 

第1章SOPC开发流程和开发工具

SOPC设计包括硬件和软件两部分。

硬件设计:

主要基于QuartusII和SOPCBuilder。

软件设计:

基于NiosIIIDE。

流程见图解析:

分析系统需求:

 在进行SOPC开发之前,首先必须确定系统的需求,如应用系统需求的计算性能、需要的带宽和吞吐量、需求的接口类型以及是否需求多线程的软件等。

建立QuartusII工程:

每个开发过程开始时都应建立一个工程,QuartusII是以工程的方式对设计过程进行管理。

在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。

定义和生成系统:

在SOPCBuilder中添加需要的功能模块(NiosII及其标准外设模块),完成后生成一个系统模块。

定制指令&定制外设逻辑:

如果需要,用户可以定制指令和外设逻辑。

(可参考第8章)

自定义的功能模块:

当设计中现有模块不能满足设计要求时,可设计自己的功能模块。

并在顶层模块中使用;

集成SOPC生成的系统到QuartusII工程:

在顶层模块中,分别将SOPCBuilder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中;

连接各功能模块:

然后将各个功能模块用连线连起来组成系统功能原理图。

Altera的LPM模块 :

在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列); 

选择FPGA型号并进行管脚分配 :

为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚; 

进行编译选项设置:

设置编译选项,从而让编译器按照用户设定来进行编译; 

编译硬件系统生成配置文件sof :

编译系统生成硬件系统的配置文件*.sof和*.pof。

编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以及时序分析等步骤。

 

下载配置文件到FPGA器件:

将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。

 

设置软件运行硬件环境属性:

设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。

 

编译软件:

对用户程序进行编译,生成可执行文件*.elf。

ISS运行/调试:

接下来在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。

在目标板上运行/调试软件 :

在目标板上反复调试软件。

使用IDE编程工具 烧写配置文件和软件代码 :

最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash,将可执行文件*.elf编程到Flash中。

 

 

(1)硬件开发 

       用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能; 分配外设地址及中断号;设定复位地址;用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能; 添加用户自己设计的IP模块。

编译QuartusII工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件网表,生成FPGA配置文件(.sof); 

用下载电缆(如ByteBlasterII),将配置文件下载到目标板上。

硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。

 

2)软件开发

       软件开发使用NiosIIIDE,它是一个基于EclipseIDE架构的集成开发环境,它包括:

       GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);

       基于GDB的调试器,包括软件仿真和硬件调试;

       提供用户一个硬件抽象层HAL;

       提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;

       提供帮助用户快速入门的软件模板;

       提供Flash下载支持(FlashProgrmmer和QuartusIIProgrammer) 

       使用SOPCBuilder生成系统后,可以直接使用NiosIIIDE开始设计C/C++应用程序代码。

Altera提供外设驱动程序和硬件抽象层(HAL),使用户能够快速编写与低级硬件细节无关的NiosII程序; 除了应用代码,用户还可以在NiosIIIDE工程中设计和重新使用定制库。

 

 

第2章SOPC硬件开发实例

 

SOPCAlteraAVALON

SOPC硬件开发实例

第一步是要进行需求分析,根据这个要求来建立硬件系统。

电子钟的设计要求:

在液晶屏上显示日期、时间;

可以设置日期、时间;

根据系统要求实现的功能,电子钟的设计要用到的外围器件有:

LCD:

电子钟显示屏幕;

按键:

电子钟设置功能键;

Flash存储器:

存储软、硬件程序;

SRAM存储器:

程序运行时将其导入SRAM。

根据所要用到的外设、要实现的功能以及开发板的配置,在SOPCBuilder中建立系统要添加的模块包括:

NiosIICPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。

使用的开发环境如下:

WinXP操作系统

NiosII6.0嵌入式处理器

QuartusII6.0

基于CycloneII的SOPC开发板

2.2.1创建工程

进行完需求分析之后,进行硬件系统的创建。

首先必须建立一个QuartusII的工程,

步骤如下:

QuartusII6.1(32bit),启动QuartusII软件;QuartusII6.1Altera程序1.开始

NewProjectWizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。

2.选择File菜单

3.进行项目名称的设定、工作目录的选择。

指定工程存放的目录,工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,工程名和顶层实体名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。

4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径,这里我们没有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。

5.用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的参考手册来获取所使用的器件具体型号,可以使用窗口右边的Filters来加快器件的选择,选择完毕点击Next。

6.指定在QuartusII之外的用于,设计输入、综合、仿真、时序分析的第三方EDA工具,QuartusII对第三方工具的支持比较完善。

这里我们不做选择,直接点击Next。

         Settings所见新工程的信息,确认所创建工程的主要信息,点击Finish完成工程的建立,在开发的过程中,还可以通过菜单assignment来对这些配置进行修改。

点击Finish按钮,QuartusII自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。

 

第3节创建NiosII系统模块

创建完成工程之后,需要创建顶层实体。

创建完顶层设计文件之后,使用SOPCBuilder创建NIOSII嵌入式处理器,添加、配置系统的外设IP,组成NiosII系统模块。

NiosII系统模块设计完成之后要加入到该顶层实体中,然后进行其他片上逻辑的开发。

2.3.1创建顶层实体

New;

(1)新建的工程窗口中,选择File

(2)在DeviceDesignFile页中,选择BlockDiagram/SchematicFile,即原理图文件,也可以选择硬件描述语言的文件形式。

单击OK。

(3)出现一个模块编辑窗口。

SaveAs,出现Save(4)选择FileAs对话框,显示的目录为之前设置的工程目录,文件名为之前设置的顶层实体名(由于这是工程的第一个文件,系统会默认为顶层设计实体的名字)。

确定AddtoCurrentProject选项被选中,点击Save文件被保存并被加入到工程中。

 

2.3.2创建NiosII系统模块

       创建NIOSII系统模块需要使用SOPCBuilder,它是QuartusII中的一个工具,使用SOPCBuilder可以创建一个NiosII系统模块,或者创建多主设备SOPC模块。

一个完整NiosII的系统模块包括NiosII处理器和相关的系统外设。

所以创建系统模块的流程是先创建一个系统,然后添加NiosIICPU和外设IP,然后进行相应的设置,最后生成实例,然后将其加入到工程的顶层实体中去。

一、创建系统

SOPCBuilder,出现图2-10的CreateNewSystem对话框。

键入系统的名字,选择硬件描述语言Verilog或者是VHDL。

启动SOPCBuilder,选择Tools

 

 

二、设置系统主频和指定目标FPGA

       在Target栏中的Board部分指定我们这本书使用的核心开发板——CycloneII(EP2C35)。

也可以在Board部分选择Unspecified,然后在DeviceFamily选择CycloneII。

用户需要设置系统的时钟频率,该频率用于计算硬件和软件开发中的定时,比如时钟分频或波特率。

这里我们设成85MHz,还可以选择是否选用流水线。

三、加入NiosIICPU和IP模块

       首先加入NiosII软核,NiosII是软核CPU,共有三种类型的CPU可供选择:

NiosII/e(经济型)、NiosII/s(标准型)和NiosII/f(快速型)。

用户可以根据实际的情况进行选择。

NiosII是一个用户可以自行进行定制的CPU,用户可以增加新的外设、新的指令等。

添加NiosIICPU的步骤如下:

1.AvalonComponents下面选择NiosIIProcessor;

2.点击Add,出现NiosIICPU的配置向导,共有三种类型的CPU可供选择;

       根据需要选择相应的一种NiosII核,我们选择标准型的NiosII核,HardwareMultiply选择none,不选择HardwareDivide点击Next,进入Caches&TightlyCoupledMemories设置窗口;

        设置NiosII的Cache和与CPU直接相连的存储器端口(不通过Avalon总线),选择InstructionCache为4Kbytes,不选中Includetightlycoupledinstructionmasterport(s),点击Next进入AdvancedFeatures设置页面。

        AdvancedFeatures的设置页面是QuartusII6.1版本才有的设置,这里不选择Includecpu_resetrequestandcpu_resettakensignals点击Next进入JTAGDebugModule设置。

       共有4个调试级别可供选择,这里选择Level1即可,该级别支持软件的断点调试。

JTAG调试模块要占用较多的逻辑资源,如果整个系统调试完毕了可以选用NoDebugger以减少系统占用资源点击Next进入自定义指令的设置。

       因为本例不用到任何的自定义指令,这里不作任何的设置,点击Finish完成CPU模块的添加。

 

 

除了NiosIICPU,电子钟设计需要添加的IP模块包括:

Timer

ButtonPIO

LCD控制器

ExternalRAMBus

ExternalFlashBus

ExternalRAMinterface

ExternalFlashInterface

1.添加定时器

定时器和NiosIICPU一样,用户可以对其进行定制。

添加定时器的步骤如下:

(1)在Avaloncomponents下的other库中选择IntervalTimer并单击Add,Avalon_Timer-timer_0的向导窗口出现;

(2)配置定时器,点击Finish,完成定时器的添加。

(3)可以对Timer进行重命名,我们这里取缺省的名字。

2.添加ButtonPIO

(1)在Avaloncomponents下的other下选择PIO,单击Add,出现AvalonPIO-PIO_0的向导;

(2)在BasicSettings页中,设置width=4bits,direction为InputPortsOnly;

(3)在InputOptions页中,在EdgeCaptureRegister下选中SynchronouslyCapture,然后选择EitherEdge;

(4)在Interrupt下选中GenerateIRQ,然后选择Edge;

(5)点击Finish,返回到AlteraSOPCBuilderNIOS2的窗口;

(6)右键单击ModuleName下的pio_0,从菜单选择rename,重命名为button_pio.

3.添加LCD控制器

2,Optrex16027),单击Add;

(1)在图2-11的窗口中的左侧的Avaloncomponents下的display库中选择CharacterLCD(16

(2)ModuleName下出现,lcd_16027_0;

(3)将其重命名lcd_display。

4.添加外部RAM接口

(1)Avaloncomponents下的Memory下面选择CypressCY7C1380CSSRAM,单击Add,出现SSRAM(CypressCY7C1380C)-ext_ssram的向导;

(2)在TimingParameters下面设置ReadLatency为2clocks,在SSRAM下面设置MemorySize为2Mbytes

(3)单击Finish,返回到AlteraSOPCBuilderNIOS2的窗口;

(4)右键单击ModuleName下的ssram_0,从菜单选择rename,重命名为ext-ssram。

5.添加外部闪存接口

(1)在Avaloncomponents下的Memory下面选择FlashMemory(CommonFlashInterface),单击Add,出现外部闪存接口向导;

(2)在Attributes页中,可以在Presets列表中选择相应的闪存的接口,这些闪存的接口都是经过测试的,如果列表中没有,用户可以自己定义闪存的Size和DataWidth;

(3)在timing页中,可以设置闪存的读写时序要求,可以设置Setup,Waite,hold时间等参数,通常保留缺省的设置;

(4)如应用选择的闪存接口不在列表中,需要自己定义Size和DataWidth,和时序要求;

(5)点击Finish,返回到AlteraSOPCBuilderNIOS2的窗口,ModuleName出现cfi_flash_0,对其重命名为ext_flash。

 

6.添加外部RAM总线和外部flash总线(Avalon三态总线桥)

为了使NiosII系统能与开发板上的外部存储器通信,必须在Avalon总线和外部存储器之间加入Avalon三态桥。

步骤如下:

(1)在Bridge下,选择AvalonTri-StateBridge,点击Add,出现AvalonTri-StateBridge–tri_state_bridge_0向导;

(2)Registered选项默认为选中;

(3)单击Finish,返回到AlteraSOPCBuilderNIOS2的窗口;

(4)将其重命名为ext_ssram_bus;

(5)重复前三个步骤,在添加一个Avalon三态总线桥,并重命名为ext_flash_bus.

7.添加JTAGUART

(1)在Avaloncomponents下的Communication下选择JTAGUART,点击ADD,出现添加向导。

(2)按照缺省设置,点击Finish。

(3)将其重命名为JTAG_UART.

8.NiosII系统的连接

       主要是外部RAM接口要和RAM的三态桥连接,外部的Flash接口要和flash的三态桥连接。

所有添加的IP连接都是系统自动完成的,除了上面提到的三态桥和外部存储器的接口的连接之外,其它的连接用户不用修改,但对于三态桥和外部存储器接口的连接,系统的自动连接可能和用户的开发板不匹配,用户需要进行手动的更改。

针对我们所用的开发板的情况进行的设置,因为本书用到的开发板外部的SRAM和外部的Flash没有使用共用的数据线和地址线,所以必须为它们分别添加一个三态桥。

2.3.3分配IP模块的地址和中断号

       在以上添加IP的过程中,SOPCBuilder为各个IP模块分配了一个默认的基地址,用户可以改变这些默认的分配。

如果用户自己分配的地址出现冲突,SOPCBuilder会给出警告,用户可以按照下面的步骤来进行分配和解决地址冲突问题。

下面我们给出一种自定义的地址分配实例,将闪存的基地址设定为0x00000000,步骤如下:

(1)单击Flash外设的Base栏,将地址改为0x0,然后回车,这时SOPCBuilder的消息框中出现错误的提示信息,这是因为闪存的地址和其它的外设地址发生了冲突。

(2)选择Module菜单中的LockBaseAddress操作,一个挂锁的图标出现在闪存基地址的旁边。

(3)选择System菜单中的AutoAssignBaseAddress操作,来解决外设的地址分配冲突问题,SOPCBuilder调整其它外设的地址来避开与闪存地址的冲突,错误提示的消息就会消失了。

(4)用户可以手动修改各个外设的中断号,中断号越低,中断优先级越高,用户也可以采用自动分配中断号,选择System菜单中的AutoAssignIRQs,但SOPCBuilder不处理软件操作,采用自动分配中断的策略不一定是最优的,用户最好是根据自己的应用来确定外设的中断优先级,采用手动的分配。

2.3.4配置NIOSII系统

系统的IP模块添加完成之后,还需要对系统进行配置。

点击NiosIIMore“cpu_0”Settings页,用户可以进行如下的设置:

ResetAddress:

可以选择存放BootLoader的存储器和设置BootLoader在存储器中的偏移,我们这里选择ext_flash,偏移选择默认;

ExceptionAddress:

可以选择存放异常向量表的存放的存储器和设置异常向量表在存储器中的偏移,我们选择ext_ssram,偏移选择默认;

BreakLocation:

如果NIOSII包含有一个JTAGDebug模块,SOPCBuilder会显示这项内容。

其MemoryModule总是JTAGDebugModule,Offset固定为0x20,地址由JTAGdebugmodule基地址决定。

用户不能修改BreakLocation的各个域的内容。

2.3.5生成NIOSII并加入到工程中

        NIOSII系统是工程的一部分,我们首先是生成它,然后加入到工程中去,然后将整个工程下载到FPGA芯片中去。

单击SystemGeneration,在Option下进行如下的设置:

选中HDL,会生成系统模块的硬件语言文件。

选中Simulation,如果安装了ModelSim软件,会生成用于仿真的相应的文件。

单击Generate,SOPCBuilder会提示生成系统的进程,系统生成完成时会提示”SUCCESS:

SYSTEMGENERATIONCOMPLETED”。

单击exit退出SOPCBuilder。

       系统生成完成之后,SOPCBuilder为这个定制的NIOSII系统模块创建了一个符号,要把NiosII系统加入到工程中去,遵循如下的步骤:

(1)在QuartusII软件中,打开顶层实体(BDF格式),在BDF窗口中任意处双击,出现Symbol对话框;

(2)在Symbol对话框中单击Project来展开工程目录,其下出现NIOS2(本例采用的系统名),选中它,右侧出现了系统的符号表示;

(3)单击OK,Symbol对话框关闭,NIOS2的符号轮廓被附着在鼠标的指针上。

(4)BDF窗口中任意空白处单击一下,NIOS2的符号出现在BDF窗口中,这样我们创建的系统已经被加入到工程中了。

2.3.6加入引脚和嵌入式锁相环

除了NIOSII系统之外,可能还要有其它的硬件逻辑,我们这里加入一个嵌入式锁相环,嵌入式锁相环有两个时钟输出,一个输出SSRAM提供时钟,另一个时钟的输出为NIOSIICPU提供时钟,然后添加输入、输出、双向引脚,以实现和FPGA外部的外设进行通信。

加入嵌入式锁相环的步骤如下:

MegaWizardPlug-InManager,出现MegaWizardPlug-InManager向导Page1窗口,点击next

(1)点击Tools

在MegaWizardPlug-InManagerPage2窗口中的IO下面选择ALTPLL,器件选择CycloneII,输出文件类型选择VHDL,文件名为ssram_pll,选中Returntothispageforanothercreateoperation,然后点击Next,出现MegaWizardPlug-InManager-ALTPLL[Page3of9];

在MegaWizardPlug-InManager-ALTPLL[Page4of10]窗口中,不做任何选择,点击next;

在MegaWizardPlug-InManager-ALTPLL[Page5of10]窗口中,单击next;

在MegaWizardPlug-InManager-ALTPLL[Page6of10]窗口中,设置c0输出时钟,首先选中Usethisclock选项,设置时钟频率为85MHz,占空比为50%。

点击Next会进入c1输出时钟的设置;

        嵌入式PLL可提供3个输出时钟,我们使用其中的两个,MegaWizar

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2