一种基于ARM+DSP的音频处理系统设计方案
1引言
本文引用地址:http://www.amcfsurvey.com/article/246775.htm随着计算机技术、电子技术和通信技术的迅猛发展,音频处理技术也在众多领域得到广泛应用。如通信领域中的手机、IP电话,消费类电子产品中的MP3和CD播放器以及控制领域中的语音识别、声控系统等[1].针对DSP强大的数字信号处理能力和ARM处理器良好的实时性能,结合音频编解码芯片TLV320AIC23的接口特点,本文阐述了由三者组成的音频处理系统的硬件接口设计和软件编程,提供了有效和实用的音频处理系统方案。
TLV320AIC23(简称AIC23)是TI公司的一款高性能立体声音频编解码器Codec芯片。其内部集成的模数转换器(ADCs)和数模转换器(DACs)采用了带有过采样数字插补滤波的多位Sigma-Delta技术。数据传输字长为16、20、24、32位,支持采样频率范围8kHz至96kHz.ADC和DAC的信噪比分别达到90dB和100dB.内置耳机输出放大器,支持MIC和LINE IN两种输入方式,且对输入和输出都具有可编程增益调节。另外,AIC23功耗低,回放模式下功率仅为23mW,省电模式下更是小于15uW.因此,AIC23成为数字音频应用
领域中的理想选择[2],在多种数码产品中发挥着重要作用,比较典型的应用如手机、MP3、DV摄像机中的音频编解码。
TMS320VC5402(简称VC5402)是TI公司的一款优秀16位定点DSP,运算速度快,指令执行速度达到100MIPS.自带片内存储器和多种片上外设,广泛应用于语音编解码和通信领域[3].
S3C4510B(简称4510B)是Samsung公司的一款低成本、高性能的16/32位精简指令集微控制器,其出色的ARM7TDMI内核以及通用微处理器宏单元使其成为用户定制应用开发的理想选择[4].
2系统硬件设计
本音频处理系统主要由前述三个处理芯片组成:ARM控制单元,DSP信号处理单元以及AIC23音频采集单元。系统原理框图如图1.
图1基于DSP和ARM的音频处理系统原理框图
AIC23是可编程芯片,内部有11个16位寄存器,编程设置这些寄存器可得到所需的采样频率、输入输出增益和传输数据格式等。该控制接口有SPI和I2C两种工作模式,由芯片上的MODE引脚进行选择:MODE=0为I2C模式,MODE=1为SPI模式。因ARM 4510B上也有I2C接口,故选用I2C模式。AIC23的I2C接口地址由引脚的状态决定,=0时地址为0011010,=1时地址为0011011.其中SDIN与SDA为数据线,SCLK与SCL为串行时钟线。VC5402有两个多通道缓冲串口,选用其中的McBSP0与AIC23进行通信,信号连接如图1所示。图中AIC23工作在主模式,时钟信号、DAC和ADC的帧同步信号BFSX0和BFSR0都由AIC23提供。而DSP VC5402与ARM 4510B的通讯是通过DSP上的HPI接口实现的。
3系统软件设计
系统由ARM系统和DSP系统两大部分组成,ARM作为主控制器管理整个系统的工作进程,运行相关的应用程序,可对多个任务进行调度,完成与外部DSP系统或其他外设的通信。DSP则主要完成音频数据的采集和信号处理,并将处理后的数据发送给ARM供应用程序调用。这样的设计可以大大提高系统的工作效率,这也是当前嵌入式系统,各移动手持设备如PDA、手机等的典型设计方案。
这里具体要做的是对AIC23的控制接口编程,使其工作在所需的模式下。然后初始化DSP的McBSP,进行AD、DA转换和数据处理。
3.1 ARM编程部分
系统中对ARM的编程主要涉及对AIC23的初始化,使其进入正常工作状态,对音频数据进行采集和处理。这需要设置4510B的I2C总线特殊功能寄存器:控制状态寄存器IICCON、预分频寄存器IICPS和移位缓冲寄存器IICBUF,寄存器相关说明见表1[5].
表1 4510B I2C总线特殊功能寄存器
0426095615522.jpg" target="_blank" style="color: rgb(8, 90, 153); font-family: Arial, tahoma, Verdana; font-size: 14px; line-height: 24px; ">
AIC23的11个控制寄存器相关设置的详细描述参见文献2.这里的设置为:左右声道线路输入静音;耳机左右声道音量为6dB;使能DAC,麦克风音量为20dB作为ADC输入;使能ADC高通滤波;芯片各部分电路供电使能;芯片工作在主模式,采样数据长度16位,采用DSP数据格式(同步帧后跟随两个数据字);采样率88.2KHz(外部晶振为11.2896MHz);使能数字接口。
对AIC23编程时的I2C总线时序如图2所示。设置好I2C的时钟频率后,首先发送开始条件(SCLK为高电平时,SDI从高电平向低电平切换),然后发送AIC23的器件地址,器件地址发出后发送AIC23相应寄存器的地址,再发送对该寄存器设置的数据,最后发送停止条件(SCLK为高电平时,SDI从低电平向高电平切换)。注意,这里的寄存器地址为7位,寄存器数据为9位,而I2C总线以字节为单位传送数据。因此在对AIC23的寄存器编程时,第一个字节包括了前7位的寄存器地址B15-B9以及设置数据的最高位B8,第二个字节为设置数据的后8位B7-B0.
图2 I2C时序
3.2音频数据采集与播放
初始化AIC23后,再初始化DSP以及McBSP0,之后进行音频数据的采集与播放。通过麦克风采集语音信号,经过数字滤波处理后由耳机输出。使用McBSP0的接收中断保存数据,通过FIR数字滤波子程序处理音频数据。程序流程如图3所示。
图3音频数据处理程序流程图
初始化McBSP0使其与AIC23协调工作,这里要根据硬件设计和软件要求来配置McBSP0的各个控制寄存器。本系统中串口的主要设置为:接收数据右对齐,带符号扩展;接收中断使能;由片外提供发送、接收帧信号和发送、接收时钟信号;发送、接收帧同步信号低电平有效;在时钟上升沿采样发送、接收数
据;每帧发送、接收两个16位字数据[6].
数据接收部分可在DSP中断程序中用如下语句实现:
mvkd drr10,*ar5 ;保存数据
pshd *ar5+% ;数据压入堆栈
popd new_ad ;从堆栈弹出数据到自定义的寄存器
FIR滤波的相关程序如下:
ld new_ad,a ;新数据加载至累加器
stm #1,ar0 ;双操作数增量
stm #N,bk ;设置循环缓冲区长度,即FIR滤波级数(N为滤波级数)
stl a,*ar3+% ;新数据送至ar3指向的缓冲区
模数转换器相关文章:模数转换器工作原理
晶振相关文章:晶振原理 声控灯相关文章:声控灯原理 摄像头相关文章:摄像头原理
评论