一套数字音频采集、播放和传输系统的实现

2011-03-02 09:09:31来源: 互联网

TLV320AIC23简介

TLV320AIC23(以下简称AIC23)是TI推出的一款高性能的立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。与此同时,AIC23还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。由于具有上述优点,使得AIC23是一款非常理想的音频模拟I/O器件,可以很好的应用在随声听(如CD,MP3……)、录音机等数字音频领域。

AIC23的管脚和内部结构框图如下:

从上图可以看出,AIC23主要的外围接口分为以下几个部分:

一. 数字音频接口:主要管脚为
BCLK-数字音频接口时钟信号(bit时钟),当AIC23为从模式时(通常情况),该时钟由DSP产生;AIC23为主模式时,该时钟由AIC23产生;
LRCIN-数字音频接口DAC方向的帧信号(I2S模式下word时钟)
LRCOUT-数字音频接口ADC方向的帧信号
DIN-数字音频接口DAC方向的数据输入
DOUT-数字音频接口ADC方向的数据输出
这部分可以和DSP的McBSP(Multi-channel buffered serial port,多通道缓存串口)无缝连接,唯一要注意的地方是McBSP的接收时钟和AIC23的BCLK都由McBSP的发送时钟提供,连接示意图如下:

二. 麦克风输入接口:主要管脚为
MICBIAS-提供麦克风偏压,通常是3/4 AVDD
MICIN-麦克风输入,由AIC结构框图可以看出放大器默认是5倍增益
连接示意图如下:

三. LINE IN输入接口:主要管脚为
LLINEIN-左声道LINE IN输入
RLINEIN-右声道LINE IN输入
连接示意图如下:

四. 耳机输出接口:主要管脚为
LHPOUT-左声道耳机放大输出
RHPOUT-右声道耳机放大输出
LOUT-左声道输出
ROUT-右声道输出
从框图可以看出,LOUT和ROUT没有经过内部放大器,所以设计中常用LHPOUT和RHPOUT,连接示意图如下:

五. 配置接口:主要管脚为
SDIN-配置数据输入
SCLK-配置时钟
DSP通过该部分配置AIC23的内部寄存器,每个word的前7bit为寄存器地址,后9bit为寄存器内容。具体方法和寄存器具体内容见后。

六. 其他:主要管脚为
MCLK-芯片时钟输入(12.288M、11.2896M、18.432M、16.9344M)
VMID-半压输入,通常由一个10U和一个0.1U电容并联接地
MODE-芯片工作模式选择,Master或者Slave
CS-片选信号(配置时有效)
CLKOUT-时钟输出,可以为MCLK或者MCLK/2(详见寄存器配置)

DSP与AIC23的连接


设计中DSP采用了TI的C5409,这是一款性价比高,外设资源丰富,耗电量低,处理能力强的16位DSP,在实际应用中较为流行。

C5409有三组可通过寄存器灵活配置的McBSP同步串口,与AIC23的连接主要使用这些串口。

一. 与AIC23数字音频接口的连接
AIC23的数字音频接口支持I2S模式(一种通用的音频格式),也支持DSP Mode模式(专为与TI的DSP连接模式)。两种模式的时序如下图:


I2S模式


DSP Mode模式

DSP与AIC23的连接可以采用I2S模式也可以采用DSP模式,区别仅在于DSP的McBSP帧信号的宽度。前者的帧信号宽度必须为一个字(16bit)长,而后者的帧宽度可以为一个bit长,比如在字长16bit(即左右声道的采样各为16bit),帧长为32bit的情况下,如果采用I2S,帧信号宽度应为16bit;而采用DSP Mode帧信号宽度1bit即可。

为了与AIC23通信,DSP的串口时钟也应该正确的设置。DSP的McBSP时钟为了减少外围电路通常都选择由内部CPU时钟分频得到,比如在AIC23采样速率为8K的情况下,McBSP串口时钟应为8×32=256K,这时,DSP工作时钟/256K=需要设置的分频因子。

