基于FPGA的高速自适应滤波器的实现
扫描二维码
随时随地手机看文章
现代通信信号处理发展到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所示。
利用Signal Compiler工具将模型转换成硬件描述语言。用Quartus对转换后的HDL进行综合、布线布局,得到52.02 MHz(19.223 ns)的系统频率表现。对EP2C70-F896C6芯片上单个乘法器进行测试,得到一个乘法运算需要的时间滞后为13.8 ns。考虑上面的LMS算法,一次迭代过程至少消耗28 ns以上的时间。这说明,该LMS系统只能运行在35.7 MHz(28 ns)以下。如果频率超过35.7 MHz,虽不会造成器件时序违规,但在运行时序上就不会满足标准LMS算法。
3 算法的改进和FPGA实现
3.1 驰豫超前流水线优化
通过驰豫超前流水线技术改进的TFLMS算法称为TFDLMS(TF-Delay-LMS)算法,改进的算法结构如下[4]:
改进结构的特点是,在式(6)权系数更新中,误差与输入都不使用当前时刻的数据,而是采用过去的数据来驰豫近似计算。式(5)和式(6)在这种情况下可以同时进行流水计算,斩断了原先串行的关键路径,提高了效率。对驰豫寄存器m的个数需要合理的选取,若m太大,则对原系统影响较大;若太小则不易后续时序重构的优化,这里取m=4进行Matlab仿真。仿真结果如图3所示。
如图3所示,TFDLMS算法在收敛初期由于误差e随着滤波的进行改变一般比较大,所以在收敛过程中的性能会稍次于TFLMS算法。在稳态的时候,由于误差e在此刻一般比较小,所以近似手段对稳态的影响会比较小。考虑到改进后TFDLMS的高度并行的处理结构,在收敛以及稳态表现上的微小影响的代价是值得的。
在Simulink中建模,将TFDLMS模型转换为HDL,在Quartus中综合布线布局,得到122.79 MHz的频率表现。由于TFDLMS采用驰豫流水计算,已经是近似计算,因此无需考虑标准LMS算法的严格串行计算时间问题,此时的系统工作频率可以认为是采样吞吐频率。显然,改进后的算法结构系统吞吐频率有很大的提高。
3.2 时序重构优化
时序重构又称重定时(Retiming),是一种在保持系统功能不变的前提下改变系统延迟数目和分布的方法[5]。时序重构的映射等式定义为:
[!--empirenews.page--]
由于重构后每个信号路径上都没有负延时情况,根据时序重构原理的性质,这个重构映射是合理的、稳定的[5]。可以看到,合理地选取映射规则对电路进行时序重构,可以斩断关键路径,提高系统运行速度。这里,重构后的关键路径为一个处理单位。
对重构后的算法进行建模、综合、布线布局,得到182.15 MHz的频率表现力。显然,重构后的TFRDLMS算法结构的运行频率较于以往有很大的提升。
3.3 变步长优化
前面的设计都是采用固定步长来处理迭代信号。如果采用变步长来处理,在收敛初期误差e较大时采用较大的步长,则可以加快收敛速度;而在稳态时误差e很小时采用较小步长,则可以降低稳态失调。考虑到常用的功率归一化变步长方式的计算复杂度问题,本设计选用简单的逻辑判断移位来进行变步长操作。
DSP Builder中提供了嵌入外部设计的HDL模块的功能。用Verilog在外部写好关于逻辑判断移位的HDL,导入HDLImport模块。对变步长的TFRDLMS模型进行仿真,固定步长TFRDLMS算法进行对比,结果如图5所示。
变步长算法适当地调整了收敛速度与稳态误差的矛盾,它的收敛速度要快于固定步长的模型,而且稳态特性也不会因此变差。改变后得到的系统最高频率为182.78 MHz。显然,加入这种简单的逻辑判断变步长模块,并没有对电路的关键路径造成影响。表1为以上设计过程的综合结果。
3.4 板级测试
SignalTap是Quartus软件中的在线嵌入式逻辑分析仪模块,利用它可以方便地测试设计结果的实时逻辑时序功能。利用DDS技术在FPGA中设计一个正弦波发生器模块以及噪声发生器模块作为测试信号出入。在Quartus中建立一个测试工程,利用芯片内部的PLL生成测试运行的频率和SignalTap采样频率。SignalTap逻辑分析仪采样频率使用最高的250 MHz,将测试频率设为125 MHz,并在工程中加入测试总模块(DDS信号+变步长TFRDLMS)。综合布线布局后下载到DE2-70上,用SignalTap观测信号如图6所示。实验结果表明,设计的电路可以稳定地运行在百兆以上,满足高速自适应运用的需求。
FPGA以其高效的硬件特性在信号处理方面有着越来越多的应用。本文提出的一种变步长的TFRDLMS算法结构的改进方法,并以自适应噪声对消为模型进行算法仿真。仿真结果表明改进算法结构相比较改进前的算法在滤波性能上只有少许下降,但是却能够很好地在信号流图上切割关键路径以利于流水实现。最后以8阶16位定点格式为背景参数对变步长TFRDLMS算法进行FPGA建模实现并进行板级功能测试。实验结果表明,改进算法结构可以很好地应用于高速自适应信号处理的场合。
参考文献
[1] 丁玉美,阔永红,高新波.数字信号处理-离散随机信号处理[M].西安:西安电子科技大学出版社,2002.
[2] HAYKIN S.Adaptive filter theory[M].4th ed.NJ:Prentice Hall,2002.
[3] 潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003.
[4] YI Y,WOODS R,TING L K,et al.High speed FPGA-based implementation of delayed-LMS filters[J].Netherland:Journal of VLSI Signal Processing,2005(39):113-131.
[5] PARHI K K.VLSI数字信号处理系统-设计与实现[M]. 陈弘毅,白国强,吴行军,等译.北京:机械工业出版社,2004.