APP下载

基于FPGA的音频AGC设计与实现﹡

2013-09-25周江平屈晓旭

通信技术 2013年8期
关键词:期望值幅度增益

周江平, 高 俊, 屈晓旭

0 引言

语音通信中,基带传输距离、麦克风等的不同都会导致进入射频前端的音频信号忽大忽小。为了使得激励器能够接收到幅度平稳的音频信号,需要在射频输出之前给音频信号做AGC处理。一般情况下,为了减小运算量,会在采样率较低时进行AGC处理。AGC处理除了使得输出的音频幅度相对平稳外,还具有一定的噪音抑制能力。音频AGC与普通AGC有所不同,音频AGC必须跟踪音频信号的变化,一方面要减小不期望因素的干扰,另一方面还要较准确地反映音频信号的幅度正常变化,因此参考幅度理论上是应该不断变化的[1]。

随着电子技术,计算机技术和通信技术的迅猛发展,数字信号处理技术已广泛地深入到人们生活等各个领域。运用数字化处理技术,在现场可编程门阵列(FPGA)器件上实现音频AGC算法,可以使得AGC控制更加精确,实现更加灵活,运行更加稳定。

1 自动增益控制基本原理

一般来说,AGC系统由可变增益放大器和反馈回路组成。可变增益放大器根据反馈回路的幅度以及阈值按照一定的算法调整增益值。一般情况下,当输入可变增益放大器的信号幅度增大时,反馈回路控制其增益按一定关系减小;减小时,其增益则按一定关系增大[2]。这样可以保证AGC放大后得到的输出信号的幅度基本恒定。数字AGC的反馈部分由数字处理实现,与模拟AGC相比,降低调试难度而且增强了稳定性、收敛性和精确性[3]。

根据数字AGC中增益值调整的算法,可以将数字AGC分为固定步长AGC、可变步长AGC两类。固定步长AGC算法简单,实现容易,物理意义明确,但是调节时间随着输入变化的增大而增大,容易出现不稳定的情况;可变步长 AGC算法增益调整灵活,收敛速度较快,调节时间不会随着输入变化量的大小而改变,但是一般需要除法,对数运算等计算,实现时资源消耗量大。随着微电子技术日益发展,FPGA可提供的资源量大大增加,大多采用可变步长算法。

2 音频AGC的算法设计

1)输出动态范围的确定。根据实际情况,若AGC的期望值取为定值,那么输出的信号的幅度值将无限地趋近期望值,但是会一直变化调整,这就会导致输出端的幅度不稳定。因此,可以以期望值为中心,设计一个稳定的范围。一旦经AGC输出的信号处于该范围中,认为已达到稳定的状态,增益值将不再改变,这样可以使输出信号的幅度得到稳定。如果设计的这种稳定范围足够小,那么不会对人的听觉效果产生影响[4]。该区间的上界称为期望值上限,该区间的下界称为期望值下限。研究数据表明,幅度在0.1 dB范围内变化人尔无法察觉。设定该范围为期望值加减0.1 dB。为了保护电路,期望值一般设为输出信号满偏值减0.25 dB。

2)增益调整速度的确定。在正常的语音信号中,信号幅度的大小是不停变化的。为了体现出语音信号这种幅度的正常变化,不能将所有的信号幅度都快速拉高到期望值区间,应该保持增益不变或者只变化很小的范围。那样才能分辨出人说话时的语调,不会产生“失真”[5]。而如果由于其它因素导致语音信号的平均幅度比较小,就需要将增益值增大,使得语音信号整体幅度增大,这样不会对声音信号造成失真。而相对来说,声音信号的幅度正常变化比非正常变化要快得多。所以,音频AGC的增益值需要跟随这种慢的变化而忽略快变化。由于可变步长AGC算法增益调整时间可以控制,故采用可变步长算法。当增益调整时间相对语音信号正常变化时间很长时,那么增益基本不会改变,根据语音信号的特点,设定增益调整时间为4 s。如果输出信号很大,增益需要快速减小,否则可能烧毁器件。当检测到输出信号大于期望值上限时,增益调整时间设为0.5 ms[6]。

