DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 608|回复: 0
打印 上一主题 下一主题

[GPS] 嵌入式GPS语音导航系统中 MP3的解码与播放

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-22 00:20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0 引言    近年来,电子技术的迅猛发展,使得嵌入式系统在越来越广泛的领域得到应用。嵌入式系统平台的功能也越来越强大,复杂度也越来越高,同时对其开发的难度和要求也越来越高。在开发过程中需要将应用软件和系统软件作为一个整体考虑,而且软件和硬件的联系也更加密切。所以,嵌入式系统的开发是一个复杂的过程。随着嵌入式系统性能的大幅度提高,老式的GPS导航仪已开始向嵌入式方向发展。嵌入式GPs导航仪已越来越便携,功能越来越强大,语音导航和媒体功能已成为嵌入式GPS导航仪的一大突出的亮点。所以,MP3音频解码与播放技术现已成为嵌入式GPS导航系统中的一项基本技术。MP3的全称是MPEG Audio Layer 3,是目前流行的一种音频编码方案。它是1992年制定的MPEG-1标准的一部分,MPEG标准由系统、视频和伴音三部分组成。其中伴音标准共分三层,MP3作为其中的第三层,是运算复杂度最高而压缩效果最好的一层。比起传统的CD格式来,其音效已相差无几,但数据量却不及CD的十分之一。同时,MP3播放器的便携性和续航能力都比CD有大幅度的提高。MP3最初应用于数字音频广播以及数字电视伴音等;之后,随着其流行程度的提高,在其他场合,尤其是互联网音乐和便携式娱乐设备上也开始大量使用MP3格式;现在,几乎所有便携式语音导航设备都采用MP3作为其音频媒体格式。本文主要介绍了基于ARM核心的嵌入式GPS导航系统平台下MP3音频文件的解码技术。以便利用自行设计的方案在Windows CE.NET系统下运用三星公司S3C2410平台,从而实现MP3的解码播放功能。1 MP3解码原理1.1 MP3的文件格式    MP3文件由数量不等且相互独立的帧(frame)组成,每个帧包含1152个采样信息,一个MP3每帧包含帧头、错误校验、音频数据和辅助数据四部分。图1所示是MP3的帧结构示意图。MP3文件的最后128字节通常包含有ID3v1标签,并附加有用户定制的文件附加内容,如歌曲名称、演唱者、风格说明等。

