
使用次级通道训练得到的C(z)用反馈FXLMS算法进行降噪,其过程具体步骤为:
(1)从微型麦克风采集误差信号e(n)。
(2)计算参考输入信号x(n):
(3)计算反噪声y(n):

其中,wi(n)为自适应滤波器W(z)在n时刻的系数,N为W(z)的阶数。
(4)从耳机输出反噪声y(n)。
(5)计算滤波后版本的x′(n):
(6)使用FXLMS算法更新W(z)的系数:
wi(n+1)=wi(n)-?滋e(n)x′(n-i),i=0,1,…,N-1
(7)进行下一次迭代。
1.2 降噪程序流程
根据反馈FXLMS算法的特点,本文程序主要可分为两个部分,第一部分为次级通道训练,第二部分为降噪过程。其中次级通道训练在实际中可以离线进行,因而程序中主体为用反馈FXLMS算法进行降噪。
根据反馈FXLMS算法的特点,得到降噪过程的程序流程图如图3所示。

2 硬件实现
2.1 硬件平台
实验硬件平台主要由DSP开发板、DSP、耳机与麦克风以及音响组成,在电脑上的开发软件为TI公司的Code Composer Studio(CCS)v4.2.4。
降噪系统实物图和如图4、图5所示。

由音响发出音频来模拟外界噪声,耳机中扬声器作为次级声源发出反噪声,麦克风为一个微型麦克风,放在耳机罩中,用于采集误差噪声,其尽量靠近耳机扬声器以降低外界干扰和误差。DSP控制系统板微处理器为TI的TMS320VC5509A DSP。音频CODEC芯片采用是TI的一款高性能的立体声芯片TLV320AIC23B(简称为AIC23B)。
2.2 AIC23B芯片
AIC23B音频处理芯片为ANC的DSP实现中最重要的芯片。选择其波特率即采样率为44.1 kHz,以提供降噪所需要的实时性;选择数据格式为16 bit,这是为了与DSP 5509A的数据格式相匹配,DSP C5509A为16 bit DSP;选择输入方式为麦克风输入,对应的麦克风插入麦克风输入插孔;耳机插入立体声输出插孔,即耳机输出插孔。麦克风输入和线性输入的主要差别在于麦克风输入提供一个固定的前置放大,而线性输入则是可变增益的放大器;立体声输出相对于线性输出,则是立体声输出性输出上增加了一个可变增益的放大器以及一个耳机驱动模块。其内部结构如图6所示。

C5509A通过I2C总线来对AIC23B寄存器进行设置,两者的数据传输通过多通道缓冲串行口(MCBSP)实现。两者的硬件连接如图7所示。

3 实验结果
3.1 MATLAB仿真

输入500 Hz幅值为1的正弦信号,迭代步长为0.1,由图8、图9可以看到在迭代大约为300次时的误差噪声就收敛到0,说明程序有很好的降噪效果。
3.2 DSP实现

利用音响发出500 Hz音频作为外界噪声,利用CCS软件的Graph功能对得到的数据进行作图并截图。由图10、图11可以看出,降噪前噪声幅值为9 000,降噪后最大值为1 900,换算为降噪比为:20lg(9 000/1 900)=13.5 dB。降噪效果比较明显。
4 结论
本文针对发动机等工作时产生的周期噪声,利用反馈FXLMS算法进行ANC程序设计,在MATLAB中仿真对周期信号进行实验,获得很好的降噪效果。基于德州仪器公司的DSP C5509A,搭建硬件平台并进行实现,对周期信号取得明显降噪效果。为了增加系统性能,在今后工作中可以考虑在程序中增加变步长算法,使收敛速度与稳态误差达到一个较好的平衡[8-9]。
参考文献
[1] 庞志兵,何健,李永峰,等.自行高炮舱内噪声对人操作可靠性的影响及对策[C].人-机-环境系统工程研究进展,2005(7):35-40.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-32641-2.html
我们是“让它三分”
央行降息不考虑物价上涨因素吗
超级棒