AGC增益值调整算法计算公式如下:

3)输入信号动态范围的确定。输入动态范围太大,会导致大量噪声被放大,输出信号质量差,而输入动态范围太小会使得小信号被忽略,产生失真[7]。考虑实际情况,定义比输入信号的最大值小36 dB的信号为噪声。如果输入一直是噪声,应该将增益置为 0,不传输噪声。而在人说话的间隙,输入的信号也完全是噪声,此时不能将增益值置为0,否则根据上述需要缓慢增大增益的要求,在声音信号增大时不能有效地放大。根据噪声信号持续的时间,可以判断该噪声是否为声音信号的间隙,如果时间比较短,则认为是声音信号的间隙。时间长短的判决门限的选取需适当,太长会使得声音信号结束之后还会有很长一段的噪声输出,太短则使得误判较严重,不能高质量地传输语音信号。时间判决门限设定为5 s比较合适。在音频信号最小值与噪声门限之间,留有6 dB的范围,在此区间,噪声对信号的幅度影响很大,因此固定增益值,即不放大噪声,也不屏蔽信号。

4)增益大小的限制。为了避免增益过大,信号突变烧毁器件,将增益限制在一个范围内,如果计算得到的增益大于这个范围的最大值,增益取最大值,反之,增益取最小值。最大增益定为30 dB,最小增益定为-3 dB。

综上所述,音频AGC算法的流程如图1所示。

图1 AGC增益控制算法流程

3 音频AGC的算法的仿真

信号输出幅度变化规律的matlab仿真分析。根据上述增益调整算法,如果直接按照y(n) = x (n) × G (n)求输出信号,当信号突然由很小变得很大时,会出现过冲现象,为了避免这种现象,给信号增加一个延时,即按照 y (n ) = x (n- 32)× G(n)计算输出,可以很好地解决过冲的问题,虽然会对信号由小变大时产生一些不利的影响,但是在可以接受的范围内。仿真结果如图2和图3所示。

图2 输入信号增大输出幅度变化

图3 输入信号减小输出幅度变化

图2 为输入信号由小突然变大时输出信号幅度变化情况;图3为输入信号由大突然变小时输出信号幅度变化情况。由图 2(a)可知,输出信号大于输出信号幅度上限值时,增益调整的节拍约为60个节拍。同时可知信号由小突然变大,增益有一个从大到小衰减的过程,如果不延时,大信号与大增益相乘,必然会导致输出信号很大;信号延时是为了在增益减小到一定程度之后再和大信号相乘,这样输出不会过大。对比图 2(b)可知,经过延时之后,输出的最大幅度减小了很多,维持在理想幅度上方的时间也短了很多,但是有一段时间处于理想幅度下方,可以忍受信号变小的失真,而不能忍受信号过大导致烧毁器件。由图 3(a)可知,输出信号比理想幅度下限小时,调整时间约为600 000个节拍。由图 3(b)可知,信号如果信号由大变小的时候,由于延时的存在,会使得输出信号先变大,后变小,同样存在一段时间内输出较大的问题,但是由于信号增益变大时较缓慢,如果延时较小,在增益增大不多时就与减小后的信号相乘,那么虽然存在输出较大,但是与理想幅度相当接近,不会烧毁器件。总的来说,信号的延时需要取适当的值,一般延时32个节拍。

4 音频AGC的算法的FPGA实现

实验平台简介,本实验平台基于 alter公司的stratix_ii GX芯片,音频采样A/D采用A/D7655,处理完成之后射频输出采用A/D9957进行D/A转换。

FPGA内部信号处理流程[8]如图4所示。

图4 FPGA信号处理流程

