用低价型DSP实现MP3解码

更新时间:2023-05-11 10:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

用低价型DSP实现MP3解码

用低价型DSP实现MP3解码

吴海华, 王剑虹, 陈 健

【摘 要】 首先介绍了MPEG-2音频layer Ⅲ(MP3)的解码算法,详细地叙述进行定点C语言仿真的技巧。基于TI公司的’C549 DSP芯片进行汇编工作,在TMS320C549 EVM板上实现了网上MP3文件的连续播放,效果满意。经过对算法和程序的优化使所需的运算量和存储空间都很低,使能在TI公司的低价型’C5402 DSP上实现。

【关键词】 数字音频; 声音压缩; MPEG

【Abstract】 A study on MPEG-2 Audio layer Ⅲ(MP3) algorithm is described first in this paper, then the skill of the fixed point C simulation has been discussed in detail. The main points of this praper are real time MP3 continuous decoding implementation on TMS320C549 EVM board, the result is ideal. Through the

optimization of the operational quantity and storage capacity,so the cheap chip TMS320C5402 DSP is ideal candidate.

【Key words】 digital audio; audio compression; MPEG 1 概述

随着人们对视听效果要求的不断提升,收听CD音质的Hi-Fi音乐成为日常生活中的一种需要,但CD的数码率高达1.4MB/s,无论是广播、国际互连网,以至存储都难以接受,必须进行压缩。在此背景下,一种基本达到CD音质效果,但码率被大大降低的音频压缩算法应运而生,这就是当前在互联网上非常流行的MP3压缩格式。

MP3是MPEG-2音频layer Ⅲ的简称,它是Hi-Fi级音频压缩的国际标准。编号为ISO/IEC ISO 13813-3,它有Layer Ⅰ,Layer Ⅱ,Layer Ⅲ三个不同层次的编码方案。Layer Ⅲ结合了MUSICAM(掩蔽型通用子带综合编码和复用)算法和ASPEC(自适应谱分析听觉熵编码)算法两者的优势,算法最为复杂,但它的压缩比最大。在采用64 kbps/声道的码率时(大约12倍压缩比),仍能保证高品质的音响效果,特别适合应用于ISDN网络的传输和存储。

当前在PC上实现MP3编解码的软件已经非常流行,但作为随身听的MP3解码器需要进行脱机工作。最近,国际著名的多媒体制造商Diamond,Creative相继推出了以闪存(Flash Memory)为存储媒质的MP3随身听,通过与PC的数据接口,可从PC上载入MP3源文件,并具有随时更新歌曲的能力。笔者采用了通用的DSP芯片进行MP3硬件解码,在播放时脱离了微机,可随身携带。作为普及型的消费类电子产品,要求尽可能低的成本。为此设法对程序算法进行优化,使其可以在TI公司廉价的TMS320C5402芯片上实现。

2 MPEG/AUDIO Layer Ⅲ解码的DSP实现

Layer Ⅲ采用了较复杂的比特流结构。解码软件的流程图如图1所示。首

用低价型DSP实现MP3解码

先获得每一帧的同步字,取得头信息,从而获得各相应参数,根据对头信息的解析进而获得实际的一帧音频数据。读取主数据获得缩放因子数据和霍夫曼码字,接着根据边信息中霍夫曼码本的选择信息进行霍夫曼解码,然后进行反量化,根据帧头的立体声信息(单、双声道,联合立体声、强度立体声),对反量化结果进行立体声处理。最后通过混叠处理、IMDCT和合成滤波器重建数字音频信号。

图1MP3截码流程图

2.1 头信息的读取及相应处理

由于MP3为了获取更高的数据压缩比,采用了较为复杂的比特流结构。当然处理帧的主数据(包含缩放因子和霍夫曼码字)起始位置一般不在该帧边信息后,而是根据边信息中参数main-data-begin的值决定主数据起始位置的前移字节数。由于main-data-begin为9 bit,其最大值可达511,典型的Layer Ⅲ码流如图2所示。由于

而对于Layer Ⅲ每帧有1 152个采样,采样率有44.1kHz,48kHz,32kHz三种,码率可从32kbps到320kbps不等。故而一帧内最大字节数达到1152×320k/(32k×8)=1440B。根据main-data-begin和当前帧字节数可确定数据缓冲区的内容和大小。在读取帧数据时,只需将比例因子和霍夫曼码字送入缓冲区即可,而边信息中的参数(霍夫曼参数和反量化参数)则可直接作为全局变量。

用低价型DSP实现MP3解码

图2 MP3比特流组成

2.2 读取比例因子、霍夫曼码字并进行霍夫曼解码

