1.2.1 System Generator的FPGA开发流
推荐给好友
打印
加入收藏
更新于2008-11-18 19:55:32

System Generator是一款理想的DSP开发软件,它通过建立数字信号处理系统的抽象算法,并将抽象算法转换成可靠的硬件实现,是数字信号处理高层系统设计与Xilinx FPGA实现的“桥梁”,它在MATALB/Simulink的环境下完成算法的建模,然后生成相应的工程。ISE可对工程进行仿真、综合、最后完成算法的硬件化,也可由System Generator直接生成比特流,并下载到FPGA中。
 
上一节中简单介绍了System Generator系统设计的基本概念,本节将详细阐述利用System Generator进行DSP开发的整个过程。首先介绍System Generator的FPGA开发流程,系统建模的注意事项,其次举例说明System Generator的典型应用:Sysgen工程导出、多时钟设计、特殊模块使用等,最后提出了高性能的FPGA设计的注意事项。

1.2.1 System Generator的FPGA开发流程
使用System Generator进行FPGA开发的流程如图1-11所示。
(1)首先使用MATLAB/Simulink进行系统级算法的仿真建模,产生.mdl工程文件。
如1.1.3节样例介绍,设计人员从Simulink库、Xilinx Blockset库中找到算法相关模块,正确连接模块间信号线,正确配置Xilinx Blockset模块的具体参数,点击“Start”仿真工程性能,修改模块属性,直到系统性能满足工程需求,建模过程是整个System Generator设计中最关键的一步,详细介绍请参见1.2.2节。
(2)在“System Generator”图标中选择硬件配置属性。属性在1.1.3节中有详细介绍。
(3)点击“System Generator”图标的“Generate”按钮,进行自动代码生成。
(4)根据(3)选择的目标代码(Netlist、Bitstream、EDK Export Tool、Hardware co-simulation和Timing Analysis等五种代码)进行硬件实现、验证或继续开发。


图1-11 System Generator的FPGA开发流程图


图1-11中,System Generator能产生5中不同的硬件代码,分别是:
① “Netlist”:两种类型的网表文件,HDL Netlist和NGC Netlist,该文件可用于在Project Navigator中进行综合、布局布线等操作,同时如果选中“Testbench”选项,System Generator从Simulink工程中得到测试数据源,并产生测试文件,用户可通过ISE仿真软件或者第三方仿真软件(比如ModelSim)验证HDL代码的正确性。
② “Bitstream”:可直接用于下载到FPGA的比特文件,由System Generator直接产生,不经过Project Navigator,非常方便。
③ “EDK Export Tool”:EDK输出工具用于Xilinx嵌入式开发套件使用,有关该选项的介绍以及EDK的软硬件设计请参见1.3节。
④ “Hardware co-simulation”:硬件协同仿真,Xilinx提供多种默认开发板(比如ML402、ML405等),同时也支持导入其它开发板类型。使用硬件协同仿真能大大加速仿真速度,有关硬件协同仿真的概念、使用方法以及参考样例请参看1.5节。
⑤ “Timing Analysis”:该Simulink工程的时序报告,本章对此不做介绍,有兴趣的读者可参看System Generator参考文件,上面有详细介绍。

可见,不同的编译方式将产生不同的硬件代码,用于不同的开发环境和开发目的,用户根据设计需要进行选择使用,下面介绍这些不同代码文件的基本概念。

1.文件类型
如果选择“HDL Netlist”,产生的文件中HDL、NGC和EDIF用于完成设计,其它文件用于仿真或者综合等,具体文件类型及功能参看表1-1所示(<design>表示当前System Generator工程设计名称)。

 表1-1 HDL Netlist编译文件表

 
如果在“System Generator”图标选中“Testbench”选项,除了上述的文件外,其他文件类型及功能描述如表1-2所示。

表1-2 Testbench编译文件表

 
2.时钟产生模块(clock wrapper)
在“System Generator”图标中,如果选择了“Multirate implementation”选项,则当前工程为多速率系统,产生的<design>.v/<design>.vhd文件中,端口说明中会出现多个时钟和时钟使能对,比如clk1、clk2、ce1、ce2等,所有这些时钟和时钟使能都在<design>_cw.vhd/.v产生。

clock wrapper(_cw)文件一般由两个模块构成,一是功能模块(<design>.v/<design>.vhd),一是时钟驱动模块(<design>_clock_driver.v/<design>_clock_driver.vhd),负责产生时钟和时钟使能信号,具体构造如图1-12所示。


图1-12 clock wrapper结构图


在clock wrapper文件中,时钟驱动模块与功能模块分离。这样做的好处是让<design>更加灵活,可以将功能模块<design>.v/<design>.vhd导入到其它大型设计中,而clock wrapper仅负责产生时钟和时钟使能,如图1-12所示,由系统时钟sysclk通过<design_clock_driver>产生模块所需要的clk1、clk2和ce1、ce2等。

除此之外,System Generator还产生“DCM wrapper”文件(<design>_dw_vhd/_v)。当使用“DCM wrapper”文件时,只需要将<design>_dw_vhd/_v改为<design>_dw.vhd/.v即可。

3.Core Cache
如图1-11所示的System Generator开发流程图,System Generator硬件实现时,需要借助Xilinx CORE Generator(coregen)完成当前设计,但调用coregen的开销很大,所以System Generator cache的作用是保存以前产生过的core,当System Generator调用coregen时,首先查看cache是否存在当前所需的core,如果存在则直接使用。默认情况下,cache的目录在$TEMP/sg_core_cache,并且最多可以存储2000个cores,通过修改环境变量可以改变默认值,如表1-3所示。


表1-3 Core Cache环境变量的修改


 

  下一节>

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.