【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信_第1页
【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信_第2页
【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信_第3页
【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信_第4页
【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信_第5页
已阅读5页,还剩67页未读 继续免费阅读

【毕业学位论文】基于OpenRISC的音频解码器软硬件协同设计-信息与通信.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕士学位论文基于燕申请学位级别:硕士专业:信息与通信指导教师:张明20070501浙江大学硕士学位论文摘要本文以在据实际设计的需求,运用不同的软硬件协同设计方法,分别实现2 件协处理器加速的面向提出以更加灵活高效的扩展指令集方式实现多标准低功耗音频解码器。本文对2 对原理理解的基础上,优化标准子带合成滤波算法的流程,只需计算一半滤波系数,并且采用少运算量和中间数据的存储,改变加窗过程的运算顺序,减少软件解码器频繁读取对传统文根据造码表,利用读入的码字作为码表的索引,最多只需搜索两次就能解出码值。本文对 码流程、算法、汇编级,分析解码器系数的动态范围,对动态范围大的变量采用不同精度定点化,从而在面向文安排音频解码的主体部分由件不方便实现的定比特读数据)采用硬件协处理器实现,该设计不仅仅完成相当于给音频解码软件加了一个码器的运算瓶颈子带合成滤波也由硬件加速完成。本文改变传统做法,把一直由音频播放实现的音视频同步控制交给得音视频同步控制的灵活性增大,音频播放模块设计简化。针对设计多标准低功耗的音频解码器的设计目标,文中以 明了基于过分析它们的解码复杂度,提取多条在各个标准中都频繁调用且需多条汇编指令才能完成的关键指令,用以在后续工作中扩展特殊指令,实现高效率的多标准音频解码器。关键词:iS on of of a e to up a to n is on BC is y of of FT of be re n to up a to of of iS O be in of of y it n is n PU iS of iS to is by a to of is by as n is to PU,tO a on iS n 12 C3 as y a of in O be as in 音频编码技术发展概述1】最早的数字音频以未经编码的音频样点形式传输和存储。大多使用性脉冲编码调制)系统对输入的模拟信号进行取样量化和信道编码。这种方法通过脉冲编码来代表取样后的模拟信号的幅度,一个模拟信号需要多个二进制脉冲表示。基于这个原因,经过而催生了压缩数据来降低数据传输速率的各种压缩编码。感知编码原理就是利用人耳的心理声学模型,在取样率不变的情况下,根据信号的情况有选择地减少字长,并通过掩蔽及其他方法尽可能减少量化噪声对音质的影响。现有通用的多种数据压缩编码方法都是基于感知编码原理对音频信号进行压缩,同时保持高品质的声音。数据压缩编码大致分为两种:时域编码方法和频域编码方法。时域编码方法主要通过对取样值做预测来表示全带宽的音频信号,但是这样会导致量化误差的频谱覆盖整个音频带宽,压缩后的音质明显变差。频域编码方法把时域样点转化到频域进行分析,可以充分利用基于人耳的心理声学模型特性对量化噪声进行处理。当然这样会增加编码器的复杂程度。较为主流的频率编码器有子带编码器和变换编码器。子带编码器将一个短周期内的连续时间取样信号送入滤波器中,滤波器组将信号分成多个(最多32个)限带信号,以近似人耳的临界频带响应。由滤波器组的截止频率来仿效临界频带响应,并在带宽内限制量化噪声。变换编码将时域音频取样变换到频域,变换后的频率系数可以进行分段,每个频率段都能等效为人耳基膜的各个频段,利用人耳的心理声学模型对各个频率段的变换系数做量化,使得量化噪声在掩蔽曲线之下,不影响音频的品质。中音频标准11172321描述了3层编码器,、们都是基于感知编码原理。是采用子带编码方法。用子带编码方法对时域样点做子带划分,再用变换编码方法对每个子带频域细分,取得高的频率分辨率,一步降低数据传输率。音频标准分为向后兼容和非向后兼容两种。在向后兼容的C习中,编码器的核心与它在62054音频编码通道音频可以被附加信息中的其他通道数据可以被忽略。的比特流和比特分配表上作了很小的改变,不被向后兼容 江大学硕士学位论文它采用变换编码方法,增加时域噪声整型】嘲【刀、预测等新的工具。与压缩比和音频质量上有很大的改进。 它基础上添加新的编解码工具。01“112】,该技术使得编码器的少量参数的形式表示,在解码器中根据这些参数信息和低频数据来重建高频成分;皿v2 【14J【”1C3】标准是泛地应用于C3编码器采用变换编码,把时域个变换系数以指数和尾数的形式表示。指数集被编码,粗略地表示信号的频谱包络,该频谱包络在比特分配过程中用来决定每个尾数编码所需要的比特数。12 发周期快、设计灵活性大的嵌入式简指令集系统)的实时处理器被广泛应用在音视频解码器中。在这里对本文选用的下简称由源的是一种32位、标量、哈佛结构、5级整数流水线的指令集包含32位整数指令、基本的2位的序流程控制指令和特殊指令(不包含除法指令,位操作指令)。它有32个32位通用寄存器、虚拟本有8址模式有寄存器寻址、立即数寻址和寄存器基址偏移寻址。它的外部数据和地址总线接口符合数器、可编程中断控制器和电源管理单元。在最恶劣的情况下工作频率能达到200所示。指令单元负责基本的流水线操作,并维护状态历史以保证中断模式的正确运行和指令的正确执行顺序。统单元连接所有未与指令数据接口连接的信号,中断器对外部中断,内部错误,系统呼叫,内部中断等做出响应和处理。当使用018时可提供300的3232的于它有这些结构特性,可与2一浙江大学硕士学位论文图1软硬件协同设计方法论概述传统的纯软件设计和纯硬件实现都有弊病。前者虽然开发周期短、灵活性大,但是在当前任务复杂繁重的嵌入式系统中很难满足系统性能要求,后者虽然在性能方面可以达到系统要求,但是系统开发周期长、灵活性差。软硬件协同设计集合两种传统设计优点,使得系统性能要求得到满足,并保留很好的灵活性。文献【19】阐述了一种用流程描述语言,系统做整体的评估,根据评估的结果加上约束划分软硬件模块;,用上系统性能约束对软件模型和硬件模型做评估,如果不满足系统性能要求,返回到l,修改约束条件,重新划分软硬件结构;,利用工具编译器把n)上约束条件建立评估模型,如果不满足系统要求再返回到,修改的评估约束,再次做软硬件的划分;,软件代码下载到目标处理器中,硬件模型用综合工具综合,建立评估模型,评估设计是否满足约束条件,不满足则返回l,满足就得到最终的软硬件协同设计的系统。具体流程如图12所示。一3一浙江大学硕士学位论文图0】提出了纯软件设计不能满足系统性能限制的情况下,将软件中的关键部分改为硬件实现,从而加速性能的软件系统设计方法。该方法的流程如图13所示。系统最开始先由用系统性能分析工具确定的部分可以是一个子函数或一段语句序列。在确定是否将某些软件部分划分到硬件实现之前,必须对软件迁移到硬件实现后的系统性能和代价进行评估,从而确定哪些软件部分可用最小的硬件代价来满足系统性能要求。系统划分部分将软件关键部分的使用综合工具将其综合到硬件实现,软件除去用硬件实现的软件面向特定硬件系统的编译器编译成可执行代码。一4一浙江大学硕士学位论文性能统计出了一种通过在指令流中寻找关键功能并将其映射成硬件的算法。该方法采用面向软件的软硬件分割方法,即开始将操作尽可能在微处理器上运行软件的方式实现;如果不能满足系统性能限制,则将部分软件迁移到专用硬件实现。软硬件划分可以在不同的颗粒度级别上进行,如任务级,函数级,基本逻辑块级或单一语句级。任务级和函数级是粗颗粒度划分,基本逻辑块和单一语句级是细颗粒度划分。文献【22】描述如图1据系统需求说明,将系统切割成较小的单元块,初步确定哪些功能由硬件实现,哪些功能由软件实现。对初步确定的软硬件功能进行重新定位,原来由软件执行的功能可能因为性能或时间上的要求将被硬件代替,而原来由硬件完成的功能可能由于考虑到可适应性以及开发时间的要求,将以软件的形式由处理器完成。用硬件描述语言完成硬件功能模块的设计,用软件设计语言完善软件功能的设计。分配可需要共享硬件资源的任务一定的时间片;由于受到指令运行时存储单元(如寄存器)和运算单元(限制,将指令重排,消除它们之间的各种相关性;合理分配实时操作系统上的各个任务的时间片,使得任务能得到实时相应。软件代码编译成可执行代码,硬件代码由综合工具综合,将两者协同仿真验证,测试系统性能。一5一浙江大学硕士学位论文图1本文的内容安排和主要研究成果因为许多的软硬件协同设计方法是以纯软件系统为模型,而且纯软件设计的开发周期短、灵活性高,本文先以纯软件的设计方法实现了2 后续的研究学习中需要开发设计面向心以在纯软件设计的音频解码器的基础上以硬件协处理设计方法实现了符合设计要求的音频解码器。由于研究不断地深入,需要设计支持多种标准的音频解码器,根据对不同设计方法的分析,采用扩展指令集的设计方法来设计多标准的音频解码器。本文作者参与基于整个设计研发过程中,本人涉及到的内容有音频标准的理解,标准音频解码器设计中关键指令的提取。本文的主要研究成果和内容安排如下:(1)对l2 优化子带合成滤波算法和 究了子带分析滤波和析子带分析滤波用镜一6一浙江大学硕士学位论文像滤波器把宽频带的音频滤波到32个等带宽子带,以便于对不同频率范围的音频数据做不同精度的量化;大频率分辨率,为了得到瞬态信号在时间上的高分辨率,又对变换块做不同长度的切换,使用相互对称的窗形加以约束,使得不同块间频率混叠得以抵消。在理解编码原理的基础上,对 文对子带合成滤波流程进行优化后,矩阵滤波运算采用得整个滤波器的运算量下降大约60;适当改变加窗运算的次序,避免频繁读取软件解码过程中减少据造生成新的码表,利用读入的码字作为码表的索引,简单快速的解出码值。本文在第二章中具体阐述子带分析滤波等的原理和快速算法。(2)对音频解码器从不同层次上做优化,在2 原有的参考代码从整体解码流程上做优化;修改了读比特流机制,采用32运算的瓶颈步骤了得到高品质的解码输出结果,对动态范围很大的变量采用分级定点化;为了能进一步的优化解码器,对关键模块进行汇编级的优化。移植优化后的解码器到对其做性能评估。该部分内容在第三章详细描述。(3)以硬件协处理器方式实现面向定采用硬件协处理器的方式实现音频解码器,把子带合成滤波器和调用频率高处理效率低的了使得音视频同步控制的灵活性大并简化音频播放器的设计,采用软件实现音视频同步。在仿真器和第四章中有对该部分内容的具体阐述。(4)提出以扩展指令集的方式在定以扩展指令集的方式实现多标准低功耗音频解码器。以2 为例子,分析它们的解码复杂度,提取出在各个标准中都频繁调用且需多条汇编指令才能完成的关键指令。第五章对该部分内容做详细描述。1浙江大学硕士学位论文第2章2 2 的编解码原理,分为I、的编码流程如图21所示。a)和2 带滤波器和在解码端不需要对心理声学模型做任何的分析,但是需要做子带滤波器和了能从理解基本原理上对解码器做优化,下面我们对子带分析滤波器和1要的成分精度高,被掩蔽的成分精度低。信号不同成分的划分是在频域上的划分,子带滤波器正是将信号从时域映射到频域子带。信号映射到32个子带,其采样率为2,带宽为4。子带滤波器的输入样本为32点,延迟线512点,图28一浙江大学硕士学位论文004O02o04分析窗、2 300合成窗I;l1o 1 200 300图2本经过加分析窗后,每隔64点取一点叠加,该过程实则是一个降采样兼滤波的过程。分析窗系数是由64组滤波器,8阶第23分别为第1组,第20组,第32组滤波器幅频响应和相频响应。r 0 、L!io o2 o3 04 o 5 o B 07 o 8 09 1N(4) (21 7)4=心”16+比叫一如+w+32,【o15】Ai=一xl。堪 j=16(218)(219)4=一妊,M+,叫一矗,圳6+D“w+32_,【17,31】 (220)按照更改后的顺序进行加窗运算,针对每个以顺序读取到,不但减少内存地址的运算,还有效的利用低22改进索时间也长。传统的7所示。它有这样的缺点:需要开辟内存空间大,需要分别为码字、码值开辟存储空间;解码过程繁琐,需要保留码效率低,如果最长的码字为16比特,则一个码字的最长搜索次数也为16次。图217传统江大学硕士学位论文变长编码的码流解码的最大难度是无法预知码字的长度,所以传统的次搜索码字。我们希望可以知道当前码字的长度,然后可以根据码字长度读入码字,查找出对应的码值。所以我们的设计思路是一次读入多个比特的数据,可以根据这些数据索引相关信息。因为以在码字后添加数据不会影响码字的信息。利用前缀码的特性,我们重新生成码表,使得码表能根据码字索引得到码值,无需按比特搜索整个码表。因为在一个码表中码字是不连续的值,但是码表的索引必须是连续的,所以把码字作为码表的索引需要对原有的码表进行扩展。我们观察一些码表是相同的),可以知道31个码表的最长码字是16比特,最小码字是0比特(没有对归入该码表的数据做编码,它们的值都是O,不在码流中传输),在同一个码表中最长的码字长度是16比特,最短的码字长度是字长度的动态范围较大。如果对所有的码表都采用最长码字长度对齐的方式扩展,那么对于动态范围大的码表的扩展将会导致新码表的重复数据过多,码表冗余性增大。所以先对码表进行分类,码字长度短的码表分到字长度长的码表分到b类。次查表能查到码值,最长码字长度不超过8的码表,以码表要两次查表才能完全解出码值,码字长度超过8的码表,以码表7为例。在所有的码表中:0墟是该码字的是该码字的表示X、生成的码表1:0)【2101,以在解该码表时可以读入3比特的数据;0)【3112是码字000对应的码表值,在原有码表1中,码字000的长度是3比特,对应的值是1,因为X、以有两个符号位。其他的值依次类推。码表中存在多个0因为它们对应的码字分别是01、l,当它们扩展到3比特时,就有多个值。01扩展为3比特,得到两个数据010(=2)和011(=3)。到4个数据100(101(=5)、16)、11 l(新生成的码表7:20浙江大学硕士学位论文o)【o,)【1000,0)【)【3252,0)【3522,0】【2152,0】【2152,o)【)o)【】(1132,是码表7的最长码字长度是以当码字大于6比特时,需要搜索两次。例如全零码字(0000000000),先读入的6比特是6个O,数值为0,索引到据前面的约定,到新的索引基地址。新索引基地址指向的数据空间值是示第二次搜索需要读入的4比特的数据,再读入4个0,索引得到0个码字的长度是第一次的6比特加上0以整个码字的长度是值是5,有两个符号位。通过这样的改造,生成的新码表最多只需要搜索两次就能正确解码出x、然因为填充断点码字和插入跳转相对地址在原来的码表上增加了内存开销,但是由于新码表中已经携带了码表的所有信息,无需再制作存放码值的表,所以在整体的内存开销上减少了。根据新生成的码表的解码流程如图218所示。在该流程中最多判断两次码字长度是否为O,就能解出码值。根据表索引跳转到搜索起始地址根据数据长度指示读数据到数据缓冲区根据I,得iIx菱新整 理数据缓冲区图218改进扛大学硕士学位论文23本章小节本章首先从分析2 究了子带分析滤波和析子带分析滤波用镜像滤波器把宽频带的音频滤波到32个等带宽子带,以便于对不同频率范围的音频数据做不同精度的量化;大频率分辨率,为了得到瞬态信号在时间上的高分辨率,又对变换块做不同长度的切换,使用相互对称的窗形加以约束,使得不同块间频率混叠得以抵消。在理解编码原理的基础上,对2 带合成滤波经过式子变换后,原本需要计算64点滤波系数的矩阵滤波运算现只需计算32点滤波系数,并且矩阵滤波运算可以采用快速算法(本章中采用基2 改变了加窗运算的计算次序,避免频繁读取软件解码过程中减少对传统据造生成新的码表,该码表集合了码字长度和码值信息,可以一次读入多比特数据,利用读入的码字作为码表的索引,简单快速的解出码值。一22浙江大学硕士学位论文第3章基于2 2 所示。找到帧同步字,读取头部信息和解码边信息,根据边信息读到样点值,再把样点做逆量化,把经过逆量化的样点通过合成子带滤波器得到量化的因子也所不同。找到帧同步字,读到头信息和两个粒度组的解码边信息,由边信息得到据这些码表从码流中解出样点,样点做逆量化,把样点排序不同短块做重排序,做m果编码的时候用到的话),长块样点做混叠信号消除,所有样点做订后样点通过子带合成滤波器输出步字字图31 参考代码中的计算基于浮点运算,码流从文件中读取。先在的编译环境下,用具对代码各个部分的运行时间占用率做了评估,结果如表格31、22、23所示。因为在理器可能还调度其他任务的运行),所以只给出各个模块的运行时间的与总体时间的百分比。整个程序包含了码流数据的输入部分,没有包含解码数据的输出存储。一23浙江大学硕士学位论文表格3各个部分的码一帧调用的次数 占总体时间的百分比65 121反量化 12 4子带合成滤波 24 833其他 O6表格3码一帧调用的次数 占总体时间的百分比304 158反量化 12 71子带合成滤波 72 768其他 O3表格3码一帧调用的次数 占总体时间的百分比含1000 183反量化 4 21828 27子带合成滤波 72 303其他 26从以上的数据可以看出,和量化和以我们优化的重点是这四个部分,其中子带合成滤波采用第2章中推导出来的改进算法。135】所介绍的方法,其中文献33】提到的算法乘法次数最少,加法次数也相对少,所以3】的快速算法。321整体解码流程的优化在前面已经介绍过在整个解码流程中有很多的循环操作,这些循环阻断了流水的进行。虽然编译器会做一些优化,把某些循环展开,但是有很大的可能做的不够好,我们尽可能的把能合并的循环操作合并到同一个循环中。通过对标准的理解和代码的阅读,我们对代码中的解码顺序做了调整。在原代码中,和中提供的解码流程进行:先解到头信息,边信息和缩放因子索引,再把所有的样点从码流中读出来,存到对所有的样点做逆量化。其中逆量化分为一24浙江大学硕士学位论文两步,第一步得到一帧中所有样点缩放了的逆量化值,第二步对这些值做反缩放,经过这些流程得到所有样点的正常值,再对这些值通过合成滤波器滤波,得到所有样点的方法不仅是循环次数多,而且所需的存储空间大,因为每一步骤都需要存储一帧(对于样点值,使得存储器的读写过于频繁,容易发生文献361中提到读写和。经过这样的优化后,中间过程的数据存储空间的下降112,原先需要存一帧数据(最多是32*2*3*12),现在最多只需要32*2*3。同时把原先的3个2重循环简化到1个2重循环。图3和。由于右声道的数据相互交织处理,并且在码流中是先传完左声道的数据再传右声道的数据,所以在整体的存储空间上不能节约。因为个粒度组)在编码时就根据幅值划分为17关信息在边信息中已给出。它范围内所有频率线幅值为0;它范围内所有频率线的幅值是+1、0或1;值不确定。这样一25浙江大学硕士学位论文的划分对逆量化是很有用的,对于于32读比特流机制改进根据111723、138183标准定义,解码器读到的有用数据的比特数可以是l16的任意一个。由表格31、3、时因为得读比特流占用了很多据前面介绍的可知,以在们提出一个双缓冲读码流机制,如图3小为32解码器需要读先判断果够,就从果不够,就从处数据组合在一起就是解码器所需要的把26浙江大学硕士学位论文Ib)要从双缓冲读比特流机制双缓冲读比特流机制比只从少为解码器一次最多读16比特的数据,而双缓冲机制的缓冲大小是两个32比特,存在在两个缓冲中最少的比特数是17,所以一次完整的读比特流只需要一次判断,不需要循环决定在寄存器中的数据是否足够。而在单一8比特的缓冲的情况下,需要循环判断解码器是否读到足够的比特数。323定点化解码器由浮点转化到定点,也即由无限精度变为有限精度。有限精度的动态范围窄,必然会使解码输出的浮点解码器出来的结果作为所以在定点化过程中首先要保证音质能到达所要求的指标,其次是考虑各个步骤在定点化后不会增加复杂度,因为果超过32位的数值就要用两个变量联合表示,从而使解码复杂。在三个一次出现浮点数运算都是在逆量化过程中,所以逆量化过程的精度基本上就决定了整个解码器的精度。和且由标准定义可知,它们逆量化之前的样点数最多是16位数,第一位表示符号位,整体可视作一个二进制的补码分数值,也就是一个15位的二进制补码分数,动态范围是方预算,而态范围是逆量化公式: s”=毒2叫咖”) (31)J”=C+0”+上) (32)式(31)、(32)00的s”表示补码分数值,5”逆量化值,式(31)中的帕表示样点一27浙江大学硕士学位论文的位数,式(32)0的C、】的表B4得到。和j表示反缩放值,】的表B1得到,J=。 (33)观察常系数组大的系数O5是最小系数000003051758的2“倍,所以把好使得(31)中的柏最大值是16,所以把2一”1的处理精度设为恰使其保留浮点数同样的精度。观察的值就是;焉,所以与块逆量化公式: 一(=:I:,)一(s 厶 (341长块逆量化公式:、 。昙1(=J 木2一(l【啪】【1两个公式可以共同表示为,!0+l”2 42-“ (36)在式(36)中既有乘方运算又有指数运算,乘方的算法采用37】的差值法。其中的指数运算再做这样的变化,2下2一耐=2丁 (3中尘竽又可以分为正数部分可能的选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论