根据最大的量化值和信号的局部统计特性选用不同的霍夫曼码表。(总共32个可能的表)由于对领域量化值进行编码,故把从零到奈奎思特频率整个频率范围上的量化值分为大值区、小值区和零值区三个部分,对于大值区和小值区采用不同的编码策略,大值区每两个量化值转换为一个霍夫曼码字,而小值区每四个量化值转换为一个霍夫曼码字。考虑到可能有少量极大值的出现,为此设计了一个提供额外量化值的方法:当解码出来的值等于某一定数时(标准中规定为

15),根据当前选用霍夫曼码表的额外比特数读入几个额外比特的数据。对于某些较大的表,采用了一种快速搜索的方法,当当前搜索节点的增加值为某一定数(MXOFF=250)时,当前节点下移MXOFF,并加上该节点的移动值,使用该策略能快速到达表的下半区,缩短了霍夫曼查表的过程,自然也缩短了霍夫曼码字的长度。

2.3 非均匀反量化

对于不同的块类型采用不同的反量化方式。每帧有两个粒度组组成,根据帧首边信息,粒度组有纯长块组、纯短块组、混合组三种类型。对于长块和短块作用了不同的反量化方式。由于在反量化过程中涉及到求一个整数的三分之四次方的操作,结合霍夫曼解码的结果,发现大量的霍夫曼解码绝对值都处于0到255之间,而其中大部分又在0到15之间,所以把整个0到8 191的区间分成四个不同的小区间,每个区间采用不同的定点数据格式,从而更有效地提高了各个段内的比特利用率。由于小值的使用频率较高,因此通过查表来精确获得,而大值则可采用级数展开或采用查表结合线性逼近的方法。

2.4 关于立体声方式的处理

反量化后,重构值在进入合成滤波器组之前,要对MS或强度立体声模式,或两者进行处理。在MS立体声模式中,传送的是规格化的中间/旁边声道Mi/Si值,而不是左/右声道值Li/Ri。这样Li/Ri重构时使用下面的等式:

(1)

值Mi在左声道中传送,值Si在右声道中传送。

在第Ⅲ层中,强度立体声模式不是像第Ⅰ层和第Ⅱ层那样通过使用一对缩放因子来完成,而是指定幅值(像通常一样经过右声道的缩放因子)

和立体声位置

用低价型DSP实现MP3解码

is-possb[sfb]。对于右声道,传送的是is-possb[sfb],而不是缩放因子。根据下面的公式,用立体声位置来导出左右声道信号。

 (2)

对所有在实际缩放因子频带sb中的下标i(3)

对所有在实际缩放因子频带sb中的下标i(4)

2.5 混迭信号的消除

对于长块与特殊的短块,合成滤波器组的输入在做IMDCT处理之前要进行混迭信号的消除。Layer Ⅲ的混迭信号消除采用与FFT类似的蝶形结构,若充分利用DSP为计算FFT而专门设计的指令,可以大大减少运算量。

2.6 IMDCT

经过混迭消除后的信号便要进行IMDCT变换。长块进行18点到36点的IMDCT变换,短块进行3个6点到12点的IMDCT变换,再将这3个长为12的输出矢量进行叠加,生成一个长为36的最终变换结果。

N/2点的输入Xk经IMDCT变换得到N点的输出xi的公式如下:

(5)

将输出根据不同的窗类型,进行加窗运算,然后把这36个值的前半部分与上一帧的后半部分叠加,而当前块的后半部分存储起来用于和下一块叠加。

2.7 子带合成滤波器

子带合成滤波器将32个等频带宽内的频域信号反变换成时域信号,是由初始化、IMDCT、采样值加窗和32个样值叠加输出等部分组成。

子带合成滤波器接收到的是经过Huffman解码、反量化、混迭消除及IMDCT变换的一个通道(Channel)中32个子带的样值,经过IMDCT变换后,32个样值将会生成64个中间值。将这64个中间值输入到一个长为1 024的先进先出(FIFO)的缓存。再在这1 024个值中抽取一半,构成一个512的矢量,进行加窗运算。窗的系数是由ISO/IEC MPEG标准中的合成窗系数表格(Table of Coefficients For the Synthesis Window)提供的。最后将加窗结果进行叠加生成32个时域输出。

用低价型DSP实现MP3解码

在子带合成滤波器中,通过IMDCT将32个等频带宽内的频域信号反变化成64个样值。公式如下:

(6)

式中i=0,1,…,63

该变换的运算量很大,在实际中采用的以Lee的FCT为基础的改进型快速算法,将运算量减至原来的三分之一左右,存储空间的需要也大为减少。 3 TMS320C5402的特点及主芯片的选取

TMS320C5402是TI(德州仪器)公司1998年推出新一代廉价型定点DSP。它的价格为$5.0(100 k片量)。在TMS320C54X系列的指令集内提供了并行指令,能在完成一条应用指令的同时,完成并行存储功能。此外,数据可以在程序空间和数据空间中交互传送。使用流水线(Pipeline)方式,可把一条指令至多分成相互独立的六段,这意味着六条指令可以同时重叠执行(每条指令运行于不同的阶段),这样必然大大提高了实际的运行速度。

