7.2.1 System Generator开发流程简介
本节介绍使用System Generator设计数字系统的常用步骤。在Simulink的可视化环境中,根据系统设计功能将Xilinx模块连接成所设计的系统,并定义合适的系统参数;而后运用System Generator将Simulink模型转换成硬件可执行模型,将系统定义的参数对应至硬件实现的实体以及输入输出端口,并会自动完成综合、仿真与实现。整个开发流程分为浮点算法开发、定点算法实现、硬件系统设计以及代码优化4个步骤。
1.浮点算法开发:利用MATLAB软件及其提供的工具包快速地完成浮点算法的开发、验证以及性能评估,借助于Simulink可快速完成原型设计和模型分析。
2.定点算法实现:将MATLAB浮点算法通过AccelDSP在Xilinx器件上实现定点逻辑。AccelDSP直接将浮点MATLAB算法的M-文文件自动生成可综合的RTL模型。AccelDSP综合工具是基于高级MATLAB语言的工具,用于设计针对Xilinx FPGA的DSP块。该工具可自动地进行浮点-定点转换,生成可综合的VHDL或Verilog HDL设计,并创建用于验证的测试平台。并且,还能以报告的形式提供资源利用率、吞吐量和延迟等指标,从而根据实际工程需要来设置系统级要求,借助于IP-Explorer技术来实现面积和速度的折中,快速地选择最佳的芯片设计。
3.硬件系统设计与实现:定义使用Xilinx IP的详细硬件架构,采用System Generator for DSP 划分协处理器和可编程器件之间的设计。System Generator可满足FPGA流程中所有需要的功能要求,对于用户而言,通过点击按键即可将模型设计转换成HDL语言,在此过程中会生成下列文件:
- 设计所对应的HDL程序代码。
- 时钟处理模块,包括系统时钟处理操作以及生成设计中所需的不同频率的时钟信号。
- 用于测试设计的HDL测试代码,可直接将其仿真结果和Simulink输出比较。
- 工程文件以及综合、实现过程所产生的各种脚本文件。
4.代码优化:利用ISE RTL设计环境生成优化的FPGA设计,属于高级应用,要求设计者不仅要熟悉算法的架构、瓶颈,还需要精通RTL设计。对于一般设计,如果系统硬件资源够用,再加上设计周期短,则可忽略这一步。
在Simulink可视化设计环境中,重要的是:在Simulink环境中实现定点算法,根据系统设计功能将Xilinx模块连接成设计系统,并定义合适的系统参数;而后利用System Generator将Simulink模型转换为可执行的硬件模型,将系统定义的参数对应到硬件实现的模块、输入/输出端口等属性;再借助于ModelSim软件验证相应的设计是否和Similink输出一致,否则需要重新修改设计;最后将设计生成可对器件编程的比特流文件,将其下载到目标芯片中。因此,典型的开发流程如图8-6所示,其中System Generator会自动为FPGA的综合、HDL仿真以及实现生成命令文件,用户只需完成Simulink设计以及比较最终的RTL输出结果。整个开发流程都是在可视化的环境中完成的。

