系统结构设计
技术是SOC(System on Chip)技术和电子设计自动化技术相结合的一种全新的嵌入式系统设计技术,为设计者提供了一个可以快速开发设计及验证的系统设计平台,用以搭建基于总线的系统。它包含了一系列的模块,例如NiosⅡ处理器、存储器、总线、JTAG等IP核,还有包含操作系统内核的嵌入式软件开发工具。它可以将处理器、存储器、I/O接口、硬件协处理器和普通的用户逻辑等功能模块都集成到一个FPGA芯片里,构建一个可编程的片上系统。
在系统结构上数字音频AGC系统的设计主要包括3个层面:最底层是硬件层面,即物理硬件电路的原理图设计,包括各功能IC的外围电路设计;中间层是SOPC系统层,其设计主要有NiosⅡ软核处理器的配置和添加,选择各种可定制的外设IP核和自定义所需模块,将定制好的各个外设模块与Avalon总线进行连接,并为分配外设地址及中断,最后经编译、综合生成可在FPGA内实现相应功能的SOPC系统模块;最上层的是软件层,主要是NiosⅡ软核处理器运行的软件程序,是用C/C++代码编写的,包括μC/OS-Ⅱ实时操作系统,设备的驱动程序和应用程序。
本系统选用的FPGA芯片是Altera公司所推出的CycloneⅡ系列的EP2C20Q240C8。该芯片采用90 nm工艺制造,最大可用I/O管脚142个并内嵌26个乘法器块,支持使用Altera公司的SOPC Builder工具嵌入NiosⅡ软核处理器。系统整体架构,如图1所示。
2 数字音频AGC算法的设计与实现
嵌入式数字音频AGC系统的核心就是音频AGC算法的设计,音频AGC是音频自动增益控制算法,是一种根据输入音频信号水平自动动态地调整增益的机制,AGC算法的好坏直接反映在处理后输出的音频听觉感知效果。
2.1 算法基本思想
文中提出一种多参数融合带反馈机制的音频AGC处理算法,在保证输出电平满足条件的情况下,能有效解决传统AGC中过冲或过衰现象,并能够抑制背景噪声的提升,能根据人耳听觉特性输出音量稳定平衡的音频信号。
用yi(n)代表经过AGC处理的第i帧数字音频信号;xi(n)代表这一帧原始的数字音频信号;Gi表示这一帧的音频增益因子,音频AGC处理可以用如式(1)表示
2.2 关键特征参数提取
计算音频增益因子Gi的关键是对当前数字音频的状态判断。由于人耳对音量的主观感觉是从声音响度上来体现的,而响度是由发声体振动幅度的大小来决定,并且人耳对不同频率声音的感应是不平坦的,所以人耳感知的声音响度是频率和声压级的函数曲线。基于人耳的响度感知特性,AGC算法中音频增益因子Gi的计算需要综合考虑声音的振幅、短时能量和频率这3个特征。
经过数字化的音频信号实际上是一个时变信号,为了能对音频信号进行分析,可以假设音频信号在几十ms的短时间内是平稳的。为了得到短时音频信号,要对音频信号分帧处理,分帧是连续的。为避免AGC系统处理后的因音频分帧延迟带来的画音不同步现象,本设计将分帧定为20 ms。数字电视的音频采样率为48 kHz,所以一帧内的音频样值数有960点。
音频信号的振幅可以用峰值表示,即由一帧音频信号内的绝对值最大项来表示,用Pi代表第i帧数字音频信号xi(n)的帧内峰值,那么
短时能量可以有效判断信号幅度的大小,音频信号的短时能量Ei定义如下
短时能量由于对信号进行平方运算,考虑到处理器的性能和实时性的保证,可以采用绝对值之和代替平方和来表示短时能量的变化,使运算简化,其公式为