新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于定点DSP的MP3实时解码器的设计与实现

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

作者:时间:2008-05-12来源:网络收藏
摘要:FD216是智原科技公司出品的一款结构与ADI公司的A-2181相类似且指令集相兼容的高性价比16位芯片。利用智能科技公司提供的开发工具包,可以方便地将C算法移植到FD216中。详细介绍了在FD216评估板上用嵌入式C语言和汇编语言混合编程的方法的整个流程。
关键词:DSP 嵌入式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 及其解码原理

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内存中占据的空间尽量小。

screen.width-500)this.style.width=screen.width-500;" border=0>

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可编程特性。可以开发出多格式音频解码器,而不需要增加其它硬件。



评论


相关推荐

技术专区

关闭