SOPC硬件系统设计概要

时间:2013-05-28

  摘要:在系统设计复杂度不断提高及新产品市场周期不断缩短的压力下,把FPGA及微处理器内嵌在同一芯片上,构建成为一个可编程的SOC系统体系框架结构,建成所谓的可编程芯片系统SOPC(System on a Programmable Chip),从而为系统设计者提供了又一灵活快捷的设计方法与途径.

  1 SOPC系统简介

  SOPC是一种新的系统设计技术,也是一种新的软硬件综合设计技术.通过它,可以很快地将硬件系统(包括微处理器,存储器,外设以及用户逻辑电路等)和软件设计都放在一个可编程的芯片中,以达到系统的IC设计.这种设计方式,具有开发周期短以及系统可修改等优点.设计完成的SOPC可以转为ASIC芯片,从而可以实现快速量产.一旦定义了处理器之后,设计者就“具备”了体系结构,可以马上开始设计软件原型.CPU周边的专用硬件逻辑可以慢慢地集成进去,在每个阶段软件都能够进行测试,解决遇到的问题.另外,软件组可以对结构方面提出一些建议,改善代码效率和处理器性能,这些软件.硬件权衡可以在硬件设计过程中间完成.

  2 SOPC硬件系统设计流程

  在采用Niosli处理器设计SOPC嵌人式系统时,通常会按照以下的步骤:

  (1)分析系统需求说明,包括功能需求和性能约束等.

  (2)根据分析结果,选择片外外设和片内IP(知识产权核).除此以外,还要对选择的IP和外设进行初步性能评估,以保证能够满足系统需求.

  (3)确定IP和系统参数.

  (4)确定系统互联逻辑,分配FPGA的引脚等.

  (5)结合Nios提供的软件开发包进行软件开发.

  其中硬件系统设计内容可以分成两大部份:

  (1)用SOPC Builder创建Nios系统模块并存人块设计文件(。bdf).

  (2)用Quartus II编程器和ByteBlaster 1I电缆配置Nios开发板上的FPGA.

  SOPC Builder可看作是一个以IP模块为输人,集成系统为输出的工具.SOPC Builder图形用户界面启动时,会自动搜索已安装的IP模块.SOPCBuilder主窗口中的左侧模块池内显示了所有发现的IP模块列表.SOPC Builder通过在一个搜索路径中的所有目录下搜索名为class.pff的文件来获得IP模块列表.SOPC Builder让IP制作者制定有关IP应该如何连接的细节,这样能够减轻用户为每个设计项目重新再设计(或总线结构)的工作量.而且,通过追踪整个系统的配方,就能够使用SOPCBuilder透明地调整相应的系统软件以反映硬件配置的变化.SOPC Builder设计过程有三个主要步骤.

  2.1构件开发

  SOPC Builder的IP模块是由IP开发人员提供的硬件(RTI..原理图或EDIF)和软件(C源代码.头文件等).IP开发者经常会希望拿一个现成的具有微处理器总线接口的逻辑模块,然后转换成SOPCBuilder的IP模块.这需要如下三个主要步骤:

  (1)建立一个名为class.ptf的简单文本文件(通常这个过程可以简化,比如通过复制一个类似IP模块的class.pff文件,然后修改其中的某些参数).

  (2)实现IP模块的所有文件(HDL文件.软件支持文件(。C和。h),等等),连同class.pff文件,放置在同一个目录下.

  (3)将上述的目录及文件复制到SOPC Builder的搜索路径下,设定目录名与该IP模块的正式名称相l司.

  SOPC Builder内包括和安装了一些IP模块,其他一些IP模块可以从Ahera或第三方IP提供商处获得.安装.

  2.2系统集成

  用户创建和编辑一个新的系统时,一般要从库中选择一些IP模块,逐个地配置这些IP模块,以及设置整个系统的配置(如,指定地址映射和主/从端口连接等).在这个过程中,用户的设置都会保存在系统PTF文件中,一般不会有其他文件的产生或修改.

  用户可以在模块池内双击IP模块名.按下Add按钮或从系统菜单中选择Add Module来添加一个IP模块.每添加一个IP模块,一个新的模块行会出现在模块表格内,并有一个临时的模块名.在添加阶段的开始,SOPC Builder会在系统胛F文件中建立一个新的MODULE节,并将class.ptf文件MOD-ULE-DEFAULTS节中的所有内容复制到这个新的MODULE节中.因此,IP模块即使没有Add-Pro-gram程序,也可以通过MODULE-DEFAULTS节提供添加阶段所需的部分或全部信息.例如一个IP模块的数据宽度总是16位,则不需要编写Add-Pro-gram程序,用来在系统PTF文件中设置数据宽度.

  直接设置class.pff文件MODULE-DEFAULTS节中的参数更容易些.此后,SOPC Builder会运行IP模块声明的Add-Program程序,并通知Add-Program程序如何找到新建立的MODUI.E节.SOPC Builder以命令行参数的方式把这个信息传递给Add-Pro-gram程序.Add-Program程序可以修改新MODULE节内的任何节或参数,比如WIZARD-SCRWr-ARGUMENTS和SYSTEM-BUILDER-INFO部分,也可能还有其他部分.

  大部分SOPC Builder的IP模块都提供一个编辑工具,用来在模块添加到系统之后重新改变它的参数.用户双击代表系统中某一模块的那一行,就可以对其编辑了.但如果模块class.pff文件中只有一个空的Edit-Program程序参数,则什么也不会发生.Edit-Program程序也可以通过命令行方式调用,命令行参数与Add-Program程序相同,以便它能找到相应的系统阴F文件和新建立的MODULE节.

  通常,Edit-Program程序和Add-Program程序提供了相同的图形用户界面来配置模块,它们往往就是同一个程序.

  至少一个IP模块添加到系统中后,用户就可以通过SOPC Builder图形用户界面来配置系统了.地址映射表,主/从端口连接,甚至System Generation标签页的选项等等,都会影响系统的布局布线.

  绑定阶段用来提供Add/Edit-Program程序之外的参数设定.绑定阶段在系统配置阶段之后,所以可以重新设定与整个系统模块相关的选项.除非用户返回到前面的阶段,否则模块和它们的互连关系不会改变.绑定阶段所做的选择可能包括:从列表中选择特定类型的模块;选择中断映射;还有一些其他的操作,等等.这些操作不要通过模块的向导来执行,因为用户添加不同模块的顺序可能是不确定的.

  2.3 系统生成

  当用户完成了SOPC Builder中的设计活动之后,按下Generate按钮,或从命令行执行系统生成程序时,系统生成就开始了.系统生成的结果是一系列设计文件。如HDL文件,SDK(software-sup-port)目录和模拟工程文件等等.

  SOPC Builder生成Nios CPU的同时,会生成一个SDK目录.SOPC Builder为每一个CPU生成SDK目录之后,SOPC Builder接下来会逐个地为系统列表中的每一个模块执行相应的生成程序.

  SOPC Builder的IP模块会在class.pff文件中指定自己的生成程序,如果class.pff文件中Generator-Pro-gram参数值为空值(.‘),则SOPC Builder包含的缺省生成程序会执行.缺省生成程序执行一些为创建一个新模块所需的简单合理的操作,使得模块在系统中可以看得到.这些操作在模块class.ptc文件的DEFAULT_GENERATOH节中被参数化.如果某一个IP模块显式地指定Gcnmator-Program参数值为none,则在它的模块生成阶段什么也不会发生(这不影响其他模块的生成).

  模块的生成程序可能会非常简单(如缺省生成程序,仅仅拷贝一些文件),也可能非常复杂.许多SOPC Builder的IP模块的HDL代码实现直接由生成程序来产生,而不是简单从库里拷贝.每一个模块的生成程序以命令行执行时,带有一系列的参数,用来指定系统名称和生成的MODULE节的名称.

  class.ptf文件中有一个特殊的部分名为DE.FAULT-GENERATOR,用来给缺省生成程序设置相应的参数.这个部分仅对缺省生成程序有用.如果Generator_Program参数没有指定缺省生成程序,很显然,这一部分的内容就被忽略掉了.缺省生成程序产生HDL和完成系统综合和布局布线的准备工作等,缺省生成程序主要完成以下三个操作:模块重新命名并封装;拷贝实现文件到工程目录;整理用于综合的某些文件.

  SOPC Builder为系统生成所有实现总线互连逻辑的ttDL代码(VHDL或Veritog).一个完整的系统PTF文件包含有足够的信息,为每一个系统主设备和从设备生成地址解码器.数据选择器.共享从端口的仲裁器.中断逻辑和总线时序逻辑等.

  SOPC Builder把系统顶层模块的定义写入系统HDL文件中.顶层模块的定义包括:系统所有L/O端口的声明.系统中每个模块的实例.包含总线逻辑的仲裁模块的实例.以及各个模块间的互连逻辑.

  SOPC Builder还在系统HDL文件中定义了一个测试模块(一般命名为test-bench).测试模块包含一个系统模块的实例(命名为DUT),还有系统时钟和复位输入的激励源.SOPC Builder还产生一个原理图文件(。bsf),使得系统模块可以在Quaaus的图形编辑方式下使用.

  除了在前面阶段生成的硬件(HDL)文件和软件(SDK)文件,SOPC Builder还会生成一些文件和目录以支持第三方的工具.

  SOPC Builder为快速模拟系统,会生成一个ModelSim工程目录:<system-name>一sim/,并在该目录下生成功能仿真需要的所有文件.

  在工程文件生成阶段,SOPC Builder生成一个<system name>一generation-script文件.这是一个shell脚本。可以从命令行执行,也可以从其他脚本或程序中执行.这个脚本可以在不进入图形用户界面的情况下,重新生成系统.

  2.4 Quartus II软件综合

  SOPC Builder仅仅生成系统模块的HDL描述.

  如果要综合和编译系统,则需要使用Quartus II软件工具.有时IP开发者仅提供综合好的硬件描述,在这种情况下,需要对该IP封装以避免Quartus对其再次综合.IP开发者可以使用缺省生成程序,并通过设置DEFAULT-GENERATOR/black-box参数来实现封装.设置了black-box参数之后,缺省生成程序会自动生成一个封装文件,以黑盒的方式封装这个IP.3结束语

  SOPC Buffder根据用户选择的IP生成相应的HDL描述文件(系统模块文件),这些文件与用户逻辑区域内的设计描述文件一起由Quartus软件综合,然后到FPGA内,这样就构成了系统的硬件基础.

上一篇:基于STM32单片机和EM310的无线终端设计
下一篇:银行CPU卡应用方案

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料