oise
噪声控制
Control
文章编号:1002-8684(2008)04-0072-04
基于FPGA自适应有源降噪耳机系统的设计・实用设计・
李
欣,冯
燕,冯
勇
(西北工业大学电子信息学院,陕西西安710072)
摘【
要】介绍了反馈式自适应有源降噪耳机系统的原理,设计并实现了基于ALTERA公司DE2开发板的FPGA
自适应有源降噪耳机实时系统。系统中的自适应滤波器选择FIR滤波器结构,采用收敛速度较快且适合硬件实现的NLMS算法以满足音频信号实时性的要求。实验结果表明,采用FPGA实现自适应有源降噪耳机系统是有效的。关键词】自适应滤波器;现场可编程门阵列;NLMS算法【
中图分类号】TB53【
文献标识码】A【
DesignandImplementationofAdaptiveActiveNoiseCancellationHeadsetBasedonFPGA
LIXin,FENGYan,FENGYong
(SchoolofElectronicsandInformation,NorthwesternPolytechnicalUniversity,Xi′an710072,China)
【Abstract】Thedesignandimplementationofafeedbackadaptiveactivenoisecancellationsystemforheadphone
applicationispresented.Thereal-timesystemofnoisecancellationheadsetisimplementedusingDE2developmentboardofALTERAcorporation.
Inordertomeetthereal-timerequirementofaudiosignal,
FIRfilterstructure,
Finally,
the
andNLMSalgorithmwhichconvergesatahighrateandsuitshardwareareusedinthissystem.resultindicatesthattherealizationofthissystemiseffective.
【Keywords】adaptivefilter;FPGA;NLMSalgorithm
1
引言
随着消费数码产品的发展,越来越多的人选择使
与DSP相比,FPGA的优势在于其设计具有更大的灵活性,并且其并行计算的特点更容易满足实时性要求且更适合立体声耳机的左右两路数据的并行处理。当产品需要大批量生产时,为了有效控制成本,通常采用专用集成电路ASIC,而FPGA常作为ASIC设计的快速原型系统,因此,研究自适应有源降噪耳机的FPGA实现具有重要意义,笔者正是基于此对AANC耳机系统完成了FPGA的设计实现工作。
用耳机随身收听高品质音乐,但由于城市噪声的干扰,收听者不得不以提高音量的方式来保证收听效果,其带来的直接后果是对收听者听力的永久性损伤。因此,人们开始研究具有降噪功能的耳机,从而在降低噪声的同时保证人们的正常收听。自适应有源降噪耳机是在传统的耳机上加装自适应有源控制装置形成的数字式有源降噪耳机,其基本思想是利用耳机中加装的传声器拾取噪声信号,经由控制器产生等幅反向的声波从而达到消噪的效果,从而降低普通耳机难以消除的低频噪声。
文献[1-2]分别完成了基于最小均方差(LeastMean
2
反馈式自适应有源降噪耳机系统
由于耳机系统的特殊结构等限制,当应用于耳机
时,自适应噪声抵消系统通常采用的是反馈结构[1],其原理框图如图1所示。
图1中,x(n)为参考信号;y(n)为噪声信号的逼近值;a(n)为声音源信号;W(z)为自适应算法滤波器;
Square,LMS)算法和改进LMS算法的自适应有源降噪(AdaptiveActiveNoiseCancellation,AANC)耳机的计算机仿真。随着数字超大规模集成(VeryLargeScale
S(z)为耳机传输模型,称为次级通道滤波器;d(n)为外界噪声;e(n)为期望的音频信号与噪声信号的和值,它是人耳直接获取的信号,应该尽可能地逼近期望的音频信号;S′(z)为次级通道滤波器的估计值;若对次级通道精确估计,e′(n)为从e(n)中分离出的残余噪声。
Integration,VLSI)技术的发展,近年来自适应有源降噪耳机在工程实现上有了一定进展,文献[3]完成了AANC系统的DSP实现。针对自适应有源降噪耳机的实现,
电声技术2008年第32卷第4期
为了方便分析,假定音频信号a(n)是持续的,且与外部噪声d(n)不相关,通过分析可得
E′
(z)=E(z)+S′(z)A(z)(1)E(z)=D(z)-U(z)S(z)
(2)
其中,E′(z),E(z),A(z),D(z),U(z)分别为e′(n),e(n),
a(n),d(n),u(n)的Z变换。将式(2)代入式(1),得到
E′(z)=D(z)-U(z)S(z)+A(z)S′(z)(3)由于
U(z)=A(z)+Y(z)
(4)其中,Y(z)为y(n)的Z变换,将式(4)代入式(3)
E′
(z)=D(z)-Y(z)S(z)+A(z)S′(z)-A(z)S(z)(5)
在对次级通道滤波器S(z)的精确估计下,S(z)和
S′
(z)近似相等,则式(5)变为E′
(z)=D(z)-Y(z)S(z)(6)其中,Y(z)S(z)代表反噪声。
X(z)=E′
(z)+Y(z)S′(z)(7)其中,X(z)为x(n)的Z变换,将式(6)代入式(7)可得
X(z)=D(z)+Y(z)S′
(z)-Y(z)S(z)(8)如果S(z)和S′(z)近似相等,可得
X(z)=D(z)
(9)
由式(9)可以看出,参考信号x(n)近似等于外部噪声d(n),于是经过自适应滤波器后,噪声信号可以得到消除。
3
自适应滤波算法
自适应滤波算法有很多种,如果用FPGA实现,理
想的算法是LMS算法[4]
。LMS算法是自适应滤波理论中应用最广泛的算法,其具有低计算复杂度、在平稳环境中的收敛性、均值无偏收敛到维纳解以及利用有限精度算法实现时的稳定特性[5]
。为了获得更高的收敛速
度同时又不至于增加过多的运算复杂度,采用归一化的最小均方差(NormalizedLMS,NLMS)算法作为系统的自适应滤波算法。
噪声控制
NoiseContro
NLMS算法的收敛速度通常比LMS算法更快,因为它在使用瞬时输出误差最小化时,采用了可变收敛因子[5],NLMS算法可以简单地表示为[6]
y(n)=WT
(n)X(n)(10)e(n)=d(n)-y(n)
(11)W(n+1)=W(n)+! e(n)X(n)(12)
" +X(n)X(n)
其中,X(n),W(n)分别为自适应滤波器输入向量与权系数向量;y(n)为滤波器输出;! 为控制失调的固
定收敛因子,! 的取值在0 ̄2之间;" 参数是为了避免
X(n)T
X(n)过小导致步长值过大而设置的," 应当取1个较小的正值[7]。
4基于FPGA的AANC耳机系统的实现
通过对图1的理论分析可以发现S′(z)对S(z)逼近的效果直接影响整个系统的性能。采用自适应滤波器估计次级通路传递函数的过程称为自适应次级通路建模,次级通路能够使控制器输出的信号产生幅值的衰减和相位的偏移,从而影响消声的效果和质量。因此,次级通路建模在有源噪声控制系统中占有十分重要的地位。次级通路建模分为自适应离线(off-line)建模和自适应在线(on-line)建模两大类。
本系统使用自适应离线建模方式,建模的对象是一款内装传声器的头戴式耳机。通过对耳机进行适当改装,分离出用于驱动耳机单元的输入信号线和传声器采集的输出信号线,并分别连接到音频常用的8.89cm(3.5in)插头上。
将耳机连接到PC机,选择白噪声作为次级通路输入端的输入信号,采用NLMS自适应算法,利用MATLAB软件完成系统辨识,从而得到1组64阶FIR滤波器系数,即图1中的S′(z)系统。
在利用ALTERA的DE2开发板实现图1所示的系统时,各功能模块如图2所示。声音源信号a(n)存储在板上4MB的Flash存储器中,这里是将1个采样率
44.1kHz,位宽16bit的wav格式音乐文件利用开发板自带的控制面板程序通过PC机写入到Flash中。耳机输入和输出分别通过Line-out和Mic-in接口连接到音频编解码器(Wolfson公司的WM8731L),系统中的模/数和数/模转换工作就是由它来完成。板上的FPGA芯片(CycloneⅡ系列的EP2C35)用于完成系统所有的运算工作并控制WM8731L的工作状态。音频编解码器
WM8731L通过串行I2C(InterIntegratedCircuit)总线接口进行控制。使用Verilog语言编写控制模块,设置
电声技术2008年第32卷第4期
噪声控制
oise
Contro
l
WM8731的11个状态寄存器[8],使其音频接口格式为I2S模式,A/D和D/A转换器的采样率都为44.1kHz,数据位宽都为16bit,同时设置板上的1个按键(push-
buttenswitch)用于控制音频编解码器的输出音量。
4.1系统的数据流程设计
音频编解码器与FPGA芯片间的输入/输出数据
必须要严格满足I2S模式数据的格式,I2S模式的时序信息如图3所示,在每个DACLRC/ADCLRCK时钟周期内,BCLK时钟经过64个时钟周期。因此本系统将
BCLK时钟作为系统时钟,并参照DACLRC/ADCLRCK时钟,按照图3中的方式安排数据流程,以保障系统实时性以及时钟与数据的同步问题。
系统在每一个DACLRC/ADCLRCK时钟的下降沿从FLASH读入1个16bit的数据,同时送到图1中的加法模块a1和滤波器s1。s1滤波模块是利用之前的系统辨识得到的1个64阶FIR滤波器,它在BCLK时钟的第一个上升沿(以每个DACLRC/ADCLRCK时钟的下降沿作为BCLK的起点)读入数据,滤波过程经过16个BCLK时钟周期后得到输出。传声器获取的16bit
I2S模式串行数据在第17个BCLK时钟周期后转换为并行数据,与s1滤波器的输出刚好在加法器a3处相加,结果送到加法模块a4。此时,滤波器s3已经完成对上一采样数据的处理得到输出y′(n),所以加法器a4不需要等待就可以完成运算,并将结果同时送到滤波器W(z)和s2。
W(z)是系统中的自适应滤波器,阶数定为128阶,
电声技术2008年第32卷第4期W(z)的滤波过程同s1相似,只是阶数不同。s2是一个和s1在结构和系数上完全一致的滤波器。因此,W(z)和s2同时在第19个BCLK时钟周期的上升沿读入加法模块a4的输出,由于阶数不同,s2经过16个时钟周期,
W(z)经过24个时钟周期后得到各自的输出。
滤波器s2得到输出后送入图1中的自适应算法模块,其用于计算NLMS算法中系数修正时的步长。自适应滤波器W(z)在第43个BCLK时钟周期的上升沿完成滤波得到输出。输出结果同时送到滤波器s3和加法模块a1,并在第44个BCLK时钟周期从自适应算法模块读入用于更新系数的步长值,利用已经寄存在W(z)模块中的向量X(n)按照式(12)修正系数,全部系数的更新经过16个BCLK时钟周期完成,充分保证了在下一时刻数据进入W(z)模块前完成系数的更新工作。
由于在第43个BCLK时钟得到W(n)的输出y(n),而下一时刻的FLASH数据在下一DACLRC/ADCLRCK时钟的下降沿读取,即第64个BCLK时钟周期结束时刻,所以加法模块a1处的实时性能够得到充分满足。滤波器s3在第36个BCLK时钟上升沿读入y(n),经过16个时钟周期得到滤波器输出,送到加法模块a4。由于a4的另一路数据在下一DACLRC/ADCLRCK时钟周期的第17个BCLK时钟时刻得到,因而,加法模块a4的实时性同样可以得到充分保证。
4.2减小自适应算法的运算量
图1中的自适应算法模块主要用于计算式(12)中
的! e(n)/[" +X(n)T
X(n)],并将结果传递给W(z)模块。经过实验比较,在系统中分别选取! =0.001," =0.05。为降低运算的复杂度,X(n)T
X(n)的计算可以采用式(13)进行递推
TM-1
X(n)X(n)=! x(n-k)2
=
k=0
x(n)2-x(n-M)2
M
+! x(n-k)2
=
k=1
x(n)2-x(n-M)2+X(n-1)T
X(n-1)(13)
式(13)中的递推方式使每次计算只需要1次乘法、1次加法和1次减法就可以代替128阶的乘累加运算,从而大大减小了算法的运算量和芯片的资源占用,并且计算在W(z)模块滤波结束前完成,因此W(z)每次的系数修正工作可以在滤波后立刻开始,不需要额外的等待时间。
4.3
滤波器结构
系统中出现的几个滤波模块均采用FIR滤波器结构,滤波过程的设计对于系统的实时性和资源占用情况都有着直接的影响。并行FIR滤波器具有速度快、设计简单的特点,但是要占用大量的资源。在频率并不很高的系统设计中,使用并行结构并不合算,而占用较少资源的串行架构的处理速度又往往达不到要求。因此,结合串并这2种设计方法的长处,在使用较少硬件资源的同时实现了较高的处理速度,这里采用1种8路并行、支路串行的串并结构FIR滤波器。
s1,s2和s3是3个系数完全相同的64阶定系数FIR滤波器,它们用8个存储器类型变量来存储64阶系数,每个存储器又是由8个16bit寄存器类型构成,从而形成了8路并行工作的硬件架构,在这种架构中,使用1个指针足以进行数据查询。每路以完全相同、完全同步的乘累加的方式完成本支路的工作,需8个
BCLK时钟周期,之后再用8个时钟周期以累加的方式完成支路乘累加结果数据的和,因此滤波过程在16个时钟周期内完成。
自适应滤波器W(z)采用相似滤波结构,只是由于阶数的增加,每个存储器由16个16bit寄存器类型构成,支路的运算时间增加到16个时钟周期,因此整个滤波过程需要24个时钟周期。此外,自适应滤波器
W(z)完成系数更新时同样采用8路并行,支路串行的思想,每路16阶系数,所以系数的更新经过16个时钟周期完成。
5
实验结果
整个系统是在QuartusⅡ开发平台上利用Verilog
语言编写实现的。在完成综合、布局布线、仿真等步骤后,利用QuartusⅡ内嵌的SignalTapⅡ将配置文件下载到DE2开发板上并进行在线逻辑分析。为了克服SignalTapⅡ记录数据长度短、
以十六进制形式表示和不利于观测系统消噪效果的缺点,这里将传声器获取的信号录入PC机中,利用MATLAB软件进行结果观测分析。噪声环境由PC机通过有源音箱播放产生,并利用开发板上的1个开关(toggleswitch)控制AANC系统是否开启来比较降噪效果。
通过比较耳机的收听效果发现,无论是否开启
AANC系统,声音源的音频文件都能流畅播放,并且AANC系统开启后,在噪声背景下的收听质量有了一定程度的提高。图4为实验获得的时域降噪效果波形,噪声背景为400 ̄600Hz的低频窄带噪声。
噪声控制
NoiseContro
6
结束语
本设计是对自适应有源降噪耳机系统利用FPGA
实现的一次尝试,按照笔者的设计,利用FPGA实现的
AANC系统的实时性可以得到充分保证,实验结果显示系统对于低频窄带噪声是有效的,如何使系统能够适应更为复杂的噪声环境,还有待进一步研究。
参考文献
[1]GANWS,KUOSM.Anintegratedaudioandactive
noisecontrolheadset[J].IEEETrans.onConsumerElec-tronics,2002,48(2):242-247.
[2]SAY-WEIF,SENTHILKUMARTN,AVERTYC.Active
noisecancellationheadset[C]//IEEEInternationalSympo-siumonCircuitsandSystem.[S.l.]:IEEEPress,2005,1:268-271.
[3]KUOSM,MITRAS,WOON-SENGG.Activenoise
controlsystemforheadphoneapplication[J].IEEETrans.onControlSystemsTechnology,2006,14(2):331-335.[4]高清运,李学初.自适应滤波器的FPGA实现[J].电子测
量与仪器学报,2005,19(1):25-29.
[5]DINIZPSR.自适应滤波算法与实现[M].刘郁林,景晓
军,谭刚兵,等,译.2版.北京:电子工业出版社,2004.
[6]NAGUMOJ,NODAA.Alearningmethodforsystem
identification[J].IEEETrans.onAutomaticControl,1967,12(3):282-287.
[7]何振亚.自适应信号处理[M].北京:科学出版社,2002.
作者简介
李欣,硕士研究生,主要研究方向为自适应信号处理;冯燕,教授,硕士生导师,主要研究方向为图像处理。
[责任编辑]潘浩然[收稿日期]2007-12-25
电声技术2008年第32卷第4期