音频信号通过A/D7655采样进来,进行数字滤波,得到I/Q两路数字信号。根据用I/Q信号计算出当前信号的幅度值 Ain[9]。反馈的幅度值 A (n ) = Ain(n) × G (n),然后综合 Ain及A来对增益进行调整。虽然输出信号小于输出上限时,调整时间有4 s,但是,当信号幅度变化时,增益的初期调整还是很快,对增益的改变较大,这与要求忽略信号的快变化矛盾,故文中的 Ain信号不用实时的信号,而是将输入信号按512个采样点进行分组,每组中的最大值作为 Ain信号,那么实际上就忽略了信号在512个点内的幅度的变化。

调节输入信号的幅度,示波器上显示的输出信号的变化如图5所示。

图5 输出信号随输入信号变化

图5 中a、b两个光标是用示波器测量时得到的,c、d、e、f是为了方便叙述后期添加上去的。a、b两个光标之间是信号突然减小后保持不变时输出信号变化情况;c、d两个光标之间是输入信号快速变化时输出情况;e,f两个光标之间是输入信号突然增大时输出信号变化情况。由图5可知,输入信号减小后,经过 4 s左右可以将输出信号调整到期望值;输入信号快速变化时,输出会跟随输入的变化而变化;输入信号突然增大时,输出信号不会有明显的变化。AGC功能基本实现。

5 结语

文中根据实际的语音信号的特点,在传统AGC算法[10]基础上,提出了一种适应语音通信的新型的灵活的AGC算法,并对该算法进行了仿真,在仿真结果基础上,对该算法在实际应用中需要注意的问题进行了详尽的分析并提出解决方案,最后用VHDL语言在基于 FPGA的硬件平台上实现该算法[11]。实验结果表明该算法具有良好的性能,可以以较小的失真为代价,使得输出的信号幅度平稳性得到极大的提升。该算法已成功运用于某语音通信的发射机中。

[1] 李夕红,祝忠明,谢兴红.音频信号采集与AGC算法的DSP实现[J].电子产品世界,2007(04):101-102.

[2] 刘艳.基于FPGA的大动态范围数字AGC的实现[J].电子设计工程,2009,17(08):42-43.

[3] 谌波,周劼,王世练.约束时间常数大动态数字 AGC的设计[J].通信技术,2011,44(12):144-145.

[4] 淦新富,郭立.基于主元统计的音频隐写分析[J].信息安全与通信保密,2007(02):63-64.

[5] 刘吉录.解析智能型音频处理器[J].西部广播电视,2002(02):34-39.

[6] 丁丹,孙华燕.固定调节时间AGC方法的研究及FPGA实现[J].装备指挥技术学院学报,2009,20(06):87-90.

[7] 徐靖林,李永红,吴威.WLAN接收AGC调整算法的设计与实现[J].通信技术,2009,42(09):9-11.

[8] 董智红,崔嵬,吴嗣亮.全数字式前馈AGC设计与FPGA实现[J].北京理工大学学报,2008,28(12):1093-1095.

[9] 李道虎,贾新成.音频AGC的设计与实现[J].河南机电高等专科学校学报,2009,17(04):16-18.

[10] 黄怀信.一种短波数传 AGC电路[J].通信技术,1980(08):57-61.

[11] 钟宏,刘地军.FPGA与嵌入式处理器通信设计与实现[J].信息安全与通信保密,2011(08):38-39.

猜你喜欢

期望值幅度增益
单次止损幅度对组合盈亏的影响
基于增益调度与光滑切换的倾转旋翼机最优控制
基于单片机的程控增益放大器设计
基于Multisim10和AD603的程控增益放大器仿真研究
微波超宽带高速数控幅度调节器研制
基于直觉模糊期望值规划和改进粒子群算法的目标优化分配
基于ANSYS的四连杆臂架系统全幅度应力分析
程控增益射频宽带放大器
中小学生自信心的培养研究
民众期望值的合理边界