基于ARM的嵌入式系统的MP3软解码器研究与实现

发布者:朱雀最新更新时间:2018-02-05 来源: eefocus关键字:ARM  嵌入式系统  MP3软解码器 手机看文章 扫描二维码
随时随地手机看文章

    为了减少功耗与降低成本,根据ARM芯片对C语言良好支持的特点,在深度剖析MP3解码算法、分析C语言在ARM芯片上编程的优化方法的基础上,通过软件形式实现MP3音频解码器,便一些无硬件解码器支持的ARM嵌入式系统完成MP3解码任务,从而实现基于ARM的嵌入式系统的MP3软解码器,可以有效地降低系统功耗,提高解码效率,更好地扩展和增强便携嵌入式系统多媒体功能。

    随着便携式嵌入式系统的发展,嵌入式多媒体技术正在影响并改变着人们的日常生活,多媒体音频编码解码技术也越来越受到关注和重视。笔者提出了一种MP3音频解码通过软件方式在嵌入式系统上实现的解决方案。该方案以目前比较高效的MP3解码算法为基础,灵活的取代了基于DSP的硬件解码方案,在低消耗处理器资源的前提下,实现能与硬件解码相媲美的效果。从而节省了研发或购买DSP芯片的费用,还可以方便快捷的兼容MPEG新提出的解码标准,这是该方案最重要的现实意义。
    目前国外在MP3软解码方面的研究有两大成果,一个是开源MP3解码项目mpg123,一个是开源嵌入式MP3解码库libmad。这两个开源项目中使用的解码算法参考了很多国际学术论文。前者被广泛用于播放器软件,例如Mplaver,千千静听等;后者则更加适用于嵌入式系统,已经被成功移植到Symbian手机系统上。

1 MP3解码算法分析
    MP3解码主要包括以下过程:预处理(Preprocessing)、霍夫曼编码(HufFMan decoding)、反量化(Requantization)、重排列(Reorder ing)、立体声解码(Stereo decoding)、混迭消除(Alias reduction)、反离散余弦变换(IMDCT transform)、频域转换(Frequency invers ion)、子带合成滤波(Synthesis fiLTErbank),最后生成声卡可以直接读取的PCM采样。MP3解码流程具体如图1所示。

a.JPG

    

2 ARM处理器以及其程序设计优化
    为了在ARM处理器下快速稳定的运行解码器,除了浮点转化为定点的策略,还要根据硬件特点进一步进行程序优化:首先减小运算强度,利用位移操作代替乘除运算,通常需要乘除以2的幂次方都可以用左右移n位来完成,比如3×8等价于3<<3;利用乘法代替乘方运算,ARM核中内建有乘法器,因此可以通过乘法运算来代替调用C库函数乘方运算以节约函数调用开销;利用与运算代替求余运算。通常and指令比%操作效率要高;使用内联函数,ARM下支持C语言inline关键字,这时的函数直接在调用处代码展开,省去了函数调用开销,不过它的缺点是代码量增加;使用寄存器变量,CPU对寄存器的存取要比对内存的存取快得多,因此为变量分配一个寄存器,将有助于代码的优化和运行效率的提高。
    避免除法,ARM指令集中没有除法指令,其除法是通过调用C库函数实现,一个32位的除法通常需要20~140个时钟周期。因此,除法是程序效率的瓶颈,应尽量避免使用。用查表法代替计算,在CPU资源紧张而内存资源富裕的情况下,可以用空间来换取运行速度,例如在反离散余弦变换算法中需要频繁的计算正弦和余弦函数值,可以预先将函数值计算出来以常量放到内存里,需要计算时直接通过内存地址提取需要的值。

3 解码器结构设计与实现
    在对现有算法进行研究的基础上,笔者设计出一个性能优良、结构灵活、可移植性强的MP3软解码器。解码器主要包括以下模块:解码器引擎初始化,缓冲区输入输出控制,帧解码模块,注销解码器引擎等。

b.JPG


    3.1 解码器引擎初始化
    用MP3文件初始化解码器,初始化过程中,解码器读取每一帧的帧头信息而不对数据进行解码,快速计算出该文件的播放时间,并根据文件大小以秒或分钟为单位内建解码位置索引。解码位置索引的目的是为了快速的根据时间定位待解码数据在文件中的位置。

c.JPG

 

3.2 缓冲区输入输出控制
    考虑到嵌入式系统内存较小的情况,解码器输入缓冲区定义为8 kB,这样既可以流畅的解码数据,又不会暂用很大缓冲区内存,解码引擎以bit为单位读取数据,所以输入控制应该实现快速读取缓冲区中1个或多个bit数据的操作。
    对于文件形式的MP3数据,在解码器输入缓冲区上层内建一个文件缓冲结构,减少系统IO操作次数,首先将文件中一部分待解码数据读入文件缓冲,当解码引擎发出数据请求时,由文件缓存向解码器输入缓冲区写入数据。
