您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于simulink的FIR滤波器设计与HIL仿真实现
基于SG/Simulink的FIR滤波器设计与HIL仿真实现1.引言数字滤波器是语音与图像处理、模式识别、雷达信号处理、频谱分析等应用中的一种基本的处理部件,并且正在讯速的代替传统的由RLC元器件和运算放大器组成的模拟滤波器,逐渐成为一种主要的DSP操作。而有限冲激响应(FIR)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性,同时它可以采用十分简单的算法实现,但采用硬件描述语言设计(VHDL或VerilogHDL)数字滤波器时,由于硬件程序的电路优化比较因难,从而使滤波器性能较差。下面使用了一种基于systemgenerator的FIR滤波器设计方法,以实现一个4抽头的简单低通FIR数字滤波器为例,并在Xilinx的Spartan-3exc3s500e-4fg320开发板上验证了该数字滤波器电路工作正确可靠,能满足设计要求。2.SystemGenerator的介绍:SystemGenerator是一款理想的FPGA开发软件,它通过建立数字信号处理系统的抽象算法,并将抽象算法转化为可靠的硬件实现,是数字信号处理高层系统设计与XILINXFPGA实现的“桥梁”。它在MATLAB/Simulink的环境下完成算法的建模,然后生成相应的工程。由SystemGenerator直接生成位流文件,并下载到FPGA中。MATLAB中的Simulink为SystemGenerator提供强大的运行平台,SystemGenerator在Simulink中可看成Simulink的一个工具包,它可以自动地把设计转化成可靠的、可综合的和有效地硬件实现。3.FIR滤波器的介绍FIR滤波器是脉冲响应有限长的数字滤波器,它由有限个采样值构成。按网络实现结构,FIR滤波器可分以下几种:直接型、级联型、频率采样型,若FIR的脉冲响应满足奇偶对称的条件,则FIR还具有线性相位型结构。由于FIR脉冲响应是有限长的,系统函数在单位圆外没有极点,因而系统具有很好的稳定性,多采用非递归结构实现,运算误差小。相比之下,IIR滤波器的单位脉冲响应序列是无限长的,其系统函数极点在单位圆内时才是稳定的,实现结构必定是递归型的,这种结构由于运算误差,有时会引起零输入极限环震荡。当一个FIR滤波器具有线性相位响应时,其脉冲响应呈现某种对称条件。在这种形式中,将利用这些对称关系把相乘的次数减少一半。正是由于此原因,在本课题中才会选择线性相位型来进行设计。线性相位响应的优点如下:1、设计过程中只有实数运算而没有复数运算,运算简单;2、线性相位FIR滤波器没有延时失真,仅有某一固定时延,便于设计;3、对于长度为N或(N-1)的滤波器,其运算次数具有N/2数量级,有利于提高运算速度,节省资源。我们知道,对于FIR滤波器的直接型结构如图1-2所示,图中共需要N个乘法器,但对于线性相位的FIR滤波器,N为偶数时,仅需要N/2次乘法,节约一半乘法器。如果N为奇数,则需要(N+1)/2个乘法器,也节约了近一半。图1-2FIR滤波器直接型结构线性相位FIR滤波器的差分方程为,y(n)==h(0)*x(n)+h(1)*x(n-1)+…+h(1)*x(n-N+2)+h(0)*x(n-N+1)=h(0)[x(n)+x(n-N+1)]+h(1)[x(n-1)+x(n-N+2)]+…当FIR滤波器的阶数为奇数和偶数时,其相应的结构如图1-3,1-4所示。图1-3线性相位FIR滤波器(奇数阶)图1-4线性相位FIR滤波器(偶数阶)比较从以上图形结构,可看出线性相位结构比较简单,节省了大量的硬件资源。对于线性相位FIR滤波器的单位脉冲响应h(n)为奇对称和偶对称又分别分为列长N为奇数和偶数两种情况。其单位脉冲响应序列h(n)如图1-5,1-6所示。因此共有四种类型的线性相位FIR滤波器。图1-5奇对称单位脉冲响应图1-6偶对称单位脉冲响应4.FIR数字滤波器的SystemGenerator设计FIR滤波器模型建立根据FIR滤波器原理,可以利用FPGA来实现FIR滤波电路,在Matlab中,我们可以通过Simulink的库浏览器使用Xilinxblockset库中的模块,Xilinxblockset库中的模块可以与Simulink其它库中的模块自由组合。Xilinxblockset库中最重要的模块是SystemGeneratorForDSP,利用该模块完成系统级设计到基于FPGA的底层硬件设计的转换工作。可以在SystemGeneratorForDSP模块的属性对话框中选择目标FPGA器件、目标系统时钟周期等选项。根据原理,我们可以构造出在Simulink界面中的模块框图如下:其为4抽头的简单的fir滤波器,根据离散信号的知识我们可以写出输入输出的关系:()10()20(1)50(2)80(3)ynxnxnxnxn将模块进行仿真,运行Simulink得到示波器的波形为:加上频谱示波器(SpectrumScope)观察得到的频谱图:知其满足简单的低通滤波的功能。与Spartan-3E板结合进行协同仿真:在SystemGenerator模块上进行相关的参数设置,并连接3E开发板,相关操作完成后,安装编译目标器件,完成后重新选择新生成的目标器件,单击Generate从而生成协同仿真的模块,如下:执行FPGA器件在环路中的硬件仿真将新生成的模块与原来的框图放在同一界面中,并依然保持开发板的连接,单击运行,观察两支路的输出结果是否相同:两支路模拟出来的波形为:协同仿真得到的模块的频谱图也满足低通滤波的功能:从FIR滤波电路的硬件与软件仿真结果中可以看出,该方法在满足相同指标的情况下,得出的两种仿真结果参数值完全吻合,也验证了SystemGeneratorForDSP软件在分析设计中具有非常高的精确度,最后应用Spartan-3E开发板对滤波器进行了硬件仿真,结果表明达到了指标要求。5.结束语用信号发生器产生所需要的信号,就可以在示波器上看到滤波以后的结果,需要设计不同的滤波电路时,修改滤波器模型参数文件就可以实现。可见在数字滤波器做FPGA的设计时,采用SystemGeneratorForDSP作为设计工具能更有效地设计实用数字滤波器。6.缺点实验初我们想要设计的框图更复杂,效果也更好,但是框图的模拟一直有错误,出不了结果,后来尝试用FDA模块直接生成系数用于滤波器的模块也出现了语法错误,不得已只好选用最基本的4抽头的简单滤波器,但是效果可能就没那么好了。以上步骤算是实现了基本fir滤波器的简单功能。
本文标题:基于simulink的FIR滤波器设计与HIL仿真实现
链接地址:https://www.777doc.com/doc-4773992 .html