现代通信信号处理发展到3G、4G时代后,每秒上百兆比特处理速度的要求对于自适应处理技术是一个极大的挑战。使用具有高度并行结构的FPGA实现自适应算法以及完成相应的调整和优化,相比于在DSP芯片上的算法实现可以达到更高的运行速度。本文分析了自适应LMS算法及其在FPGA上的实现,并进行算法结构的改进优化,利用DSP Builder在ALTEra DE2-70平台的FPGA芯片上实现相应自适应算法并下载到目标板上进行板级测试。
1 自适应LMS算法[1-2]
自适应滤波器的特点在于滤波器参数可以自动地根据某种准则调整到相应的最优滤波情况。其基本框图如图1所示。
图中,X(n)为输入信号,y(n)为滤波信号,d(n)为期望信号,e(n)为误差信号,用来调整自适应滤波权系数。自适应滤波函数H(z)的滤波参系数是通过一定的自适应算法,根据误差信号e(n)进行自动调整,目的是使得误差e(n)的模值越来越小。
自适应LMS算法表述如下:
2 算法的仿真和FPGA实现
本设计使用的工具DSP Builder是Altera公司推出的基于Altera FPGA芯片的系统级(算法级)设计工具,它架构在多个软件工具之上,并把系统级和RTL级两个设计领域的设计工具连接起来,最大程度地发挥了两种工具的优势[3]。它依赖于Matlab/Simulink进行建模和仿真,可以把建模设计文件转换为硬件描述语言文件。
考虑横向LMS算法的FPGA实现时,有两种拓扑结构可以选择。一种是直接型FIR结构,另一种是转置型FIR结构。从算法效果上来说,这两种结构是一致的,但是转置型结构的滤波部分的关键路径会更短,能够综合出更高主频的电路[4]。故在Simulink中利用DSP Builder采用转置型LMS结构(Transpose Form-LMS)进行建模,模型参数为8阶16位定点格式。
对于收敛步长因子的选取采用二进制移位的方式,只改变数据的连线,不会增加系统资源消耗和计算时间消耗。这里将迭代处理部分左移动10位,即收敛步长因子为2-10,约为0.001。Simulink中,仿真信号为模值等于1的正弦波叠加方差为0.01的高斯白噪声,建立自适应噪声对消模型,滤波情况如图2所示。