概述
System generator 安装之后会在Simulin模块库中添加一些Xilinx FPGA专用的模块库,包括Basic Element,Communication,Control Logic,DataTypes,DSP,Math,Memory,Shared Momory,Tool等模块库,只有使用这里的模块才能进行FPGA算法的仿真以及进行综合等等。
使用这些模块就可以简单的选一些模块,连一些线就能自动生成你需要的HDL代码,将开发人员从底层枯燥的代码编写中解脱出来,将更多的精力放在算法上,非常完美的体现了工具为人服务的理念。
最新的ISE14.2即Vavido已经能够使用C和C++生成HDL代码,那个主要是针对Xilinx公司7系列的FPGA,有兴趣的同学可以尝试。另外Matlab2012将HDL coder作为一个独立的工具添加进来,已经能够支持Xilinx和Altera公司的FPGA。
一、System Generator快速入门
从设计流程中可以看出,熟悉Xilinx DSP基本模块库是设计流程中的关键环节,只有掌握了基本模块的特性和功能,才能更好地实现算法。由Xilinx模块库和System Generator一起,可生成Xilinx可编程器件的最优逻辑,这属于最低层的设计模块,地位等效于IP Core,共有90多个。Xilinx模块库简要说明如表7-1所列。
表7-1 System Generator库的简要说明
1.基本单元模块
表7-2 基本单元模块的说明列表
2.通信模块
表7-3 通信模块的说明列表
3.控制逻辑模块
表7-4 控制逻辑模块的说明列表
4.数据类型模块
表7-5 数据类型模块的说明列表
5.DSP模块
表7-6 DSP模块的说明列表
6.数学运算模块
表7-7 数学运算模块的说明列表
7.存储器模块
表7-8 存储器模块的说明列表
8.共享储存器模块
表7-9 共享存储器模块的说明列表
9.工具模块
表7-10 工具模块的说明列表
2.FPGA边界定义模块
图7-10 转换模块示意图
3.System Generator标志
4.建立简易的DSP设计
5)设定系统参数。双击“System Generator”模块,会出现系统设定对话框,如图8-13所示。其中“Compilation”栏选择编译生成对象,包括HDL网表、FPGA配置比特流、NGC网表、EDK导出工具、硬件协仿真类型以及时序分析文件等6种类型,本例选择HDL网表类型,会生成ISE工程以及相应的HDL代码;“Part”栏用于选择芯片型号,本例选择Spartan3E xc4vsx55-12ff1148。“Target”栏用于选择目标文件存放路径,本例使用默认值,则会在mydelay.mdl所在文件夹中自动生成一个netlist的文件夹,用于存放相应的输出文件。综合工具选择XST,HDL语言选择Verilog类型,系统时钟设的周期为100ns,即为10MHz。 “Clock Pin Location”栏的文本框中输入系统时钟输入管脚,则会自动生成管脚约束文件(由于本例只是演示版,所以该项空闲)。此外,可选中“Create testbench”选项,自动生成设计的测试代码。各项参数确认无误后,单击“OK”键,保存参数。
6)设置关键模块参数。双击“Gataway In”、“Gataway Out”模块,会弹出图8-14和图 8-15所示的对话框。Gataway In模块属性可查看输入数据位宽和量化规则。
7)运行测试激励。当参数设置完成后,点击工具栏的“ ”按键,即可运行Simulink仿真,可以看到显示器输出为18,表明设计的功能是正确的。
读者可在相应的文件夹的“netlist sysgen”子目录中打开“nonleaf_results.v”文件,查看相应的代码,如下所示(为了节约篇幅,分栏显示),用户可将其作为子模块直接使用。
二、System Generator中的信号类型
System Generator是面向硬件设计的工具,因此数据类型只能是定点的,而Simulink中的基本数据类型是双精度浮点型,因此Xilinx模块和Simulink模块连接时需要通过边界模块来转换。“Gateway In”模块把浮点数转换成定点数,“Gateway Out”把定点数转换成浮点数。此外,对于Simulink中的连续时间信号,还必须经过“Gateway In”模块的采样转换才能使用。
三、 自动代码生成 2.编译约束文件 约束文件的格式取决于System Generator模块的综合工具:对于XST,其文件为XCF格式;对于Synplify/Synplify Pro,则使用NCF文件格式。 Various.dat文件是System Generator将通过“Gataway In/Out”模块的数据保存下来而形成的,其中经过输入模块的数据是测试激励,而通过输出模块的数据就是期望结果。测试代码只是简单的封装器,将测试激励送进生成的HDL代码,然后对输出结果和期望结果完成比较,给出正确指示。
System Generator能够自动地将设计编译为低级的HDL描述,且编译方式多样,取决于System Generator标志中的设置。为了生成HDL代码,还需要生成一些辅助下载的文件工程文件、约束文件等,和用于验证的测试代码(HDL testbench)。
四、 编译MATLAB设计生成FPGA代码
Xilinx公司提供了两种方法将MATLAB设计.m文件转化为HDL设计,一种就是利用AccelDSP综合器;另一种就是直接利用MCode模块。前者多应用于复杂或高速设计中,常用来完成高层次的IP核开发;而后者使用方便,支持MATLAB语言的有限子集,对实现算术运算、有限状态机和逻辑控制是非常有用的。本节内容以介绍MCode模块为主。
function [lsh3, rsh2] = xlsimpleshift(din)
2.将.m函数添加到下列三个位置之一:
- 模型文件存放的位置;
- 模型目录下名字为private的子文件夹;
- MATLAB路径下。
然后,新建一个System Generator设计,添加MCode模块,双击模块,在弹出页面中,通过Browse按键将.m函数和模型设计关联起来,如图7-18所示。
3.添加边界模块、Sytem Generator模块、正弦波测试激励以及示波器模块构成完整的设计,如图8-19所示。
4.运行仿真,得到的结果如图7-20所示,从中可以看出,设计是正确的,正确实现了.m文件的功能。左图将信号放大了8倍,右图将信号缩小了4倍。
5.自动生成代码,得到的Verilog文件如下所列。
din,
endmodule
五、子系统的建立和使用
System Generator设计经常作为大型HDL设计的一部分,本节就介绍如何使用System Generator来建立子系统模块,以及如何在整个系统中对其进行仿真。
1)NGC网表文件
2)设计规则
在复杂系统中使用子模块时,必须遵循下面两条规则。
4)仿真
(2)在库里添加基本实例模块,如图7-25所示。基本实例模块可以是System Generator中的任意组件。
(3)在库里面添加可配置子系统模版,如图7-26所示。模版可以在Simulink库浏览器中找到,其具体位置为“Simulink/Ports & Subsystems/Configurable Subsystem”。如果有需要,用户可以修改该模版的名字。
(4)保存库文件,然后双击模版模块,会弹出如图7-27所示的属性配置界面。根据实现的需要选中相关模块的检验框。最后单击“OK”再次保存库文件。
2)使用可配置子系统
要在设计中使用可配置子系统,先按照上面的步骤定义子系统,然后打开库,将需要的模版模块拖到设计中合适的位置,这样设计中就有了可配置子系统的实例,如图8-28所示的FIR滤波器模块。
在实例模块上点击右键,然后选择Block Choice选项中的Xilinx DA FIR,将实例作为基础实现模块使用。如图8-29所示。
3)在可配置子模块中添加和删除实例模块
添加和删除子系统是编辑、修改可配置子系统的基本操作,按照下面的步骤可以从可配置子系统中删除实例模块:
(2)生成可配置子模块的硬件电路
在System Generator中,模块可用于仿真和产生硬件。有时对于一个可配置子系统,最佳的方式是其既可以成为仿真基础模块,也可以用来生成硬件电路。例如将可配置子系统在仿真时作为普通的模块来产生仿真结果,在实现时作为黑盒子产生功能电路的HDL代码,就是一种常用方式。System Generator提供了可配置子系统管理模块来达到上述目的,其使用方法如下:
最后,双击管理模块打开其属性配置GUI,选择可配置子系统中生成硬件电路的模块,如图8-33所示。单击“OK”保存子系统和库文件退出即可。
转载于:https://www.cnblogs.com/libing64/archive/2012/11/03/2878726.html
最后
以上就是大意吐司为你收集整理的基于FPGA的图像处理(二)--System Generator入门的全部内容,希望文章能够帮你解决基于FPGA的图像处理(二)--System Generator入门所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复