MP3

发布时间:2014-04-28 07:21:06   来源:文档文库   
字号:

MP3解码器的SOPC实现

作者:程维好 张歆奕

来源:《电子世界》2012年第06

        【摘要】简单的介绍了MP3的解码原理,并应用SOPC技术构建快速合适的硬件系统,以Altera公司的Nios II软核处理器作为控制及解码单元来完成MP3解码器的设计。对MP3解码器中主要算法模块做了优化和改进,用Verilog语言来实现MP3解码器的RTL设计,并在DE2-70开发板上得到了实时验证,达到了较好的优化效果。

        【关键词】MP3SOPCNios II;硬件实现

        1.引言

        MP3(MPEG Audio Layer3)是高品质的音频压缩标准,因其在音质,复杂度与压缩比的完美折中,占据着广阔的市场,目前在便携式设备领域深受人们喜爱。而随着消费电子的快速发展,MP3在各种场合的需求越来越多,同时针对MP3解码器的设计也越来越多。其中主要有以下三种方式:以专用MP3编解码芯片为核心加上必要外围电路的VLSI实现;②DSP处理器加外部存储器,数模转换等外围器件实现;以低速核心处理器(CPU/RISC)与其他硬件加速模块的SOPC设计加上外围器件实现。而第三种实现方式相对于前两种方式在功耗和性价比方面有着明显的优势,本文是基于SOPC技术来实现MP3解码器的设计,其中MP3文件数据用SD卡来存放[1]

        2.MP3解码流程分析

        MP3解码流程如图1所示,解码的主要过程包括同步提取码流(以帧为单位)哈夫曼解码,比例因子解码,反量化,重排列,立体声处理,混叠重建,IMDCT变换,子带综合滤波合成,最后输出原始的PCM数据。

        在解码过程中,耗时比较多的主要是IMDCT和子带综合滤波这两部分。在编译后它们占据着相当多的硬件资源,功耗特高,所以在设计时针对这两个计算量大的算法IMDCT,子带综合滤波器做了硬件加速处理,来提高整个系统的性能。在IMDCT算法中有长块和短块,计算时长块输入是18点而短块输入是6点,长短块输入的值都是非2n次方,所以可以采用Szu Wei Lee快速算法,此算法对输入点数越大的运算,其速度提升就越明显。传统的IMDCT算法,在计算长块时需要的是36*18次乘法和36*17的加法,采用Szu Wei Lee算法后,长块的计算只需要43次乘法和115次加法,程序的运算速度显著提高了。在设计子带综合滤波时,直接计算则需要执行32*64次乘法和31*64次加法,两声道采样率为44.1KHz,乘法运算量为(44100/32*(64*32+512)*2=7056000/秒,而系统时钟一般都采用的是50MHz,单个周期内占着整个解码时间的58.2%,严重影响了整个系统解码的速率。所以可以根据余弦函数的对称性,并结合Byeong Gi Lee快速DCT算法来进行改进,改进后子带综合滤波则只需要进行384次乘法和376次加法,大大提升了运算速度[2]

        3.系统的硬件设计

        基于Nios II的嵌入式系统主要是由三部分组成:IP库(NiosII软核处理器,Avalon总线,外围设备接口等),GNUPro软件编译器,SOPC Builder开发工具。本文在硬件设计时使用Altera公司的Cyclone II FPGA芯片,型号为EP2C70F896C6,主要外围设备包括片外SDRAM存储器、SD卡、音频芯片WM8731LCD等,其中FPGA芯片完成对各个硬件模块和数据流的控制,片外存储器存放程序数据和执行代码,SD卡存放MP3文件,音频芯片将PCM数据流转换输出,LCD显示系统状态,IP核的复用是SOPC设计的关键[3]。其硬件系统结构如图2所示。

        FPGA内部逻辑设计是以Quartus II为开发环境,以Verilog语言编程实现音频控制,SD卡的读写,液晶显示驱动等功能模块的设计。用SOPC Builder配置并产生NiosII软核处理器以及必要的外设,然后在再通过编译,下载到FPGA的配置芯片中,形成硬件逻辑电路的连接,最后验证系统,从而实现MP3音频文件的输出。除了音频模块、SD卡控制模块、LCD显示驱动模块外其他模块都可以通过SOPC Builder来添加IP核构建。

        至于MP3解码算法中的子带综合滤波,IMDCT变换两部分处理起来特耗时,针对这类耗时问题,可以采用软硬件协同处理(软件中耗时较多的部分进行硬件加速后,往往会比原先软件处理时的速度快上好几倍。)来提高整个系统运行的时间。通过这种设计方法,在综合时可以确定系统软件和硬件之间的相互制约关系,从而保证系统的确定性,高效性。

        4.SOPC片上系统的实现

        FPGA中搭建SOPC系统时,需要用到如下图3所示的软核处理器和Avalon总线结构和外设接口等,其中,系统时钟c0由外部晶振50MHz倍频后得到的,c1100MHz外设SDRAM时钟,c2为音频芯片提供的18.51MHz工作时钟。timer用于系统内部时间的产生,time_stamp用于记录指令的运行时间。片外SDRAM存储芯片是作为程序存储器及数据存储器。本系统自定义了AUDIO模块,该模块主要用于与WM8731音频芯片数字接口进行数据传输。

本文来源:https://www.2haoxitong.net/k/doc/d5ab364bde80d4d8d05a4f41.html

《MP3.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式