
自适应滤波器FPGA的实现.docx
10页图1 LMS算法实现的原理框图根据LMS算法的计算过程完成的功能,在FPGA设计实现时, 模块和控制模块其模块框图如图2所示可以主要分为FIR滤波器模块、误差计算模块、权值更新模块、权值存储LMS自适应滤波器的算法中,主要是小数的加法和乘法运算, 最高位是符号位,其次是3为整数位,最后12位小数比如,要把所有小数化为16进制数例如,N阶FIR滤波器的系数中,我们规定1.125-1400H,0.75-C00H运算中,所有权值系数均按此方法处理参考信号血图2自适应滤波器FPGA实现模块框图3. 自适应滤波器在FPGA中的具体实现 3.1 N阶FIR滤波器模块的设计FIR滤波器是数字滤波器的一种,它的输出y(n)可以用式(1)表示:尹何二Y就广)亦7)差分方程:(1)其中:N是FIR滤波器的抽头系数;x(i)表示第i时刻的输入样本;h(i)是FIR滤波器的第i级抽头系数H(2)= +... +a W_1FIR滤波器的单位脉冲响应h(n)是一个有限长序列,因此系统函数为:为了节约FPGA资源,提高利用率,这里主要介绍采用串行乘加的实现方法3.2主要的模块组成及其功能主要采用VHDL硬件描述语言在QUARTUS II平台上编程实现,程序框图如图3所示。
TJ-in图3 HR fl块VHJL实现程序惟图FIR滤波器的输入主要分为权值系数输入和数据输入Din是A/D转换后的输出信号,字宽为12位,其中1位符号位,10位精度位,将 这个信号存储在深度为N的SRAM中作为N阶FIR滤波器的输入;FIR的权系数Coeffs•存储在ROM中,字宽为16位,其中最高1位 为符号位通过使用状态机输出地址信号控制读SRAM中的Xn和ROM中的系数Wn,复用12x16的乘法器和加法器来实现乘加运算 当N阶乘加运算做完后,输出一个数据输出有效信号yvalidNewt信号来自于A/D,表示新一个数据转换好,可以进行下一次运算在该设计中,FIR滤波器的文件可以采用原理框图形式设计,结构简单明了而输入信号的延时输出和控制模块采用VHDL设计乘法 器和D触发器都直接使用QUARTUS II自带的库文件• 输入信号的延时输出模块实现功能:完成A/D转换后的数据通过不同的触发器完成N阶延时该延时部分主要采用D触发器实现了 8阶信号延时及存储在控制信号newt作用下进行延时存储,A/D转换器每采样一次,延时器就顺 延一位这里,Din是A/D输出信号Xn是输出信号在地址线sel的控制下输出一位作为乘法器的输入。
地址信号sel由控制模块产生• 控制模块实现功能:本模块主要是控制从数据输入模块(SRAM中)和权系数输入模块(ROM中)读入数据输入信号和系数作为乘法器的输入, 同时控制累加器,并产生输出有效信号yvalid主要采用状态机来设计该模块本模块是自适应滤波器设计的核心部分该模块的主要功 能有:①初始化各模块;②产生控制信号,控制每个模块完成特定的功能;③协调各个模块的操作,使系统局部以流水线方式、整体串 行方式工作• 误差计算模块实现功能:该模块主要是计算FIR滤波器输出和期望值之间的误差根据上面FIR滤波器输出结果可知,当输出信号yvalid有效时,Dout输出结果,这时可以通过使用一个在next信号控制下的减法器就可 以实现误差计算了• 权值计算及存储模块在权值计算模块中,为了计算方便,可以设u=1/1024即u=04H,这样只需要对误差计算模块输出的误差进行移位运算即可以实现,从而 省掉了使用乘法器,节约了大量的FPGA资源,并且提高了计算速度计算2ue(k)x(k)时可以先将x(k)右移11位,再使用乘法器与e(k) 相乘得出权值变量根据设计流程,该模块的功能框图如图4所示err图4权值计算及存储模块功能框图权值系数存储在两个RAM中,两个RAM交替读写。
当RAM1处于读状态,输出当前的权值系数,作为FIR滤波器的输入,同时用来更 新新的权值更新的权值系数则存储在RAM2中如此交替轮换,完成系数的更新和存储功能,这样就可以解决RAM同时需要读取和 更新权值系数的问题注:图4中的RAM1和RAM2的位置是交替变换使用的)4. 自适应滤波器的仿真验证4.1仿真实现自适应滤波器模块的测试要求全面性和有效性在测试仿真验证时不仅要验证控制接口的有效性,还要验证算法的有效性模块测试的 软件环境是Quartus II图5自适应滤波器模块测试框图由于Quartus II软件自带的仿真工具对复杂设计的性能做评估时,会碰到许多困难由于在仿真时需要手工设置输入节点值,对于我们设 计的自适应滤波器,输入的数据量大,而且必须经过严格计算得到,很难由手工输入在这里我们结合使用matlab和Quartus II来进行仿 真测试,系统测试框图如图5所示利用Matlab来产生复杂的仿真输入信号,再在Quartus II中进行仿真,输出仿真信号,再利用matlab 进行信号波形分析4.2仿真结果整个程序是在Quartus II平台上实现的设计中信号输入和参考输入都是12位,输出是16位。
程序设计中u固定为1/1024整个程序综 合于APEX20K系列的EPF20K300EQC240-1芯片上,使用的资源为:3347个LEs,占29.1%,3768个Memory,占2.5%其时钟频率可 达到23.6MHz由于在系统设计中,FPGA实现的功能比较多,因此在系统设计选型时,留有的余量比较大但是,在该设计中,采用了 串行的设计方法,并不是直接使用乘法器,兼顾了速度与资源,所以性能上不是最优的对设计的自适应滤波器进行综合仿真,结果如 图6所示n s wr> :«$^■II■•ri-T is-* 3 kZ OB uA3V«lw> ■*w A您——山I 0*回 IllkV LA0 口g出A飪rraldU-I ISOoIFnliJI 4MBtI UiiIL I'A—B miA KMKIXlOdMQStwtSulrLTLTLn nnnnnn n mn 门「L「LrLrLrLrLnrL-LrLrLrLTLrLrLrLrL-iLJ-1n.图6自适应滤波器在FPGA中实现的仿真结果由于在Quartus II中进行仿真时,仿真结果都是以二进制或十六进制表示的,不利于观察自适应滤波器的滤波效果将仿真结果转换成Table 文件输出,从Table文件中提出数据,将数据导入到matlab中,画出图形如图7所示。
>■ 丁 <'■ I 门 归 订f SiT T2 1 o图7自适应滤波器仿真结果5. 小结由图7中可以看出,在功能上基本实现了自适应滤波器的功能,但是滤波的效果不太好,仍然存在着毛刺这主要是因为在该设计中, FIR滤波器的阶数太小,而且在计算中使用的是定值的u,出现了较大的舍入误差不过这种方法的优点就是简单容易实现,而且节约了子带分解的自适应滤波器的FPGA实现2010-06-02 23:00:25 来源:维库开发网关键字: 子带分解 自适应滤波器 FPGA0 引言自适应滤波器已经广泛应用于信道均衡、回声取消、系统识别、频谱估计等各个方面 基于子带分解的自适应滤波在提高收敛性能的同时又节省了一定的计算量基于子带分解的 自适应滤波是先将输入信号与参考信号经过分解滤波器组进行子带分解、抽取、子带自适应 滤波、内插、通过合成滤波器组得到输出信号基于子带分解的自适应滤波器的优点:(1) 由于对信号的抽取,使完成自适应滤波所需的计算量得以减少;(2) 在子带进行自适应滤波使收敛性能有所提高l 基于子带分解的自适应滤波结构基于子带分解的自适应滤波,其时域结构如图1所示将输入信号x( n)和参考信号d(n) 分别进行子带分解,抽取,在子带上进行自适应滤波,再将子带上的估计信号yO(n)和y1(n) 经内插和合成滤波器组得到最后的合成信号。
其中滤波器W00(n)和W11(n)是两个子带上 的自适应滤波器,而W01(n)和W10(n)表示子带间自适应滤波器这是由于滤波器组均是 FIR 滤波器,不可能有锐截止的理想特性,只能以长度为代价来换取近似的特性;这时在严 格采样下得到的子带信号必然有混叠,需加入子带间滤波以消除其影响这里的子带自适应滤波器采用基于NLMS算法自适应滤波器NLMS算法和LMS算法相比虽然计算量稍有 增加,但可使得自适应滤波器收敛速度大大提高2双通道滤波器组的设计本文采用的分析和综合滤波器之间的关系如下:H1(z)=H0(-z), GHz)=-2H0(-z), G0(z)=2H1(-z)由上述表达式可知设计的关键是设 计HO(z),只要HO(z)确定,H1(z), G0(z),G1(z)也可确定本文采用等波纹逼近设计法进 行滤波器设计该方法设计的滤波器呈现等波纹频响特性等波纹逼近设计法设计的滤波器 具有如下优点:(1) 由于误差均匀分布于整个频带,对固定的阶数N,可以得到最优良的滤波特性;(2) 通带最平坦,阻带最小衰减达到最大Matlab集成了一套强大的滤波器设计工具FDATOOL,可以完成多种滤波器的设计、分 析和性能*估。
本文中FPGA硬件实现部分用到的4个FIR滤波器的频率特性曲线见图20 01 02 D.3 0.4 0 5 0 启 07 0.8 0.9S 2目个滤波黑的幅频特性脚録3系统建模与仿真DSP Builder是Altera公司推出的一个面向DSP开发的系统级工具,它是作为Matlab 的一个Simulink工具箱(ToolBox)出现的DSP Bui-Ider作为Simulink中的一个工具箱,使 得在使用FPGA设计DSP系统时完全可以通过Simulink的图形化界面进行,只需简单地进 行DSP Builder工具箱中的模块调用即可图3中的基于子带分解的自适应滤波器模块框图系统由分析滤波器子系统hOO, h01, h10, h11,综合滤波器子系统gOO, gO1、抽取,插值,加法,减法器,自适应滤波器等模 块组成hOO和h10是完全一模一样的低通滤波器,hO1和h11是完全一模一样的高通滤 波器hOO, h01, gOO, gO1的幅频特性曲线见图2hOO对应图2中的hO, hO1对应图中 的 h1, gOO 对应图中的 gO, gO1 对应图中的 g1Subysteml, Subyst-em2, Subystem3, Subystem4是自适应滤波器。
Subystem2, Subystem3自适应滤波器的阶数是Subysteml, Subystem4阶数的1 / 20期望信号由sine wavel模块提供,输入信号由Sine wave2和 Random Bitstream叠加在一起的信号组成系统所需的模块都是直接调用DSP builder中的 模块Subystem2是7阶NLMS算法自适应滤波器,其框图见图4如果调高提高收敛速度, 则可增加延迟模块、自适应子系统模块,加法器模块即可,但需消耗更多的硬件资源ni2叩Lnl■ c~ohkiL 匚 mi,出自适应滤波器模块主要由延迟单元,权值更新子系统、加法器模块,乘法器模块组成 它是将抽取过后的信号进行自适应滤波。












