[使用MATLAB为System Generator fOr DSP创立IP] 创立IP 使用MATLABM文件借助Acce|Chip综合工具优化FPGA实现 将基于图形和基于语言的设计方法结合起来最能正确描述DSP系统DSP建模软件行业教授The MathWorks提供了一个称为Simulink的时序精度的图形化设计环境和一个称为MATLAB的数学建模语言,从而满足了这种二分法 Simulink很适合DSP设计的“系统”方面,包含输入输出接口和存放器数据流的控制和同时Simulink还以模块集的形式提供了一个丰富的预定义DSP算法集,能够用来构建DSP系统不过,对于专用算法的建模来说,Simulink并非总是最有效的开发环境它无须要地增加了设计人员考虑时序精度的负担,而且强制用图形模块集而非简明的文本表示式来构建底层的算术运算和数组操作 有些DSP算法开发人员发觉MATLAB语言最能满足她们喜爱的开发方法MATLAB含有针对信号处理、通信和小波处理的1000多个内置函数和工具箱扩展,为复杂算法的开发和调试提供了丰富且易用的环境 Simulink利用一个嵌入式MATLAB模块将这两种建模环境统一起来,该模块许可MATLAB模型在Simulink内部仿真,再经过Real-Time Workshop编译成C代码后在DSP处理器上实现。
Xilinx System Generator for DSP是一个广泛公认的高效工具,用于在FPGA中创立DSP设计SystemGanerator for DSP提供了基于Simulink的图形环境和Xilinx DSP核的预定义模块集,这同时满足了系统架构设计师和硬件设计人员的需要,前者需要把组件集成到设计中,以后者需要优化实现不过,System Generatorfor DSP缺乏对基于MATLAB的设计步骤的支持 DSP硬件系统 System Generator for DSP很适合DSP系统建模,它不但包含关键DSP算法,还包含针对外部总线、存放器读写访问、系统数据同时和整体系统控制的同时接口System Generatorfor DSP提供了面向控制的模块,还提供了用于实现DSP系统同时的各个寄存器、延时器和存放器模块 自定制DSP算法 任何DSP系统的关键全部是算法算法和系统的区分在于所产生的输出是基于给定输入集的函数,和时钟或硬件无关这能够由以下简单公式表示: y=f 我们能够分别在FPGA、DSP处理器和软件上实施一个MATLAB定义的算法,它们对时序精度的了解各不相同。
算法的这种特有性质含有两大好处 首先,算法开发人员完全不用顾及硬件实现细节,能够只用心于算法功效正因为如此,今天在DSP中使用的算法估量有90%全部是首先作为MATLAB模型出现的,即使设计步骤表明它们今后还要重新实现Simulink图或System Generatorfor DSP图用一个简单的MATLAB语句就能够计算4×1 024数据矩阵的快速傅里叶变换,无须考虑基数、扩展性、缓冲或有效信号的同时,以下所表示: y=fft 其次,在建立算法模型时,给定的输出集总是对应于给定的输入集;所以,无须在生成的硬件中处理同时问题这就使算法含有可经过AccelDSP这么的综合工具进行调度的固有“可调度”性因为硬件要求,可能需要使用多个时钟周期来计算一个输出,但这种操作却很适合AccelDSP综合工具的自动步骤加入一个简单的硬件握手接口即可为集成到整个系统敞开方便之门,图2所表示 AccelDSP和System Generator工具一起使用 A cc eDSP综合工具可依据浮点MATLAB模型生成System GeneratorIP模块,从而使System Generator forDSP能够支持DSP系统和算法两种建模方法。
这么能够产生和用嵌入式MATLAB模块功效相同的FPGA设计步骤我们能够用Xilinx DSP模块集实现系统设计,而用浮点MATLAB实现算法设计用AccelDSP综合工具创立的System Generator IP模块是含有时序精度特点的定点模块 卡尔曼滤波器示例 我们来看一个用MATLAB编写的高级算法,使用AccelDSP综合工具进行综合,然后将算法集成到Syst emGenerator模型中卡尔曼滤波器是一个特殊类型的自适应递归滤波器,很适合将多个有噪声的信号合并成一个较清楚的信号卡尔曼滤波器以对象的数学模型开始,使用该模型预计未来行为然后,滤波器使用实测信号定时校正预 以下是一个卡尔曼滤波器的MATLABM文件该算法定义矩阵R和I,这两个矩阵描述了实测信号和预计行为的统计数据算法的后九行是前向预计代码和自我校正代码 像加减这类常见运算符是在A或P_cap这类数组上运算,无须像C语言所要求的那样编写循环语句二维数组自动以矩阵相乘,无须任何尤其注释 MATLAB运算符能够使MATLAB代码短小易读而像矩阵求逆这类复杂运算能够用MATLAB丰富的线性代数功效完成即使能够将这种算法构建成框图,但这么做很轻易使算法结构在MATLAB中显得费解。
有了AccelDSP综合工具,就能够用AccelWare IP工具套件将复杂的MATLAB工具箱和内置函数直接给予硬件这些工具套件提供多个矩阵求逆方法核的选择取决于矩阵的大小、结构和值 我们再回到卡尔曼滤波器示例,最适宜的方法是使用AccelWare QR矩阵求逆核AccelWare核是依据MATLAB语法生成的,可有多个硬件实现架构,这些架构许可用户对设计进行速度、面积、功耗和噪声优化为了使用AccelWare功效,需要对代码进行以下小修改: 用AccelDS P综合工具综合MATLAB能够使用AccelDSP综合工具进行浮点仿真,以建立一个基准来参考然后将设计转换成定点,方便进行定点效果仿真有很多功效能够帮助分析这些效果和定点设计数据位宽的增加能够用户控制的方法自动传输到整个设计中这种算法设计浏览过程能够帮助您取得理想的量化结果,此量化结果能够在控制上溢出/下溢出的同时尽可能缩小位宽,方便尽早在硅片面积和性能指针之间进行权衡一旦确定了适宜的量化结果,使用AccelDSP综合工具的下一步就是为Xilinx目标器件生成RTL能够经过使用表1所列综合指令来要求硬件含义使用这些指令能够规范基于硬件的设计浏览,使设计小组能够深入提升结果质量。
在综合RTL时,AccelDSP综合工具评定和调度整个算法,而且在可能时进行边界优化 AccelDSP工具在整个步骤中全部保持一直如一的验证环境,这是因为使用了自校验式测试平台,即使用MATLAB定点设计时生成的输入/输出向量来验证生成的RTLAccelDSP综合工具还会汇报卡尔曼滤波器的流量和延时量,这是衡量设计是否满足指标和生成时序精度的SystemGenerator模型所必须的生成System Generator模型 成功完成RTL验证以后,即可经过单击“Generate Systam Generator”图标来为设计生成System Generator模型AccelDSP工具产生一个可支持仿真和RTL代码的System Generator IP模块 此时,设计步骤过渡到Sy stem Generator for DSP,其中能够在Simulink库浏览器中使用卡尔曼滤波器的新模块,只需选择卡尔曼滤波器模块,然后将其拖入到目标环境中,便可将AccelDSP生成的卡尔曼滤波器集成到System Generator设计中 结束语 自定制DSP算法最适于用MATLAB建立数学模型,而完整的系统则最适于用Simulink建立时序精度的模型。
这两种建模域紧密结合即可使用丰富的MATLAB语言来创立复杂DSP算法的System Generator IP模块,从而为在FPGA中设计DSP系统提供一个有效的手段。