d.JPG
    文件缓冲提供以下操作:
    文件缓冲创建:以打开的文件指针创建文件缓冲区,返回缓冲结构指针。
    缓冲区注销:释放缓冲区创建时的在堆中申请的内存,并关闭打开的文件指针。
    缓冲区结束判断:当缓冲区读取指针到达缓冲区结尾时,eof被复制为真,返回eof的值。
    获取缓冲区操作错误:每次操作中,若出现错误error被赋值为对应的错误值,否则赋值为0。返回error的值。
    读取指定大小的内容:从缓冲区当前读取位置,读取指定大小的字节,并返回读取到的数据开始位置指针。
    对于以流形式的MP3数据,当解码引擎发出数据请求时,直接由数据流缓存向解码器输入区写入数据。
e.JPG
    
    数据流缓存提供的功能有以下几点:
    初始化:该功能申请堆中的一块内存,用于以后存放缓存数据。
    注销:负责释放初始化时申请的内存。
    写入数据:向缓存的当前写入位置后写入指定大小的数据。
    跳过指定大小数据:将当前读取位置移动到指定位置。
    获取错误信息:返回操作过程中产生的错误信息。
    帧同步:将读取位置跳转到下一帧开始位置。该操作的主要算法是每次读取缓存11个比特,若这些比特全为1,则把其当做下一帧的开始位置。通过研究可知,该种算法并不能准确判断下一帧的开始,但这种算法不进行帧头解码,也不会漏掉数据。从时间和空间上讲,都是一种比较好的选择。
    解码引擎以帧为解码单位,每次输出一帧的解码输出结构,结构中包括PCM数据、长度、采样率、声道数,播放时间等信息。
   g.JPG


3.3 帧解码模块
    该模块为解码引擎核心模块,按照顺序完成预处理、霍夫曼编码、反量化、重排列、立体声解码、混迭消除、反离散余弦变换、频域转换、子带合成滤波,最后生成声卡可以直接读取的PCM采样。

h.JPG

    从系统设计的角度上,该模块又可以划分为几个小模块:浮点计算模块、帧预处理模块、霍夫曼解码模块、层解码模块、滤波合成模块。
3.4 注销解码器引擎
    该模块负责释放解码器申请的内存,删除解码器内建的播放索引,复位缓冲区。在解码完成后调用。
3.5 解码器外部调用接口
    解码器提供了简洁而功能强大的调用接口,主要包括初始化、注销、单帧解码、IO控制、解码时间控制几个方面,具体如表1所示。

i.JPG

    4 结束语
    本文根据MPEG官方文档,详细剖析了MP3帧解码的算法及其优化,并在上述基础上设计软件解码器接口,在ARM平台上实现了软件解码器。本解码器具有无浮点计算、引入文件缓存机制、内建解码位置索引等优点。但是也存在一定的局限性:如时间精度低,解码器没有实现网络功能,但是提供了流解码接口,如果需要播放网络上的MP3文件,需要在解码器的上层设计网络引擎。


关键字:ARM  嵌入式系统  MP3软解码器 引用地址:基于ARM的嵌入式系统的MP3软解码器研究与实现

上一篇:一种新型的基于Android平台的无线打印模块设计
下一篇:基于Android系统环境的嵌入式Web服务器设计

推荐阅读最新更新时间:2024-03-16 15:54

