基于多任务嵌入式应用的MP3实时解码系统

发布者:等放假的Lwj最新更新时间:2009-01-20 来源: 现代电子技术关键字:多任务  MP3  实时解码系统 手机看文章 扫描二维码
随时随地手机看文章

1 引 言

  MP3是目前世界上流行的音频格式之一,采用MPEG-1标准的Audio LayerⅢ压缩编码格式,具有高压缩率和保真度。MP3的解码功能大多以专用解码芯片的形式应用于多种消费类电子产品中。采用软解码的方式实现MP3实时播放功能可以充分利用硬件资源,节省芯片面积,有利于降低设计成本,同时软件方式可移植性好,解码质量可通过软件参数设定,具有更大的灵活性,便于系统升级。随着主流嵌入式微处理器ARM的处理能力越来越强,这种实现方式也已经成为众多嵌入式设计公司研究的焦点。

  与专用解码芯片相比,采用软件方式实现MP3实时解码的瓶颈在于解码效率。在多任务嵌入式系统中,单个任务的执行效率以及任务间的调度方式将直接影响整个系统在一定硬件资源条件下的实时响应速度。因此,在多任务嵌入式系统中采用软解码方式实现MP3实时播放,必须通过优化算法提高解码效率,在保证实时性的基础上降低对硬件资源的要求。

2 设计思想

  MP3解码需要经过大量的数据处理。首先对MP3数据流进行帧同步并解出头信息和边信息供解码主数据使用,之后对主数据依次进行霍夫曼解码、反量化、IMDCT以及子带合成滤波,最终输出PCM码流。整个解码过程如图1所示。对定点化开源解码程序各模块执行时间进行测试,找出关键耗时模块并对其采用改进型快速算法;在保证一定音质的前提下,根据解码运算特征降低运算精度,从而在基于ARM926EJ-S处理器开发平台上实现对MP3音乐(码率为192 kb/s,采样率为44.1 kHz,立体声编码模式)的解码;在实时播放方面,提出双Buffer轮换DMA传送的设计方案,为高效任务调度的实现提供有利条件。

 

3 系统实现过程

3.1 硬件系统

  本文采用的嵌入式系统是以ARM926EJ-S处理器为核心的SoC开发平台,最高运行主频为190 MHz,支持ARMv5T指令集,存储器包括SDRAM和NAND FLASHROM,外围设备包括DMA控制器、中断控制器、USB控制器、UART、控制器、I2S控制器以及定时/计数器。整个硬件系统的架构如图2所示。

 

  MP3文件和程序代码通过USB线下载并分别存放入NAND FLASH ROM和SDRAM;解码MP3文件得到的PCM码流送入I2S控制器输出;UART控制器可实现串口打印输出调试信息,跟踪程序运行状态;定时/计数器用于测试解码时间,对解码各个模块进行耗时分析。

3.2 代码移植

  搭建好硬件平台后,对各硬件模块进行初始化,并加载文件系统,完成软件平台的搭建。将开源的MP3解码程序代码移植到软件平台上,这一过程主要是针对平台的文件系统,对文件读写函数进行替换,并将屏幕打印替换为串口打印操作。移植后的代码实现对MP3文件进行解码,并输出为PCM码流文件。利用CoolEdit对输出PCM码流文件进行测试播放,输出音质良好。

3.3 耗时分析

  成功移植后,对代码进行耗时分析,找出耗时最大的功能模块,确定重点优化对象。该系统采用硬件定时/计数器作为测试工具,将计数器的计数频率调配为1 MHz,可实现1μs的测试精度。在ARM工作主频为150 MHz的条件下,对100帧MP3数据的解码过程进行耗时测试,测试结果如表1所示。根据表1测试数据可知,子带合成滤波占了整个解码时间的60%以上,是决定解码速度的最关键模块;其次是长块IMDCT运算,占了整个解码时间的10%以上。因此,子带合成滤波与长块IMDCT成为优化重点。

 

3.4 解码算法分析与优化

3.4.1 子带合成滤波算法优化

  子带合成滤波是MP3解码过程中最耗时的关键流程,该解码系统采用Konstantinos Konstantinides提出的改进型算法对其进行优化。子带合成滤波的标准算法涉及从32值变换到64值的矩阵运算,Konstantinos Konstantinides提出的改进型算法将矩阵运算进行一系列变化,最终归结于32点DCT变换,而DCT变换有类似于FFT的快速算法(FCT),从而加速了整个子带合成滤波过程。由DCT变换到矩阵运算的转换过程如图3所示,其中S和V分别为矩阵运算的32点输入序列和64点输出序列,A,B均为16点矢量。

3.4.2 IMDCT算法优化

  IMDCT采用Szu-Wei Lee提出的快速算法进行优化,该算法充分利用余弦函数的对称性,将N点IMDCT运算经过一系列变形,最终转化为N/4点的SDCT-Ⅱ运算,其转化流程如图4所示。对短块IMDCT使用该算法并没有带来较大的速度改善,故只对长块应用。相比于直接运算的648次乘法和612次加法,优化后的长块。IM-DCT运算量下降为43次乘法和115次加法。

