您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于CPLD的FIR数字滤波器的设计与仿真作者尹晓琦殷奎
基于CPLD的FIR数字滤波器的设计与仿真作者:尹晓琦殷奎喜来源:微计算机信息摘要:使用查找表作为滤波器的硬件实现算法,采用硬件描述语言(VHDL)和层次化、模块化的设计方法,对整个数字滤波器进行多层次功能模块的划分,完成了各个层次模块的设计,并将所有模块进行组合,设计了并行和串行有限长脉冲响应(FIR)数字滤波器。使用MAX+PLUSII软件进行各层次功能模块的设计输入、设计处理和校验,用波形编辑器绘制了仿真的时序波形图。将事先编写好的VHDL程序编译后,下载到目标器件上。整个设计过程在计算机上调试,灵活方便,设计周期很短。关键词:FIR数字滤波器;并行;串行;CPLD;查找表1引言数字滤波器是一种广泛采用的信号处理部件,在工程实践中,往往要求对信号处理要有实时性和灵活性,而已有的一些软件和硬件实现方式则难以同时达到这两方面的要求[1]。随着复杂可编程逻辑器件(CPLD)和EDA技术的发展,使用CPLD来实现数字滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用CPLD器件来实现数字滤波器。2有限冲激响应(FIR)数字滤波器的硬件设计FIR滤波器的硬件设计是指利用设计方法求出冲击响应h(n),并把它映射到硬件中去,与输入数据进行卷积得到输出数据,从数据的输入到进行卷积都应用硬件来实现[2]。2.1查找表实现卷积运算方法有限冲激响应(FIR)滤波器的基本结构如图1所示,由一条均匀间隔抽头的延迟线上对抽头信号进行加权求和构成。数学表达式为:(式1)图1FIR滤波器直接实现形式FIR数字滤波器涉及到大量的卷积运算,使用常规硬件实现时会占用大量的资源。我们可以通过充分利用FLEX10K系列芯片所具有的查找表(LUT)结构,将卷积运算转化为查表移位求和来实现[2]。用查表法实现卷积运算时,有并行和串行两种结构。在并行结构中,LUT的数量根据x(n)的数据宽度决定。一位对应一个LUT,这样速度达到最大,在FLEX10K的结构中提供了两条专用数据通道,即进位链和级联链,通过级联链相邻的LUT可以用来并行计算函数的各个部分。图2FIR滤波器的层次结构FIR数字滤波器的层次结构图如图2所示,控制器模块(Control)的作用是产生控制信号对延迟、并串转换、抽头系数、移位相加模块进行控制,以使它们按一定的形式组合在一起实现滤波器功能[3]。控制器模块在接收到A/D转换结束信号后,依次产生移位寄存器使能信号、并行到串行转换的装入信号、移位相加的装入信号、加减控制信号和滤波结果输出信号等各种控制信号,使上述各个模块按照一定的时序进行操作,从而完成滤波功能。时延环节模块(Shift-reg)的作用为使A/D转换后的数据通过不同的触发器,进而产生不同的延迟。并/串转换模块(p-s-ff)的作用是将通过时延模块产生的不同延迟分别同时转换为查找表的串行地址,提供给抽头系数模块。抽头系数模块(Sub-rom)将抽头系数的各种组合固化在ROM中。它的地址输入端接收并/串转换模块的串行输出,然后查表得到卷积的中间数据。移位相加模块通过将中间数据移位相加而实现两个数相乘的功能。2.2并行FIR数字滤波器的设计并行FIR滤波器指的是输入数据是并行的,然后并行的对这些数据进行处理,以便能够达到一个时钟完成对一个输入数据的处理。下面以8阶的FIR滤波器为例对FIR的设计作详细的说明。由图3可知并行FIR滤波器可以分成三大部分,它们分为并行移位寄存器组、加法器组和并行矢量乘法器。1、移位寄存器组:移位寄存器组是起着延迟器的作用,输入数据x(n)经过每个移位寄存器都要有一个时钟的延迟。2、加法器组:根据线性FIR滤波器的对称性,把经过延迟的、相对称的冲击响应相对应的输入数据相加,输出为得到和s(n)。3、矢量乘法器:把由加法器组输出的对称的输入值之和与冲击响应h(n)相乘,然后把它们的积相加,并把它们的和输出,该输出值即为该滤波器的输出值。图38阶并行FIR滤波器由于移位寄存器组要求每个时钟把一组数据向下移动一位,而FLEX10K器件中的逻辑单元具有同步使能的可编程触发器。所以移位寄存器组中每个移位寄存器都设计成一组D触发器并联,数目为输入数据的有效位数。这些D触发器共用一个时钟脉冲,每个时钟输出一组数据,使每个移位寄存器实现一个延迟。加法器组结构非常简单,只是由n个加法器并行组成。根据线性FIR滤波器的对称性可知n=[N/2],这里N为FIR加法器并滤波器的阶数。并行矢量乘法器是这个设计的重要部分,由于它占用这个系统的大量的资源,它的设计是否优化决定了这个系统设计的好坏,甚至决定是否可行。2.3串行FIR滤波器的设计图4串行滤波器结构示意图串行FIR滤波器的硬件设计与并行滤波器硬件实现采用的理论基本相同,只是在实施上对输入数据是按位进行处理,而并行滤波器对输入数据的所有位进行同时处理。串行滤波器采用流水线技术,流水线的级数与并行滤波器相同,只是每个子任务的执行时钟数不同[4]。如图4,串行滤波器主要由串-并寄存器、8×1移位寄存器、串行加法器、移位累加器、结果锁存器、控制模块组成[5]。串行FIR滤波器的工作过程:首先由控制模块输出一个plsr-load信号,当并-串寄存器收到plsr-load信号时,开始在每一个时钟周期内把输入数据x(n)从最低位开始输出到移位寄存器中,由于串行FIR滤波器的硬件实现中也使用了符号扩展位,在并-串寄存器中就进行了符号位的扩展,例如当输入数据为7位二进制数时,移到移位寄存器就为8位,最后一位为符号扩展位,移位寄存器把输入对称的数据移入串行加法器中相加,得到的结果与其他串行加法器输出的结果组合在一起,作为查找表的输入,所以从查找表中得到数据为该位所对应的部分积,把这个部分积输入到移位累加器中累加后再把累加和输入到结果锁存器中输出。2.4FIR数字滤波器的仿真设各参数如表1所示。表1模拟参数设置序号参数名称参数数据1阶数82输入字长73参数字长84参数h(0)0.625=(01010000)B5参数h(1)0.5=(01000000)B6参数h(2)-0.875=(10010000)B7参数h(3)-0.75=(10100000)B图58阶并行FIR滤波器的时序仿真图图68阶串行FIR滤波器的时序仿真图8阶并行和串行FIR滤波器的时序仿真波形分别如图5和图6所示,输入数据和输出数据采用补码形式的十六进制形式表示,由图可见8阶并行和串行FIR滤波器滞后时钟数分别为9和22。输入和系数的小数点定在次高位之前,输出数据的小数点定在左数第四位之前。为计算方便这里设定输入数据为固定的数:(24)H=0.28125,将数据代入式1计算该滤波器的输出结果,模拟结果和计算结果的对比如表2所示。表2模拟结果和计算结果的对比序号模拟结果计算结果1(05AO)H=0.17578120.175781252(OA20)H=0.31640620.316406253(0240)H=0.07031250.07031254(FB80)H=-0.140625-0.1406255(F4CO)H=-0.3515625-0.35156256(FCEO)H=-0.59765625-0.597656257(F160)H=-0.45703125-0.457031253结束语基于CPLD的FIR滤波器的硬件设计过程包括:首先根据系统对FIR滤波器的截止频率、通带衰减、阻带衰减等指标的要求,用窗函数法或频率抽样法等确定冲激响应,再把冲激响应量化,存储到查找表中,通过编译事先编写好的VHDL程序,下载到相应的器件上。创新点在于使用查找表为滤波器的硬件实现算法,采用硬件描述语言(VHDL)和层次化、模块化的设计方法,对整个数字滤波器进行多层次功能模块的划分,并完成了各个层次模块的设计,并将所有模块进行组合,设计了并行和串行有限长脉冲响应(FIR)数字滤波器。整个过程在计算机上调试,灵活方便,设计周期很短。参考文献:[1]丁玉美,高西全.数字信号处理.第一版.西安:西安电子科技大学出版社,2005,184[2]李国洪,沈明山.可编程器件EDA技术与实践.第一版.北京:机械工业出版社2004:54-55[3]齐海兵,平冠军,陶文超.无限冲激响应滤波器的设计与实现.微计算机信息,2006,22(10-2):84-85.[4]华容.信号分析与处理.北京:高等教育出版社,2004(7):176-77[5]陈云洽,保延翔.CPLD应用技术与数字系统设计.北京:电子工业出版社,2003(5):290-297
本文标题:基于CPLD的FIR数字滤波器的设计与仿真作者尹晓琦殷奎
链接地址:https://www.777doc.com/doc-50975 .html