基于C5000的音频解码系统设计
y公司的64 kB的EEPROM 24LC512存放的是启动程序,每当上电时,即将CF卡中的程序调入内存运行。
24LC512与DSP的接口采用I2C总线通信。I2C(Inter—Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。存CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100 kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如音量等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。其时序图如图4所示。
1.1.4 音频解码接口设计
音频CODEC芯片采用的是TI公司的。它的主要作用是将DSP解码后的PCM音频流通过D/A变换,转换成模拟声音信号进行播放。
TLV320AIC23 DSP Codec是德州仪器公司2001年推出的高性能单片立体声编码解码器,数据转换字长16/20/24/32可选,工作电压与xDSP的核心和I/O电乐兼容,可实现与C55x DSP串行口的无缝连接,功耗很低,带有的I2C和SPI总线兼容控制接口能使AIC23编码译码器与其他微处理器共同使用。
其主要特点如下:
1)高性能立体声编码解码器:支持8~96 kHz采样频率,90DB ADC,100DB DAC转换信噪比,1.42~3.6 V内核数字供电电压,2.7~3.6 V模拟供电电压均与C55x DSP兼容。
2)可编程多种串行口数据传输标准:支持I2C和SPI串口数据传输模式,均可以与C55x DSP的McBSP口兼容。
3)内置放大的立体声输入输出(增益可调节),耳机放大模块输出((30mW)。
4)低功耗电源管理:录音重放模式下19 mW,备用状态小于150 uW,停止状态小于15 uW。
音频CODEC与DSP的硬件接口电路如图5所示。
由上图我们可以看出,DSP VC5509与AIC23的接口可分成两部分:控制接口部分(MeBSP1)和音频数据接口部分(MeBSP0)。其中DSP的McBSP1口完成AIC23的控制部分功能,此控制口配置为常用的SPI接口模式;而McBSP0口完成音频数据的传输功能,此数据口配置为DSP格式。
AIC23的数字音频接口支持4种数据格式:Right—Justified;Left—Justified;I2S格式;DSP格式。控制接口的SPI模式时序以及数字音频接口的DSP模式时序分别如图6和图7所示。
1.1.5 电源模块设计
在电源模块中,我们选用了TI公司的三款芯片,分别是TPS61103,TPS60500,TPS73601。其中TPS61103用于将电池输入的1到3 V电压转换为固定的3.3 V,它为DSP的I/O及其他外设供电。TPS60500用于将3.3 V转换为DSP需要的内核电压1.6 V。此系统当通过USB接口与计算机相连时,就可以通过适当的跳线设置不用接电池,TPS73601用于将USB接口提供的5V电压转换为3.3V。
2 软件研究及算法实现
2.1 文件系统的实现
由于实现了FAT32文件系统,因此当此系统通过USB连接到PC机时,在Windows操作系统下将看到它作为一个独立的存储器出现,可是通过复制粘贴操作将音乐文件拷贝到CF卡上。
2.2 MP3解码算法的实现
本方案进行软件的开发平台是TI公司的C5000系列的集成开发环境Code Composer Studio 2.0。考虑到MP3解码软件的复杂度和可读性,整个解码软件采用DSP的C语言编写。DSP的C语言具有与标准ANSI C语言相同的语法特点,同时还和DSP硬件相结合,能够直接控制DSP的在片或外围设备资源。随着数字信号处理技术的不断发展,DSP的C语言编译器的编译效率也越来越高,5000系列的C语言编译器效率能达到
60%~70%,C6x系列的编译器效率高达80%。因此采用C语言来对DSP进行编程是必然的趋势。
本方案在LIBMAD的基础上对软件进行设计。MAD(LIBMAD)是一个开源的高精度MPEG音频解码库,支持MPEG-1(Laver I,Laver II和Laver III)。LIBMAD提供24-hit的PCM输出,完全是定点计算,非常适合在没有浮点支持的平台上使用。使用LIBMAD提供的一系列API,就可以非常简单地实现MP3数据解码工作。在LIBMAD的源代码文件目录下的mad.h文件中,可以看到绝大部分该库的数据结构和API等。
MP3解码算法虽然复杂,但是整个解码过程分成各个模块进行,各个模块之间相对比较独立。在整个解码软件的设计过程中,对各个模块采用子函数,各个模块之间的联系就表现为函数的参数传递。整个
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)