SystemGenerator的DSP系统设计精Word文档格式.docx

上传人:b****2 文档编号:4790284 上传时间:2023-05-04 格式:DOCX 页数:23 大小:522.14KB
下载 相关 举报
SystemGenerator的DSP系统设计精Word文档格式.docx_第1页
第1页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第2页
第2页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第3页
第3页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第4页
第4页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第5页
第5页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第6页
第6页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第7页
第7页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第8页
第8页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第9页
第9页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第10页
第10页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第11页
第11页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第12页
第12页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第13页
第13页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第14页
第14页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第15页
第15页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第16页
第16页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第17页
第17页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第18页
第18页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第19页
第19页 / 共23页
SystemGenerator的DSP系统设计精Word文档格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SystemGenerator的DSP系统设计精Word文档格式.docx

《SystemGenerator的DSP系统设计精Word文档格式.docx》由会员分享,可在线阅读,更多相关《SystemGenerator的DSP系统设计精Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。

SystemGenerator的DSP系统设计精Word文档格式.docx

3.控制逻辑模块

控制逻辑主要包括了用于创建各种控制逻辑和状态机的资源,包括了逻辑表达式模块、软核控制器、复用器以及存储器,其简要说明如表8-4所列。

表7-4控制逻辑模块的说明列表

4.数据类型模块

数据类型模块主要用于信号的数据类型转换,包括移位、量化、并/串、串/并转换以及精度调整模块,其简要说明如表8-5所列。

表7-5数据类型模块的说明列表

5.DSP模块

DSP模块是SystemGenerator的核心,该库包含了所有常用的DSP模块,其简要说明如表8-6所列。

表7-6DSP模块的说明列表

6.数学运算模块

数学运算是任何程序所不可避免的,Xilinx提供了丰富的数学运算库,包括基本四则运算、三角运算以及矩阵运算等,其简要说明如表8-7所列。

表7-7数学运算模块的说明列表

7.存储器模块

该库包含了所有Xilinx存储器的LogicCore,其简要说明如表7-8所列。

表7-8存储器模块的说明列表

8.共享储存器模块

共享存储器模块主要用于共享存储器操作,相关内容将在7.4.3节展开讨论。

表7-9共享存储器模块的说明列表

9.工具模块

工具模块包含了FPGA设计流程中常用的ModelSim、ChipScope、资源评估等模块以及算法设计阶段的滤波器设计等模块。

该库的模块在设计中起辅助作用,都是设计工具,一般不能生成HDL设计,其简要说明如表8-10所列。

表7-10工具模块的说明列表

2.FPGA边界定义模块

SystemGenerator是FPGA实现和算法开发之间桥梁,通过两个标准模块“GatewayIn”和“GatewayOut”来定义Simulink仿真模型中FPGA的边界。

“GatewayIn”模块标志着FPGA边界的开始,能够将输入的浮点转换成定点数。

“GatewayOut”模块标志着FPGA边界的结束,将芯片的输出数据转换成双精度数。

在Simulink环境中双击这两个模块会弹出配置对话框,可以设定不同的转换规则,如图7-10所示。

图7-10转换模块示意图

3.SystemGenerator标志

每个SystemGenerator应用框图都必须至少包含一个SystemGenerator标志,如图8-11所示,否则会提示错误。

标志模块用来驱动整个FPGA实现过程,不与任何模块相连。

双击标志模块,可以打开属性编辑框,能够设置目标网表、器件型号、目标性能以及系统时钟频率等指标。

图7-11SystemGenerator标志模块示意图

4.建立简易的DSP设计

一旦定义了FPGA边界就可以通过XilinxDSP模块集合来建立各种DSP设计,包括滤波器、存储器、算术运算器、逻辑和比特操作器等丰富资源,每个模块都有详细的工作频率和比特宽度定义。

标准的Simulink模块不能在“GatewayIn”和“GatewayOut”之间使用,但常用来产生测试数据以及对FPGA的输出数据进行处理和分析。

下面给出一个简单的FPGA系统设计实例。