1.2 MP3解码流程    原始PCM(脉冲编码调制)音频数据在经过压缩编码之后将得到MP3码流,MP3解码就是把MP3码流恢复成原始的PCM数据。MP3数据以帧为单位,解码应首先根据同步信息及错误校验CRC模块找出MP3帧在码流中的位置,并由此确定帧头、CRC校验、音频数据及辅助数据的所在位置。    图2所示是MP3的解码流程,它主要包括哈夫曼解码、反量化、反重排序、立体声解码、混叠消除、IMDCT、频率反转补偿、子带合成滤波等。图2中的预处理的作用是读取头部数据并将需要的信息按结构存放起来,以便后续解码。
                          
                       
                          
                                    哈夫曼解码时,MP3的音频数据将分为两节(gxanule),这两节在过程编解码时相对独立,每一节中可以解码出576个PCM采样数据,两节可解出1152个采样数据。从二进制101……码流中得到我们所需要的信息的第一步就是解哈夫曼码。解哈夫曼码是一个查表过程,这576个值代表576个频率线上的值,其在不同的块中(如)有不同的含义,可根据不同的比例因子和频带查找相应的码表并解出576个值。    反量化过程就是根据反量化公式和帧边信息来对于长块、短块和混合块采用不同的反量化公式,以恢复576条频率线的真实值。反重排序的作用是为了让MP3编码器使霍夫曼编码更加有效率,而对某些块进行重排序。立体声解码部分的功能是在两个音频通道非独立编码时,进行立体声解码。    混叠消除是为了避免两个相邻子频带之间的混叠,而在解码过程中进行的混叠消除。IMDCT的作用首先是对长块进行18点到36点的IMDCT变换,并对短块进行3个G点到12点的IMDCT变换;其次是根据块类型的不同,分别使用不同的窗类型进行加窗。同时把这36个值的前半部分与上一帧的后半部分相叠加。而把当前块的后半部分存储起来用于和下一块叠加。频率反转补偿是在进入下一步之前对多项滤波器组进行的频率反转补偿,即对奇数子带的奇数时间样点取反。    子带合成滤波是将32个等频带宽内的频域信号反变换成时域信号,然后再经过加窗运算,以得到32个PCM值。2 硬件设计2.1 系统硬件设计    在处理器的选择上,本系统选用SAMSUNG公司的S3C2410。它是基于ARM920T内核的16/32位精简指令集微控制器,是为手持设备和通用设备提供的一款低成本、高效率的微控制器。整个系统硬件的设计过程中主要应用S3C2410 ARM芯片,存储设备外扩SD或MMC存储卡模块,并外接320x240象素的真彩TFT LCD屏进行显示,操控采用四线电阻触摸屏并辅以GPIO外扩的键盘。2.2 音频硬件设计    IIS(Inter-IC Sound)总线是Philips公司提出的串行数字音频总线协议。它是一种面向多媒体应用的音频总线,专用于音频设备之间的数据传输,即把PCM音频数据传至标准编解码器(CODEC)。IIS总线只处理声音数据,其他信号(如控制信号)必须单独传输。为了使电路的引出引脚尽可能少,IIS只使用了3条串行总线,即提供分时复用功能的数据线、左右声道选择线和时钟信号线。    CODEC芯片主要负责模拟信号和数字信号的相互转换。对于本系统来说,更加关心的是将数字PCM信号换为模拟信号,主要是将要播放的文件的音频数字信号通过SC2410的IIS送给CODEC芯片,然后将其转换为模拟信号,进而通过音箱或者耳机等设备输出。    根据采样定理,采样频率至少要是信号频率的2倍以上,再就是要支持IIS接口标准,因为本系统是通过IIS总线向CODEC芯片传输数据的。在本系统的CODEC选用Philips公司的U-DA1341,该芯片采用3.0 V电压供电,并对ADC和DAC分别供电,系统的时钟频率可选256fs、348fs和512fs,采样频率从16 kHz到48 kHz,由于是采用数字音质控制,因此具有重低音效果,并支持IIS总线,可确保高保真的立体声输出。图3所示是UDA1341的工作原理框图。

    整个音频系统的硬件设计主要是S3C2410的IIS总线接口和CODEC的连接与实现。其具体电路如图4所示。本系统采用Philips基于IIS音频总线的UDA1341型音频CODEC芯片。该CODEC支持ⅡS总线数据格式,并采用位元流转换技术进行信号处理,具有可编程增益放大器(PGA)和数字自动增益控制器(AGC)。

    S3C2410内置IIS总线接口,可直接外接8/16比特的立体声CODEC,还可以给FIFO通道提供DMA传输模式而非中断模式,从而使数据发送和接收同时进行。该IIS接口有3种工作方式,可以通过设置IIS的CON寄存器来选择。本文介绍的硬件框架主要基于传输和接收模式。在这种模式下,IIS数据线将通过双通道DMA同时接收和发送音频数据,其DMA服务请求可由FIFO只读寄存器自动完成。    图4中,S3C2410的IIS总线信号与UDA1341的IIS信号直接相连,L3接口引脚L3MODE、L3CLOCK和L3DATA分别连接到S3-C2410的GP-B1、GPB2和GPB3三个通用数据输出引脚。U-DA1341对外可提供两组音频信号输入接口,每组包括左右2个声道。
                          
                       
                          
                                3 软件设计3.1 系统平台的选择    目前主流的嵌入式平台主要有嵌入式Linux和Windows CE两大系列。    Linux是一个类似于Unix的操作系统。它起源于芬兰一个名为Linus Torvalds的业余爱好者,但是现在已经是最为流行的一款开放源代码的免费操作系统。Linux从1991年问世到现在,已发展成为一个功能强大、设计完善的操作系统。伴随着网络技术进步而发展起来的Linux OS已成为Mi-crosoft公司Windows系统的强劲对手。Linux系统不仅能够运行于PC平台,还可在嵌入式系统方面大放光芒,很多嵌入式平台都用Linux作为其操作系统。    Windows CE是微软开发的一个开放的、可升级的32位嵌入式实时操作系统。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E则代表电子产品(Electronics)。不同于面向桌面的Windows,微软重写了Windows CE的内核,这使得WindowsCE拥有优越的实时性能。Windows CE中的API是一个缩减的WIN32 API,它是桌面Windows系统的一个子集。这使得许多基于微软桌面Windows开发的应用程序可以经过少许的改动就能用于Windows CE中。同时,在Windows CE系统平台上,也可以使用桌面Windows上的编程工具语言(如VB、VC++等),并使用同样的函数和同样的界面风格.因此,其开发工作比较容易上手。考虑到大部分用户多年来使用Windows系列操作系统的习惯.Windows CE的界面风格比较容易让用户接受。    综上所述.本文选择Windows CE作为系统的开发平台,开发工具选择VS系列的EVC。3.2 软件流程    图5所示是MP3解码的软件流程图。首先将MP3文件数据读人缓存,寻找文件中的ID3信息(ID3信息指MP3文件中可选的一种内嵌信息,用于表示MP3的音频类型、作者等,目前分ID3vl和I。D3v2两个版本),接着在文件中寻找帧同步头,找到后即进入帧解码子程序,其帧解码的具体流程如图6所示,解码完成后,再将解码出的PCM数据放入音频缓冲进行播放,如此循环直到最后一帧。

按键编码电路采用二极管组合逻辑开关阵列来实现对受控电路开关进行编址,其中指令编码电路采用编译码芯片组PT2262。PT2262的A口是地址码设置口,D口是数据码设置端,分别和二极管组合逻辑开关阵列的逻辑输出相连,数据从000~101有6种状态。发射模块电路中采用的射频芯片为MICRF1020当编码芯片PT2262的数据输出端无信号输出时,MICRF102不工作,发射电流为零,而当PT2262的控制端有效时,输出的串行脉冲信号对MICRF102进行调制发射,通过调制电阻R2可调整发射电流,从而调整发射距离,较小的R2取值可提高发射距离,而增加二极管开关阵列则可将系统扩展成为多路遥控发射模块。3.2 接收控制电路    接收控制系统主要由无线电接收电路、解码电路、单片机电路、开关电路组成。接收控制系统的电路原理图如图6所示。接收控制系统主要完成的功能是对接收进来的信号进行解调和解码,并将解码后的数据送单片机,由单片机根据此数据去控制相应的开关进行动作。

4 结束语    本文提出了一种在嵌入式GPS语音导航系统中实现MP3音频播放的实现方案,给出了解码步骤,并利用S3C2410核心与Windows CE平台完成了这一方案。经过实际产品验证,该解码器播放效果良好。各项指标均可满足要求。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 10:52 , 耗时 0.083364 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表