分类: 嵌入式
2014-10-31 08:53:14
使用 Simulink、算法块和已有的 HDL 代码,可创建系统级的设计模型,并优化设计以在硬件上实现。HDL Coder?可用于自动生成 HDL 代码,以在 FPGA 中快速实现算法。通过采用 HDL Verifier将 Simulink 测试平台与在 HDL 仿真器中运行的 FPGA 实现方案联系起来,可从功能上验证 HDL 代码。
要设计算法以供在 FPGA 或与处理器结合的 FPGA 上实现,要求对影响功能性能的定点特性进行准确的建模。可在 MATLAB 和 Simulink 中创建浮点算法规格,然后将其转换为位真定点数据类型以供仿真。对设计进行模型级定点优化可用于透彻地研究 FPGA 设计所涉及的定点权衡。还可以创建有限状态机来对这些算法的控制逻辑进行建模。
使用 HDL Coder,能自动从模型生成可自定义的、与目标无关的 VHDL 和 Verilog 代码,这些代码可综合以用于 FPGA 实现。可通过更新模型并重新生成代码来快速修改该代码。生成的代码可传递到下游工具以供综合、布局、布线,并将位流下载到 FPGA。
网上找的一个案例,不是很全,先了解下吧
设计FIR滤波器的方法有多种,其中Matlab软件提供了很多关于滤波器设计的工具箱,FDATool就是一个很好的工具,如图2所示就是FDATool的界面,可以在Matlab的Command窗口中直接输入FDATool命令来调用。
图2
滤波器的设计首先需要设置的参数:
(1) Response Type:选择FIR滤波器的类型:低通、高通、带通和带阻等。如图3所示为Lowpass中的下拉选项,在DDC/DUC模块设计中,抽取和内插需要使用Halfband Lowpass类型,而channel filter需要使用Raised-cosine类型。
图3
(2) Design Method:FIR滤波器设计方法有多种,如图4所示,最常用的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最小二乘法(Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用窗函数设计法,达到所期望的频率响应,与其它方法相比往往阶数会更多;而且窗函数设计法一般只参照通频带wp、抑制频带ws和理想增益来设计滤波器,但是实际应用中通频带和抑制带的波纹也是需要考虑的,那在这种情况下,采用等波纹设计法就非常适用了。
图4
(3) Filter Order:设置滤波器的阶数,这个选项直接影响滤波器的性能,阶数越高,性能越好,但是相应在FPGA实现耗用的资源需要增多。在这个设置中提供2个选项:Specify order和Minimum order,Specify order是工程师自己确定滤波器的阶数,Minimum order是让工具自动确定达到期望的频率相应所需要的最小阶数,因此具体选择哪个选项得视实际情况而定了。
图5
(4) Frequency Specification:设置频率响应的参数,包括采样频率Fs、通带频率Fpass和阻带频率Fstop。
图6
参数设置完成后,FDATool就会分析并且生成滤波系数,如图7所示,可以得到滤波器的频率相应曲线,并且可以通过File->Export导出滤波系数,如图8所示。
图7
图8
为了快速验证FIR滤波器的FPGA实现,使用Xilinx的System Generator工具,如图9所示为FIR滤波器的验证模型,其中通过Gateway In和Gateway out模块分隔matlab simulink模块和Xilinx FPGA模块,matlab simulink模块用于产生测试源,接收并显示滤波后波形。还有System Generator Token用于生成Xilinx FPGA模块的HDL代码。
图9
其中FIR Compiler 5.0模块的参数设置如图10所示,滤波系数直接调用FDATool生成的滤波系数equ_coe,输出为全精度数据。
图10
得到输出结果如图11所示,上边图为输入原波形,由两个频率分量的正弦波叠加而成,频率分别为2MHz和100MHz,经过FIR滤波之后,100MHz频率分量被滤除。