例7-2使用SystemGenerator建立一个3输入(a、b、c)的DSP4模块的计算电路,使得输出p=c+a*b,并利用标准的Simulink模块对延迟电路进行功能验证。

1)打开Simulink库浏览器并建立一个新的Simulink模型,并保存为mydsp.mdl。

2)在浏览器中选择XilinxDSP48模块,并将其拖拽到mydspmydelay.mdl;

按照同样的方法添加边界定义模块以及SystemGenerator标志模块。

3)为了测试DSP计算电路,添加Simulink标准库中的常数模块(Constant)和显示器(Display)模块。

其中常数模块用于向DSP计算电路灌数据,作为测试激励;

显示器则用于观测输出数据。

4)连接模块,将所有的独立模块连成一个整体。

其中Xilinx模块之间的端口可以直接相互连接,直接从一个端口拖拽鼠标到另一个端口来完成,或选中目标模块,按住Ctrl键,再点击要连接的模块,Simulink即可自动将两个模块连接起来;

而Xilinx模块和非Xilinx模块之间的连接则需要边界模块(Gateway)来衔接。

经过连接的设计如图7-12所示。

图7-12延迟模块以及测试平台的组成架构

5)设定系统参数。

双击“SystemGenerator”模块,会出现系统设定对话框,如图8-13所示。

其中“Compilation”栏选择编译生成对象,包括HDL网表、FPGA配置比特流、NGC网表、EDK导出工具、硬件协仿真类型以及时序分析文件等6种类型,本例选择HDL网表类型,会生成ISE工程以及相应的HDL代码;

“Part”栏用于选择芯片型号,本例选择Spartan3Exc4vsx55-12ff1148。

“Target”栏用于选择目标文件存放路径,本例使用默认值,则会在mydelay.mdl所在文件夹中自动生成一个netlist的文件夹,用于存放相应的输出文件。

综合工具选择XST,HDL语言选择Verilog类型,系统时钟设的周期为100ns,即为10MHz。

“ClockPinLocation”栏的文本框中输入系统时钟输入管脚,则会自动生成管脚约束文件(由于本例只是演示版,所以该项空闲)。

此外,可选中“Createtestbench”选项,自动生成设计的测试代码。

各项参数确认无误后,单击“OK”键,保存参数。

图7-13系统参数设定对话框

6)设置关键模块参数。

双击“GatawayIn”、“GatawayOut”模块,会弹出图8-14和图8-15所示的对话框。

GatawayIn模块属性可查看输入数据位宽和量化规则。

图7-14GatawayIn模块属性对话框图7-15GatawayOut模块属性对话框

7)运行测试激励。

当参数设置完成后,点击工具栏的“”按键,即可运行Simulink仿真,可以看到显示器输出为18,表明设计的功能是正确的。

8)生成HDL代码。

单击图7-13中的“Generate”按键,SystemGenerator可自动将设计转化成HDL代码。

整个转化过程的起始和结束提示界面分别如图7-16和图7-17所示。

图7-16自动生成代码过程的起始提示标志图7-17自动生成代码过程的结束提示标志

读者可在相应的文件夹的“netlistsysgen”子目录中打开“nonleaf_results.v”文件,查看相应的代码,如下所示(为了节约篇幅,分栏显示),用户可将其作为子模块直接使用。

7.3.2SystemGenerator中的信号类型

SystemGenerator是面向硬件设计的工具,因此数据类型只能是定点的,而Simulink中的基本数据类型是双精度浮点型,因此Xilinx模块和Simulink模块连接时需要通过边界模块来转换。

“GatewayIn”模块把浮点数转换成定点数,“GatewayOut”把定点数转换成浮点数。

此外,对于Simulink中的连续时间信号,还必须经过“GatewayIn”模块的采样转换才能使用。

SystemGenerator中的数据类型命名规则是非常简易且便于记忆的形式,如Fix_8_6表示此端口为8比特有符号数,其中6比特为小数部分。

如果是无符号数,则带有“Ufix”前缀。