图7-6 典型的System Generator设计流程
7.2.2 Simulink基础
1.Simulink简介
Simulink是MATALB中的一种可视化仿真工具,广泛用于线性系统、数字控制以及数字信号处理的建模和仿真中。Simulink采用模块化的建模方式,每个模块都有自己的输入、输出端口,并能实现一定的功能。在Simulink中,模型表现为若干个仿真模块的集合以及各个模块之间的连接关系, 并且这些模块可以组织成具有同等结构的子系统,具有内在的模块化设计要求。
根据输出信号和输入信号的关系,Simulink提供了3种类型的模块:连续模块、离散模块和混合模块。连续模块指输出信号发生连续变化的模块,离散模块则是输出信号以固定间隔变化的模块;混合模块是根据输入信号的类型来确定输出信号类型的,既能产生连续输出信号,也能够产生离散输出信号。如果一个仿真模型中只包括离散模块,Simulink采用固定步长方式进行仿真;如果模型中只有连续模块,Simulink将采用连续方式对模型继续仿真。如果模块中包含连续模块和离散模块,则采用两种仿真步长进行仿真。
2.Simulink软件的安装
Simulink可以随着MATLAB一起安装到计算机内,在MATLAB安装选项中选中Simulink组件,安装程序会自动将其安装到MATLAB目录下;如果已安装了MATLAB而没有安装Simulink的话,也可以继续使用安装程序将Simulink安装到计算机内。两者的安装方法是基本一样的。需要注意的是,Simulink的运行需要MATLAB后台的支持,因此必须要安装MATLAB软件。
3.Simulink的工作原理
Simulink的工作包括两个阶段:初始化阶段和模型执行阶段。
1)模型初始化阶段
在初始化阶段,Simulink主要完成以下工作:
(1)将模型参数传递给MATLAB进行估值,得到的数值结果将作为模型的实际参数;
(2)展开模型的各个层次,每一个非条件执行的子系统将被它所包含的模块代替;
(3)模型中的模块按更新的次序进行排序;
(4)决定模型中有无显示设定的信号属性,如:名称、数据类型等,并且检查各个模块是否能连接到其相应的输入信号;
(5)决定所有未设定采样时间的模块的采样时间;
(6)分配和初始化用于存储每个模块的状态和输入当前值的存储空间。
完成上述工作后,就可以进入模型执行阶段。
2)模型执行
一般模型是使用数值积分来进行仿真的,所运用的仿真解法器依赖于模型提供的连续积分能力。计算微分可以分为两步来进行:首先,按照排序所确定的次序计算每个模块的输出;其次,根据当前时刻的输入和状态来决定状态的微分,得到微分向量后再把它返回给解法器,再用其来计算下一时刻采样点的状态向量,一旦新的状态向量计算完毕,被采样的数据源模块和接收模块才被更新。
在仿真开始时,模型设定待仿真系统的初始状态和输出。在每一个时间步长中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。
4.Simulink设计简单举例
作为本节的最后一部分,给出一个Simulink的应用实例,增加读者对Simulink建模的直观印象。
例8-1 建立一个调幅(AM)系统,信号频率为100KMHz,载波频率为1MHz,调幅系数为0.5,并在示波器中显示出来。
具体的操作步骤如下:
1)打开MATLAB,在工具栏点击 图标,启动Simulink(也可以直接在MATLAB命令窗口直接敲入simulink)。
2)在Simulink环境下新建一个模型,在Simulink工具栏点击图标实现或通过菜单“File”中的“New Model”命令来实现,将新模型保存为am.mdl。
3)从Simulink library Browser中加入基本模块。首先从“Simulink Source”库中选中“Sine Wave”模块,直接将其拖拽到am.mdl的界面中,并复制该模块;然后双击“Sine Wave”模块,设定载波频率和幅度。再按照同样的方法将“Sine Wave1”模块设定为信号产生模块;再从“Simulink Math Operations”库中选择乘法器模块Product,最后从“Simulink Sink”库中选择示波器Scope。
4)连接各个模块,选中目标模块,按住Ctrl键,再点击要连接的模块,Simulink即可自动将两个模块连接起来,最终设计如图8-7所示。

图7-7 调幅系统的Simulink设计示意图
5)在工具栏点击运行(RUN)图标 ,再直接点击Scope模块即可观察运行结果,如图8-8所示。至此,即完成了一个简单的AM调制系统模型。

图7-8 调幅系统的运行结果示意图
7.2.3 AccelDSP软件工具
AccelDSP是一款第三方综合软件,可将MATLAB浮点算法转换成为可综合RTL代码。 Xilinx AccelDSP是目前业界唯一能够将MATLAB浮点算法转换成为可综合RTL代码的开发工具。该工具可自动地进行浮点-定点转换,生成可综合的VHDL或Verilog代码,并创建用于验证的测试平台,同时还可以生成定点C++模型或由MATLAB算法得到System Generator块。AccelDSP综合工具是Xilinx XtremeDSP解决方案的重要组成部分。AccelDSP产品体系由两个主要模块构成:AccelDSP综合器和AccelWare IP。
AccelDSP综合器是一个综合和验证的环境,可以自动将MATLAB浮点代码转换成为定点代码,然后生成可综合的VHDL或Verilog代码,为设计者提供了验证算法和实现算法的功能。
AccelWare IP与AccelDSP综合器联合实现滤波器、FFT等DSP函数,通信算法函数以及高级数学运算函数。AccelWare是一个IP库,包含一系列参数DSP模块,这些模块可以综合成为RTL代码(VHDL或Verilog)。每一个IP模块进行了预先验证,从而实现了一旦生成即保证正确的算法开发流程。AccelWare IP提供了三个专用工具箱(Toolkits):信号处理工具包(包括FIR 滤波器、CIC 抽取滤波器、CIC内插滤波器、多相抽取滤波器、半带 FIR 滤波器、FFT 以及IFFT等模块)、通信工具包(包括直接数字合成器、BCH 编码器和解码器、卷积交织器和去交织器、卷积编码器、Reed-Solomon 编解码器、Viterbi解码器、开方升余弦滤波器、加扰器、解扰器以及ADC采样-保持电路/正弦比较滤波器等模块)和高级数学运算工具包(包括QR分解法、Cholesky分解法、QR求逆、Cholesky求逆、三角形矩阵求逆、特定排列旋转、多项式求值、奇异值分解以及QRD-RLS空间滤波器等模块)。