需要注意的是,DSP的串口分频因子最大为0xff(256),所以如果采用内部时钟分频的办法,DSP工作时钟不能超过64M。

二.与AIC23配置接口的连接
AIC23的配置接口支持I2C模式,也支持SPI模式。通常比较简单的办法是利用DSP的一个McBSP用SPI模式跟AIC23连接。但是有些时候,如果DSP的McBSP串口资源比较紧张(比如需要跟近端RS-232和远端RS-485连接),也可以通过DSP模拟I2C总线与AIC23连接。下面简单介绍这两种方法:

SPI时序图如下:

这种模式的特点是只在片选信号有效时锁存进数据。由于也是同步串口,所以通过配置McBSP为Clock Stop Mode(时钟在帧信号有效时产生,其他时间没有时钟信号)可以无缝与之连接。这时,McBSP的帧信号连接SPI的CS信号,时钟和数据信号与SPI一一对应。这种连接只需设置McBSP的寄存器,使用比较简单可靠。

I2C时序图如下:

C5409没有I2C接口(TI的C5509有),但是可以利用DSP的GPIO(General Purpose Input/Output)来实现I2C时序。C5409有8个HPI(Host Port Interface)管脚可以选择作为GPIO使用(上电时HPIENA管脚或者HPI16管脚为低),这样我们可以利用其中的两个管脚来作为I2C中的SCL和SDA。在I2C中SDA是双向管脚,而DSP的GPIO的方向要通过寄存器来配置为输入或者输出,所以在实现I2C总线时,要经常在需要的时候变换GPIO(作为SDA的那个)的方向。对GPIO的操作是通过寄存器来完成:当设为输出时,向寄存器写入要输出的值;设为输入时,从该寄存器读入管脚上的值。

在实现I2C总线时,还需注意下面几点:作为SDA的那个GPIO应该接上拉电阻;AIC23只可写不可读;AIC23的设备地址当CS为低时是0011010b,CS为高时是0011011b。

DSP的软件设计

DSP需要处理来自和发向AIC23的数据,从而达到采集播放声音。

从上面的分析我们知道,这些数据都是通过DSP的McBSP交换的。McBSP可以有三种方式跟CPU通信:每收到或发送一个单元,置标志位,CPU轮询此标志位;每收到或发送一个单元,给CPU发送中断;通过DMA收到或发送完一组单元,再给CPU中断。通常,为了减轻CPU负担,都采用第三种方法。

采用DMA的方式,即串口每发送或接受到一个单元,都会自动触发DMA将其搬送到一个内部的Buffer,等Buffer满了再通过中断方式告诉CPU处理。这时DMA最好采用ABU(Auto Buffering)模式,在这种模式下,DMA会在两个Buffer(其实是一个大Buffer的前一半和后一半)之间自动切换,每个Buffer满了(接收)或空了(发送)都会给CPU发出中断,在CPU处理这个Buffer的时候,DMA会自动去操作另一个Buffer。采用这种方式可以有效防止Buffer中的数据在串口速率较高时被新数据冲掉的问题。

在DMA的中断服务程序中为了可靠可以把这个Buffer的数据再拷贝到另一个待处理的空间,即两级Buffer,然后置标志位,CPU在主程序中查询标志位然后作出相应的处理。DMA操作的Buffer可以通过寄存器配置,Buffer的大小和起始位置应设置正确。在指定Buffer的起始位置时应该注意,起始位置应该为大于Buffer大小的下一个2的整数幂的倍数。例如,在8K、16bit采样的情况下,以20ms数据为Buffer大小,那么一次处理的数据是8000×32×0.02=5120bit=320word。所以,DMA的Buffer应为640word(两个320word Buffer)大小,而Buffer的起始地址应该为1024=2^10>640的整数倍,如0x7000,0x7400……

DSP与异步串口间的通信

DSP与PC机交换声音数据可以通过异步串口实现(近端RS-232或者远端RS-485再到RS-232)。下面简单介绍如何利用DSP的McBSP实现RS-232协议从而跟PC机的串口通信

