基于OpenRISC的音频解码器软硬件协同设计
【摘要】:
本文以在OpenRISC上设计实现低功耗音频解码器为研究目标,根据实际设计的需求,运用不同的软硬件协同设计方法,分别实现MPEG-1/2 BC纯软件解码器、硬件协处理器加速的面向DVB标准的音频解码器,并提出以更加灵活高效的扩展指令集方式实现多标准低功耗音频解码器。
本文对MPEG-1/2 BC核心编码技术子带分析滤波和MDCT进行分析研究。在对原理理解的基础上,优化标准子带合成滤波算法的流程,只需计算一半滤波系数,并且采用FFT快速算法,减少运算量和中间数据的存储,改变加窗过程的运算顺序,减少软件解码器频繁读取Memory次数。针对传统Huffman解码流程繁琐冗余的缺点,本文根据Huffman码值的前缀码特性,改造码表,利用读入的码字作为码表的索引,最多只需搜索两次就能解出码值。
本文对MPEG-1/2 BC软件解码器从三方面进行优化:解码流程、算法、汇编级,分析解码器系数的动态范围,对动态范围大的变量采用不同精度定点化,从而在OpenRISC上实现纯软件低功耗高品质音频解码器。
在面向DVB解码芯片的设计中,CPU处理完基本任务有富余的处理能力,本文安排音频解码的主体部分由CPU完成,软件不方便实现的getbits模块(不定比特读数掘)采用硬件协处理器实现,该设计不仅仅完成getbits功能,还相当于给音频解码软件加了一个DMA数据通道。解码器的运算瓶颈子带合成滤波也由硬件加速完成。本文改变传统做法,把一直由音频播放实现的音视频同步控制交给CPU完成,使得音视频同步控制的灵活性增大,音频播放模块设计简化。
针对设计多标准低功耗的音频解码器的设计目标,文中以MPEG-1/2 BC、MPEG-4 AAC和AC-3音频标准为例子,阐明了基于OpenRISC的扩展指令集的设计方法。通过分析它们的解码复杂度,提取多条在各个标准中都频繁调用且需多条汇编指令才能完成的关键指令,用以在后续工作中扩展特殊指令,实现高效率的多标准音频解码器。