文章快速检索     高级检索
  重庆邮电大学学报(自然科学版)  2013, Vol. 25 Issue (4): 494-499  DOI: 10.3979/j.issn.1673-825X.2013.04.015
0

引用本文 

张红升, 王国裕, 陆明莹. 低功耗高集成度MP3解码器IP核设计[J]. 重庆邮电大学学报(自然科学版), 2013, 25(4): 494-499. DOI: 10.3979/j.issn.1673-825X.2013.04.015.
ZHANG Hongsheng, WANG Guoyu, LU Mingying. ASIC design of a low-power high-integration MP3 decoder IP[J]. Journal of Chongqing University of Posts and Telecommunications (Natural Science Edition), 2013, 25(4): 494-499. DOI: 10.3979/j.issn.1673-825X.2013.04.015.

基金项目

重庆市科委基础与前沿研究项目(2013JCYJA40006);重庆市教委科学技术研究项目(KJ130530);重庆邮电大学科研基金项目(A201211)

通信作者

张红升(1980-), 男, 河南人, 副教授, 博士。主要研究方向为数字集成电路设计、数字音频广播解码算法。E-mail:zhanghs@cqupt.edu.cn

作者简介

王国裕(1954-), 男, 江苏人, 教授, 博士。主要研究方向为SOC芯片设计、音视频解码算法研究。E-mail:wanggyb@cqupt.edu.cn; 陆明莹(1954-), 女, 江苏人, 教授, 博士。主要研究方向为SOC芯片设计、音视频解码算法研究。E-mail:lumy@cqupt.edu.cn

文章历史

收稿日期: 2013-03-20
修回日期: 2013-06-10
低功耗高集成度MP3解码器IP核设计
张红升, 王国裕, 陆明莹    
重庆邮电大学 微电子工程重点实验室, 重庆 400065
摘要: 针对MP3解码器IP核低功耗和高集成度的要求, 对MP3的解码算法和硬件结构进行优化, 并设计定制处理单元高效率地执行解码运算, 同时引入门控时钟实现MP3解码器的分时工作, 从而以极低的硬件代价和功耗完成了MP3解码器IP核设计。该IP核采用16.384 MHz系统工作时钟, 共耗用33 088个逻辑门和33 004字节存储单元, 以0.18 μm 1P4M CMOS工艺成功流片。芯片测试结果表明, 该IP核具有正确的MP3解码功能, 音质良好, 最大解码功耗不超过9 mW, 逻辑电路所占硅片面积仅为0.37 mm2
关键词: ASIC设计    MP3解码器    低功耗    高集成度    
ASIC design of a low-power high-integration MP3 decoder IP
ZHANG Hongsheng , WANG Guoyu , LU Mingying     
Key lab of Microelectronics Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065, P. R. China
Foundation Items: The Fundamental and Advanced Research Project of Chongqing Science and Technology Committee (2013JCYJA40006);The Research Project of Chongqing Education Committee (KJ130530); The Research Foundation of Chongqing University of Posts and Telecommunications (A201211)
Abstract: This paper reports an ASIC implementation of MP3 decoder IP with low power consumption and high integration. The decoding algorithm and hardware structure are optimized to reduce the hardware cost. A customized process unit is designed to improve the overall computation efficiency. Gated clocks are arranged for power cycling to achieve extremely low power consumption. The MP3 decoder works at a system clock of 16.384 MHz and has been fabricated with 0.18 um 1P4M CMOS technology. It consumes 33088 logic gates and 33004 bytes RAM/ROM. Test result shows that the decoder works perfectly and consumes less than 9 mW, and the logic circuit occupies only 0.37 mm2 silicon areas.
Key Words: ASIC design    MP3 decoder    low power consumption    high integration    
0 引言

由于声音压缩格式的不断更新,单一功能的MP3音频播放器产品已经面临边缘化的危机。当前对于MP3的研究热点在于实现与其他电子产品的整合。本文的任务是设计低功耗高集成度的MP3 IP核,以实现与其他音视频功能的芯片级集成。

