网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  [组图]基于DSP的IMDCT快速算法       ★★★ 【字体:
基于DSP的IMDCT快速算法
作者:窦维蓓 …    文章来源:清华大学学报(自然科学版)    点击数:    更新时间:2006-12-19    

文 摘: 修正离散余弦变换(MDCT)在音视频信号编码中得到广泛地应用,其快速算法在实时编解码系统中尤为重要。论文给出了一种适用于数字信号处理器(DSP)实现的修正离散余弦反变换(IMDCT)快速算法—用M/2点时间抽取(decimation in time, DIT)分裂基FFT实现2M点的IMDCT。算法是基于蝶形运算组成,在DSP中可以获得很高的运算效率。该算法的蝶形运算结构同样适用于正向MDCT。在由定点DSP实现的活动图像专家组(MPEG)音频层III解码器中,与MPEG音频压缩标准ISO/IEC 11172-3中给出的IMDCT运算量相比较,该文提出的IMDCT快速算法节省了2/3的运算时间和1/2的存储空间。
关键词: 数字信号处理器(DSP); 修正离散余弦变换(MDCT); MPEG; 音频压缩
中图分类号: TN 911; TN 912  文献标识码: A
文章编号: 1000-0054(2000)03-0099-05

One of the Fast DSP-based
inverse MDCT algorithm

DOU Weibei, LIU Ruoheng, WANG Jianxin, DONG Zaiwang
(Department of Electronic Engineering, Tsinghua University, Beijing 100084, China)

Abstract: Modified discrete cosine transform (MDCT) is widely used in audio compression, such as the MPEG audio layer III codec. For the MDCT algorithm on a fixed-point digital signal processor (DSP), a butterfly operation of inverse MDCT was proposed to reduce the computational time and memory requirements. The 2M-length inverse MDCT algorithm was derived in the form of a butterfly computation with M/2 points DFT and M points windowing. This fast algorithm operating in ADSP-2181 has at least 66% less instructions and 50% less memory space then the inverse MDCT described in ISO/IEC 11172-3.
Key words: digital signal processor (DSP); inverse modified discrete cosine transform; MPEG; audio compression

  离散余弦变换(DCT)常被认为是对语音与图像信号进行变换的好方法,其变换特性接近KLT(karhunen-loève transform)。1986年由Prencen和Bradly提出的一种改进的离散余弦变换(MDCT)[1],利用50%的样点重叠和时域混叠消除(TDAC)滤波器组,在不降低变换编码性能的情况下,有效地克服了DCT块处理运算中的边缘效应(块边缘噪声)[2]。在相同编码效率的情况下, MDCT的性能优于DCT,目前在语音、宽带音频及图像信号的变换编码中,都普遍采用MDCT。
  随着大规模集成电路技术的发展,高速度、低功耗、大内存、低成本的数字信号处理器DSP大量面世,用DSP实现的音频、视频信号的实时编解码系统也应运而生。用DSP实现实时系统时,由于DSP的性能约束,需要尽可能地减小运算时间开销和存储空间的占用量,并且要很好地解决二者之间的矛盾。在MDCT的计算中,由于每个样点需要变换两次,因此,直接计算MDCT所需要的计算时间较长,占用的存储空间也很大。在用DSP实现的实时编解码系统中, MDCT的快速算法是非常重要的。文[3]提出将MDCT转化为标准DCT,再利用快速余弦变换FCT进行计算。但该算法主要适用于变换长度为2m的MDCT。文[2]提出利用余弦函数的对称性,将2M点的MDCT计算分成数据移位、预处理、 M点快速Fourier变换和后处理来实现快速MDCT计算。文[4]提出了适用于并行VLSI实现的递归MDCT算法。本文从定点DSP芯片的特点出发,设计了蝶形反向MDCT(Batterfly-Inverse MDCT, B-IMDCT)算法,减小了MDCT运算中的存储空间和运算时间开销。算法采用了复序列的FFT技术,使块处理长度减小了一半。针对MDCT具有不同窗长的特点,算法中采用时间抽取(DIT)分裂基FFT(Radix-Splitted FFT),以适应任意长度的IMDCT,进一步提高运算效率。与文[5]的算法相比,将B-IMDCT算法应用于DSP实现的MPEG音频层III解码器中,使IMDCT的运算量减小了2/3,存储空间节省了一半。本文设计的蝶形运算具有完全的对称性,同样适用于正向MDCT。

1 IMDCT的简化

  MDCT的表达式为:
  正变换

99-1.gif (1047 bytes)   (1.a)

  反变换

44-1.gif (877 bytes)(n)=z(n)+z(n+M), n=0,1,…,M-1,   (1.b)

100-1.gif (1315 bytes)   (1.c)

其中: 变换核

