微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用DSP实现MPEG音频层III压缩的加速方法

用DSP实现MPEG音频层III压缩的加速方法

时间:09-29 来源:互联网 点击:

表过程,使其运算量和复杂度难以预测和估计。因此,我们认为:量化编码部分的规范化是优化MPEG音频层 III编码的突破点。

层III编码器迭代循环与量化编码部分完成的功能是:将子带滤波和MDCT变换后的样值进行量化并根据心理声学模型的计算结果进行量化噪声的控制,使得在一定比特率要求的情况下完成频域信号的Huffman编码。层III量化编码部分的迭代循环分为内循环和外循环,参考文献[1]中FigureC. 9.a,C.9.b,C.9.c给出了量化编码的迭代循环流图。

3 用DSP实现音频层III压缩的主要问题及解决方案

DSP编程并不提供像C语言一样的灵活指针、数组寻址操作。在用DSP实现音频层III压缩中的迭代循环量化编码时,由于涉及到非规则性的大量数组寻址操作,而消耗大量指令,降低了DSP的利用率,抑制了编码的实时实现。因此,不规则的类似表查询指令,需要经过很好的组织才能够使程序结构清楚,简洁,高效。3.1 Huffman编码的多重地址索引

层III编码中的Huffman编码是一个穷举、查表的过程。在参考文献[1]表B.7中列出了用于层III编码的32个Huffman码表。它们的最大值域范围,码表适用的信号统计特性都不相同。在编码过程中,首先找到能够将所要编码区域样值的最大值,并依次查询各个Huffman码表,直到该码表能够对这一最大值进行编码为止,然后计算用该表进行编码所需的比特数。再尝试相同编码值域范围的另一些码表,找到最小比特数需求的码表进行最后的编码。

由于标准中所提供的32个表中,并非所有的表都能用,而且有大量的码表只是linbits不同。因此如何存储这些码表,并能够很方便地进行查询、编码,是编码过程中很关键的问题之一。但提出的“多级索引”方法可以很好地的解决这一问题。过程如图2所示。对可能的表有不同的处理方式:

图2 Huffman编码的多重地址索引

正常表 如表15,即每一级索引都是对应于表15的各项信息。

无效表 如表14,其最终的指向是码表零,即相当于无效表。

雷同表 如表16和17实际上只是在第II级索引的linbits不同,其最后的Huffman数据是相同的。通过这样的多级码表地址索引可以很好的解决程序的模块化实现。

3.2 层III编码迭代循环的加速

在迭代循环编码部分,对于使用标准中所建议的初始量化常数进行量化和编码时,初始比特数要求要远远大于所允许的上限值。这时,如果只是将步长加一进行再次量化编码,将会使得系统效率大大地降低。

经过实际的实验结果,一般初始可获得比特数大约为700 bits/Granule,而初始的量化编码结果一般在5 000 bits以上。如果再次量化步长加上20,可以迅速地逼近所要求的比特数。表1列出了一种我们使用的可能加速逼近方法。

表1 一种可能的迭代循环加速方法

在AD(Analog Device)公司的定点DSP芯片ADSP2181上实际的运算结果表明,这种加速方法能够将原算法的指令运算周期减少2/3左右。

4 结束语

MPEG音频层III压缩标准是一种高效、高保真的压缩编码算法,但由于其复杂度和运算量较高,很难用一般的DSP实时实现。在对该算法进行全面分析的基础上,提出了在用DSP实现时,降低复杂度、提高DSP运算效率的关键是优化循环迭代量化编码。提出“Huffman编码的多重地址索引”,对非规则性的大量数组寻址操作提供了简明清晰的线条,节省了寻址指令,提高了DSP的利用率。进一步还提出了“迭代循环的加速”方案,通过ADSP2181定点芯片的运算,表明该方案能减少2/3的指令周期。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top