目前的MP3解码器主要有2种实现方式:①软件实现,通过在通用嵌入式处理器上进行软件编程完成MP3解码[1-2]; ②通过专用集成电路(application specific integrated circuit, ASIC)方式实现[3]。前者具有开发方便、灵活性较强的优点,但软件实现的方式终究会带来功耗高和成本昂贵等缺点。现在多功能电子产品已经占领市场,MP3功能更多地被整合到这些具有多功能的电子产品中[4],软件实现的缺点就成为影响整机性能的关键。所以,采用ASIC的方式实现MP3解码器在集成度和功耗等方面都具有一定的优势。

本文采用ASIC方式实现MP3解码器IP核。对IP核结构和算法的优化成为提高集成度和降低功耗的关键。该MP3解码器IP核已通过流片,并开发了基于该芯片的MP3多功能音频播放样机。对芯片和样机的测试结果表明,MP3解码器IP核解码功能正确,达到了低功耗高集成度的设计要求。

1 算法优化和硬件设计

MP3解码器框图如图 1所示。MP3音频数据是以帧为基本单位存储的,所以,对应的在MP3解码器中,也是以帧为单位进行处理的。MP3解码器得到输入的音频帧数据后,按以下步骤处理。

图 1 MP3解码器框图 Figure 1 Block diagram of the MP3 decoder

第1步 找到同步字(即每一帧开始的0xFFF),进行帧同步处理。确定帧同步之后再进行帧头信息解码,获取音频文件的一些基本信息(如比特率、采样率、声道数等)。

第2步 进行边信息解码。提取出主数据解码所需的辅助解码信息。

第3步 从码流中解出比例因子和频谱值。

第4步 通过前2步得到的比例因子和频谱值,反量化还原得到量化前的频谱值。

第5步 根据边信息中解得的条件进行判断,确定是否要进入M/S、重排序及抗锯齿化3个模块进行处理。

第6步 通过综合滤波器组,把经过处理后的频谱值最终还原成时域内的脉冲编码调制(pulse code modulation, PCM)样点。

现在分别对图 1中所涉及的模块进行介绍和设计。

1.1 码流解析

码流解析模块的作用是从MP3码流中分离出各种后续解码模块所需的信息。图 2给出了MP3音频帧的数据结构,包括帧头、CRC校验位、边信息、主数据及填充位等数据。比例因子和Huffman编码的量化样本值都放在主数据中。如果仅从图 2来看,MP3音频帧的数据结构是很清晰的,但是由于MP3技术中采用比特池技术, 使得实际MP3码流中的数据排列稍显复杂。

图 2 MP3音频帧数据结构图 Figure 2 Data structure of an MP3 frame

比特池技术的使用可能会导致本帧的主数据出现在上一帧的数据中,如图 3所示。对于MP3比特池的处理,常用的方法是对MP3码流中的数据进行重新排序,将存在于前后2帧的主数据整合到一起。这样对于之后的解码过程,音频数据就是一个顺序读取的过程。但是这样的方法会增加RAM资源。本文采用跳变取值的方式,直接在读取MP3码流的时候通过地址的跳变来达到重新排序主数据的目的。

图 3 MP3码流示意图 Figure 3 Flowchart of the MP3 data stream
1.2 Huffman解码

Huffman编码作为一种高效无损压缩的重要方法,对于数据压缩效率有明显的提高。在MP3解码中,Huffman解码器的作用主要是通过Huffman解码得到量化后的频谱值。对于本文中的解码器设计而言,如何用较小的硬件资源来实现快速的Huffman解码对于整个设计尤为重要。本文摈弃了二叉树等传统解码方法,使用了码表重排和子带查表的方法[5]。Huffman解码器一次性从码流中读取本码表最大长度的数据,然后在本码表中进行查表。本文的MP3 Huffman解码算法用尽可能小的ROM存储空间和尽可能少的逻辑单元,实现了Huffman解码,使得4个时钟周期就可以完成一次Huffman解码。这样保证了IP核的高集成度和高性能。图 4为MP3 Huffman解码模块的设计框图。

