- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
H.264熵解码器CAVLC硬件设计
H.264熵解码器CAVLC硬件设计
H.264/AVC是ITU-T和MPEG组织共同推出的最新一代视频压缩标准,其压缩效率较H.263和MPEG-4simple profile有显著提高。在相同的重建图像质量下,H.264比H.263节约50%左右的码率。因其更高的压缩比、更好的IP和无线网络信道的适应性,在数字视频通信和存储领域得到越来越广泛的应用。
在编码方面,H.264/AVC所采用的基于上下文自适应的可变长编码(CAVLC)是变长编码的一种扩展,它根据编码语法元素动态调整编码中使用的码表,以达到好的编码效率。
H.264解码器的实现一般有效的方法是采用软硬件协同设计的方法。合理地进行软硬件划分,有着更低的成本和更快的解码速度。H.264代码中熵解码部分占了较大一部分的计算量,而其功能比较单一同时控制方式也相对简单,适合于硬件实现。
H.264中CAVLC解码原理及流程
在H.264中,因为经过量化后的块中的非零变换系数分布比较稀疏,在CAVLC中采用了将每个非零变换系数的数量、大小和变换系数的位置分别编码的方法;同时,每个块的高频部分的系数较小且出现1的概率很大,所以对于这些拖位系数1的数量和符号进行了专门编码。
在CAVLC中,H.264采用若干VLC码表,不同的码表对应不同的概率模型。编码器能够根据上下文,如周围块的非零系数或系数的绝对值大小,在这些码表中自动地选择,最大可能地与当前数据的概率模型匹配,从而实现了上下文自适应的功能。上下文模型的选择主要体现在两个方面:编码非零系数个数和拖尾系数的个数所需要表格的选择以及除拖尾系数外非零系数的幅值后缀长度的更新。
CAVLC共有6个语法元素需要解码,包括非零系数个数、拖尾系数的个数、每个拖尾系数的符号、除拖尾系数外非零系数的幅值、最后一个非零系数前零的个数和每个非零系数前零的个数。
CAVLC的解码过程如下:初始化工作,确定输入数据的块类型等参数;求变量NC,根据NC的值选择所要查的表格;查表得出语法元素非零系数个数和拖尾系数的个数;根据拖尾系数的个数解出拖尾系数的符号;解码除拖尾系数外非零系数的幅值;根据非零系数个数查表求出最后一个非零系数前零的个数???解码每个非零系数前零的个数。
CAVLC解码器的硬件设计
1 设计方案以及性能目标
本设计方案的主要思路是将CAVLC解码各个句法元素的解码设计成单独的功能模块,每个模块的功能相对都比较简单,由一个总体控制单元,负责调度功能块之间的流水线处理以及数据的调度。
为了达到目标的性能要求,本设计对于句法元素的解码过程进行了优化处理,并且将其中数据的调度过程隐藏在功能模块之间的流水处理中。这样的设计基本上将解码所浪费在数据调度上的时间冗余降到了最低,大大提高了解码的速度。
本文中所论述的CAVLC熵解码器将应用于H.264视频解码ASIC芯片的设计中,所采用的器件为VIRTEX2XC2V6000。设计指标为1920×1088@30f/s@200MHz,达到H.264主框架第4层的解码速度要求,向下兼容支持基本框架协议,不支持H.264协议的MBAFF特性。该产品的目标应用定位是高清电视机顶盒、IPTV、高清碟机(blue-ray/HD DVD)以及手持式移动多媒体终端处理器的解码模块。
2 硬件模块设计
CAVLC硬件解码器总体结构所示,主要由5个功能模块(Coeff_tokenDecOder、TotalZerO DecOder、Run_before Decoder、TrailingOnesDecoder和Level Decoder)和一个总体控制模块(CAVLC Contraller)组成,另外包括了一个内部的SRAM模块(即图1中的memory),用于存储block信息。
五个句法元素的Decoder分别执行对于相应的句法元素的解码工作,总体控制模块执行协调各模块工作,对SRAM数据的存取,向外申请接受码流数据,以及将各子功能模块解码得到的数据重组和向外输出传递的功能。下面就对各个模块进行说明,Coeff_token Decoder和Level Decoder是其中较为复杂的功能模块,结合了电路设计图进行介绍说明。
Coeff-token Decoder用于解码非零系数个数和拖尾系数个数,包括了5张表(4张定长码表和l张定长码表)。码表中有的码字很短,只有1~3位,有的码字较长,因此需要按照表的特点来设计电路。主要的电路设计如图2所示。句法元素Coeff-token的主要过程为查表的过程,有五张表需要查,所以针对每张表设计一个LUT查表电路,每个LUT电路设计成一个可
文档评论(0)