在SystemGenerator中,可通过选择“Format”菜单中的“Port/SignalDisplayPortDataTypes”命令,来显示所有端口的数据类型,形象显示整个系统的数据精度。

Xilinx模块基本上都是多形态的,即可根据输入端口的数据类型来确定输出数据类型,但在有些情况下需要扩展信号宽度来保证不丢失有效数据。

此外,也允许设计人员自定义模块的输入、输出数据的量化效果以及饱和处理。

在图8-14所示的“GatewayIn”模块属性对话框中,“Outputtype”选择数据为布尔型、有符号数还是无符号数;

“Numberofbits”即为定点数的位宽;

“Binarypoint”为小数部分的宽度;

“Quantization”选择定点量化模式;

“Overflow”用于设定饱和处理模式;

“Sampleperiod”用于对连续时间信号的采样。

因此按照SystemGenerator的数据形式命名规则,“GatewayIn”模块的数据类型为Fix/Ufix_(Numberofbits_(Binarypoint。

此外,还有DSP48instruction,显示为“UFix_11_0”,是Xilinx针对数字信号处理的专用模块,用于实现乘加运算。

7.3.3自动代码生成

SystemGenerator能够自动地将设计编译为低级的HDL描述,且编译方式多样,取决于SystemGenerator标志中的设置。

为了生成HDL代码,还需要生成一些辅助下载的文件工程文件、约束文件等,和用于验证的测试代码(HDLtestbench)。

1.编译并仿真SystemGenerator模块

前面已经提到要对一个SystemGenerator的设计进行仿真或者将其转化成硬件,则设计中必须包含一个SystemGenerator生成标志。

也可以将多个生成标志分布于不同的层中(一层一个),在层状结构中,处于别的层下的称为从模块,不属于从模块的则为主模块。

但是特定的参数(如系统时钟频率)只能在主模块中设置。

对于任一添加的模块,都可以在SystemGenerator模块中指定其代码生成方式和仿真处理形式,要编译整个系统,在顶层模块中利用SystemGenerator模块生成代码即可。

不同编译类型的设定将会产生不同的输出文件,可选的编译类型包括两个网表文件类型(HDL网表和NGC网表)、比特流文件类型、EDK导出工具类型以及时序分析类型等4类。

∙HDL网表类型是最常用的网表结构,其相应的输出结果包括HDL代码文件、EDIF文件和一些用于简化下载过程的辅助文件。

设计结果可以直接被综合工具(如XST等)综合,也可以反馈到Xilinx物理设计工具(如ngdbuild、map、par和bitgen等)来产生配置FPGA的比特流文件。

编译产生的文件类型如ISE中是一致的。

NGC网表类型的编译结果和HDL网表类似,只是用NGC文件代替了HDL代码文件。

∙比特流文件类型的编译结果是直接能够配置FPGA的二进制比特流文件,并能直接在FPGA硬件平台上直接运行的。

如果安装了硬件协仿真平台,可以通过选择“HardwareCo-simulation>

XtremeDSPDevelopmentKit>

PCIandUSB”,生成适合XtremeDSP开发板的二进制比特流文件。

∙EDK导出工具类型的编译结果是可以生成直接导入Xilinx嵌入式开发工具(EDK)的工程文件以及不同类型的硬件协仿真文件。

∙时序分析类型的编译结果是该设计的时序分析报告。

2.编译约束文件

在编译一个设计时,SystemGenerator会根据用户的配置产生相应的约束文件,通知下载配置工具如何处理设计输入,不仅可以完成更高质量的实现,还能够节省时间。

约束文件可控的指标包括:

∙系统时钟的周期;

∙系统工作速度,和系统时钟有关、设计的各个模块必须运行的速度;

∙管脚分配;

∙各个外部管脚以及内部端口的工作速度。

约束文件的格式取决于SystemGenerator模块的综合工具:

对于XST,其文件为XCF格式;

对于Synplify/SynplifyPro,则使用NCF文件格式。

系统时钟在SystemGenerator标志中设定,编译时将其写入约束文件,在实现时将其作为头等目标。

在实际设计中,常常包含速度不同的多条路径,其中速度最高的采用系统时钟约束,其余路径的驱动时钟只能通过系统时钟的整数倍分频得到。

当把设计转成硬件实现时,“GatewayIn”和“GatewayOut”模块就变成了输入、输出端口,其管脚分配和接口数据速率必须在其参数对话框中设定,编译时会将其写入I/O时序约束文件中。

3.HDL测试代码

通常SystemGenerator设计的比特宽度和工作频率都是确定的,因此Simulink仿真结果也要在硬件上精确匹配,需要将HDL仿真结果和Simulink仿真结果进行比较,才能确认HDL代码的正确性。

特别当其包含黑盒子模块时,这样的验证显得格外重要。

SystemGenerator提供了自动生成测试代码的功能,并能给出HDL代码仿真正确与否的指示。

假设设计的名字是,双击顶层模块的SystemGenerator标志,将Compilation选项设为HDLNetlist,选中CreateTestbench选项,然后点击Generate选项,不仅可以生成常用的设计文件,还有下面的测试文件:

∙_tb.vhd/.v文件,包含完整的HDL测试代码;

∙Various.dat文件,包含了测试代码仿真时的测试激励向量和期望向量;

∙脚本Scriptsvcom.do和vsim.do文件,用于在Modelsim中完成测试代码的编译和仿真,并将其结果和自动编译产生的HDL测试向量进行比较。

Various.dat文件是SystemGenerator将通过“GatawayIn/Out”模块的数据保存下来而形成的,其中经过输入模块的数据是测试激励,而通过输出模块的数据就是期望结果。

测试代码只是简单的封装器,将测试激励送进生成的HDL代码,然后对输出结果和期望结果完成比较,给出正确指示。

7.3.4编译MATLAB设计生成FPGA代码

Xilinx公司提供了两种方法将MATLAB设计.m文件转化为HDL设计,一种就是利用AccelDSP综合器;

另一种就是直接利用MCode模块。

前者多应用于复杂或高速设计中,常用来完成高层次的IP核开发;

而后者使用方便,支持MATLAB语言的有限子集,对实现算术运算、有限状态机和逻辑控制是非常有用的。

本节内容以介绍MCode模块为主。

MCode模块实现的是装载在里面的.m函数的功能。

此外,还能够使用Xilinx的定点类型数对.m函数进行评估。

该模块使用回归状态变量以保证内部状态稳定不变,其输入、输出端口都由.m函数确定。

要使用MCode模块,必须实现编写.m函数,且代码文件必须和SystemGenerator模型文件放在同一个文件夹中,或者处于MATLAB路径上的文件夹中。

下面用两个实例来说明如何使用MCode模块。

例8-3使用MATLAB编写一个简单的移位寄存器完成对输入数据乘8以及除以4的操作,并使用MCode将其编译成SystemGenerator直接可用的定点模块。

1.相关的.m函数代码为:

function[lsh3,rsh2]=xlsimpleshift(din

%[lsh3,rsh2]=xlsimpleshift(dindoesaleftshift3bitsanda

%rightshift2bits.Theshiftoperationisaccomplishedby

%multiplicationanddivisionofpoweroftwoconstant.

lsh3=din*8;

rsh2=din/4;

2.将.m函数添加到下列三个位置之一:

∙模型文件存放的位置;

∙模型目录下名字为private的子文件夹;

∙MATLAB路径下。

然后,新建一个SystemGenerator设计,添加MCode模块,双击模块,在弹出页面中,通过Browse按键将.m函数和模型设计关联起来,如图7-18所示。

图7-18MCode模块关联界面示意图

3.添加边界模块、SytemGenerator模块、正弦波测试激励以及示波器模块构成完整的设计,如图8-19所示。

图7-19简单移位模块设计示意图

4.运行仿真,得到的结果如图7-20所示,从中可以看出,设计是正确的,正确实现了.m文件的功能。

左图将信号放大了8倍,右图将信号缩小了4倍。

图7-20简单移位模块仿真结果示意图

5.自动生成代码,得到的Verilog文件如下所列。

modulemyshift(

din,

dout1,

dout2

;

input[15:

0]din;

output[15:

0]dout1;

0]dout2;

wire[15:

0]din_net;

0]dout1_net;

0]dout2_net;

assigndin_net=din;

assigndout1=dout1_net;

assigndout2=dout2_net;

mcode_6b96190926mcode(

.e(1'

b0,

.lk(1'

.lr(1'

.in(din_net,

.sh3(dout1_net,

.sh2(dout2_net

endmodule

7.3.5子系统的建立和使用

SystemGenerator设计经常作为大型HDL设计的一部分,本节就介绍如何使用SystemGenerator来建立子系统模块,以及如何在整个系统中对其进行仿真。

1.子系统的建立以及仿真方法

子系统就是HDL语言中的模块,也类似于C++语言中的函数,是有效执行自顶向下设计的必备手段。

如果将一个复杂设计完全在一个单独设计中实现,则该设计的验证和复查工作将是设计人员的噩梦。

此外,从设计复用的角度讲,子系统可以IP核的方式为多个设计使用,具有高的可重用性,能节省大系统的开发时间。

建立子系统最简单的方法就是利用NGC二进制网表文件,将SystemGenerator设计封装成一个单独的二进制模块,这样综合工具将其作为黑盒子看待。

在建立子系统时,管脚约束不能在Gataway模块中定义,同样时钟管脚也不能在SystemGenerator模块中定义,应通过网表编辑器来指定物理约束,这是因为NGC网表中不仅包括了逻辑设计,还包括了设计的约束信息。

在复杂系统中建立子系统的设计流程如下所示:

图7-21建立子系统的设计流程

1)NGC网表文件

如图7-21所示,生成NGC网表是建立子系统的第一步。

在SystemGenerator标志中将编译生成文件类型选为NGCList,如图7-22所示。

如果设计中有时钟驱动电路,点击Generate后,会在目标文件夹生成“_cw.ngc”文件,否则会生成“.ngc”文件,其中就是设计的名字。

NGC网表文件包括设计中所有的逻辑和约束信息,这意味着将SystemGenerator生成的所有HDL文件、内核以及约束等文件封装成一个单独的文件。

图7-22选择编译生成文件类型

2)设计规则

在复杂系统中使用子模块时,必须遵循下面两条规则。

首先,不能在子模块设计文件中出现“GatewayIn”、“GatewayOut”以及SystemGenerator标志模块,否则NGDBuild工具会产生下面的警告:

WARNING:

NgdBuild:

483-Attribute"

LOC"

on"

clk"

isonthewrongtypeof

object.PleaseseetheConstraintsGuideformoreinformationonthis

attribute.

其次,不能在综合的时候往NGC网表文件中插入I/O缓存器,否则会报错。

I/O缓存器只能在顶层模块中使用。

3)逻辑综合

当使用子系统的NGC网表文件综合时,其流程如图8-23所示。

NGC模块可在顶层模块中以黑盒子的方式直接例化。

为了简化该过程,当通过NGC目标编译后,SystemGenerator提供了HDL例化模板,保存在设计路径,且以“_cw.veo”命名。

当选择VHDL语言时,则其模板名为“_cw.vho”。

图8-23综合时的流程图

4)仿真

把SystemGenerator模型编译成NGC目标后,生成的HDL文件却只能完成HDL仿真,不能在ISE中综合。

由于HDL文件不能包含在工程中,如果要在HDL仿真器中运行整个设计,就必须指定用户.do文件。

除了HDL文件之外,还需要将内存初始化文件(.mif)和系数文件(.coe)和HDL文件放在同一文件夹中。

2.可配置子系统的建立

可配置子系统是一类可以作为标准元件使用的Simulink模块,但又和标准元件模块不同,其存在多种可选功能,每一种功能都可以实现,可以让用户灵活选择。

以可配置FIR滤波器为例,实现快速滤波器需要很多资源,而许多低速的滤波器却只需要相对很少的资源,将其做成可配置的模块,就可以允许用户根据实际情

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2