图 4 Huffman解码器结构图 Figure 4 Block Diagram of the Huffman Decoder
1.3 反量化

Huffman解码所得到的量化频谱值,需要经过反量化处理,还原成最终的频谱数据。MP3反量化公式为

$ {x_r} = {\rm{sign}}({i_s}) \times |{i_s}{|^{4/3}} \times {2^{0.25*y}} $ (1)

(1)式中:xr为反量化输出值;is为频谱量化值;sign(is)为is的符号;y是从码流解析模块得到的反量化前的频谱值。

从(1)式可以看出,反量化的运算量主要集中在|is|4/3以及20.25*y上。现在先讨论|is|4/3的处理。从Huffman模块中解得的|is|4/3的值为0~8 191,如果直接进行查表,就需要消耗8 192个ROM存储地址,这在硬件设计中是难以接受的。对|is|取值的统计结果显示,绝大部分的|is|取值都小于512,因此,可以通过适当降低|is|>512部分的反量化精度的方法来降低复杂度。基于这个认识,本文采用了分区查表的算法,将|is|划分为3段进行处理。

第1段:0 < |is| < 512,

|is|4/3的计算结果直接查表得出,并将结果表示成(2)式所示的指数形式。其中,value2为13位,exp为5位。

$ |{i_s}{|^{4/3}} = {\rm{value}}2 * {2^{{\rm{exp}}}} $ (2)

第2段:512 < |is| < 4 096,

$ |{i_s}{|^{4/3}} \approx 16|{\mathop{\rm int}} ({i_s}/8){|^{4/3}} $ (3)

第3段:4096 < |is| < 8191,

$ |{i_s}{|^{4/3}} \approx 256|{\mathop{\rm int}} ({i_s}/64){|^{4/3}} $ (4)

通过上述分段处理后,只需要512个ROM存储地址来存放第一段对应的|is|4/3值,第2段和第3段都可以通过移位后映射到第1段进行近似计算。而且,可以得到很好的近似精度,其最大误差不会超过1%。图 5给出了近似计算结果与原计算结果的比值。

图 5 |is|4/3近似算法精度图 Figure 5 Precision of the calculation results of |is|4/3

(1)式中的20.25*y比较容易处理,因为在实际运算中y的结果只有6种可能性,即使得20.25*y的结果为20.25,20.50,20.75,2-0.75,2-0.50,2-0.25。针对这种情况,本文将这6种情况下的20.25*y的运算结果预先存放在ROM中,在计算中,只需要根据y的值进行查表即可。

1.4 M/S、重排序、抗锯齿处理

经过反量化之后的采样频谱会选择性的进入M/S、重排序、抗锯齿处理这3个模块(通过边信息中的标志位进行判断是否进行这3个模块的处理)。M/S解码的过程很简单,通过M/S解码可以将中间频谱数据(M)和旁边频谱数据(S)经过(5)式所示运算还原为左(L)右(R)声道频谱。

