第7章 SOPC设计入门Word格式.docx
- 文档编号:18417303
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:43
- 大小:636.43KB
第7章 SOPC设计入门Word格式.docx
《第7章 SOPC设计入门Word格式.docx》由会员分享,可在线阅读,更多相关《第7章 SOPC设计入门Word格式.docx(43页珍藏版)》请在冰豆网上搜索。
●至少包含一个嵌入式处理器内核;
●具有小容量片内高速RAM资源;
●丰富的IP核资源可供选择;
●足够的片上可编程逻辑资源;
●处理器调试接口和FPGA编程接口;
●单芯片、低功耗、微封装。
3.SOPC与FPGA
SOPC一般采用大容量FPGA作为载体,除了在一片FPGA中定制MCU处理器和DSP功能模块外,还可以设计其他逻辑功能模块,实现MCU+DSP+FPGA在一片芯片上集成。
例如,可采用Altera公司的CycloneⅡ、Stratix、StratixⅡ等大容量FPGA实现片上系统。
基于Altera公司的大容量FPGA的SOPC结构图如图7-1所示。
从图7-1可以看到:
SOPC=MCU+DSP+FPGA,SOPC将MCU、DSP和FPGA完美结合,其中NiosII可以采用Altera公司的SOPCBuilder来定制,DSP采用DSPBuilder来定制。
相对于单片机、ARM等,SOPC的应用还不多见;
然而,几年后,甚至更短时间,也许SOPC的身影就像今天的单片机一样随处可见。
因此,掌握SOPC技术必将引导未来嵌入式系统设计的潮流。
Altera2004年推出的NiosII系列嵌入式处理器扩展了目前世界上最流行的软核嵌入式处理器的性能,把NiosII嵌入到Altera的所有FPGA中,例如StratixII、Stratix、Cyclone等系列器件中,用户可以获得超过200DMIPS的性能,用户可以从三种处理器以及超过60个的IP核中选择所需要的,NiosII系统为用户提供了最基本的多功能性,设计师可以以此来创建一个最适合他们需求的嵌入式系统。
图7-1基于Altera公司的大容量FPGA的SOPC结构图
7.1.2NiosⅡ软核SOPC系统及组件
本节在介绍NiosII处理器系统的典型结构的基础上,分别概述NiosII处理器系统的三个组成部分的结构和特点。
“NiosII处理器系统(NiosIIProcessorSystem)”的概念是指,在一个芯片上,它包含一个或多个可配置的NiosII处理器软核、与CPU相连接的是片内外设和存储器与片外存储器和外设相连的接口等。
所有的组件在一个FPGA芯片上实现,所有的NiosII处理器系统使用统一的指令集和编程模型。
NiosII处理器系统的典型结构如图7-2所示。
NiosII处理器系统包括一个或多个NiosII处理器、外围设备和Avalon总线三部分,下面分别进行讨论。
图7-2NiosII处理器系统的典型结构
1.NiosII处理器
NiosII处理器是一种采用流水线技术、单指令流的32位的通用RISC处理器核,其大部分指令都可以在一个时钟周期内完成,它具有提供32位的指令集、数据总线和地址总线;
32个通用寄存器;
32个外部中断源;
高达250DMIPS的性能等。
NiosII处理器是一种软核处理器,即该核未被固化到硅片上,使用时需借助EDA软件对其进行配置并下载到可编程芯片中的IP核,其最大的特点是可以由用户根据需要进行配置。
NiosII处理器有3种类型:
NiosII/e(经济型)、NiosII/s(标准型)和NiosII/f(快速型)。
NiosII/e所占的FPGA资源最少,性能也最低;
NiosII/f所占的资源最多,性能最高;
NiosII/s所占的资源和性能介于两者之间。
用户可以根据应用来选择不同的类型,针对每一种类型,用户还可以进行进一步的配置。
所有这些内核共享32位指令集体系,与二进制代码100%兼容。
使用Altera业内领先的Quartus®
II设计软件中集成的SOPCBuilder工具,可以在系统中轻松加入NiosII处理器。
NiosII处理器的结构图如图7-3所示。
从图7-3可以看到,NiosII处理器体系结构定义了以下功能模块:
寄存器文件(RegisterFile)、算术逻辑单元(ArithmeticLogicUnit)、用户指令逻辑接口(InterfacetoCustomInstructionLogic)、异常控制器(ExceptionController)、中断控制器(InterruptController)、数据总线(DataBus)、指令总线(InstructionBus)、指令和数据缓存(InstructionandDataCacheMemories)、紧耦合的数据和指令存储器接口(TightlyCoupledMemoryInterfacesforInstructionsandData)、JTAG调试模块(JTAGDebugModule)。
上面这些具体功能模块的详解请看:
AlteraCorporation.NiosIIProcessorReferenceHandbook.2006.
图7-3NiosII处理器的结构图
2.外围设备(简称外设)
一个基于Avalon接口的系统会包含很多的功能模块,这些功能模块就是Avalon存储器映射外设,通常简称Avalon外设。
所谓存储器映射外设是指外设和存储器使用相同的总线来寻址,并且CPU使用访问存储器的指令也用来访问I/O设备。
为了能够使用I/O设备,CPU的地址空间必须为I/O设备保留地址。
Avalon外设包括存储器、处理器、UART、PIO、定时器和总线桥等。
还可以有用户自定义的Avalon外设,用户自定义的外设要能称之为Avalon外设,必须要有连接到系统互连结构上。
Avalon外设分为主外设和从外设,能够在Avalon总线上发起总线传输的外设是主外设,一个主外设至少拥有一个连接到系统互连结构上的主端口,主外设也可以拥有从端口,使得该外设可以响应总线上由其他主外设发起的总线传输。
从外设只能。
从外设只能响应Avalon总线传输,而不能发起总线传输,例如存储器设备和UART等从外设,通常只有一个连接到总线上的从端口。
3.Avalon总线规范
Avalon总线规范是Altera公司开发的用于连接处理器与片内/外外设的总线技术,通过Avalon总线的连接,可构成了片上可编程系统。
Avalon总线在SOPCBuilder中添加外设之后会自动生成,并且会随着外设的添加和删除而自动调整,最终的Avalon总线结构是针对外设配置而生成的一个最佳结构。
所以对于用户来说,如果只是使用已经订制好的符合Avalon总线规范的外设的用户来说,开发的外设必须要符合相应的Avalon总线的规范,否则设计的外设无法集成到系统中去。
Avalon总线包括两种总线协议:
AvalonMemory-MappedInterface(简称Avalon-MM)和AvalonStreamingInterface(简称Avalon-ST)。
Avalon-MM是通过地址来读写数据,更多的是用在控制逻辑上面;
2006年才推出的Avalon-ST用于点到点的流数据接口,更多的可以用在高速通过的模块之间。
本节主要讨论Avalon-MM总线协议的相关内容。
Avalon-MM总线具有以下特点:
●简单性,易于理解、使用;
●占用资源少,减少对FPGA片内资源的占用;
●高性能:
该总线在每一个总线时间周期内完成一次数据传输;
●专用的地址总线、数据总线和控制总线:
这样Avalon总线模块和片上逻辑之间的接口得以简化,Avalon外设不奥识别数据周期和地址周期;
●支持高达1024位的数据宽度,Avalon接口任意宽度的数据,可以不是2的偶数方的数据宽度;
●支持同步操作:
所有Avalon外设的接口与Avalon系统互联结构的时钟同步,不需要复杂的握手/应答机制,简化了Avalon接口的时序行为,而且便于集成高速外设。
●支持动态地址对齐,可以处理具有不同数据宽度的外设间的数据传输,Avalon总线的自动地址对齐功能将自动解决数据宽度不匹配的问题,不需要设计者的干预。
●Avalon总线规范是一个开放的标准,用户可以在XX的情况下使用Avalon总线接口来自定义外设。
为了更好地理解Avalon总线的规范,介绍一下系统互连结构和Avalon总线信号。
1)系统互连结构(SystemInterconnectFabric)的是将Avalon-MM的各个外设连接起来组成一个大的片上系统。
基于系统互连结构的Avalon系统结构图如图7-4所示。
图7-4基于系统互连结构的Avalon系统结构图
从图7-4可以得到,系统互连结构是片上系统的主干,是SOPC设计中外设之间通信的主要信道。
该结构是由SOPCBuilder自动生成的,因此系统用户不需要关心总线与外设的具体连接。
对于用户来说,系统互连结构通常被看作连接外设的途径。
系统互连结构是一种可自动调整的结构,随着设计者的不同设计而做出最优的调整。
外设和存储器可以拥有不同的数据宽度,并且这些外设可以工作在不同的时钟频率。
系统互连结构支持多个主外设,允许多个主外设同时与不同的从外设进行通信,增加了系统的带宽。
这些功能的实现是到系统互连结构中的地址译码、信号复用、仲裁、地址对齐等逻辑实现的,这些都是自动生成的,就不介绍其内部的实现了。
有兴趣的可参考:
AlteraCorporation.AvalonMemory-MappedInterfaceSpecification.2006.
2)Avalon端口
Avalon端口是组成一个接口的一组Avalon信号,可分为主端口和从端口。
主端口是
是用于在Avalon总线上发起传输的一组信号;
从端口是用于响应传输请求的一组信号。
Avalon主端口和从端口并不直接进行连接,Avalon端口与系统互连结构连接,系统互连结构负责在Avalon主端口和从端口之间传输信号。
3)Avalon总线信号
Avalon外设可以使用任何信号类型,如地址、数据及片选等,这些都根据外设接口逻辑的需要来定制。
但Avalon端口上的信号和信号类型是一一对应的,Avalon主/从端口的每一个信号必定属于某类的Avalon信号类型。
另外,Avalon外设还可以包含自定义的、面向特定应用的信号。
这些信号与Avalon接口无关,这些信号不直接与系统互连结构相连,只用于连接Avalon系统外的逻辑。
根据端口的属性,可以将Avalon信号类型分为主端口信号或从端口信号。
表7-1列出了组成Avalon接口从端口的常用信号。
表7-1常用Avalon从端口信号
信号类型
宽度
方向
必须
描述
Clk
1
输入
否
Avalon从端口的同步时钟,所有的信号必须与clk同步,异步外设可以忽略clk信号。
Chipselect
Avalon从端口的片选信号,在chipselect信号无效的情况下,Avalon从端口忽略所有其他的信号。
address
1~32
连接系统互连结构和从端口的地址线,指定了从外设地址空间的一个字的地址偏移。
read
从端口的读请求信号,如果从端口不输出数据则不需要;
但若使用这一信号,则readdata或者data也要使用。
Readdata
1~1024
输出
读传输中输出到系统互连结构的数据线。
如果从端口不输出数据则不需要;
但若使用,则read也要使用。
write
从端口的读请求信号,如果从端口不接收数据则不需要;
但若使用这一信号,则writedata也要使用。
writedata
写传输中从系统互连结构输出到从端口的数据线。
如果从端口不接收数据则不需要;
但若使用,则write也要使用。
表7-1中列出的信号类型都是高电平有效,Avalon总线还提供了各个信号类型的低电平有效的版本,在信号类型名后添加_n来表示,如Chipselect_n等。
这对和那些低电平有效的片外逻辑相接口时非常有用。
7.2SOPC的硬件开发环境及硬件开发
与传统的嵌入式系统设计不同,SOPC系统的开发分为硬件和软件开发两个部分。
硬件系统的开发是在SOPCBuilder环境下进行的,SOPCBuilder除了是硬件系统的开发环境外,它还是系统仿真和嵌入式软件开发的起点,它能够生成系统仿真文件和系统对应的软件开发包,从而加速了仿真和软件开发。
软件系统的开发是在NiosⅡIDE环境下进行的,NiosⅡ集成开发环境(IDE)是NiosⅡ系统嵌入式处理器的基本软件开发工具,所有软件开发任务都可以在NiosⅡIDE下完成,包括编辑、编译和调试程序。
本节重点利用SOPCBuilder进行硬件系统的开发。
7.2.1SOPCBuilder简介
SOPCBuilder是集成在QuartusⅡ软件内的专门用来开发SOPC系统的强大工具。
它相对于传统开发方法节省了更多的时间。
SOPCBuilder不仅可以用来创建NiosⅡ处理器系统,还可以用来实现含有处理器或不含处理器的任意SOPC系统设计,它是一个通用SOPC系统开发工具。
SOPCBuilder的主要功能:
1.定义和生成系统硬件
SOPCBuilderGUI(图形用户界面)可以方便的对外设(或称组件)进行配置并添加到系统中,还可以设置它们具体的连接方式。
当添加完系统所需的外设或称组件并设置完毕要的系统参数后,SOPCBuilder将会生成系统互连结构和系统的HDL文件。
具体内容如下:
●系统模块顶层HDL文件和系统中的组件HDL文件。
●用在QuartusⅡBlockDiagramFiles(.bdf)设计文件中的系统顶层文件BlockSymbolFile(.bsf)。
●(任选)嵌入式软件开发的软件文件,如存储器映射的头文件和部件驱动。
●(任选)系统模块和ModelSim仿真工程文件的测试。
2.为软件开发创建存储器映射文件
当系统中包含处理器时,SOPCBuilder会生成一个定义Avalon-MM从外设的基地址的头文件,每个从外设还可以为处理器提供驱动以及相应的库函数等文件。
因此,可以使用SOPCBuilder输出的头文件来进行系统的软件开发。
3.创建仿真模型和测试文件
在SOPCBuilder生成系统后,用户就可以仿真系统。
在系统生成期间,SOPCBuilder为整个系统生成仿真模型和测试文件。
包含以下测试文件:
●初始化SOPCBuilder系统;
●驱动所有时钟和复位信号;
●当片外器件可用时,可以为片外器件生成仿真模型。
7.2.2SOPC的硬件开发
本节使用QuartusⅡ7.2和SOPCBuilder来创建NiosⅡ软核处理器,通过设计范例向读者具体介绍创建NiosⅡ软核处理器的开发过程。
1.QuartusⅡ中创建工程
每个SOPCBuilder系统都是一个以QuartusⅡ工程为前提的。
因此,在运行SOPCBuilder之前,首先在QuartusⅡ中打开或创建一个工程,否则,SOPCBuilder不能用。
QuartusⅡ创建工程的方法的介绍在6.1中介绍。
2.创建NiosⅡ系统模块
使用SOPCBuilder可以创建一个NiosⅡ系统模块,或者创建多主设备的SOPC模块。
一个完整的NiosⅡ系统模块包括NiosⅡ处理器和相关的系统外设。
所以创建系统模块的流程是先创建一个系统,然后添加NiosⅡCPU和外设IP,再进行相应的设置,最后生成实例,然后将其加入到工程的顶层实体中去。
1)创建系统
在QuartusⅡ中使用“Tools”→“SOPCBuilder”启动SOPCBuilder,出现如图7-5所示的“CreateNewSystem”对话框。
输入系统的名字,选择系统实现的语言形式,即硬件描述语言Verilog或者VHDL。
在SOPCBuilder中使用“File”→“NewSystem”来创建一个新的系统。
如果一个工程中集成了多个SOPCBuilder系统模块,必须确定每个系统模块的名字是唯一的,否则将会发生冲突。
每个SOPCBuilder系统对应的是.ptf文件。
简单地可以认为SOPCBuilderGUI是.ptf文件的编辑器。
图7-5“CreateNewSystem”对话框
如我们可以输入系统名为“nios32”,输出文件的语言选择“VHDL”,点击”“OK”按钮后,出现如图7-6所示的SOPCBuilder系统模块设计窗口。
在图7-6的标题栏中可以看到我们设计的是名为“nios32”系统,并显示出该系统所在的文件夹。
图7-6SOPCBuilder系统模块设计窗口
2)设置系统主频和指定目标FPGA
在图7-6所示窗口的右上方,用户需要设置系统的时钟频率,该频率用于计算硬件和软件开发中的定时,这里可以选择默认值50MHz。
在“Target”栏下“DeviceFamily”项列表中选择“Cyclone”系列器件。
3)添加CPU和IP模块
这是设计NiosⅡ系统的核心部分,所设计的基本的SOPC硬件系统包括FPGA、存储器和外设接口三部分。
FPGA部分是建立在FPGA芯片内的,核心是NiosⅡ处理器核,在SOPCBuilder中需要设计的就是FPGA部分。
用一般的嵌入式系统开发不同,在一般的嵌入式系统开发中,当需要新的外设模块时往往需要在CPU外(即PCB)加入相应的外设芯片或者换用更高档次的CPU,而在SOPC设计可以在CPU核外但还在同一个FPGA芯片内加入相应的外设模块核,并通过在片上的Avalon总线与NiosⅡ处理器核相连,因而不需要在PCB这个层面上作很多修改。
存储器部分一般由片上存储器(On-ChipMemory)、外接的Flash、外部SRAM构成。
由于现有的FPGA还不能集成大容量的SRAM和Flash,而SOPC处理的往往是一个比较复杂的系统,对应的代码量较大,需要的数据存储器也较大,因此只能通过外接的方式来解决。
当然如果代码量不大或者选用较大容量的FPGA,则完全不用外接SRAM或Flash,直接使用FPGA上的片内RAM即可。
在某些符合SDRAM接口电平规范的FPGA上,还可以使用SDRAM,通过使用建于FPGA的SDRAM控制器(Altera提供的IpCore)与NiosⅡ处理器核相连,代替SSRAM,可以提供更大的存储容量、更快的访问速度及更高的性价比。
外设接口部分是一些接口器件和电路模块,例如用于输出显示的LED和用于输入的Button等。
(1)添加NiosⅡ处理器核
在图7-6中AlteraSOPCBulider下面选择NiosⅡProcessor。
出现NiosⅡProcessor-cpu的设置向导,如图7-7所示,共有三种类型的CPU可供选择。
根据需要选择相应的一种NiosⅡ核,这里选择标准型的NiosⅡ核,HardwareMultiply选择none,不选择HardwareDivide。
单击Next按钮,出现Caches&
TightlyCoupledMemory设置页面,设置NiosⅡ的Cache和CPU相连的存储器端口;
单击Next按钮进入AdvancedFeatures设置页面;
这里不选择Includecpu_resetrequetandcpu_resettakensignals;
单击Next按钮进入JTAGDebugModule设置,共有4个调试级别可供选择,这里选择Level1即可,该级别支持软件的断点调试。
JTAG调试模块要占用较多的逻辑资源,如果整个系统调试完毕了,可以用NoDebugger以减少系统占用资源,单击Next按钮进入自定义指令的设置;
如果不用到任何自定义指令,这里不作任何的设置,单击Finish按钮完成CPU模块的添加。
添加完成后再元件窗口下出现一个带有JTAG调试接口的NiosⅡCPU内核。
选中他,右键单击,选择rename进行重命名;
选择edit或双击该模块,可以对上面的设置进行修改,稍后添加的的系统外设,都和该处理器核一样,可以重命名和重新设置属性。
图7-7NiosⅡProcessor-cpu的设置向导
(2)加入片内存储器
在组件选择栏中选择“MemoriesandMemoryControllers”→“On-Chip”→“On-ChipMemory(RAMorROM)”,双击进入添加进入片内存储器的对话框,如图7-8所示。
片内存储器除了用作ROM外,也可以用作RAM,甚至可以被设置成双口存储。
数据带宽可以被设置成为8位、16位、32位、…1024位。
在一般情况下,被设置成为32为,以对应32位NiosⅡCPU的32位总线结构。
TotalMemorySize的设置一定要合理,要根据使用的目标器件的型号来决定,如果CycloneⅡEP2C35有105个M4K存储块,此外,设置时还有考虑前面添加的NiosⅡCPU软核所占的M4K存储器数量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 SOPC设计入门 SOPC 设计 入门