九号机器人携手芯片巨头英伟达进军ARM
近日,科创板上市企业九号公司在接受投资者调研时透露,公司正在积极探索其他场景下短途移动“物”的 机器人 新业务,例如和英伟达合作开发的第一代AMR(自主移动机器人),已进入产品开发的后期测试阶段。 AMR是指自主移动机器人(AutonomousMobileRobot),是AGV(AutomatedGuidedVehicle)的升级产品,广泛应用在自动化仓储中,通过机器人进行搬运、拣选,完成入库、拣货、包装到运输等一系列工作。 AGV应用比较单一,仅限于遵循一条固定安装于地面上的工厂固定路线,如需改变路线需要重新进行设置规划和地面布局,会造成生产中断,且需要改造成本。AMR内置激光雷达等自动导航装置,具备较强的计算能力,可以通过 传
[机器人]
ARM芯片开发学习(S5PV210)——icache、dcache介绍和如何开关icache
什么是icache、dcache cache是高速缓冲存储器,icache(instructions cache)是指令高速缓冲存储器,dcache(data cache)是数据高速缓冲存储器。存储介质的基本规律是读写速度越快单位存储容量的价格就越高,为了平衡存储速度和价格,计算机的采用分级的存储系统,按照读写速度由快到慢:CPU- 寄存器- cache- 内存- 外存。其中寄存器是在集成到Soc内部的,直接和CPU交互数据,数量有限;在性能高一些的计算机中,cache是可以采用多级的;内存一般是RAM,外存可以是磁盘、flash等。其中icache和dcache就是属于cache,icache用于缓存指令,dcache用于缓存数
[单片机]
ARM寄存器中R0~R15寄存器的别名
ARM中的寄存器的别名 默认的情况下,这些寄存器只是叫做r0,r1,...,r14等,而APCS 对其起了不同的别名。 使用汇编器预处理器的功能,你可以定义 R0 等名字,但在你修改其他人写的代码的时候,最好还是学习使用 APCS 名字。 一般编程过程中,最好按照其约定,使用对应的名字,这样使得程序可读性更好。 关于不同寄存器所对应的名字,见下表: Table 3.2. ARM寄存器的别名 寄存器名字 Reg# APCS 意义 R0 a1 工作寄存器 R1 a2 R2 a3 R3 a4 R4 v1 必须保护 R5 v2 R6 v3 R7 v4 R8 v5 R9 v
[单片机]
嵌入式arm学习总结(二)--arm相关知识
ARM常用编程软件 1)IAR For ARM 支持芯片多,代码优化也不错,操作方便 2)KEIL MDK4.12 keil公司2005年已经被ARM公司收购(现在常用) 3)ADS1.2 支持芯片到ARM11(不升级了,现在较少用,2005年ARM公司停止对它的更新),由KEIL公司为其做编译器 4)RVDS 功能最强,价格很高,使用较复杂 keil for ARM的一些设置要注意 keil里面镜像组成部分 RW:存放已初始化的全局变量 ZI:未初始化的全局变量 RO:代码 CODE:代码加常量的总和 CPU架构 X86--intel AMD ——PC 90% 大功耗,高性能 ARM--嵌入
[单片机]
惠普助推ARM挑战英特尔一个诸葛亮顶不过三个臭皮匠
“-+低耗+高效率”,加上服务器主流厂商的及时搭台,移动芯片老大ARM抢食服务器芯片蛋糕的“勃勃野心”正在一步一步转化为实际行动   手握全球移动芯片市场95%份额的ARM公司最近有了新想法,它打算在英特尔的“后院”里捣鼓一番。 10月26日,有境外媒体报道称,全球服务器巨头惠普正计划销售采用ARM架构处理器的服务器。该报道指出,惠普正在与总部位于美国加利福尼亚州的芯片制造商Calxeda进行合作,共同开发新款处理器。而ARM正是Calxeda公司的股东之一。 “近来,ARM加快了进入服务器芯片市场的步伐。如今得惠普相助,ARM的希望无疑增加了一分。”业内分析人士表示。彭博社数据显示,惠普当前是英特尔在服务器处理器市场
[单片机]
iPhone大揭秘 基于ARM处理器和三星闪存
7月2日消息,据国外媒体报道,苹果的iPhone手机已于6月29日正式上市。现经iFixit解剖发现,iPhone手机采用的是ARM处理器和三星闪存。 经iFixit拆机发现,iPhone手机采用的是三星生产的620MHz ARM 339S0030处理器,而闪存也来自三星。此外,音频芯片来自Wolfson, 802.11b/g模块来自Marvell,而GSM/Edge功率放大器来自Skyworks。 今年1月9日,苹果CEO史蒂夫-乔布斯发布了令业界期待已久的iPhone手机。6月29日,iPhone手机在美国市场首发。期间,有关iPhone手机的新闻一直都是媒体追踪的热点。 可以说,从来没有一款手机能够如此吸引人。Jupit
[焦点新闻]
加强ML发展,恩智浦将与Arm® Ethos™-U55 microNPU深化合作
恩智浦半导体宣布针对Arm® Ethos™-U55 microNPU(神经处理单元)建立主要合作关系。这是一种机器学习(ML)处理器,面向资源受限的工业和物联网(IoT)边缘设备。作为微控制器(MCU)行业领先的创新者,恩智浦计划在其基于Arm Cortex® -M的微控制器(MCU)、跨界MCU和应用处理器的实时子系统中实施Ethos-U55。此次扩充建立在公司不断增长的机器学习产品基础上,包括最近发布的带有专用NPU的i.MX 8M Plus应用处理器。 高度可配置的Ethos-U55可与Cortex-M内核协同工作,以实现较小尺寸,与单独的Cortex-M(即时使用高性能MCU)相比,推理性能也提升30倍以上。Ethos
[物联网]
基于ARM9与Win CE系统的车辆GPS定位信息采集
GPS可提供连续、高精度、实时的时间基准、三维位置、三维速度、整周模糊度等数据,具有性能好、精度高的特点,因而广泛应用于GPS载波相位测姿、精确制导、SINS/GPS组合导航、嵌入式车辆导航监控等军事与民用领域。而嵌入式系统以其低功耗、小体积、高稳定性和便携等优势,在GPS的应用中占据重要的位置。本文研究基于ARM920T内核的嵌入式微处理器S3C2440和WindowsCE 5.0(简称WindowsCE)的某型军车GPS定位信息的采集与处理。 1 系统硬/软件平台概述     车辆GPS定位信息采集系统的硬件平台结构如图l所示。     该平台可以分为3大模块:     1)微系统核心模块 由基于ARM920T的3
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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