100-2.gif (999 bytes)   (1.d)

  2M称为MDCT的变换窗长,在不同的应用中变换窗长度不一样;
  h(n)为窗函数,满足如下完全重构(PR)条件[6]:

100-3.gif (961 bytes)   (2)

通常,定义

100-4.gif (748 bytes)   (3)

由式(1.d)时移3M/2,可得

100-5.gif (1037 bytes)

定义:

100-6.gif (2557 bytes)   

则:

bnk=-a(n-3M/2)k,     (5.a)

100-7.gif (587 bytes)   (5.b)

式(1.b)是IMDCT的最后一步重叠相加计算,由式(1.c)和(2),(1.b)可以写成:

100-8.gif (2047 bytes)   (6)

将式(5.b)代入(6),得到:

100-9.gif (2784 bytes)   (7)

并根据式(4.a)的特性得到:

100-10.gif (2525 bytes)

则式(7)变成:

100-11.gif (3188 bytes)   (8)

式(8)是蝶形计算式,该算式的蝶形结构如图1所示。上述推导说明: 2M点的IMDCT可利用M点的蝶形算式计算得到。


t10001.gif (1238 bytes)

图1 IMDCT的加窗蝶形结构

2 IMDCT的FFT实现

  IMDCT的化简过程将式(1.c)计算2M点的y(n)转化成了计算M点的g(n),这样,式(4.b)变成

100-12.gif (1609 bytes)   (9)

式(9)是第4类DCT(DCT-IV)表达式[7],可利用式(9)的变换核式(4.a)与DFT核

100-13.gif (1019 bytes)   (10)

的关系,将式(9)转换成Cooley-Tukey FFT实现。
  对于一个给定的输入实序列[X0,X1,…,XM-1],可定义两个新的向量:

100-14.gif (572 bytes)   (11)

则式(9)可以写成

100-15.gif (977 bytes)   (12)

其中:

101-1.gif (1940 bytes)   (13)

那么利用式(10),可得到关系式:

101-2.gif (6658 bytes)   (14)

将式(14)代入(12),得到:

101-3.gif (3296 bytes)   (15)

式(15)可以被看成 (Ek+jOk)W4k+18M的M/2点的DFT。至此,由式(8)和(15),将一个长度为M的输入实序列组合成一个长度为M/2的复序列,从而用M/2点的复数DFT实现了2M点的IMDCT。

3 IMDCT蝶形快速算法

  通过上面的推导,可以得出结论,IMDCT可由DFT和蝶形加窗运算完成。而DFT很容易被设计成同位蝶形运算FFT。在 DSP中,DFT的蝶形计算过程可分为级、组和基本蝶形三重循环。由三点构成的基本蝶形DFT运算被称之为基3 FFT(Radix-3 FFT),图2是由DIT基3 FFT的基本蝶形运算和叠形加窗运算级联组成的36点IMDCT计算过程。它表明,不论输入是实序列还是复序列, FFT的运算总是复数运算过程。因此,将一个长度为M的输入实序列组合成一个长度为M/2的复序列,并没有增加运算复杂度,而是在充分利用FFT的运算模块的同时,又将块处理长度减小了一半,从而大大提高了IMDCT的运算速度。
  如图2所示,一个输入长度为M的实序列, {X(k), k=0,1,…,M-1} ,其窗长为2M的IMDCT可由适于同位运算的IMDCT蝶形快速算法计算:
  第一步: 输入序列重新排序:

X(k)←X(2k),


t10101.gif (17461 bytes)

图2 36点IMDCT蝶形运算图

X(k+M/2)←X(M-1-2k),
k=0,1,…,M/2-1.

  第二眇:预处理,乘旋转因子

102-1.gif (3558 bytes)

  第三步: 对复序列作M/2点DFT, n=0,1,…,M/2-1.

g(n)←Re{DFT{[X(0),X(1),…,X(M-1)],
M/2}},
g(n+M/2)←Im{DFT{[X(0),X(1),…,
X(M-1)], M/2}}.

  第四步: 后处理,对复序列乘旋转因子,重排序为

g(n)←Re{g(n)exp(-jnπ/M)},
g(M-2n-1)←-Im{g(n)exp(-jnπ/M)}.

  第五步: 进行蝶形加窗运算:

44-1.gif (877 bytes)(n)←g(n+M/2)h(n)-g(M/2-1-n).
  h(M-1-n),
44-1.gif (877 bytes)
(M/2-1-n)←-g(M/2-1-n)h(n)-
  g(n+M/2)h(M-1-n).

这就是由蝶形FFT和蝶形加窗运算两部分级联构成的蝶形IMDCT快速算法。由于窗函数h(n)的特性(见式(2)),该算法完全适用于正向MDCT。