3.4.3 低精度乘法

  在ARM指令集中的乘法指令有2类:32 b×32 b→64 b长乘法指令(MULL,MLAL)和32 b×32 b→32 b短乘法指令(MUL,MLA),前者的指令周期为3+m,而后者为2+m。由于解码过程中,尤其是子带合成滤波过程,乘法指令使用非常频繁,如果能够使用短乘法指令进行乘法运算,将会大大提高系统性能。

 

  该系统的定点运算过程采用Q28定点表示法,若采用长乘法指令运算,得到的64位结果中有效位只有第28~59位,低28位和高4位都是无用的,需要通过移位去除。根据解码过程中运算系数的定点表示特征,可以在乘法运算前预先对操作数进行移位,以便使编译器采用短乘法指令进行运算。在子带合成滤波过程中,定点化滤波系数的低12位均为0。根据这一特征,可将滤波系数预先右移14位再进行乘法运算,这一过程仅损失2位精度。另外,在子带滤波快速算法的DCT运算结果参加乘法运算前,预先右移12位,最后将子带滤波的输出结果右移2位。经过3次右移操作后的输出结果共降低16位精度,对于16位PCM输出刚好满足精度要求。

  经过以上一系列优化处理后,主要解码耗时模块的改善情况如表2所示。

 

3.5 实时播放方案设计

  该系统采用双Buffer轮换DMA传送的方案实现实时播放,整个播放流程如图5所示。其中n为解码当前帧的帧序号,第一帧序号为0;buffer0和buffer1分别用于存放当前播放帧的PCM数据和下一帧的PCM数据。DMA传送采用LLI传送方式,可实现将2个buffer存放的PCM数据轮换向I2S FIFO传送,因此只需在解码完第1帧后启动一次DMA传送。

 

  该方案的实现原理是在一帧MP3数据解码时间远小于1帧PCM数据播放时间(采样率为44.1 kHz时,一帧PCM播放时间为26.1 ms)这一前提条件下,播放当前帧PCM数据的同时开始解码下一帧MP3数据。因此在解码完下一帧数据后,需要等待当前帧播放完毕,再继续解码。在图5中,这一等待过程采用的是查询DMA传送结束标志的方式,这使得CPU一直处于忙状态,白白消耗了系统资源。然而在多任务嵌入式系统中,这段等待时间恰恰是非常有利用价值的。MP3实时解码可以一个任务的形式存在于多任务系统中,将图5中的查询过程改为休眠MP3解码任务,同时将DMA中断打开,在中断服务程序中唤醒解码任务,那么在解码完毕下一帧后便可释放CPU资源,将DMA中断发生前的这段等待时间用于调度其他进程,例如JPEG解码任务和GUI任务,从而实现播放音乐、播放图片和用户操作3者的高效协同工作。

4 结 语

  本文给出的MP3实时解码系统在基于ARM926EJ-S核心的SoC硬件平台上,对MP3解码算法和实时播放方案进行优化设计。实验结果证明,该系统可在处理器主频仅为36 MHz的条件下流畅播放MP3音乐(码率为192 kb/s),可嵌入数码相框、MP4等产品中实现MP3实时播放功能

关键字:多任务  MP3  实时解码系统 引用地址:基于多任务嵌入式应用的MP3实时解码系统

上一篇:基于无线通信的嵌入式机器人控制系统设计
下一篇:片上网络(NoC)技术发展现状及趋势浅析

推荐阅读最新更新时间:2024-03-16 12:24