这款廉价型DSP芯片能达到80MIPS的运算速度。 但它的片上RAM和ROM都比较小,分别为16 k和4k。

C5402的主要特点如下:

●40位的算术逻辑单元(ALU),包括一个40位的桶型移位寄存器和两个独立的累加器。 ●17×17 bit并行乘法器,在预置被加数的前提下,能做到非流水线单指令乘加(MAC)。 ●指数编码器能够在一个指令周期内计算40 bit加法的指数值。

●16 k的片上RAM和4 k的片上ROM。

●具有1 M×16 bit的片外内存扩展能力。

●条件存储指令。

●支持32 bit的长字操作。

基于以上特点,该芯片作为MP3解码的主芯片在速度上绰绰有余,而片上内存稍紧。为此考虑了以下改进措施:

(1)数据存储空间的复用问题 在解码过程中涉及到许多中间结果,它们不必分别占用内存空间,完全可以公用大部分的存储空间。对于某一个子程序而言,一个输入数据块加一个输出数据块就已经足够。

(2)数据存储空间的分配问题 在DSP中定义的数据存储空间是连续分配的,即只要定义一个变量就会分配一段数据空间,而不像一般类似C的高级语言有全局变量和局部变量之分,非静态局部变量离开子程序就被释放。因此为了节约数据存储空间,可以考虑多组变量的复用。只要该变量不被重复多次调用,在使用完毕后把它的空间分配给其它变量使用,即可以把同一段空间分配给前后不相关的好几组变量,这样大大节约数据空间。TMS320C5402的汇编支持变量名的重新定义。

(3)反量化表格的粗化 考虑到完全记录4/3幂的反量化表将占用较大的存储空间(8 k×16 bit),由于只有前面的值是常用值,一般出现大于等于256值的概率小于千分之一,所以对于大值可采用递归计算或查表结合线性逼近

用低价型DSP实现MP3解码

的方法。这样该表被大大压缩,节约了片上ROM。 (4)IMDCT需要很多的存储空间 在实现中采用的以Lee的FCT为基础的改进型快速算法,存储空间的需要从原来的32×32×16 bit(1 024×16 bit)减少为376×16 bit。 4 结果分析

因’C5402是最新产品,还没有EVM板,而’C549编程和芯片脚与’C5402排列完全兼容,故采用’C549的EVM卡。在’C549的EVM板上进行调试,实时解码播放的MP3音乐效果良好。通过重建音乐信号波形和原始信号的比较,可以看出解码前后的时域信号波形吻合得很好。见图3。

图4为原始信号和重建信号在频域上的波形,在实验中发现在低频段吻合得很好,而在高频段则存在一定的误差,这是因为MP3编码时,低频段分配的量化比特数较多,而高频段分配的量化比特数较少;再者高频段采用了强度立体声方式,仅侧重高频段的能量值,影响了高频段分量的精确性。

LayerⅢ解码器除了在算法结构上较LayerⅡ要复杂外,其运算量增加并不多。表1给出单声道时各个模块的运算量。由于编码时可能采用了联合立体声或强度立体声模块,故运算量将视编码状态而定,但双声道基本是单声道的一倍,即在20 MIPS左。 对内存空间的重复利用所需存储空间见表2。 程序空间可以通过片外ROM加载,表格一部分放入片内ROM,一部分放入片内的RAM,而数据缓冲则放入片内的RAM。这样对于TMS320C540216K片上RAM加ROM而言还是够用的。

图3 编码前后时减信号波形比较

用低价型DSP实现MP3解码

图4 编码前后时减信号波形对比

5 结束语

对MPEG LayerⅢ解码算法在TMS320C549的EVM板上进行了实现,获得了良好的音质效果。在通过优化后,完全可以在兼价的TMS320C5402芯片上实现解码工作。这项技术对于开发时下流行的便携式MP3播放器具有实际的意义。下一步的工作一是用TMS320C5402做解码器,二是用TMS320C6X来实时实现的编码器。可以预见网络音乐的迅速发展,高效实时的音频编码器将有更为广泛的运用前景。 作者单位:(上海交通大学, 上海 200030)

【参考文献】

1 Seymour Shlien. Guide to MPEG-1 Audio Standard. IEEE Transactions on Broadcasting Vol.40 No.4 December 1994. 2 Charles D.Murphy. Real-Time MPEG-1 Audio Coding and Decoding on a DSP Chip. IEEE Transactions on Consumer ElectronicsVol.43 No.1 February 1997.

3 钟玉琢,乔秉新,祁卫译. ISO/IEC 13813运动图像及其伴音通用编码国际标准—MPEG-2. 北京:清华大学出版社.

4 Huang Xiali Chen Jian. Hi-Fi Audio Coding Technology for ISDN. Journal of Shanghai Jiao Tong University 61-65.

本文来源:https://www.bwwdw.com/article/02be.html

Top