4 应用举例

  将上述算法应用于用单片定点DSP实现MPEG音频层III解码。文[5]中IMDCT窗长为36和12,去混叠运算模块输出每子带18个样值,对应32个子带中各子带的窗长进行相应的IMDCT。利用上述蝶形IMDCT算法,对于长窗2M=36,需要作9点的FFT和18点的加窗蝶形运算; 而对于短窗只需作3点的FFT和6点的加窗运算。如果选用基3 FFT,无论长窗还是短窗都可以共用3点的基本蝶形运算模块。短窗时只需一级基本蝶形运算,而长窗时需要两级循环,第一级有三组各一个基本蝶形,第二级只有一组共3个基本蝶形运算。采用Analog Device Inc.(ADI)定点DSP—ADSP2181实现这一运算过程,应用块浮点技术以提高定点运算的精度,其计算所需的指令周期如表1所示。其中用作对比的计算量,是在同样的DSP应用技术下,由文[5]给出的标准计算过程所需的计算量。

表1 蝶形IMDCT运算量比较

窗长
(样点数)
蝶形IMDCT
运算量
B(指令周期数)
标准IMDCT[5]
运算量
S(指令周期数)
运算量比较
B.S-1/%
12 152 173 87.5
36 525 1552 33.8

  由于ADSP-21xx芯片所特有的并行处理能力与乘加运算指令已经简化了运算量,所以在短窗时,蝶形IMDCT算法的优势不太明显,只比对比算法快12.5% 。随着窗长度的增加,蝶形IMDCT算法的优势就愈加明显。窗长为36时,比对比算法快了66.2%.
  蝶形IMDCT不仅在运算量上明显优于对比算法,而且,由于计算长度减少和同位运算的应用,IMDCT运算中的存储空间也相应的减少了1/2,在空间资源的节省方面也有明显的优势。

5 结束语

  近来,MDCT被广泛应用于变换编码中,由于其运算量大,对于一个实用的编码系统而言,MDCT的快速算法显得尤为重要。本文根据定点DSP的特点,利用时间抽取(DIT)分裂基快速Fourier变换,设计了适用于定点DSP的蝶形IMDCT(Inverse MDCT)快速算法,该算法完全适用于正向MDCT。在由单片定点ADSP2181实现的MPEG音频层III解码器中,蝶形IMDCT快速算法的应用节省了2/3的运算量。该算法适用于任意长度的MDCT,随着长度的增加,运算量的节省优势越明显。

 基金项目: 国家科委高技术发展研究委托项目
  作者简介: 窦维蓓(1963-), 女(汉), 重庆, 副教授
窦维蓓(清华大学 电子工程系, 北京 100084)
刘若珩(清华大学 电子工程系, 北京 100084)
王建昕(清华大学 电子工程系, 北京 100084)
董在望(清华大学 电子工程系, 北京 100084)

[参考文献]

 [1]Princen J, Bradley A. Analysis/synthesis filter bank design based on time domain aliasing cancellation[J]. IEEE Transaction Acoustic, Speech, Signal Processing, 1986, 34(5): 11531161.
 [2]Masahiro Iwadare, Akihiko Sugiyama, Fumie Hazu, et al. A 128kb/s Hi-Fi audio CODEC based on adaptive transform coding with adaptive block size MDCT[J]. IEEE Journal on Selected Areas in Communications, 1992, 10(1): 138144.
 [3]Wang Jianxin, Dong Zaiwang. A fast algorithm for modified discrete cosine transform[A]. 1996 International Conference on Communication Technology Proceedings(ICCT'96)[C], Beijing:PHEI & IEEE PRESS(Publishing House of Electronics Industy & Institute of Electrical and Electronics Engineers), 1996. 445448.
 [4]Chiang Hwang-cheng, Liu Jie-Cherng. Regressive Implementations for the Forward and Inverse MDCT in MPEG Audio Coding[J]. IEEE Signal Processing Letters, 1996, 3(4): 116118.
 [5]ISO/IEC 11172-3. Information technology—coding of moving pictures and associated audio for digital storage media at up to about 1.5Mbits/s—part3 Audio[S].
 [6]Malvar Henrique S. Signal Processing with Lapped Transforms[M], Norwood, MA: Artech House, 1992. [7]Wang Z. Fast algorithms for the discrete W transform and for the discrete Fourier transform[J]. IEEE Transaction Acoustic, Speech, Signal Processing, 1984, 32(4): 803816.

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    ucos-ii在嵌入式智能视觉监控
    14bit 40 MSamples/s ADC应用
    打造windows下的嵌入式开发工
    DSP和FPGA在汽车电子中的广泛
    [连载]ADSP-TSl01S系列之一 
    ADI ADIS1625x低功耗陀螺仪方
    基于DSP的实时图像跟踪系统的
    wxWidgets和MFC动态类型信息
    用dll方式编译wxWidgets-2.8
    Blackfin时钟控制
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号