基于MP3的汽车报站器
介绍一种基于AT89C51SNDlC单片机和闪存实现的MP3公交车报站器,可通过键盘和播放列表文件实现高品质语音信息的播放。 同时使用LED点阵显示播放的内容,报站器可作为优盘方便地更换语音文件,便于车载广告信息的更换。 随着城市的快速发展,公交线路不时地在进行调整,站名也随之进行变化,而且车载广告也越来越受到商家的重视,因此一款能够方便地更换语音信息、播放高质量语音信息的汽车报站器显得越来越重要。传统的汽车报站器都是采用专用语音合成芯片制成的。语音合成芯片受信息容量、语音音质的限制,且更换信息需专业设备及人士,因而使研制一种新型汽车报站器显得极为重要。本文设计的报站器可非常方便地更换播放内容,并可播放高品质的音乐
[应用]
基于stm32f103v系列的MP3和摄像头ov7670电路板设计
帮同学设计电路图和pcb板子,要求有摄像头ov7670采集摄像,v1s003采集播放声音,还要有彩屏接口,我用两天时间花了这么一个板子。如下图 电路图 如下CPU使用STM32F103V系列100引脚封装 摄像头采用ov7670电路图如下 音频模块 采用vs1003如下 资料 下载: http://pan.baidu.com/s/1gd7tvWZ
[单片机]
基于stm32f103v系列的<font color='red'>MP3</font>和摄像头ov7670电路板设计
用于MP3播放器坞站的D类、2.1声道音频放大器参考
用于MP3播放器坞站的D类、2.1声道音频放大器参考设计 摘要:该参考设计介绍了D类音频放大器MAX9736在立体声坞站中的应用。MAX9736的2.1声道演示盒是一个完整的扬声器坞站,它使用了两片MAX9736 IC,用于驱动由两个2英寸卫星扬声器和一个5英寸重低音扬声器构成的三声道扬声器系统。该参考设计非常适合在便携式音频播放器中作为主音源。方案的整体尺寸非常小,而且具有有源均衡、电源监控以及重低音扬声器的动态均衡功能。 主要设计特性 完备的一体化设计 12V至20V直流电源供电 利用小音箱提供较高的SPL输出 高效率的D类设计 有源EQ,包括动态低音均衡 高性价比驱动器提供
[模拟电子]
基于定点DSP的MP3实时解码器的设计与实现
摘要:FD216是智原科技公司出品的一款结构与ADI公司的ADSP-2181相类似且指令集相兼容的高性价比16位定点DSP芯片。利用智能科技公司提供的开发工具包,可以方便地将C算法移植到FD216中。详细介绍了在FD216评估板上用嵌入式C语言和汇编语言混合编程的方法设计并实现基于定点DSP的MP3实时解码器的整个流程。 关键词:DSP MP3解码器 嵌入式C语言 汇编语言 1 FD216 16位定点DSP特点简介 DSP(数字信号处理器)是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法。FD216是一个高效能而且易于使用的16位定点DSP,包含DSP内核、芯片内建数据存储器、程序内存、
[嵌入式]
基于Cortex一M3的MP3播放器设计
引 言 STM32系列微控制器采用ARM公司最新的Cortex—M3内核。VSl003音频解码芯片为VSlOxx系列的第三代产品,是芬兰VLSI Solution公司生产的单片MP3/WMA/MIDI解码和ADPCM编码芯片。本文采用STM32系列微控制器,结合解码芯片VSl003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VSl003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过摇杆控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。 1 STM32处理器
[单片机]
基于Cortex一M3的<font color='red'>MP3</font>播放器设计
分屏多任务还有TouchBar?iPadOS 15让iPad配件更强
在库克把 MacBook 上那颗 M1 芯片‘偷’出来安装到 iPad Pro 上后,身边有不少朋友煞有介事的告诉我:这只是苹果的前菜,真正的主菜是 iPadOS 15 针对 M1 芯片的特殊优化。而当 WWDC21 落幕,看着并没有太多惊喜的 iPadOS 15,一切幻想都变成了失望的沉思。   不过,经过几周的体验,一些没有在发布会上提到的功能依然给我带来了不少惊喜,比如 iPadOS 15 特色的分屏模式并不用专门去点击顶部的三个小点,只需向边缘滑动,即可分屏。   提到 iPad,Apple Pencil 和妙控键盘是绕不过的话题,我一直对这些售价高昂的配件又爱又恨。它们的存在,让 iPad 的生产力处于‘提高
[手机便携]
程序的多任务和资源复用举例C51源程序
程序的多任务和资源复用举例 有一台机电设备,有两个按键,控制设备的两个不同部分。 现要求: 每个按键按下,相应控制程序运行。但两个按键可以同时按下,就是说两个控制程序可能 需要同时运行。使用一个89C52,如何编写程序? 注:此程序不使用RTOS等操作系统。 /*程序说明: 一)产生波形可以使用中断中计数来产生精确的波形。 本答案中为更能体现程序的多任务和资源复用问题,采用主程序循环产生。 二)请特别注意,题意是两个程序在并发运行,实际按本答案可以扩展到N个不同任务同时运行,在此就不讨论。 (对大程序结构增加了很多其它的概念) 三)因为在论坛上直接贴出,所以程序放在一个文件中。 应该按Timer.c, Key.c, Con
[单片机]
DAB接收机实现MP3播放器
  引言   考虑到便携式MP3播放器在当今社会的普及程度与消费者对其的依赖性,在DAB接收机中融合MP3解码功能对消费市场的开拓是很必要的。本文在不改动一款DAB接收整机原有性能的基础上,提出了一种适当加入MP3解码功能的可行性方案。   1 系统总体结构   1.1 DAB接收系统结构    图1 DAB接收系统结构框图   DAB接收系统是基于重庆邮电大学微电子重点实验室自主研发的一款名为ID200的基带解码芯片设计而成。   其结构框图如图1所示。ID200具有面积较小、功耗极低等特性。MCU采用Atmel公司推出的AT91SAM7S64微处理器,该芯片具有64 KB片内高速Flash存储器、32个可编
[单片机]
DAB接收机实现<font color='red'>MP3</font>播放器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved