嵌入式系统设计学习报告
- 格式: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参数没有指定缺省生成程序,很显然,这一部分的内容就被忽略掉了。
缺省生成程序产生HDL和完成系统综合和布局布线的准备工作等,缺省生成程序主要完成以下三个操作:
• 模块重新命名并封装
• 拷贝实现文件到工程目录
• 整理用于综合的某些文件
(8)总线生成阶段
SOPC Builder 为系统生成所有实现总线互连逻辑的HDL代码(VHDL或Verilog)。一个完整的系统PTF文件包含有足够的信息,为每一个系统主设备和从设备生成地址解码器、数据选择器、共享从端口的仲裁器、中断逻辑和总线时序逻辑等。
SOPC Builder的今后版本,也要求总线互连逻辑的实现必须符合 Avalon 总线规范或AMMB-AHB规范。IP模块的开发者不能根据特殊的总线逻辑实现,但可以根据符合规范的接口来开发IP。图1-5以较高的抽象级显示了一个总线逻辑的内部实现。
系统S有三个主模块 X,Y 和 Z。假定 X 和 Y 都有一个名为 m 的主端口,而 Z有两个主端口,m1和m2。系统中还有三个从模块,A,B和C,每一个都仅有一个从端口s。用户创建完系统后,要配置哪个主模块可以访问哪个从模块。
目前的SOPC Builder版本会在每一个模块的主或从端口处生成一个独立的总线逻辑模块。无论这些模块是否真正包含一个仲裁器,它们都被称为仲裁模块。这个例子中共有7个仲裁模块。这些模块中生成的逻辑都用来保证给相应主/从端口提供信号和协议。
所有实现总线逻辑的HDL代码都写入了系统HDL文件中。系统HDL文件的名称与生成的系统名称相同。例如,用户用VHDL生成的系统名称为fan_control_processor,则所有总线生成逻辑就写入文件fan_control_processor.vhd中。在顶层模块生成阶段,更多的内容会写入系统HDL文件中。在总线生成阶段,系统PTF文件不会有任何改变。
(9)顶层模块生成阶段
在这一阶段,SOPC Builder 把系统顶层模块的定义写入系统 HDL 文件中。顶层模块的定义包括:系统所有I/O端口的声明、系统中每个模块的实例、包含总线逻辑的仲裁模块的实例、以及各个模块间的互连逻辑。
SOPC Builder还在系统HDL文件中定义了一个测试模块(一般命名为
test_bench)。测试模块包含一个系统模块的实例(命名为 DUT),还有系统时钟和复位输入的激励源。SOPCBuilder还产生一个原理图文件(.bsf),使得系统模块可以在 Quartus 的图形编辑方式下使用。
(10)工程文件生成阶段
SOPC Builder为快速模拟系统,会生成一个ModelSim工程目录:
• 与每一个模块 CONTENTS 节内容相应的存储器初始化文件
• 名为
• 一个名为create_
ModelSim命令可以让用户按需要重新创建ModelSim工程文件。此文件很少直接使