$ \left\{ \begin{array}{l} L = (M + S)/\sqrt 2 \\ R = (M-S)/\sqrt 2 \end{array} \right. $ (5)

重排序是针对短窗而言的。本设计中是直接在反量化后的频谱样点值存入RAM中的时候将存储地址进行变换,从而实现重排序的操作。这样省去了常规排序方法中对于RAM数据的读写时间。

1.5 IMDCT

经过上述模块处理后的频谱样点值,再经过改进的反向离散余弦变换(inverse modified discrete cosine transform, IMDCT)以及加窗处理,得到最终的时域PCM样点。MP3解码器中的IMDCT运算公式如下:

$ \begin{array}{l} {x_n} = \sum\limits_{k = 0}^{N/2- 1} {{X_k}\cos \left[{\frac{\pi }{2}\left( {2n + 1 + \frac{N}{2}} \right)(2K + 1)} \right], } \\ (0 \le n < N) \end{array} $ (6)

(6)式中:Xk为频谱值; xn为时域样点值。在短窗条件下, N=12,在长窗条件下,N=36。IMDCT是MP3解码运算量的主要部分,包含了大量的乘加运算。为有效完成上述运算,在硬件实现上,设计了一个专门针对MP3解码的专用Process Unit(PU)。PU模块采用流水线设计,主要模块结构如图 6所示,包含输入缓冲单元、18位乘法单元、24位加/减法单元、24位移位单元,可在一个时钟周期同时进行乘法、加法/减法、移位运算,提高了解码速度。

图 6 IMDCT实现结构图 Figure 6 Block diagram of the IMDCT module
2 MP3解码器的芯片设计 2.1 硬件架构

基于以上MP3解码模块的分析和设计,本文提出了MP3解码器IP整体硬件结构,如图 7所示。

图 7 MP3解码器硬件结构 Figure 7 Hardware structure of the MP3 decoder

图 7显示了MP3解码器的硬件结构和模块组成。SRAM为输入音频帧存储区域,共分为大小相等的2个部分,并轮流执行音频帧的读取和写入操作。码流解析模块将从SRAM中读出MP3音频数据并进行码流分解,得到音频主数据和解码所需的辅助信息。再经过Huffman解码、反量化等模块的处理。最后,频谱数据经过IMDCT和综合滤波器组,转换成时域的PCM样点值,并存放在SRAM2中。DAI模块从SRAM2中读出PCM样点值,并根据I2S接口协议,将PCM样点转换成片外DAC能够播放的数据形式。在MP3解码的过程中,LR-RAM用于存储解码过程中实时产生的数据和变量。反量化和IMDCT运算过程中用到的系数全都存在CoffRom中。

2.2 低功耗设计

功耗是衡量芯片性能的重要标准,尤其是对用于便携设备的芯片。为了达到降低功耗目的,本文主要采用2种方法:①编写高质量代码,降低综合后的逻辑门数量;②通过采用门控时钟,利用分时解码的方法,大幅降低芯片的整体功耗,其原理如图 8所示。

图 8 分时解码原理 Figure 8 Theory of the power cycling decoding

MP3解码后,每一帧的播放时间(playing time, PT)长度取决于它的采样率。以48 kHz采样率为例,每一帧音频数据的PT为24 ms。为保证声音播放的流畅性,完成一帧解码所需要的最大运算时间(computing time, CT)必须要小于其播放时间。也就意味着每一帧的解码完成后都会有一段空闲时间(idle time, IT),除了DAI模块在继续播放PCM数据外,MP3解码器在这段时间内是不会进行任何解码操作的。因此,在此期间就可以关掉MP3的解码时钟,将整个解码器置于休眠状态,从而降低整体功耗。不同采样率下CT与PT的比率如表 1所示。

表 1 CT/PT统计 Table 1 Statistic result of CT/PT

表 1可以看出,采用分时解码后,MP3解码时钟的开启时间只有全时解码的10%~60%, 这是降低功耗的有效措施之一。

2.3 ASIC实现

该MP3解码器最终与DAB基带芯片集成一起,并采用0.18 μm 1P4M CMOS工艺成功流片,从而使该芯片既可作为MP3解码芯片使用,又可用于DAB接收机,大大扩展了其使用范围。

图 9为整颗芯片的版图,图 9中虚线框内所示为MP3解码器的逻辑单元。该部分所占硅片面积为0.37 mm2,仅占用整个芯片的2.7%。其中存储单元(RAM,ROM)和逻辑门的消耗量分别如表 2表 3所示。

图 9 芯片版图 Figure 9 Chip layout
表 2 MP3解码器存储资源使用 Table 2 Hardware resources of the MP3 decoder
表 3 各功能模块逻辑门数量 Table 3 Logic gates of each block
3 测试 3.1 仿真测试

通过将该MP3解码器的结果与高精度的Matlab MP3解码模型结果之间的差值进行均方根(root mean square, RMS)计算,可以清晰的看出该解码器的计算精确度。具体为

$ RMS = \sqrt {\frac{1}{N}\sum\limits_{n = 0}^{N-1} {{{(out(n)-ref(n))}^2}} } $ (7)

(9)式中:N为测试的样点数量;out(n)为该解码器的输出;ref(n)为Matlab解码输出。通过计算,最大RMS可以达到-98 dB,满足MPEG声音测试标准,保证了本文设计的MP3解码器的音质。

3.2 芯片测试

通过搭建测试平台对MP3解码器芯片的功能进行了全面的测试。其测试框图如图 10所示。首先将待解码数据存入SD卡中,并通过MCU将数据发送至芯片进行解码,解码后的数据最终通过DAC转换成模拟信号并驱动耳机形成音乐。与此同时MCU还支持了人机交互功能,通过不同的按键可以对解码过程进行实时控制,并将MP3文件信息以及芯片内部的工作状态反映到LCD上。

图 10 芯片测试系统方案图 Figure 10 Block diagram of the chip test system

通过对大量的MP3测试文件进行解码,该MP3解码器能正确地解码各种参数组合(包括采样率,比特率,单声道/立体声等)的MP3音频数据,并能与DAB完美兼容,从而进一步证明了该设计的正确性。

3.3 样机测试

在以上测试的基础上,本文设计了基于该MP3芯片的MP3样机,如图 11所示,图 11中标出了该样机的主要模块,这是一个兼容MP3,FM,DAB和SD卡的多功能音频播放样机。MP3解码最大功耗只有9 mW,达到了便携设备低耗的要求。

图 11 兼容MP3的多功能音频播放样机 Figure 11 Prototype multi-function audio player with MP3 decoder
4 结束语

本文分析了MP3解码算法,采用一系列的优化手段设计了一款高精度低功耗的MP3解码器IP核,使得仅使用33 088个逻辑门和33 004字节存储单元即可完成MP3解码工作。通过测试,该IP核可以解码各种MP3音频数据。

需要说明的是该解码器采用0.18 μm CMOS工艺,所占硅片面积为0.37 mm2,其功耗低至9 mW。如果采用更先进的工艺,如90 nm CMOS工艺,其硅片面积将相应地降低到0.1 mm2以下,其功耗进一步降低到3 mW以下。因此,本文设计的MP3解码器IP能够方便地集成到各种移动便携设备的芯片中,其代价(硅片面积、功耗和加工费用的增加)降到几乎可忽略的程度。

参考文献
[1] MOON Hangil. A Low-Complexity Design for an MP3 Multi-Channel Audio Decoding System[J]. IEEE Transactions on Audio, Speech, and Language Processing , 2012, 20 (1) : 314–321. DOI:10.1109/TASL.2011.2161081
[2] 罗钧, 付丽. 基于DSP的MP3解码系统设计[J]. 重庆大学学报:自然科学版 , 2005, 28 (1) : 28–31.
LUO Jun, FU Li. Design of MP3 decoder system based on DSP[J]. Journal of Chongqing University:Natural Science Edition , 2005, 28 (1) : 28–31.
[3] HEDBERG, H, LENART T, SVENSSON H. A complete MP3 decoder on a chip[C]//2005 IEEE International Conference on Microelectronic Systems Education. California:IEEE Computer Society, 2005:103-104.
[4] 曹晓晖, 林争辉. 一种MP3/AAC解码器ASIC的设计与实现[J]. 微电子学 , 2004, 34 (3) : 337–340.
CAO Xiaohui, LIN Zhenghui. Design of an MP3/AAC decoder ASIC and its implementation[J]. Microelectronics , 2004, 34 (3) : 337–340.
[5] LU Mingying, WANG Guoyu. Huffman code table transform for parallel decoding:UK, GB1101178.0[P]. 2011.