System Generator的DSP系统设计
- 格式:doc
- 大小:1.32 MB
- 文档页数:30
第3节基于System Generator的DSP系统设计[基于System Generator的DSP系统开发技术]第3节基于System Generator的DSP系统设计7.3.1 System Generator快速入门本节旨在给出System Generator设计的整体轮廓,避免一上来就详细介绍各种基本操作,让读者从宏观上把握,在后续章节的阅读中不会一叶障目。
1.Xilinx Blockset库的基本介绍System Generator和Simulink是无缝链接的,可以在MATLAB标准工具栏中直接启动,如图8-9所示。
这些模块都根据其功能划分为不同的库,为了易于使用,又在某些库中添加了部分有广泛应用的模块,所有的模块都按字母顺序排列在Xilinx Index库中。
读者需要注意的是:在Simulink环境中,只有通过Xilinx 模块搭建的系统才能保证硬件可实现,其地位类似于HDL语言中的可综合语句。
图7-9 Xilinx DSP模块集从设计流程中可以看出,熟悉Xilinx DSP基本模块库是设计流程中的关键环节,只有掌握了基本模块的特性和功能,才能更好地实现算法。
由Xilinx模块库和System Generator一起,可生成Xilinx可编程器件的最优逻辑,这属于最低层的设计模块,地位等效于IP Core,共有90多个。
Xilinx模块库简要说明如表7-1所列。
表7-1 System Generator库的简要说明1.基本单元模块基本单元模块库中包含了数字逻辑的标准组件模块,使用这些模块可插入时间延迟、改变信号速率、引入常数、计数器以及多路复用器等。
此外,还包含了3个特殊的模块System Generator标志、黑盒子模块(Black Box)以及边界定义模块,后文将对其进行详细说明。
该库中简要的模块说明如表8-2所列。
表7-2 基本单元模块的说明列表2.通信模块通信应用是FPGA的主要应用领域之一,因此Xilinx的通信模块库提供了用于实现数字通信的各种函数,包括卷积编解码、RS编解码以及交织器等模块。
该库中简要的模块说明如表8-3所列。
表7-3 通信模块的说明列表3.控制逻辑模块控制逻辑主要包括了用于创建各种控制逻辑和状态机的资源,包括了逻辑表达式模块、软核控制器、复用器以及存储器,其简要说明如表8-4所列。
表7-4 控制逻辑模块的说明列表4.数据类型模块数据类型模块主要用于信号的数据类型转换,包括移位、量化、并/串、串/并转换以及精度调整模块,其简要说明如表8-5所列。
表7-5 数据类型模块的说明列表5.DSP模块DSP模块是System Generator的核心,该库包含了所有常用的DSP模块,其简要说明如表8-6所列。
表7-6 DSP模块的说明列表6.数学运算模块数学运算是任何程序所不可避免的,Xilinx提供了丰富的数学运算库,包括基本四则运算、三角运算以及矩阵运算等,其简要说明如表8-7所列。
表7-7 数学运算模块的说明列表7.存储器模块该库包含了所有Xilinx存储器的Logic Core,其简要说明如表7-8所列。
表7-8 存储器模块的说明列表8.共享储存器模块共享存储器模块主要用于共享存储器操作,相关内容将在7.4.3节展开讨论。
表7-9 共享存储器模块的说明列表9.工具模块工具模块包含了FPGA设计流程中常用的ModelSim、ChipScope、资源评估等模块以及算法设计阶段的滤波器设计等模块。
该库的模块在设计中起辅助作用,都是设计工具,一般不能生成HDL设计,其简要说明如表8-10所列。
表7-10 工具模块的说明列表2.FPGA边界定义模块System Generator是FPGA实现和算法开发之间桥梁,通过两个标准模块“Gateway In”和“Gateway Out”来定义Simulink仿真模型中FPGA的边界。
“Gateway In”模块标志着FPGA边界的开始,能够将输入的浮点转换成定点数。
“Gateway Out”模块标志着FPGA边界的结束,将芯片的输出数据转换成双精度数。
在Simulink环境中双击这两个模块会弹出配置对话框,可以设定不同的转换规则,如图7-10所示。
图7-10 转换模块示意图3.System Generator标志每个System Generator应用框图都必须至少包含一个System Generator标志,如图8-11所示,否则会提示错误。
标志模块用来驱动整个FPGA实现过程,不与任何模块相连。
双击标志模块,可以打开属性编辑框,能够设置目标网表、器件型号、目标性能以及系统时钟频率等指标。
图7-11 System Generator标志模块示意图4.建立简易的DSP设计一旦定义了FPGA边界就可以通过Xilinx DSP模块集合来建立各种DSP设计,包括滤波器、存储器、算术运算器、逻辑和比特操作器等丰富资源,每个模块都有详细的工作频率和比特宽度定义。
标准的Simulink 模块不能在“Gateway In”和“Gateway Out”之间使用,但常用来产生测试数据以及对FPGA的输出数据进行处理和分析。
下面给出一个简单的FPGA系统设计实例。
例7-2 使用System Generator建立一个3输入(a、b、c)的DSP4模块的计算电路,使得输出p=c+a*b,并利用标准的Simulink模块对延迟电路进行功能验证。
1)打开Simulink库浏览器并建立一个新的Simulink模型,并保存为mydsp.mdl。
2)在浏览器中选择Xilinx DSP48模块,并将其拖拽到mydspmydelay.mdl;按照同样的方法添加边界定义模块以及System Generator标志模块。
3)为了测试DSP计算电路,添加Simulink标准库中的常数模块(Constant)和显示器(Display)模块。
其中常数模块用于向DSP计算电路灌数据,作为测试激励;显示器则用于观测输出数据。
4)连接模块,将所有的独立模块连成一个整体。
其中Xilinx模块之间的端口可以直接相互连接,直接从一个端口拖拽鼠标到另一个端口来完成,或选中目标模块,按住Ctrl键,再点击要连接的模块,Simulink 即可自动将两个模块连接起来;而Xilinx模块和非Xilinx模块之间的连接则需要边界模块(Gateway)来衔接。
经过连接的设计如图7-12所示。
图7-12 延迟模块以及测试平台的组成架构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”键,保存参数。
图7-13 系统参数设定对话框6)设置关键模块参数。
双击“Gataway In”、“Gataway Out”模块,会弹出图8-14和图 8-15所示的对话框。
Gataway In模块属性可查看输入数据位宽和量化规则。
图7-14 Gataway In模块属性对话框图7-15 Gataway Out模块属性对话框7)运行测试激励。
当参数设置完成后,点击工具栏的“ ”按键,即可运行Simulink仿真,可以看到显示器输出为18,表明设计的功能是正确的。
8)生成HDL代码。
单击图7-13中的“Generate”按键,System Generator可自动将设计转化成HDL代码。
整个转化过程的起始和结束提示界面分别如图7-16和图 7-17所示。
图7-16 自动生成代码过程的起始提示标志图7-17 自动生成代码过程的结束提示标志读者可在相应的文件夹的“netlist sysgen”子目录中打开“nonleaf_results.v”文件,查看相应的代码,如下所示(为了节约篇幅,分栏显示),用户可将其作为子模块直接使用。
7.3.2 System Generator中的信号类型System Generator是面向硬件设计的工具,因此数据类型只能是定点的,而Simulink中的基本数据类型是双精度浮点型,因此Xilinx模块和Simulink模块连接时需要通过边界模块来转换。
“Gateway In”模块把浮点数转换成定点数,“Gateway Out”把定点数转换成浮点数。
此外,对于Simulink中的连续时间信号,还必须经过“Gateway In”模块的采样转换才能使用。
System Generator中的数据类型命名规则是非常简易且便于记忆的形式,如Fix_8_6表示此端口为8比特有符号数,其中6比特为小数部分。
如果是无符号数,则带有“Ufix”前缀。
在System Generator中,可通过选择“Format” 菜单中的“Port/Signal Display Port Data Types”命令,来显示所有端口的数据类型,形象显示整个系统的数据精度。
Xilinx模块基本上都是多形态的,即可根据输入端口的数据类型来确定输出数据类型,但在有些情况下需要扩展信号宽度来保证不丢失有效数据。
此外,也允许设计人员自定义模块的输入、输出数据的量化效果以及饱和处理。
在图8-14所示的“Gateway In”模块属性对话框中,“Output type”选择数据为布尔型、有符号数还是无符号数;“Number of bits”即为定点数的位宽;“Binary point”为小数部分的宽度;“Quantization”选择定点量化模式;“Overflow”用于设定饱和处理模式;“Sample period”用于对连续时间信号的采样。
因此按照System Generator的数据形式命名规则,“Gateway In”模块的数据类型为Fix/Ufix_(Number of bits)_(Binary point )。