基于定点DSP的MP3实时解码器的设计与实现

2007-03-09 19:03:27来源: 互联网
摘要:FD216是智原科技公司出品的一款结构与ADI公司的ADSP-2181相类似且指令集相兼容的高性价比16位定点DSP芯片。利用智能科技公司提供的开发工具包,可以方便地将C算法移植到FD216中。详细介绍了在FD216评估板上用嵌入式C语言和汇编语言混合编程的方法设计并实现基于定点DSP的MP3实时解码器的整个流程。 关键词:DSP MP3解码器 嵌入式C语言 汇编语言 1 FD216 16位定点DSP特点简介 DSP(数字信号处理器)是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法。FD216是一个高效能而且易于使用的16位定点DSP,包含DSP内核、芯片内建数据存储器、程序内存、两个串行接口、一个定时器、12组可编程I/O、内部直接内存存取(IDMA)接口、外部内存接口和串行式在线仿真器(SICE)接口等,兼容ADSP-218X系列汇编代码,最高运行速度可达到190MIPS。FD216的CM(Code Memory)、PM(Program Memory)和DM(Data Memory)是严格区分的,在程序设计时要将放在PM区和DM区的数据分别说明。在移植ADSP2181汇编代码时,也要做相应修改。 2 MP3及其解码原理 MPEG-1 Audio Layer 3(MP3)是一个在低比特率下提供高保真音频的压缩标准。特别是在解码部分,它已经成功地应用于多种消费类电子产品中。 MP3解码原理:首选将MP3数据帧解包,解出帧头信息和边带信息;然后采用霍夫曼解码解出比特分配信息;接着在逆变换中利用频谱系数,在综合滤波器中将32位子带合并成一个宽带信号。18个频谱值执行32位IMDCT(逆改进型离散余弦变换),将生成的576个频谱值变换成长度为32的18个连续的频谱。通过18次运算,多相位综合滤波器将这些频谱转换到时域,完成波形重构,生成立体声PCM音频数据。MP3解码流程图如图1所示。 3 开发环境 目标系统为智原科技公司提供的FD216 DSP评估板,系统环境为WIN2K,软件环境为FD2XX工具包(DSP C compiler,assembler,linker,debugger)。 图2为FD216开发系统结构框图。 4 MP3解码器系统设计 4.1 设计要求 设计要求包括以下内容: (1) 功能要求:以智原科技公司提供的FD216 DSP评估板作为目标系统,进行MP3解码器设计,标系统能实时解码采样频率为32kHz/44.1kHz/48kHz、数据码率从32到320kbps的MP3比特流。 (2) 解码精度要求:定点MP3解码精度应符合ISO/IEC 11172-4所规定的限制精度。 4. 2 硬件设计 硬件设计包括以下内容: (1) 在FD216评估板上进行正确的硬件配置。 (2) 串口0配置。FD216评估板所采用的Audio Codec是Philips公司的UDA1345TS,它与FD216的串口0相连,输出16位或8位PCM线性数据。 (3) 串行ICE(SICE)仿真调试接口。 图2 4. 3 软件设计 软件设计包括以下内容: (1) C运行时间库。C语言运行时间库(C Run Time Library)是整个C开发工具的核心之一,提供了大量的可以直接调用的库函数。 (2) 设置内存映射寄存器访问方式。 5 MP3解码器程序设计 MP3解码器程序设计包括以下内容: (1) 定点算法设计。尽管定点DSP也支持浮点运算,但浮点运算会消耗大量的指令周期和内存,也会降低系统运行速度,不能应用于MP3实时解码。在程序设计中,首先要将MP3浮点C解码算法转换为定点C解码算法。浮点算法转换成定点算法实现过程比较复杂,本文不再多述。 (2) 在程序的头部建立正确的运行头(RunTImeHeader)文件。 (3) 内存分页/重叠。与ADSP-218X类似,FD216也是通过设置重叠存储器选择寄存器(PMOVLAY/DMOVLAY)来实现PM(CM)/DM存储器分页/重叠的。 图3 FD216的内存结构图如图3所示。 FD216系统说明文件FD216.SYS说明了FD216 DSP的内存分配方式,是支持DSP程序正确运行的系统文件。 数据、代码分布/重叠应首先在HOST(PC)上对数据、代码分别进行内存分页,接着使用FD2XX开发工具包进行编译、汇编、链接,生成目标代码,然后下载到目标板上运行。 (4)中断服务子程序。FD216中断控制器允许处理器响应十二个中断之一。在MP3解码应用中使用了如下三个中断服务子程序: ①eset中断服务子程序:程序运行时,首先进入reset中断服务子程序,即从start程序开始运行,其优先级量高。 Jump start; rti;rti;rti; /*Reset */ ②ir2_get_data外部中断服务子程序:通过IDMA接口经过PCI总线从HOST(PC)硬盘读取数据的控制程序。 ③intsp0中断服务子程序:向串口0发送数据的子程序。为了实现MP3文件在系统中的实时播放,设计了双Buffer通过串口0向Audio Codec传送解码后的声音样本数据。Intsp0中断服务子程序流程图如图4所示。 (5)代码移植:将MP3解码算法C程序序植为可在FD216 DSP系统中运行的嵌入式C程序。在此需要注意以下几点: ①由于DSP系统中没有文件I/O函数,应将C程序中的文件I/O函数方式改成嵌入式系统中的内存直接读、写方式。 ②应注意数据类型的处理:将C程序中的int类型改成short或long类型,将unsigned int类型改成unsigned short或unsigned long类型,并且为了提高程序运行效率,应注意尽量少用(unsigned)long型,算法验证无误后再移植到DSP中。 ③在保证程序正确性、稳定性的前提下,应通过修改C算法和数据结构,尽量缩减C程序中表数据的尺寸,使表在DSP内存中占据的空间尽量小。 6 MP3解码器实验结论 6.1 算法复杂度(COmplexity)评测 通过仿真调试工具debugger对MP3解码器在一定条件下进行性能评估(Profile),并计算出系统所需要的MIPS(Million Instruction Per Second)。 MP3解码算法复杂度为60.01MIPS,只占了系统最大运行能力(190MIPS)的31.58%。 6.2 实验结果 实验结论:系统功能、解码速度、精度均符合设计要求,并且实现了实时解码、回放。 本文简要介绍了MP3解码原理,并详细说明了MP3在FD216定点DSP上实现实时解码的设计、开发流程。在此基础上亦可开发、实现其它格式的压缩编码数字音频解码器,如Dolby AC-3[5]、MPEG-1 Advanced Audio Coding(AAC)、Microsoft (r ) Windows Media(tm) tudio(WMA)等。利用DSP可编程特性。可以开发出多格式音频解码器,而不需要增加其它硬件。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/dsp/200703/10286.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved