关键词: 声学;窄带ANC;FPGA;并联FxLMS算法;资源复用
中图分类号: TN98;O422.8
文献标识码: A
DOI:10.16157/j.issn.0258-7998.170182
中文引用格式: 姜宇程,关添,王佳飞. 窄带噪声主动控制系统的FPGA实现[J].电子技术应用,2017,43(9):61-63,67.
英文引用格式: Jiang Yucheng,Guan Tian,Wang Jiafei. The FPGA implementation of narrowband active noise control system[J].Application of Electronic Technique,2017,43(9):61-63,67.
0 引言
噪声污染广泛存在于工业生产和日常生活中,而其中的周期性噪声,如发动机、压缩机、风扇及螺旋桨等旋转或往复设备发出的噪声也十分常见[1]。由于其噪声能量集中分布于特定的频带,所以被称为窄带噪声。随着电子技术的进步,主动噪声控制技术逐渐发展,相比于传统的被动噪声控制,主动噪声控制具有成本低、灵活性高等优点[2]。而且窄带噪声不同于宽带噪声,其频率数值往往可以通过非声学传感器采集得到,进而避免了声反馈问题,更适合于采用主动控制的方法[3]。
目前主动噪声控制系统工程实现时主要采用的是DSP处理器,其优点在于相关驱动比较成熟并且芯片成本较低[4]。但是随着窄带噪声频率的提高,需要的音频采样率也要提高,因此计算量会相应增加,DSP的计算速度就会成为瓶颈,所以目前的主动噪声控制系统所应用的场景都是低频噪声[5]。为了能够对高频噪声进行主动控制,同时也为了应对多频率、多通道情况下计算量成倍增加的情况,本系统采用并行计算能力较强的FPGA作为核心处理器,并对并联结构的窄带前馈FxLMS算法进行了工程实现与实际测试。此外考虑到并联结构算法对于乘法器资源的消耗大,本文采用乘法器资源复用技术[6],极大降低了系统成本,便于系统的实际工程应用。
1 FxLMS算法分析与改进
1.1 窄带前馈FxLMS算法
前馈ANC系统有两种实现方法,其主要区别在于参考信号的来源[2]。虽然用声学传感器采集初级噪声作为参考信号的算法可以针对宽带和窄带噪声进行主动控制,但是声反馈问题会严重影响算法的稳定性。所以本文设计的系统只针对窄带噪声信号,从而可利用加速度计、转速计等非声学传感器采集并计算出噪声信号主要频率,进而在系统内部生成参考信号。窄带前馈FxLMS算法的结构如图1所示。算法主要包括参考信号的产生、次级声通道的离线辨识以及LMS自适应滤波3个部分[7]。
图1中W(z)代表FIR滤波器,P(z)代表初级声通道,S(z)代表从次级噪声数模转换到传声器采集到音频数据之间的次级声通道,[8],为了补偿次级声通道的影响,FxLMS算法需要得到次级声通道S(z)的M阶FIR估计 。假设次级声通道是时不变系统,则可以采用离线辨识的方法。图1中虚线框内即为系统所采用的离线辨识模块。稳定后得到次级声通道的传递函数为:
1.2 并联结构FxLMS算法
在实际中,窄带噪声往往还包括其基频的高次谐波或者其他能量较高的频率分量。为了解决这个问题,可以使上一节中的正弦信号发生器包含多个对应的频率分量,这样做的优点是算法结构简单、资源消耗低。但同时会带来一个严重的问题,即当噪声中各频率分量差距较大时,同一个步长因子μ无法使所有频率达到最佳的收敛状态,会产生振荡或者不收敛的情况。而当各频率分量差距较小时,就需要自适应滤波器的阶数足够长,以满足相邻频率的高分辨率,这会导致收敛速度慢、量化误差大等问题[2]。所以,解决这个问题最好的办法是单独处理各个频率分量,即采用并联结构的FxLMS算法。算法结构如图2所示。
自适应算法的系数调整公式为:
在并联结构的FxLMS算法中,不同频率的正弦参考信号由其对应的自适应滤波器分别处理。所有滤波器输出信号相加后作为次级噪声信号,用于抵消初级噪声。通过这种方式将噪声中不同的频率成分分开处理,系统的稳定性和收敛速度都会得到明显提高,同时增加了系统应用的灵活性。相比于一般结构的FxLMS算法,并联结构算法会成倍地增加对系统资源的占用,但是这个不足可以利用系统FPGA实现过程中采用的资源复用技术克服。
2 ANC系统的搭建与实现
系统采用FPGA作为信号处理器的原因有两点。首先是将算法进行硬件实现后,其运算速度更快,利于搭建实时处理系统;其次利用FPGA并行计算的优点,通过简单的复制,即可将现有ANC系统扩展为多通道,使系统可以应用于更多的实际场景。然而FPGA在实现数字信号处理算法,尤其是滤波器等乘加运算较多的算法时,其内部的乘法器资源消耗会很大,而选择乘法器数量多的FPGA型号会极大提高系统成本。所以为了提高ANC系统的实用性,需要对FPGA内部的乘法器进行复用。
2.1 乘法器资源复用技术
考虑到系统中FPGA的工作时钟为50 MHz,而音频模块的采样时钟为32 kHz,满足系统时钟频率远大于数据时钟频率的条件。所以采用将同一时刻并行进行的乘法运算部分转换为串行计算的方法对乘法器进行复用,即所谓的时间复用。时间复用的时序过程如图3所示。
假设有N个并行的阶数为M的滤波器,则当数据时钟上升沿到来时,需要计算出N×M个乘法结果,即需要N×M个乘法器。而如果采用复用技术,乘法器在数据有效后接受控制器的统一调度,逐一计算各滤波器在该级的乘法运算,只要满足两次乘法运算的时间间隔大于乘法器输出结果的时间,则N个乘法器串行计算的输出结果正确。这样并行滤波器所消耗的乘法器数目就会降为M个,大大节约了乘法器资源。
由于本系统是对相同类型的算法模块进行乘法器复用,所以可以采用简单的计数器实现调度控制,即在数据有效后对系统时钟开始进行计数,在不同的计数值进行各算法模块的乘法运算,同时在不同的计数值输出各乘法运算结果。
2.2 系统分析
本文所实现的ANC系统所完成的功能是对环境噪声中3个主要频率分量进行主动控制,达到整体降噪的目的。降噪算法采用3个并联的FxLMS滤波器实现,如果不采用资源复用技术,除了次级声通道辨识以外,算法还需要3个128阶FIR滤波器以及3个64阶LMS自适应滤波器,理论上共需要960个乘法器。由于采用了复用技术,所以系统算法包括一个128阶的次级声通道辨识模块、一个三输入三输出的128阶FIR滤波器和一个三输入三输出的64阶LMS自适应滤波器,只需要320个乘法器即可,相比复用前节约了2倍的乘法器资源。系统采用的FPGA芯片为Altera公司Stratix III系列中的EP3SE260F1152C2,系统实现后所消耗的资源及比例如表1所示。
由表1可以看出,FPGA的资源可以满足算法要求,经调试后系统整体可以正常工作。
3 结果分析
对所搭建的ANC系统进行实际应用测试,测试所采用的初级噪声为音箱发出的窄带噪声信号,其主要频率为1 000 Hz、2 000 Hz和3 000 Hz。ANC系统工作之前,拾音器采集到的声音为初级噪声,ANC系统工作之后,拾音器采集到的声音为初级噪声和次级噪声叠加以后的误差噪声信号。通过将ANC系统工作前后拾音器所采集到的信号的时域和频域进行对比,即可以判断预期的系统功能是否实现。
对参考信号频率与噪声频率基本相同的情况进行测试,即参考信号的频率成分1 000 Hz、2 000 Hz和3 000 Hz。图4显示了ANC系统工作前后的噪声信号时域和频域的对比。
定义收敛时间为时域波形中的误差噪声信号幅值降低到初级噪声幅值的20%以下的时间,对噪声时域波形的分析可以得出在无频偏的情况下,ANC系统的收敛时间为12.5 ms。分析频域图可以得出,无频偏情况下系统对于噪声中1 000 Hz、2 000 Hz和3 000 Hz的频率分量分别可以达到15.5 dB、14.3 dB和11.0 dB的衰减。基于DSP的FxLMS算法的系统在汽车发动机噪声主动控制测试的结果为13.5 dB[10],可以看出本文所实现的系统在降噪效果和功能扩展方面具有明显优势。
4 结论
本文提出了一种基于FPGA的窄带噪声主动控制系统的设计方法。该系统克服了传统ANC系统只能针对低频窄带噪声控制应用的不足,使其更适于实际应用。此外,资源复用技术的应用大大减少了系统对于FPGA乘法器资源的消耗,降低了系统成本。由于FPGA的并行性特点,可以通过模块复制将系统应用于多频率多通道噪声主动控制的环境。
通过对系统的实际测试验证了系统噪声控制的有效性。通过与不同噪声频率分析算法配合,可以将该系统应用于多种窄带噪声的控制领域。例如对于汽车车内发动机噪声的主动控制,可以通过实时采集汽车发动机信号,分析出汽车发动机噪声主要频率,进而利用本文所提出的系统对其进行主动控制。但是本文系统自适应算法的内部参数,包括滤波器阶数以及算法步长因子等是通过仿真实验确定的,并没有形成一个统一的选择方法,还需要后续的研究加以完善,以扩大系统的实际应用范围。
原文标题:【论文精选】窄带噪声主动控制系统的FPGA实现
文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论