论文部分内容阅读
[摘要] 数字信号处理技术是现今信号处理技术中运用最为广泛的,其中很重要的一方面是数字滤波器。本文介绍了FIR滤波器的原理,并以一个16阶的FIR低通滤波器为例,介绍了利用MATLAB和Altera公司的FPGA开发软件Quartus II及DSPbuilder设计数字滤波器的方法和过程。首先,利用MATLAB下滤波器设计工具FDAtool设计FIR滤波器的原型,确定该滤波器的系数;其次,利用Simulink和DSPbuilder软件平台构建滤波器模型,先设计出一个系数可变的4阶直接I型FIR滤波器节;然后调用该4阶滤波器节,将其级联成16阶滤波器,然后,将其转化为VHDL文件,并在Quartus II下完成RTL级的功能仿真和逻辑综合;最后将设计的滤波器应用于一个混合正弦波信号,以验证滤波器的性能。
[关键词] Matlab Simulink FIR滤波器 FPGA Quartus II
引言
数字信号处理(digital signal processing)是从20世纪60年代以来,随着信息学科和计算机学科的高速发展起来的一门新兴学科。数字信号处理是研究用数字方法对信号进行分析、变换、滤波、检测、调制、解调以及快速算法的一门技术学科,随着数字电路与系统技术以及计算机技术的发展,数字信号处理技术也相应地得到发展,其应用领域十分广泛。其中很重要的一方面就是数字滤波,FIR(Finite Impulse Response1滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,加之其单位抽样响应长度有限,达到稳定的系统。
本文通过一个16阶FIR低通滤波器的设计和仿真实例,介绍了基于Matlab/DSP Builder/Quartus II工具软件联合设计的流程和一般方法如图1。
图1 基于MATLAB、DSP Builder和Quartus II等工具完成设计的流程
设计流程有自动流程和手动流程两种,本文采用手动设计流程的方法。关于工具软件,Matlab是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。DSP Builder是一个系统级(或算法级)设计工具,它架构在多个软件工具之上,并把系统级(算法仿真建模)和RTL级(硬件实现)两个设计领域的设计工具连接起来,都放在了Matlab/Simlink图形设计平台上,而将Quartus II作为底层设计工具置于后台,最大程度地发挥了对种工具的优势。Quartus II是Altera推出的EDA设计工具。
1.FIR滤波器的基本结构和设计方法
1.1 FIR滤波器的基本原理
FIR(Finite Impulse Response:有限冲击响应)滤波器在数字通信系统中,被大量用于以实现各种功能,如低通滤波、同代选择、抗混叠、抽取和内插等。
图23阶FIR滤波器结构
对于一个FIR滤波器系统,它的冲激响应总是有限长的,其系统函数可以记为:
(1-1)
最基本的FIR滤波器可用下式表示:
(1-2)
其中是输入采样序列,是滤波器系数,L是滤波器的阶数,表示濾波器的输出序列。也可以用卷积来表示输出序列与、的关系。
(1-3)
图2中显示了一个典型的直接I型3阶FIR滤波器,其输出序列满足下列等式:
(1-4)
在这个FIR滤波器中,总共存在3个延时结,4个乘法单元,一个4输入的加法器。
1.2使用FDATool工具设计滤波器
设计滤波器时,通常借助Matlab来进行辅助设计,FDATool是Matlab工具箱里专用的滤波器设计和分析工具,采用交互式的设计环境,可以很方便的设计出几乎所有常规滤波器。利用FDATool工具设计一滤波器,参数如下:
○低通滤波器。
○采样频率Fs为48KHz,通带截止频率Fc为10.8KHz。
○输入输出位宽均为9位(最高位为符号位)。
(1)打开Matlab的FDATool工具
点击Matlab主窗口下方的“Start”开始按钮,选择“ToolBox”“Filter Design”→ “Filter Design & Analysis Tool”(FDATool),打开FDATool。
(2)选择 Design Filter
选择其中的按钮进入设计滤波器界面,再选择:
滤波器类型(Filter Type)为低通(Lowpass);设计方法(Design Method)为 FIR,采用窗口法(Window);滤波器阶数(Filter Order)定制为15;窗口类型为Kaiser,Beta为0.5;Fs 为48kHz,Fc10.8kHz。
计算出滤波器系数
(3)系数量化
计算出来的FIR滤波器系数是有符号的小数,在DSP Builder下建立的FIR滤波器模型需要一个整数(有符号整数类型)作为滤波器系数。所以必须进行量化,并对得到的系数进行归一化。
1.3阶FIR滤波器节设计
以下将设计一个系数可变的4阶FIR滤波器。对于直接I型的FIR滤波器(结构见图3)是可以级联的。也就是说,在滤波器系数可变的情况下,可以预先设计好一个FIR滤波器节,在实际应用中通过不断调用FIR滤波器节,级联起来,用来完成多阶FIR滤波器的设计。
图3 直接I型FIR滤波器结构
图4是一个直接I型的4阶FIR滤波器节的结构。为了使该滤波器节的调用更为方便,xin输入后插入了一个延时单元,3阶滤波器演变成4阶的,在由不过常数系数项z(系数项)恒为0.由于在通信应用中,FIR滤波器处理的往往是信号流,增加一个延时单元不会影响FIR滤波器处理的结果,只是系统延时增加了一个时钟周期。对于该FIR滤波器节,其系统函数可以用下式来表示:
(3-2)
由于浮点小数在FPGA中实现比较困难,实现的资源带价太大。DSP Builder中不妨在使用整数运算来实现,最后用位数舍取的方式得到结果。
图4 直接I型4阶FIR滤波器结构图
2.使用DSP Builder设计FIR滤波器
使用DSP Builder可以很方便的在图形化的环境中进行FIR滤波器的设计。图5是一个4阶FIR滤波器节的设计模型。
图5 直接I型4阶FIR滤波器模型图
利用以上设计好的4阶FIR滤波器节可以方便的搭成阶直接I型FIR滤波器,如要实现一个16阶的低通滤波器,可以调用4个4阶FIR滤波器节来实现。如图6所示是一个16阶FIR滤波器模型。
图6 16阶直接I型FIR滤波器模型
3. Simulink 模型仿真
在Matlab的Simulink中进行仿真验证。用DSP Builder设计好的模型,可以直接在Simulink进行功能级的仿真验证。图7是FIR滤波器仿真模型fir16tap.mdl,由一个10KHz和一个160KHz的正弦波作为输入,通过加法模块合成一激励源,作为16阶FIR低通滤波器的输入。
图8是仿真波形,由图可见,滤波器很好的滤除了160KHz的高频率信号,还原成10KHz的低频率信号,与输入的10KHz低频率信号相仿。
由仿真结果可知,16阶FIR低通滤波器的设计达到了设计要求。
图7设计好的16阶低通滤波器
4. Quartus II编译及仿真
将16阶FIR滤波器模型文件(*.MDL)转换为VHDL文件,再在Quartus II下进行编译、仿真及下载到FPGA器件中。
5.结束语
本文通过16阶FIR滤波器的设计也仿真,简单的介绍了使用Matlab/DSP Builder等工具软件设计滤波器的流程、方法和要点。借助Matlab/Simulink等工具,设计者无需通过繁琐的VHDL变成,而可以是一个复杂的电子系统设计变得容易直观。通过DSP Builder将Matlab和Quartus II相结合,互补不足,同时增强Quartus II的设计效率,为实际问题的处理提供捷径。
图8 simulink 仿真结果(系统级)
参考文献:
[1] 潘松, 黄继业. EDA技术与VHDL(第2版)[M]. 北京: 清华大学出版社, 2007.
[2] 黄科, 艾琼龙, 李磊. EDA与数字系统设计案例实践[M]. 北京: 清华大学出版社, 2010.
[3]Arthur B. Williams, Fred J.Taylor. 宁彦卿, 姚金科译. 电子滤波器设计[M]. 北京: 科学出版社, 2008.
[4]Miroslav D.Lutovac DejanV.Tosic Brian L.Evans著. 朱义胜, 董辉等译. 信号处理滤波器设计[M]. 北京: 电子工业出版社, 2004.
[5]黄红, 林德焱. FIR数字滤波器的FPGA实现[J]. 江汉大学学报(自然科学版), 2004 Vol.32 No.4:24-27.
[6]刘欲晓, 方强, 黄苑宁等编著. EDA技术与VHDL电路开发应用实践[M]. 北京: 电子工业出版社, 2009.
“本文中所涉及到的图表、公式、注解等请以PDF格式阅读”
[关键词] Matlab Simulink FIR滤波器 FPGA Quartus II
引言
数字信号处理(digital signal processing)是从20世纪60年代以来,随着信息学科和计算机学科的高速发展起来的一门新兴学科。数字信号处理是研究用数字方法对信号进行分析、变换、滤波、检测、调制、解调以及快速算法的一门技术学科,随着数字电路与系统技术以及计算机技术的发展,数字信号处理技术也相应地得到发展,其应用领域十分广泛。其中很重要的一方面就是数字滤波,FIR(Finite Impulse Response1滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,加之其单位抽样响应长度有限,达到稳定的系统。
本文通过一个16阶FIR低通滤波器的设计和仿真实例,介绍了基于Matlab/DSP Builder/Quartus II工具软件联合设计的流程和一般方法如图1。
图1 基于MATLAB、DSP Builder和Quartus II等工具完成设计的流程
设计流程有自动流程和手动流程两种,本文采用手动设计流程的方法。关于工具软件,Matlab是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。DSP Builder是一个系统级(或算法级)设计工具,它架构在多个软件工具之上,并把系统级(算法仿真建模)和RTL级(硬件实现)两个设计领域的设计工具连接起来,都放在了Matlab/Simlink图形设计平台上,而将Quartus II作为底层设计工具置于后台,最大程度地发挥了对种工具的优势。Quartus II是Altera推出的EDA设计工具。
1.FIR滤波器的基本结构和设计方法
1.1 FIR滤波器的基本原理
FIR(Finite Impulse Response:有限冲击响应)滤波器在数字通信系统中,被大量用于以实现各种功能,如低通滤波、同代选择、抗混叠、抽取和内插等。
图23阶FIR滤波器结构
对于一个FIR滤波器系统,它的冲激响应总是有限长的,其系统函数可以记为:
(1-1)
最基本的FIR滤波器可用下式表示:
(1-2)
其中是输入采样序列,是滤波器系数,L是滤波器的阶数,表示濾波器的输出序列。也可以用卷积来表示输出序列与、的关系。
(1-3)
图2中显示了一个典型的直接I型3阶FIR滤波器,其输出序列满足下列等式:
(1-4)
在这个FIR滤波器中,总共存在3个延时结,4个乘法单元,一个4输入的加法器。
1.2使用FDATool工具设计滤波器
设计滤波器时,通常借助Matlab来进行辅助设计,FDATool是Matlab工具箱里专用的滤波器设计和分析工具,采用交互式的设计环境,可以很方便的设计出几乎所有常规滤波器。利用FDATool工具设计一滤波器,参数如下:
○低通滤波器。
○采样频率Fs为48KHz,通带截止频率Fc为10.8KHz。
○输入输出位宽均为9位(最高位为符号位)。
(1)打开Matlab的FDATool工具
点击Matlab主窗口下方的“Start”开始按钮,选择“ToolBox”“Filter Design”→ “Filter Design & Analysis Tool”(FDATool),打开FDATool。
(2)选择 Design Filter
选择其中的按钮进入设计滤波器界面,再选择:
滤波器类型(Filter Type)为低通(Lowpass);设计方法(Design Method)为 FIR,采用窗口法(Window);滤波器阶数(Filter Order)定制为15;窗口类型为Kaiser,Beta为0.5;Fs 为48kHz,Fc10.8kHz。
计算出滤波器系数
(3)系数量化
计算出来的FIR滤波器系数是有符号的小数,在DSP Builder下建立的FIR滤波器模型需要一个整数(有符号整数类型)作为滤波器系数。所以必须进行量化,并对得到的系数进行归一化。
1.3阶FIR滤波器节设计
以下将设计一个系数可变的4阶FIR滤波器。对于直接I型的FIR滤波器(结构见图3)是可以级联的。也就是说,在滤波器系数可变的情况下,可以预先设计好一个FIR滤波器节,在实际应用中通过不断调用FIR滤波器节,级联起来,用来完成多阶FIR滤波器的设计。
图3 直接I型FIR滤波器结构
图4是一个直接I型的4阶FIR滤波器节的结构。为了使该滤波器节的调用更为方便,xin输入后插入了一个延时单元,3阶滤波器演变成4阶的,在由不过常数系数项z(系数项)恒为0.由于在通信应用中,FIR滤波器处理的往往是信号流,增加一个延时单元不会影响FIR滤波器处理的结果,只是系统延时增加了一个时钟周期。对于该FIR滤波器节,其系统函数可以用下式来表示:
(3-2)
由于浮点小数在FPGA中实现比较困难,实现的资源带价太大。DSP Builder中不妨在使用整数运算来实现,最后用位数舍取的方式得到结果。
图4 直接I型4阶FIR滤波器结构图
2.使用DSP Builder设计FIR滤波器
使用DSP Builder可以很方便的在图形化的环境中进行FIR滤波器的设计。图5是一个4阶FIR滤波器节的设计模型。
图5 直接I型4阶FIR滤波器模型图
利用以上设计好的4阶FIR滤波器节可以方便的搭成阶直接I型FIR滤波器,如要实现一个16阶的低通滤波器,可以调用4个4阶FIR滤波器节来实现。如图6所示是一个16阶FIR滤波器模型。
图6 16阶直接I型FIR滤波器模型
3. Simulink 模型仿真
在Matlab的Simulink中进行仿真验证。用DSP Builder设计好的模型,可以直接在Simulink进行功能级的仿真验证。图7是FIR滤波器仿真模型fir16tap.mdl,由一个10KHz和一个160KHz的正弦波作为输入,通过加法模块合成一激励源,作为16阶FIR低通滤波器的输入。
图8是仿真波形,由图可见,滤波器很好的滤除了160KHz的高频率信号,还原成10KHz的低频率信号,与输入的10KHz低频率信号相仿。
由仿真结果可知,16阶FIR低通滤波器的设计达到了设计要求。
图7设计好的16阶低通滤波器
4. Quartus II编译及仿真
将16阶FIR滤波器模型文件(*.MDL)转换为VHDL文件,再在Quartus II下进行编译、仿真及下载到FPGA器件中。
5.结束语
本文通过16阶FIR滤波器的设计也仿真,简单的介绍了使用Matlab/DSP Builder等工具软件设计滤波器的流程、方法和要点。借助Matlab/Simulink等工具,设计者无需通过繁琐的VHDL变成,而可以是一个复杂的电子系统设计变得容易直观。通过DSP Builder将Matlab和Quartus II相结合,互补不足,同时增强Quartus II的设计效率,为实际问题的处理提供捷径。
图8 simulink 仿真结果(系统级)
参考文献:
[1] 潘松, 黄继业. EDA技术与VHDL(第2版)[M]. 北京: 清华大学出版社, 2007.
[2] 黄科, 艾琼龙, 李磊. EDA与数字系统设计案例实践[M]. 北京: 清华大学出版社, 2010.
[3]Arthur B. Williams, Fred J.Taylor. 宁彦卿, 姚金科译. 电子滤波器设计[M]. 北京: 科学出版社, 2008.
[4]Miroslav D.Lutovac DejanV.Tosic Brian L.Evans著. 朱义胜, 董辉等译. 信号处理滤波器设计[M]. 北京: 电子工业出版社, 2004.
[5]黄红, 林德焱. FIR数字滤波器的FPGA实现[J]. 江汉大学学报(自然科学版), 2004 Vol.32 No.4:24-27.
[6]刘欲晓, 方强, 黄苑宁等编著. EDA技术与VHDL电路开发应用实践[M]. 北京: 电子工业出版社, 2009.
“本文中所涉及到的图表、公式、注解等请以PDF格式阅读”