用CS43L42音频解码器和EP7212嵌入式处理器设计的MP3文件播放系统

2007-03-09 19:03:27来源: 互联网
摘要:介绍了CIRRUS LOGIC公司生产的音频解码芯片CS43L42与嵌入式处理器EP7212的接口实现方法,分析了基于嵌入式处理器EP7212/7312和CS43L42芯片的MP3文件播放系统,给出了由其组成的完整硬件连接图和有效的软件实现方法。 关键词:嵌入式处理器;数字音频接口DAI;CS43L42;MP3;EP7212 1 引言 目前存储声音信息的音频数据格式主要有PCM文件、VOC文件、MIDI文件、MP3文件等。对导航系统来说,要实现音频文件的播放,存储器容量是一个需要考虑的问题。由于导航系统的存储空间有限,所以要求存储的文件压缩率高。与其它文件格式相比,MP3音频文件具有较高的压缩率和不逊色于CD的音质,所以在导航系统中音频文件的存储选用MP3格式。 MP3的全称为MPEG1 Layer-3音频文件,MPEGMoving Picture Experts Group在汉语中译为活动图像专家组,特指活动影音压缩标准。MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer1、Layer2、Layer3,分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1和MP2的压缩率分别为4:1和6:1~8:1,而MP3的压缩率则高达10:1~12:1,也就是说,一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。不过MP3对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后再用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位重新排列,最后形成具有较高压缩率的MP3文件,从而使压缩后的文件在回放时能够达到比较接近原音源的声音效果。 虽然MP3是一种有损压缩方式,但它以极小的声音失真换来较高的压缩比,因此在较多的场合得以应用。尤其是随着数字技术的发展,MP3压缩方式在便携式电子产品中得到了越来越广泛的应用,深受追求时尚、新潮的青年朋友的喜爱。 2 CS43L42播放芯片 CS43L42是CIRRUS LOGIC公司生产的音频解码芯片, 它可工作在1.8~3.3V,关掉线性放大器时功耗仅16mW非常适合于MP3、MD播放器等低功耗场合的应用。该芯片是一款完全意义上的数模转换器,它包括1bit D/A转换、模拟滤波、音量控制、线性电压输出以及耳机放大器。通过改变主频率,其允许的输入采样频率可从2k~100kHz变化。该器件具有数字重音、峰值限制和去加重等特性。此外,由于采用了POPGUARD技术,CS43L42还可有效防止加电、断电时产生的瞬间冲击。 CS43L42具有DAI接口,能够与嵌入式处理器EP7212/7312较好的配合。它具有三种模式:双线模式、SPI模式、STAND ALONE模式。通过引脚CP/SA和AD0/CS/DEM0置相应状态可以设置这三种模式。当CP/SA引脚为低电平时,芯片为STAND ALONE模式,当CP/SA为高电平时,只要检测到引脚AD0/CS/DEM0电平从低到高变化,则进入SPI模式,否则为双线模式。在STAND ALONE模式下,可用SCL/CCLK/DIF1和SDA/CDIN/DIF0引脚来设置数据、左/右时钟以及主时钟之间的关系。在双线模式和SPI模式下,则可以通过对寄存器进行操作来实现静音、声道衰减和音量控制等功能。图1是CS43L42的内部原理图,图2是该芯片的引脚排列示意图,各引脚的功能如下: 1脚(RST):复位信号,低有效。 2脚(LRCK):左/右帧同步。 3脚(SDATA):串行音频数据,数据随串行时钟引入。 4脚(AD0/CS/DEM0):在SPI模式下,用于使能控制端口。 5脚(SCLK/DEM1):位时钟,等于MCLK的1/2,每帧有128位。 6脚(VL):数字电源电压,典型值为1.8V~3.3V。 7脚(MCLK):2x过采样时钟,仅在从模式下输入。 图3 8脚(SCL/CCLK/DIF1):串行控制接口时钟。 9脚(SDA/CDIN/DIF0):串行控制数据输入输出。 10脚(N.C.):无连接,悬空。 11脚(CP/SA):控制模式和等待模式控制。 12脚(VQ_HP):耳机静态电压接口。 13脚(REF_GND):连接到模拟地。 14脚(FILT+):正向基准电压,用于内部采样电路。 15脚(VQ_LINE):线输出静态电压接口。 1621脚(HP_A,HP_B):耳机输出。 17脚(GND):连接到模拟地。 18脚(VA):模拟电源电压,典型值为1.8V~3.3V。 19脚(VA_LINE):线性扩音器电源端,典型值在1.8V~3.3V。 20脚(VA_HP):耳机放大电源端,典型值为0.9V~3.3V。 22,23脚(AOUTB AOUTA):模拟输出端。 24脚(MUTEC):静音控制。 3 CS43L42的硬件连接电路 如系统中芯片工作在STAND_ALONE模式,则将DIF1、DIF0分别设置为低、高电平表示接收左起有效的24位数据。图3是CS43L42的典型外围连接电路。图中的电容C由下式给出: C=(RL+560)/[4π Fs(RL%26;#183;560)] 4 MP3播放软件设计 MP3文件播放的软件设计任务如下: (1)初始化EP7212 的DAI接口。 (2)将MP3文件解码成PCM文件并存放于开辟的两个缓冲区(左、右两个声道)。 (3)在FIQ(快速中断请求)中将PCM格式的数据写到DAI接口,同时播放声音(未有数据时播放静音)。 4.1 EP7212的DAI接口介绍和初始化 a. DAI接口 EP7212/7312的数字音频接口(DAI)主要用于支持高质量立体声的音频处理。图4是CS43L42与嵌入式微处理器EP7212的DAI接口电路。该接口主要由以下五个信号组成: (1)LRCK,左/右帧同步。 (2)SCLK,位时钟,等于MCLK的1/2,每帧有128位。 (3)MCLK,2x过采样时钟,仅在从模式下输入。 (4)SDOUT,数字音频数据输出。 (5)SDIN,数字音频数据输入。 用MSB/Left数据调整格式意味着数据在帧同步信号(LRCK)电位改变后立即被计时。MSB在第一位时是左调整,这与I2S格式相比有些不同,I2S格式的数据在改变电位后要延迟一个时钟。数据帧每帧是128位长,这样每个声道64位长。帧的大小和LRCK的运行周期在EP7212/7312中不能被设置。SCLK可从MCLK中得到,频率等于1/2 MCLK。缺省模式中,DAI处于主模式。该模式下自己产生的MCLK时钟等于9.216MHz。这样,SCLK等于4.608MHz。对于需要SCLK有不同速率的应用,DAI可以被设置成从模式。在从模式下,外部源通过MCLK引脚给MCLK提供主时钟,然后分成两半生成SCLK。不管DAI模式如何设置,SCLK和LRCK通常都设置成输出。数据一般在SCLK的上升沿锁入,在下降沿释放。 DAI接口是一种高质量的数字音频接口,可以连接与DAI接口兼容的音频设备。EP7212 的DAI接口通过位时钟和帧同步时钟产生128bit帧数据。数字音频数据的接收和发送均采用全双工方式,对应于12采样深度的接收FIFO和8采样深度的发送FIFO。在DAI 接口信号中,MCLK是主时钟,它是音频采样频率的256倍,SCLK为音频采样频率的128倍,LRCK固定为采样频率。由于本系统中的MCLK连接外部时钟发生器,频率为11.2896MHz所以采样频率为44.1KHz。其DAI接口时序图如图5所示。 图5 DAI的帧长128bit其中包括一个音频采样数据,在这128bit中,仅有32bit为实际的音频数据,其余输出均为零。左/右时钟作为帧同步信号,左/右时钟从高到低表示右声道的16bit数据,从低到高表示左声道的16bit数据。 b. DAI接口初始化 DAI初始化程序中首先应设置控制寄存器, 接着选择外部时钟有效以及在左发送FIFO数据少于一半时产生中断。然后清除状态寄存器上溢、下溢位,之后使DAI接口、发送FIFO和接收FIFO有效。最后打开DAI中断。 4.2 MP3文件的解码 ARM公司提供有基于ARM处理器音频文件解码库,它能够有效地解码MP3格式的歌曲,而输出16bit立体声PCM数据。 a. 解码库所定义的结构 %26;#183;tSampleRate定义了解码数据PCM的采样率 typedef enum tagSampleRate { SR 11 025kHz SR 12kHz SR 44 1kHz SR 48kHz SR 32kHz SR Reserved } tSampleRate  %26;#183;tMPEGStatus 给出了MP3函数返回状态值。 typedef enum tagMPEGStatus { eNoErr eNoSyncword eCRCError eBrokenFrame eEndOfBitstream eDataOverflow } tMPEGStatus  %26;#183;tMPEGBitstream给出MPEG比特流的指针,bufptr定义为比特流的字指针,bitidx定义为字中的索引(0-31)。 typedef struct tagMPEGBitstream { unsigned int * bufptr unsigned int bitidx } tMPEGBitstream %26;#183;tMPEGHeader包括MPEG音频报头信息,sam-ple_rate为PCM采样频率,samplesperchannel为每个声道的采样数,numchans为声道数,packed info为报头信息,bits required为下一次调用函数需要bit数,free format是指比特流的格式。 typedef struct tagMPEGHeader { tSampleRate sample rate unsigned int samplesperchannel unsigned int numchans unsigned int packed info unsigned int bits required unsigned int free format } tMPEGHeader b. MP3解码库所提供的函数 %26;#183;InitMP3AudiotMPEGInstance *inst 功能:初始化解码器解码指针。 %26;#183;MP3SearchForSyncwordtMPEGInstance *insttM-PEGBitstream *bslength 功能:查找MPEG数据中的同步字。 %26;#183;MP3DecodeInfotMPEGInstance * insttMPEGBit-stream * bstMPEGHeader * pmpeg hdr 功能:从MPEG帧中获得报头的信息。 %26;#183;MP3DecodeDatatMPEGInstance *inst short *leftshort * right tMPEGBitstream * bs 功能:从MP3数据解码成PCM数据,并将其存到left、right指向的缓冲区中。 c. MP3程序解码流程及在FIQ中断中的实现 图6所示是该系统中MP3文件的解码流程。该文件可在FIQ中断中实现播放。由于DAI FIFO对应于FIQ中断,因此,它可以通过控制寄存器来设置FIFO的中断方式,并可在程序中将产生中断的位置设置在左发送FIFO中少于四个采样数据时。由于在FIQ中断中保存有MP3解码缓冲区的地址,因此,若在进入FIQ后各写四个采样数据到左右FIFO中,那么,对于44.1kHz文件来说,FIQ发生的速率将为11kHz。为了保证左右FIFO的正确填充,一般需要交替写两个FIFO。此时如果MP3缓冲区无数据,则可写0(静音)到两个FIFO中,这样,程序就可以跳出FIFO中断接着处理数据。需要说明的是:无论程序是否需要录音,都要从接收缓冲区读四个数据,这样可确保DAI FIFO处于同步状态而不会产生失真。另外,在FIQ处理程序的最后,还要清除溢出状态位,这样可以防止FIQ始终中断。

关键字:音频  处理器  设计  文件

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

小广播

独家专题更多

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