新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于TMS320VC5509实现MP3解码

基于TMS320VC5509实现MP3解码

作者:时间:2010-03-04来源:网络收藏
(以下简称C5509)是TI公司C5000 DSP 系列中的新一代产品,该芯片最低工作电压为0.9V,其核的最低功耗仅为0.05MW/MIPS,性能最高可达800 MIPS。C5509为嵌入式DSP应用及高性能仪器仪表、智能机器人、手持设备、数字音频播放器和数码相机等应用提供了有效的解决方案。是指MPEG(活动图像专家组)国际标准音频第三层编/编码是通过将音频信号由时域信号转换为频域信号,并根据人类心理声学特征去除部分冗余信息的,ISO/IEC11172-3 Part 3给出了详细的编/标准。涉及霍夫曼解码、修正余弦反变换(IMDCT)、子带合成等复杂运算模块。本文利用C5509的解码运算。

  1 C5509 DSP 处理器的特点和工作原理

本文引用地址:http://www.eepw.com.cn/article/152062.htm

  1.1 C5509 DSP的性能概述

  C5509有32×16bit指令缓冲队列,可高效的块循环操作;两个17×17bit的MAC单元,可在单周期内执行两次MAC操作;1个40bit的ALU、1个40bit的桶型移位器,4个40bit的累加器可执行比C54系列DSP更高效的算术运算,在400MHz的晶振驱动下,可达到800MIPS的性能。以44.1kHz采样率的MP3数据流为例,对128kbit/s数据率的MP3数据进行解码。霍夫曼解码、IMDCT、子带合成等运算模块共需消耗1.3MIPS的CPU资源,对于平均每秒必须解码44.6帧数据来讲,总运算量为44.6×1.3=57.98MIPS,C5509完全可以满足此速度要求。

  C5509还具有128K×16bit的片上RAM,其中包括64KB的DARAM、192KB的SARAM和64KB的片上ROM。

  与众多TMS320系列DSP处理器一样,C5509采用了哈佛结构,共有12组独立总线,其中包括3组数据读总线、2组数据写总线、5组数据地址总线、1组程序读总线和1组程序地址总线,这些总线并行地为各个计算单元提供指令和操作码,从而为高速的数据运算提供了有力的保障。

 1.2 C5509 DSP的外设介绍

  C5509提供了专用的外部存储器接口(EMIF),用于控制DSP与外部存储器之间所有数据的传输。可与EMIF无缝链接的存储器有:异步存储器(ROM、FLASH、 SRAM)、同步突发SRAM、同步DRAM(SDRAM),并可支持可选的32、16、8位数据访问。对EMIF编程时,必须根据实际的外部存储器考虑如何分配片内使能空间(CE)。通过EMIF接口,主处理器可将数据和程序置于片外,从而节省了片上硬件资源。

  其次,C5509有3个独立的多通道缓存串口(McBSP),使得C5509能够直接与其他C55xx系列DSP、多媒体数字信号编解码器等设备高速互连,这些McBSP可以提供全速双工通信,并支持128通道的收发,接收或者发送可以选择使用独立的时钟,字宽为8、12、16、20、24位任选。

  为保证与常见的异步通信模块进行数据通信,C5509提供了与TL16C550C等专用异步通信接口IC互连的UART,外部数据经由TL16C550C进出DSP的UART,最终交给片内CPU处理。图1为与C5509配合使用的典型专用异步通信接口IC(TL16C550C)的管脚图。

  C5509的UART每接到数据就会产生相应的中断请求,通知CPU及时采集数据,将Rx线上的串行数据放入接收寄存器中,在满足缓冲区长度后,寄存器的并行数据再交给CPU做后续处理。

基于TMS320VC5509实现MP3解码

  2 解码算法说明

  2.1 MP3文件的格式

  MP3文件以帧为基本单位,每帧的构成如表1所示。由于MP3文件数据格式采用了比特池技术,故主数据有可能在帧头之前,具体位置可由帧边信息所包含的main_data_begin变量获得。

基于TMS320VC5509实现MP3解码

 解码时首先将一定长度(本系统为2kbit)的数据读入C5509的内部RAM中,然后寻找帧的同步字sync_word(FFF)。如果找到同步字,则以其为首的32bit即为帧头。由帧头中的校验位可知是否有校验数据,如无,则其后的256bit数据即为帧边信息。主数据一般包含两个粒度组(gr)的数据,每个粒度组又包含左右声道(ch)两部分的数据信息,各个声道数据可独立解码,故将每个粒度单个声道解码的程序编写为单个的*.c文件,以适应单声道或者其他MP3格式的解码。MP3编码根据人类心理声学,将每个粒度组分为三部分数据:第一部分对应低频采样的Big_values(大值区),用较大绝对值的量化值存放低频值;第二部分为Count1区,用绝对值较小的量化值存放中频值,所有量化值的可能取值为1,0,-1;第三部分为编码为零的Zero高频区,零数据无须在MP3文件中出现,只需在解码时询问每个粒度组的计数是否已经达到576。若计数为576,则说明该粒度组已解完576个频率线的量化值。

  上述帧边信息存储了供后续解码的全部重要信息。为方便引用,将其定义为结构体。部分元素的定义和注释如下:

  struct Granule {
  unsigned part2_3_length; //用以计算Count1
               //区位置;
  unsigned big_values;    //用以计算Big_values
               //区位置;
  unsigned table_select[3]; //用以确定查找哪一
                 //个霍夫曼表;
  ……
  };

  table_select[3]的值就是霍夫曼表的下标h,可在解主数据时锁定某个具体的霍夫曼表。

 2.2 MP3数据的霍夫曼解码原理

  如上小节所述,每个粒度组的数据根据声学特性将0到奈奎斯特频率的频率线分为Big_values、Count1和Zero三个区。在解码时,Big_values区对应的霍夫曼码表格式如表2所示,而Count1区码表格式如表3所示。

基于TMS320VC5509实现MP3解码

基于TMS320VC5509实现MP3解码


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