目录
1、引言
2、MP3编码和解码原理
2.1 MP3编码原理
2.2 MP3解码原理
3、MP3的设计与实现
3.1硬件设计
3.2软件设计
4、结束语
基于嵌入式linux的MP3设计与实现
摘要:设计一种基于s3c2410的MP3播放器。该播放器是基于嵌入式linux操作系统、应用s3c2410为平
台。详细介绍了MP3编码和解码的原理、设计及实现过程。由于采用的是嵌入式linux实现的,该种MP3播放器可以很容易地移植到其他微控制器系统中,使设备兼具MP3播放功能的设备。
关键字:嵌入式linux;MP3;编码和解码原理;设计及实现
一、引言
MP3(MPEGAudioLayer-3)是一种数字音频压缩技术,数字压缩速率达到每通道128kbps,数比例可以达到12:1。MP3播放器的主要作用就是解压压缩的MP3数字音频,再现MP3音乐,同时为携带方便还要能存贮MP3文件,MP3歌曲可以从电脑上下载。MP3播放器主要由MP3文件解码部分、文件存贮部分、文件下载接口和语音播放部分构成。根据解码的方法播放器可分为软解码和硬解码两种:软解码是利用控制软件解压缩MP3文件,它要求控制器处理速度要快。
MPEG-1音频标准是一个普遍适用的音频压缩标准,它对音频源没有任何要求。它利用人耳听觉系统的感知特性,压缩率的取得来自去掉人耳听不到的信息细节,虽然压缩是有失真的,但对人耳来说这些失真是听不到的。也即对人耳而言,MPEG-1音频压缩是不失真的。因此,MPEG-1音频标准的应用非常广泛。
二、MP3编码和解码原理
音频压缩由编码和解码两个部分组成。把波形文件里的数字音频数据转换为高度压缩的形式(称为比特流)即为编码;要解码则把比特流重建为波形文件。
1、MP3编码原理
下图是MP3的编码流程图:
MP3是MPEG-1音频标准中的LayerIII的简称,它基于感知音频编码,结合了MUSICAM (掩蔽模式通用子带集成编码与多路复用) 算法和ASPEC ( 自适应频谱感知熵编码) 算
法的优势, 利用人耳的听觉特性, 在保证高品质的音响效果的前提下,可以把原始的音乐数据压缩为原来的十二分之一,目标编码速率为声道, 适合于网络上音频数据64kbps 的传输。数字音频采样通过由两个滤波器组成的滤波器组输入到心理声学模型中, 由心理声学模型的输出控制音频屏蔽等参数,最终通过量化和霍夫曼Huffman)编码得到输出的比特流。
1.1  滤波器段 (filterbank)
数字音频信号以脉冲的形式送进编码器,首先会经过一滤波器段(filterbank),它由两个串联的滤波器段组成:一个多相分析滤波器段和一个MDCT(Modified Discrete Cosine Transform,经改良的离散余弦转换),前者也应用到layer-1和layer-2中,后者是MP3
独有的。
输入的音频信号在20Hz-20k Hz的频率范围内,通过第一个滤波器段后,把信号按频率分成32个小频带,称为子带(Subband)。20000Hz/32=625Hz,那么每个子带的宽度就是625Hz。人耳对不同频段的灵敏度是不同的,编码器可对不同的子带进行不同的量化分层。
不过等宽的子带并没有准确反映人耳的听觉特性,这样进行等宽划分并没有考虑到不同信号的临界宽度,也就是该信号的影响范围,以及不同信号的相互影响,所以这样会产生大量的信号重叠。MDCT转换就是为了解决这问题,它能对子带进行细分,清楚重叠部分,得到更高的频谱解析度。
1.2神经听觉模型
神经听觉模型可以说是感受编码的重中之中,它决定着编码器的编码质量。最主要的原因是它采用了声音心理模型来模拟人耳的听觉,利用人耳听觉感知上的遮蔽效应所得到的遮噪门槛曲线,决定各个子频带所容许的最大量化误差,使得了量化后的失真能被听见。
声音心理模有两种,其中第一声音心理模型比较简单,适用于高传输率;第二声音心理模型比较复杂,在较低的传输率的情况下,也能维持声音的品质。此两模型皆先将音讯经傅里叶频谱变换,在对映射到临界频带,并区分出单频以及非单频成分,依其所在的频率位置与强度大小,分别计算遮噪门槛曲线,而整合成整体遮噪门槛曲线,并对映成每个子频带信号编码时所需的位元素。
1.3 量化和编码(Quantization and Coding)
当PCM讯号被分成好几个频段并经过一系列的处理后,最后经过MDCT,将波型转换为一连串的系数。这些系数就由Huffman编码器会选择最合适的Huffman表来做最后的压缩。Huffman编码一般是双linux内核设计与实现 pdf
路工作的,但是在某些需要精密编码的情况下,它会进行四路工作。编码器一般会有很多的Huffman编码表,很多时候为了更好的声音质量和更有效屏蔽量化噪音,编码器甚至能为每一个频段选择最合适的Huffman编码表。
不过编码不是一次就能成功的,要采取Try and Error的方式循环进行。因为编码器一方面要削减量化噪音,让它在人耳遮蔽曲线以下;另一方面要保证bitrate满足要求。所以
两个回路是嵌套工作的,互相协调,中止条件是量化噪音降到屏蔽临界线以下而码率也足够小。良好的编码器会让两个回路有条不紊的工作,因为一旦处理不好就很容易陷入死循环。
2、MP3解码原理
对于一个MP3文件的解码,本质上就是循环地对每一个Frame进行解码,直到完成所有Frame的解码,或者中途出现错误而中止。MP3文件的解码流程如图1所示。而对于每一帧的解码,首先是要获取每一帧的同步字符和帧头信息,从而获得相应的参数,并根据对帧头信息的分析进而得到实际一帧的音频数据;然后读取主要数据并获得缩放因子数据和霍夫曼码字,接着进行霍夫曼解码;其次进行反量化,并根据帧头的立体声信息对反量化结果进行立体声处理;最后通过混迭处理、IMDCT和合成滤波器重建数字音频信号。这一程
如图2所示。
MP3文件解码播放的简化流程可用图3表示。
由图3可知,MP3文件或者其它音频文件,经过解码库(解码器)的解码,生成PCM数据,然后将PCM数据写入声卡设备,即可实现音频文件的播放。
三、MP的设计与实现
一个完整MP3播放机要分几个部分:中央处理器、解码器(软件解码)、存储设备、主机通讯端口、音频DAC和功放、显示界面和控制键。其中中央处理器和解码器是整个系统
的核心。这里的中央处理器我们通常称为cpu(微处理器)。它运行MP3的整个控制程序,也称为fireware(或者固件程序)。控制MP3的各个部件的工作:从存储设备读取数据送到解码器(软件解码)解码;与主机连接时完成与主机的数据交换;接收控制按键的操作,显示系统运行状态等任务。MP3播放机是软件解码,由高速中央处理器完成。它可以直接完成各种格式MP3数据流的解码操作,并输出PCM或I2S格式的数字音频信号。
系统的总体结构如图所示
1.硬件设计
处理器:硬件电路以处理器为中心。Samsung公司的ARM9处理器———S3C2410X,是一款基于ARM920T内核的16位/32位RISC嵌入式处理器。ARM920T核由ARM9TDMI、存储管理单元(MMU)和高速缓存三部分组成。其中MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。S3C2410芯片集成了大量的功能单元。
1.1 SDRAM:
随机存取存储器RAM(RandomAccessMemory)是易失性的存储器,在掉电以后数据即消失,不能长期保存。但与ROM器件不同的是,它的随机读写速度非常快,写入数据之前也不需要进行擦除,常用的RAM分为SRAM(静态RAM)和DRAM(动态RAM),我们这里采用SDRAM(同步动态RAM),S3C2410X芯
片本身提供对SDRAM进行直接接口的解决方案,因此不需要通过编程来实现它们所需的接口时序,而只须对与存储器控制器相应的寄存器进行适当配置。SDRAM是多bank结构,例如在一个具有两个bank的SDRAM的模组中,其中个bank在进行预充电期间,另一个bank却可以马上被读取,这样当进行一次读取后,又马上去读取已经预充电bank的数据时,就无需等待而是可以直接读取了。这也就大大提高了存储器的访问速度。具体芯片采用现代HY57V641620,分成4个Bank,每个Bank的容量为1M×16位。Bank的地址由BA1,BA0决定,00对应Bank0,01对应Bank1,10对应Bank2,11对应Bank3。在每个Bank中,分别用行地址脉冲选通RAS和列地址脉冲选通CAS进行寻址。电路连接见图2、图3所示。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。