嵌入式系统设计学习报告
- 格式:doc
- 大小:49.50 KB
- 文档页数:5
SOPC系统设计简介
孟伟荣 201222250226
在二十世纪九十年代末,可编程逻辑器件(PLD)的复杂度已经能够在单个可编程器件内实现整个系统,完整的单芯片系统(SOC)概念是指在一个芯片中实现用户定义的系统。在一个SOC设计中,将涵盖到包括微处理器、DSP芯片、存储器件、I/O、控制逻辑、混合信号模块(Mixed-Signal Blocks )等在内的许多部分。
在系统设计复杂度不断的提高及新产品市场周期不断缩短的压力下,把FPGA 及微处理器的核心内嵌在同一芯片上,构建成为一个可编程的SOC系统体系框架结构,建成所谓的可编程芯片系统SOPC(System on a Programmable Chip),从而为系统设计者提供了又一灵活快捷的设计方法与途径。
SOPC是一种新的系统设计技术,也是一种新的软硬件综合设计技术。通过它,可以很快地将硬件系统(包括微处理器,存储器,外设以及用户逻辑电路等)和软件设计都放在一个可编程的芯片中,以达到系统的IC设计。这种设计方式,具有开发周期短以及系统可修改等优点。设计完成的SOPC可以通过HARDCOPY 转为ASIC芯片,从而可以实现快速量产。
SOPC系统设计流程
(1)构件开发阶段
IP开发者经常会希望拿一个现成的具有微处理器总线接口的逻辑模块,然后转换成SOPC Builder的IP模块。这需要如下的三个主要步骤:
1. 建立一个名为class.ptf的简单文本文件(通常这个过程可以简化,比如通过复制一个类似IP模块的class.ptf文件,然后修改其中的某些参数)。
2. 实现IP模块的所有文件(HDL文件、软件
支持文件(.c 和.h),等等),连同 class.ptf文件,放置在同一个目录下。
3. 将上述的目录及文件复制到SOPC Builder的搜索路径下,设定目录名与该IP模块的正式名称相同。
商业的IP核,上面的步骤可以通过传统的软件安装程序(如:InstallShield)来完成。
(2) 添加阶段
用户可以在模块池内双击 IP 模块名、按下 Add 按钮或从系统菜单中选择Add Module,来添加一个IP模块。每添加一个 IP 模块,一个新的模块行会出现在模块表格内,并有一个临时的模块名。
在添加阶段的开始,SOPC Builder会在系统PTF文件中建立一个新的MODULE 节,并将class.ptf文件MODULE_DEFAULTS节中的所有内容复制到这个新的MODULE节中。因此,IP模块即使没有Add_Program程序,也可以通过MODULE_DEFAULTS 节提供添加阶段所需的部分或全部信息。例如一个IP模块的数据宽度总是16位,则不需要编写Add_Program程序,用来在系统PTF文件中设置数据宽度。直接设置class.ptf文件MODULE_DEFAULTS节中的参数更容易些。
此后,SOPC Builder会运行IP模块声明的Add_Program程序,并通知Add_Program程序如何找到新建立的MODULE节。SOPC Builder以命令行参数的方式把这个信息传递给Add_Program程序。
Add_Program程序可以修改新MODULE节内的任何节或参数,比如WIZARD_SCRIPT_ARGUMENTS和SYSTEM_BUILDER_INFO部分,也可能还有其他部分。(3)编辑阶段
模块很可能在添加阶段只配置一次,然后不再修改了。但大部分 SOPC
Builder 的 IP 模块都提供一个编辑工具,用来在模块添加到系统之后重新改变它的参数。用户双击代表系统中某一模块的那一行,就可以对其编辑了。但如果模块class.ptf文件中只有一个空的Edit_Program程序参数,则什么也不会发生。
Edit_Program程序也可以通过命令行方式调用,命令行参数与 Add_Program 程序相同,以便它能找到相应的系统PTF文件和新建立的MODULE节。通常,Edit_Program程序和Add_Program程序提供了相同的图形用户界面来配置模块,它们往往就是同一个程序。
和Add_Program程序一样,Edit_Program程序也可能会修改新MODULE节内的任何节或参数,比如有WIZARD_SCRIPT_ARGUMENTS 和 SYSTEM_BUILDER_INFO 部分,也可能还有其他部分。
(4)系统配置阶段
至少一个 IP 模块添加到系统中后,用户就可以通过 SOPC Builder 图形用户界面来配置系统了。地址映射表,主/从端口连接,甚至 System Generation 标签页的选项等等,都会影响系统的布局布线。
(5)绑定阶段
绑定阶段用来提供Add/Edit_Program程序之外的参数设定。绑定阶段在系统配置阶段之后,所以可以重新设定与整个系统模块相关的选项。除非用户返回到前面的阶段,否则模块和它们的互连关系不会改变。
绑定阶段所做的选择可能包括:从列表中选择特定类型的模块;选择中断映射;还有一些其他的操作,等等。这些操作最好不要通过模块的向导来执行,因为用户添加不同模块的顺序可能是不确定的。
(6)SDK生成阶段
SOPC Builder生成Nios CPU的同时,会生成一个SDK目录。SOPC Builder 为每一个CPU 创建SDK目录的步骤可以简短地总结如下,这个过程由名为mk_custom_sdk 的脚本来完成.
(7)模块生成阶段
每一个CPU的SDK目录生成之后,SOPC Builder接下来会逐个地为系统列表中的每一个模块执行相应的生成程序。
SOPC Builder的IP模块会在 class.ptf 文件中指定自己的生成程序,如果class.ptf 文件中Generator_Program参数值为空值(“”),则 SOPC Builder 包含的缺省生成程序会执行。缺省生成程序执行一些为创建一个新模块所需的简单合理的操作,使得模块在系统中可以看得到。这些操作在模块class.ptf文件的 DEFAULT_GENERATOR 节中被参数化。
如果某一个 IP 模块显式地指定 Generator_Program 参数值为 none,则在它的模块生成阶段什么也不会发生(这不影响其他模块的生成)。
模块的生成程序可能会非常简单(如缺省生成程序,仅仅拷贝一些文件),也可能非常复杂。许多SOPC Builder的IP模块的HDL代码实现直接由生成程序来产生,而不是简单从库里拷贝。
每一个模块的生成程序以命令行执行时,带有一系列的参数,用来指定系统名称和生成的MODULE节的名称。
class.ptf文件中有一个特殊的部分名为DEFAULT_GENERATOR,用来给缺省生成程序设置相应的参数。这个部分仅对缺省生成程序有用。如果Generator_Program参数没有指定缺省生成程序,很显然,这一部分的内容就被