首先,因为McBSP和RS-232电平不同,之间需要加一个MAX232这样的电压转换芯片。同时,DSP的McBSP是一个三线同步串口,而RS-232只需一根数据线(单向)即可通信,所以在实现异步串口时,首先硬件连接应该如下:

从上图可以看出, McBSP串口的接收帧信号和接收数据线连在一起,这样做的目的是为了利用异步帧的开始位(低有效)来给McBSP一个帧信号。显然,这时DSP的帧信号应设置为低有效且接收延时应设置为'1'。

同步-异步转换的基本原理就是对异步信号过采样得到同步信号,例如一般是对异步信号的每个bit用同步信号的一个字来表示(即16个'1'-0xffff或16个'0'-0x0000)。可参看下图(上边为异步信号,下边为同步信号):

串口的发送和接收都采用DMA方式,Buffer的大小为:1+8+1(无校验位,结束位长度为1)=10word。同步-异步具体转换在软件上实现:

对于发送来说,较为简单,就是对每一个Byte的每个bit用一个word(16bit)进行代替,加上开始位、结束位。然后判断是否可以发送(通过发送完毕标志),如果可以则把这10个word放入Buffer,启动DMA即可。在发送中断服务程序中需要作的是停止发送DMA,并置发送完毕标志有效。

接收相对发送麻烦一些,需要对接收到的每一个字进行判断从而恢复每一个bit,例如可以认为收到0000 1111 1111 0000b为'1',其余为'0'。过滤掉开始位('0')和结束位('1'),恢复的8个bit就合成一个Byte。这些应该在接收中断服务程序里面做。

还有就是同步串口时钟的选择,一定要稍大于设计速度,比如,在跟57.6K的RS-232通信时,时钟应该为57.6×16=921.6K,实际配置串口分频寄存器时应该稍大于这个速度,否则就可能由于没有正确检测到停止位而出现错误。

更详细的同步-异步转换设计流程跟我们的主题无关,有很多文章有具体的描述,这里就不主要讨论了。

至此,一个较为完整的系统就建立了。此系统可以完成对语音或者音频信号的采集和播放,同时通过DSP内部的压缩算法,如g.729或者MP3传给PC机进行储存和传输。

附录:

AIC23的内部寄存器中的一些主要设置bit:

1. LINE IN左声道音量控制寄存器:
LIM:静音
LIV【4:0】:音量控制

2. LINE IN右声道音量控制寄存器:
RIM:静音
RIV【4:0】:音量控制

3. 耳机左声道音量控制寄存器:
LHV【6:0】:音量控制

4. 耳机右声道音量控制寄存器:
RHV【6:0】:音量控制

5. 模拟通道控制寄存器
BYP:Bypass模式
INSEL:ADC输入选择,0-LINE IN、1-麦克风
MICM:麦克风静音

6. 数字通道控制寄存器
DACM:DAC静音
ADCHP:ADC高通滤波器开关选择

7. 省电控制寄存器
OFF:Device Power off
CLK:Clock Power off
OSC:Oscillator Power off
OUT:Outputs Power off
DAC:DAC Power off
ADC:ADC Power off
MIC:MIC Power off
LINE:LINE IN Power off

8. 数字接口格式寄存器:
MS:工作模式Master or Slave
LRSWAP:DAC左右声道交换
LRP:I2S模式下,LRCIN低左声道或右声道
     DSP模式下,MSB在LRCIN有效后1st或者2nd BCLK沿出现
IWL【1:0】:采样Bit长度
FOR【1:0】:DSP格式,即帧信号后跟左右声道两个字
I2S格式,帧信号占空比50%,高低各是左右声道

9. 采样率寄存器:
CLKIN:时钟输入选择,0-MCLK,1-MCLK/2
CLKOUT:时钟输出选择,0-MCLK,1-MCLK/2

10. 数字接口激活寄存器:
ACT:激活开关

11. Reset寄存器
RES:写入0重启

关键字:数字音频  采集  播放  实现

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2011/0302/article_5281.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
数字音频
采集
播放
实现

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved