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

发布者:SparklingSoul最新更新时间:2009-12-10 来源: 电子元器件应用关键字:GPS语音导航  MP3  S3C2410  WindowsCE 手机看文章 扫描二维码
随时随地手机看文章

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平台完成了这一方案。经过实际产品验证,该解码器播放效果良好。各项指标均可满足要求。

关键字:GPS语音导航  MP3  S3C2410  WindowsCE 引用地址:嵌入式GPS语音导航系统中MP3的解码与播放

上一篇:基于ARM STR710嵌入式PDA系统的设计
下一篇:一种新型电网数显功率表的电路设计

推荐阅读最新更新时间:2024-05-02 20:56

基于DSP技术的MP3播放器的研究与设计
  前言   现在市场上推出了各种型号的MP3随身听,它们采用先进的智能控制技术,利用先进的芯片,不仅实现了MP3格式语音的播放,而且集多种功能于一身。 但这些精巧的随身听价格较昂贵,因此本文根据要求设计了一种廉价MP3播放器,利用硬件存储语音文件,并能够从PC 机下载,从而可随时更新MP3音乐。该MP3播放器同时附加了文本阅读的功能,可做到语音和文本的同步输出。   MP3播放器系统构成   MP3播放器系统结构由图1所示,根据MP3播放器特点要求选择了TI公司的TMS320VC5402芯片,该DSP芯片优越的效价比既可充分胜任本设计的信号处理又能满足本设计要求的价廉目的。而主机选用功能较强的AT89C51芯片。设计原理上
[嵌入式]
嵌入式智能家庭网关的设计
0 概述 家庭网络接入 Internet 目前主要通过PC机接入Internet和采用嵌入式产品通过 以太网 控制器接入Internet两种方式。前者优点是明显的,如灵活性、大量现有的可用的软件环境和高级的用户接口及软件工具。但是对于智能家庭网络来说,网络的使用者希望能方便快捷地获得服务,所需熟悉的操作要尽可能地少,并且在任何地方都能对家中设备进行监控;而PC不能随意移动,对设备的控制就会受到局限。因此,目前在智能家庭网络中,网关产品的设计主要采用嵌入式系统。 一个智能家庭网关可以看成是一个信息处理系统,组成系统的各单元就是连接在网络各节点的设备。控制平台一方面辅助不具备信息化条件的设备实现信息化,即提供信息处理的
[单片机]
嵌入式智能家庭网关的设计
MP3/4市场大缩水 CMMB成新增长点
2009年3月5日,中国权威ICT研究与管理咨询机构赛迪顾问股份有限公司(股票代码:HK8235)在“2009中国消费电子市场年会”上发布《2008-2009年中国MP3/MP4播放机市场研究年度报告》显示:2008年,中国MP3/MP4整体表现乏力,市场规模大幅缩水,全年销量仅为568.6万台,较2007年下降35.0%,销售额为35.7亿元,较2007年下降16.2%。 2008年,MP3/MP4市场销售表现为大幅下降趋势,主要原因有:(1)利润空间急剧下滑。随着技术的成熟,上游原材料价格的上涨,加上山寨机的影响,使得价格极为透明,需求的大幅度下滑,使得MP3/MP4播放机产品利润日趋摊薄,众多MP3/MP4企业
[手机便携]
UBOOT-1.1.6在S3C2410上的移植(基于GEC2410)
之前做过u-boot-1.1.6在AT91RM9200的移植,虽然2410和9200这两款ARM9芯片都是ARM920T核的,但还是有不少区别的,特别是启动方式(当然前者是工业级后者是民用级不必说)。at91rm9200内部本身有128k的片内rom,其固化了一个bootloader和uploader, 用来支持程序的下载和引导,而且其内部固化的程序提供了很多内部服务接口(Internel Service)供我们来使用,例如Xmodem;而S3C2410启动是把nandflash的前4K代码自动搬到Steppintstone中去运行,而Steppingstone使用的物理地是从0号位置开始的。(当然如果是Nor Flash启动,两
[单片机]
基于S3C2410A的嵌入式系统的U-Boot移植
0 引 言     ARM嵌入式处理器已被广泛应用于消费电子产品、无线通信、网络通信和工业控制等领域。其中,ARM9的芯片更是以其低价格、低功耗、高性能在手持设备中占据着重要市场。在嵌入式操作系统中,Linux,Vxworks,WinCE三足鼎立,其中Linux由于其开源性、稳定性、安全性、可裁减性更是一支独放。在嵌入式系统中,如何实现在ARM9平台下Linux操作系统的引导工作是嵌入式技术开发的重要环节。 1 嵌入式系统的软件组成 1.1 系统的软件组成     嵌入式的软件系统主要由Bootloader、操作系统、文件系统、应用程序等组成。其中,Bootloader是介于硬件和操作系统之间的一层,其作用就好像P
[嵌入式]
嵌入式WinCE中CAN总线控制器的驱动设计与实现
引 言   近年来,由于消费电子、计算机、通信(3c)一体化趋势日趋明显,嵌入式系统再度成为研究和应用的热点。嵌入式操作系统(:Real-time Embedded OperatingSystem,RTOs或EOs)作为一种实时的、支持嵌入式系统应用的操作系统软件,成为嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。Windows CE操作系统就是微软公司从整体上为有限资源平台设计的多线程、完整优先权、多任务的操作系统Win CE支持各种处理器产品家族,包括x86,Xscale,ARM,MIPS和SH系列。它的模块化
[单片机]
嵌入式WinCE中CAN总线控制器的驱动设计与实现
S3C2410 LED驱动程序
编写驱动程序代码: #include linux/config.h #include linux/module.h #include linux/kernel.h #include linux/devfs_fs_kernel.h #include linux/init.h #include asm/hardware.h #include asm/delay.h #include asm/uaccess.h #undef DEBUG #define DEBUG #ifdef DEBUG #define DPRINTK(x...) printk( s3c2410-led: x) #else #define DPRINTK(x.
[单片机]
基于S3C2410的Windows CE 5.0 BSP移植
1 引言 在当今后PC时代,嵌入式系统应用得越来越广泛,嵌入式产品充斥着许多领域,日常生活的手机,MP4,PDA等都属于典型的嵌入式系统。在嵌入式系统中,微处理器和操作系统是进行应用开发的基础。在微处理器方面,S3C2410是Samsung公司推出的一款基于ARM920T内核的16/32位 RISC嵌入式CPU,主要面向手持设备以及高性价比、低功耗的应用。在操作系统方面,Windows CE 5.0是由微软提供的一款嵌入式操作系统,在Windows CE 4.2基础上,它又加入了一些新特性以满足市场需求。板级支持包 (Board Support Package,BSP)是操作系统的一个组成部分,提供对硬件的支持。BSP的开发在整
[单片机]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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