《基于S3C2410处理器的的MP3设计.doc》由会员分享,可在线阅读,更多相关《基于S3C2410处理器的的MP3设计.doc(12页珍藏版)》请在金锄头文库上搜索。
1、目录一、引言4二、MP3编码和解码原理42。1、MP3编码原理52。1。1、滤波器段52.1.2、神经听觉模型62。1.3、量化和编码72.2、MP3解码原理7三、MP3的设计与实现83。1、硬件设计93.1.1、SDRAM103.1.2、FLASH103。1。3、输出电路113。2、软件设计123。2.1、驱动程序基础123.2。2、UDA1341声卡驱动程序133.2。3、Madplay播放软件13四、参考文献14基于S3C2410处理器的的MP3设计摘要:设计一种基于S3C2410的MP3播放器。该播放器是基于嵌入式linux操作系统、应用S3C2410为平台.详细介绍了MP3编码和解码
2、的原理、设计及实现过程。由于采用的是嵌入式linux实现的,该种MP3播放器可以很容易地移植到其他微控制器系统中,使设备兼具MP3播放功能的设备。关键字:嵌入式linux;MP3;编码和解码原理;设计及实现一、 引言MP3(MPEGAudioLayer3)是一种数字音频压缩技术,数字压缩速率达到每通道128kbps,数比例可以达到12:1。MP3播放器的主要作用就是解压压缩的MP3数字音频,再现MP3音乐,同时为携带方便还要能存贮MP3文件,MP3歌曲可以从电脑上下载。MP3播放器主要由MP3文件解码部分、文件存贮部分、文件下载接口和语音播放部分构成。根据解码的方法播放器可分为软解码和硬解码两
3、种:软解码是利用控制软件解压缩MP3文件,它要求控制器处理速度要快。MPEG1音频标准是一个普遍适用的音频压缩标准,它对音频源没有任何要求。它利用人耳听觉系统的感知特性,压缩率的取得来自去掉人耳听不到的信息细节,虽然压缩是有失真的,但对人耳来说这些失真是听不到的。也即对人耳而言,MPEG1音频压缩是不失真的。因此,MPEG1音频标准的应用非常广泛。二、 MP3编码和解码原理音频压缩由编码和解码两个部分组成。把波形文件里的数字音频数据转换为高度压缩的形式(称为比特流)即为编码;要解码则把比特流重建为波形文件.2。1MP3编码原理图1MP3是MPEG-1音频标准中的LayerIII的简称,它基于感
4、知音频编码,结合了MUSICAM (掩蔽模式通用子带集成编码与多路复用) 算法和ASPEC ( 自适应频谱感知熵编码) 算法 的优势, 利用人耳的听觉特性, 在保证高品质的音响效果的前提下,可以把原始的音乐数据压缩为原来的十二分之一,目标编码速率为声道, 适合于 网络上音频数据64kbps的传输 。数字音频采样通过由两个滤波器组成的滤波器组输入到心理声学模型中, 由心理声学模型 的输出控制音频屏蔽等参数,最终通过量化和霍夫曼Huffman)编码得到输出的比特流 .2。1.1 滤波器段 数字音频信号以脉冲的形式送进编码器,首先会经过一滤波器段(filterbank),它由两个串联的滤波器段组成:
5、一个多相分析滤波器段和一个MDCT(Modified Discrete Cosine Transform,经改良的离散余弦转换),前者也应用到layer-1和layer-2中,后者是MP3独有的。输入的音频信号在20Hz-20k Hz的频率范围内,通过第一个滤波器段后,把信号按频率分成32个小频带,称为子带(Subband)。20000Hz/32=625Hz,那么每个子带的宽度就是625Hz.人耳对不同频段的灵敏度是不同的,编码器可对不同的子带进行不同的量化分层。不过等宽的子带并没有准确反映人耳的听觉特性,这样进行等宽划分并没有考虑到不同信号的临界宽度,也就是该信号的影响范围,以及不同信号的相
6、互影响,所以这样会产生大量的信号重叠.MDCT转换就是为了解决这问题,它能对子带进行细分,清楚重叠部分,得到更高的频谱解析度.2.1。2神经听觉模型神经听觉模型可以说是感受编码的重中之中,它决定着编码器的编码质量。最主要的原因是它采用了声音心理模型来模拟人耳的听觉,利用人耳听觉感知上的遮蔽效应所得到的遮噪门槛曲线,决定各个子频带所容许的最大量化误差,使得了量化后的失真能被听见。声音心理模有两种,其中第一声音心理模型比较简单,适用于高传输率;第二声音心理模型比较复杂,在较低的传输率的情况下,也能维持声音的品质。此两模型皆先将音讯经傅里叶频谱变换,在对映射到临界频带,并区分出单频以及非单频成分,依
7、其所在的频率位置与强度大小,分别计算遮噪门槛曲线,而整合成整体遮噪门槛曲线,并对映成每个子频带信号编码时所需的位元素。2.1.3 量化和编码 当PCM讯号被分成好几个频段并经过一系列的处理后,最后经过MDCT,将波型转换为一连串的系数。这些系数就由Huffman编码器会选择最合适的Huffman表来做最后的压缩。 Huffman编码一般是双路工作的,但是在某些需要精密编码的情况下,它会进行四路工作.编码器一般会有很多的Huffman编码表,很多时候为了更好的声音质量和更有效屏蔽量化噪音,编码器甚至能为每一个频段选择最合适的Huffman编码表。不过编码不是一次就能成功的,要采取Try and
8、Error的方式循环进行。因为编码器一方面要削减量化噪音,让它在人耳遮蔽曲线以下;另一方面要保证bitrate满足要求。所以两个回路是嵌套工作的,互相协调,中止条件是量化噪音降到屏蔽临界线以下而码率也足够小.良好的编码器会让两个回路有条不紊的工作,因为一旦处理不好就很容易陷入死循环。22 MP3解码原理对于一个MP3文件的解码,本质上就是循环地对每一个Frame进行解码,直到完成所有Frame的解码,或者中途出现错误而中止。MP3文件的解码流程如图2所示。而对于每一帧的解码,首先是要获取每一帧的同步字符和帧头信息,从而获得相应的参数,并根据对帧头信息的分析进而得到实际一帧的音频数据;然后读取主
9、要数据并获得缩放因子数据和霍夫曼码字,接着进行霍夫曼解码;其次进行反量化,并根据帧头的立体声信息对反量化结果进行立体声处理;最后通过混迭处理、IMDCT和合成滤波器重建数字音频信号,这一程如图3所示。图2 图3MP3文件解码播放的简化流程可用图4表示。图4 解码播放简化流程由图4可知,MP3文件或者其它音频文件,经过解码库(解码器)的解码,生成PCM数据,然后将PCM数据写入声卡设备,即可实现音频文件的播放。三、 MP3的设计与实现一个完整MP3播放机要分几个部分:中央处理器、解码器(软件解码)、存储设备、主机通讯端口、音频DAC和功放、显示界面和控制键.其中中央处理器和解码器是整个系统的核心
10、。这里的中央处理器我们通常称为cpu(微处理器).它运行MP3的整个控制程序,也称为fireware(或者固件程序)。控制MP3的各个部件的工作:从存储设备读取数据送到解码器(软件解码)解码;与主机连接时完成与主机的数据交换;接收控制按键的操作,显示系统运行状态等任务。MP3播放机是软件解码,由高速中央处理器完成。它可以直接完成各种格式MP3数据流的解码操作,并输出PCM或I2S格式的数字音频信号。图5 系统总体结构图3.1 硬件设计处理器:硬件电路以处理器为中心.Samsung公司的ARM9处理器S3C2410X,是一款基于ARM920T内核的16位/32位RISC嵌入式处理器。ARM920
11、T核由ARM9TDMI、存储管理单元(MMU)和高速缓存三部分组成。其中MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。S3C2410芯片集成了大量的功能单元。3。1。1SDRAM随机存取存储器RAM(RandomAccessMemory)是易失性的存储器,在掉电以后数据即消失,不能长期保存。但与ROM器件不同的是,它的随机读写速度非常快,写入数据之前也不需要进行擦除,常用的RAM分为SRAM(静态RAM)和DRAM(动态RAM),我们这里采用SDRAM(同步动态RAM),S3C2410X芯片本身提供对SDRAM进行直接接口的解决方案,因此不需要通过编程来
12、实现它们所需的接口时序,而只须对与存储器控制器相应的寄存器进行适当配置。SDRAM是多bank结构,例如在一个具有两个bank的SDRAM的模组中,其中个bank在进行预充电期间,另一个bank却可以马上被读取,这样当进行一次读取后,又马上去读取已经预充电bank的数据时,就无需等待而是可以直接读取了。这也就大大提高了存储器的访问速度。具体芯片采用现代HY57V641620,分成4个Bank,每个Bank的容量为1M16位。Bank的地址由BA1,BA0决定,00对应Bank0,01对应Bank1,10对应Bank2,11对应Bank3。在每个Bank中,分别用行地址脉冲选通RAS和列地址脉冲
13、选通CAS进行寻址。3。1.2 FLASHNOR和NAND是目前市场上两种主要的非易失散存技。Nor-flash存储器的容较小、写入速度慢,但其随即读取速度快,因此在嵌入式系统中,常应用在程序代码的存储中。另外,Norflash存储器的内部结构决定了它不适合朝大容量方向发展;而Nandflash存储器结构能提供极高的单元密度,可以达到很大的存储容量,并且写入和擦除速度也很快。Nand-flash存储器内部采用非线性宏单元模式,为固态大容量存储器的实现提供了廉价有效的解决方案,因而现在得到了越来越广泛的应用.例如体积小巧的U盘就是采用Nandflash存储器.在这里我们也采用NandflashK
14、9F2808U。3。1。3输出电路UDA1341是飞利浦公司的一款经济型音频CODEC,用于实现模拟音频信号的采集(音频AD)和数字音频信号的模拟输出(DA),并通过IIS数字音频接口,实现音频信号的数字化出理。UDA1341的IIS引脚分别接到S3C2410对应的IIS引脚上,音频输入输出(VIN,VOUT)分别和麦克风扬声器连接;UDA1341的L3接口相当于一个Mixer控制器接口,可以用来控制输入/输出音频信号的音量大小,低音等。L3接口的引脚L3MODE,L3DATA和L3CLOCK分别链接到S3C2410的IICSCL,IICSDA和GPF6引脚上。43.2软件设计我们选择在此MP
15、3播放器上运行arm-Linux操作系统。嵌入式Linux系统从软件角度来可以分为5个层次:(1)引导加载程序,固化固件中的启动代码和Bootloader两大部分.(2)内核特定于具体硬件的定制内核以及控制内核引导系统的参数。(3)文件系统包括根文件和建立于Flash存储器设备上的文件系统。(4)UDA1341声卡驱动程序。这个驱动主要涉及S3C2410 DMA的使用.(5)用户应用程序.特定于用户的应用程序。对于本系统来说就是播放程序。3。2。1 驱动程序基础Linux设备驱动程序将设备看成文件。设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节, 这样使
16、硬件对应用程序来说是透明的, 在应用程序看来, 硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作.设备驱动程序是嵌入式Linux内核的一部分, 它完成以下的功能:(1)对硬件设备初始化和释放。(2)把数据从内核传送到硬件, 或从硬件读取数据.(3)读取应用程序给设备文件的数据和回送应用程序请求的数据。(4)检测和处理设备出现的错误和异常。用户进程通过设备文件实现与硬件的交流.Linux 给每个设备都分配一个主设备号 (MajorNumber)和次设备号(MinorNumber).主设备号一般用来定义这个设备的类型, 次设备号是一个8位的数字, 它指定一个特定的设备。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致, 否则用户进