用于视频编码器的熵编码器及其实现方法

文档序号:7898628阅读:288来源:国知局
专利名称:用于视频编码器的熵编码器及其实现方法
技术领域
本发明涉及一种用于视频编码器的熵编码器及其实现方法。
背景技术
集成电路设计方法学是用来指导集成电路设计的方法学。目前的集成电路设计, 尤其是大规模集成电路设计,其常见的设计流程是系统工程师根据功能需求提出系统功 能框架,软件工程师利用计算机高级程序语言(例如JaVa、C、C++、Matlab等)对系统功能 框架进行描述,从而得到集成电路的高级程序语言的算法描述;而后由集成电路设计工程 师利用硬件描述语言(例如Veril0g、VHDL等),将算法描述综合成网表文件,之后使用专 门的硬件综合工具实现布局布线,得到集成电路版图。在集成电路产业需求中,设计速度已成为集成电路设计方法学的重要考虑因素。 当集成电路制造商或集成系统供应商将商业运作的基本问题(如产品数量、设计/测试费 用、不可再用的工程开支(Non Recurring Engineering,NRE)、用户IP的整合/复用、可靠 性和可维护性、生产过程复杂性等)综合考虑在内时,加速产品推出时间、提高产品性能、 降低产品制造风险便成为选择设计技术时的重要考虑因素。随着集成电路制造工艺进入45nm以下阶段,集成电路设计发展落后于集成电 路工艺进步的剪刀差继续增大。数据流算法,尤其是数字媒体类的ASIC(AppliCati0n Specific Integrated Circuit,专用集成电路)设计,例如视频编码器的集成电路设计,面 临设计周期长、灵活性差、扩展性差等问题,难以满足产品快速上市、功能不断提升的需求, 因而需要改进和提升。

发明内容
本发明要解决的主要技术问题是,提供一种用于视频编码器的熵编码器及其实现 方法,能够加快熵编码器的集成电路设计速度。为解决上述技术问题,本发明采用了如下技术方案—种用于视频编码器的熵编码器的实现方法,包括将高级程序语言算法描述的视频编码器的熵编码器的各个编码功能块映射成由 算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成熵编码器硬件集 成电路。本发明一种实施例所述的方法,将高级程序语言算法描述的视频编码器的熵编 码器的各个编码功能块映射成由算子单元构成的硬件逻辑描述包括如下步骤程序分析步骤读取熵编码器的各个编码功能块的高级程序语言算法程序,根据 该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对 象;数据控制流图生成步骤将识别出的执行对象和参数对象映射成描述熵编码器算 法的数据控制流图中相应节点;
算子结构图生成步骤根据数据控制流图中的各个节点的功能处理,从所述算子 单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成 的算子时空图;时序约束步骤根据用户规格需求和目标集成电路工艺的要求确定出总时序约 束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;时空图压缩步骤根据时间标注对算子时空图进行空间上的聚类压缩,并使总体 算法执行时间最接近于总时序约束;下层硬件映射步骤将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻 辑描述。本发明一种实施例所述的方法,所述算子单元库中的算子单元包括运算类算子、 存储类算子、控制类算子、路径类算子和时钟类算子中至少一种。本发明一种实施例所述的方法,所述运算类算子为可重构算子,一个运算类算子 配置控制位以及多种运算,所述控制位用于择一选择一种运算;所述路径类算子用于链接 存储类算子与运算类算子,形成数据流结构,其实现形式包括多选器、交叉开关和总线;所 述控制类算子用于推动数据流的流动,其实现形式包括计数器、状态机和微指令字,控制输 出内容包括运算类算子动态重构信息、存储类算子的配置信息、路径类算子的配置信息; 所述存储类算子用于对不同的数据存储格式和计算格式进行转换。本发明一种实施例所述的方法,所述执行对象包括运算指令和/或控制指令,所 述参数对象包括输入数据、输出数据和中间数据中的至少一种,将所述运算指令映射为运 算类算子,将所述控制指令映射为控制类算子或路径类算子,将所述参数对象映射为存储 类算子。本发明一种实施例所述的方法,所述编码功能块包括用于编码语法参数的统一可 变长编码功能块、用于编码残差数据的上下文自适应可变长编码功能块、以及拼接所有编 码码流的码流拼接功能块。本发明还提供了一种用于视频编码器的熵编码器,包括用于编码语法参数的统 一可变长编码功能块、用于编码残差数据的上下文自适应可变长编码功能块、以及拼接所 有编码码流的码流拼接功能块,所述各功能块由算子单元组成。本发明实施例所述的熵编码器,所述自适应可变长编码功能块包括顺序相连的数 据缓冲重排序单元、残差系数解析单元、查找表或计算编码单元。本发明实施例所述的熵编码器,所述数据缓冲重排序单元、残差系数解析单元、查 找表或计算编码单元采用级间流水形式设置。本发明实施例所述的熵编码器,所述上下文自适应可变长编码功能块的残差系数 编码算子功能群落为实现一次子4*4块残差系数编码的算子功能群落。本发明的有益效果是本发明通过设计表示硬件逻辑的算子单元,将视频编码器 的熵编码器的高级程序语言算法描述映射成由算子单元构成的硬件逻辑描述,从而可以加 快熵编码器的集成电路设计速度。


图1示出了典型的H. 264视频编码器的结构;
图2示出了本发明实施例提供的几类算子结构;其中,图2. 1示出的是运算类算 子,图2. 2示出的是存储类算子,图2. 3示出的是路径类算子,图2. 4示出的是控制类算子;图3. 1示出了熵编码器的总体结构,图3. 2示出了熵编码器的算子功能结构;图4. 1示出了本发明实施例的熵编码器的总体算子结构,图4. 2示出了熵编码器 的bS_write_ue函数的算子功能结构;图5示出了本发明实施例的熵编码器的总体流程;图6示出了本发明实施例的多次子4 X 4块CAVLC编码循环;
图7示出了本发明实施例的CAVLC编码流程示意图;图8示出了本发明实施例的1_16*16宏块类型下残差系数缓存寄存器格式;图9示出了本发明实施例的I_4*4&P_16*16宏块类型下残差系数缓存寄存器格 式;图10示出了本发明实施例的1_16*16宏块类型下残差系数存储格式及编码顺 序;图11示出了本发明实施例的1_4*4及P_16*16宏块类型下残差系数存储格式及 编码顺序;图12示出了本发明实施例的残差系数初步解析单元结构;图13示出了本发明实施例的残差系数初步解析过程;图14. 1、图14. 2、图14. 3示出了本发明实施例的zig-zag扫描;其中,图14. 1为 a模式,图14.2为b模式,图14. 3为c模式;图15示出了本发明实施例的CAVLC的三种编码模式。
具体实施例方式下面通过具体实施方式
结合附图对本发明作进一步详细说明。一、视频编码器概述视频编码技术是数字媒体存储与传输的关键技术,它广泛地应用在数字电视、视 频通信、网络流媒体等领域。本发明涉及一种基于算子思想的用于视频编码器的熵编码器 及其实现方法,适用于信号处理领域中各种图像/视频/音频DCT变换数据的熵编码。目前在视频编码领域,由国际电联(ITU-T)和国际标准化组织(ISO)联合组建的 联合视频组(JVT)共同制定的新数字视频编码标准-H. 264已得到广泛应用。H. 264算法既 是国际电联(ITU-T)的H.沈4,也是国际标准化组织(ISO)和国际电工委(IEC)的MPEG-4 标准的第10部分的内容,其采用分层次的算法结构,在概念上可以分为两层,分别是视频 编码层和网络提取层。视频编码层(Video Coding Layer,简称VCL)负责高效的视频内容 表示,网络提取层(Network Abstraction Layer,简称NAL)负责以网络所要求的恰当的方 式对数据进行打包和传送。通过视频编码层和网络提取层这样的结构有助于信息的封装和 对信息进行更好的优先级控制。H. 264视频编码器结构如图1和图2所示。由图1可以看出,H. 264编码过程的主 要子算法有帧间预测、帧内预测、变换和量化、去块效应滤波和熵编码。下面对各子算法做
一简述。1、帧间预测
帧间预测是利用视频图像帧间的相关性,即时间相关性,来达到图像压缩的目的。 在图像传输技术中,活动图像是关注的重点。活动图像是由时间上以帧周期为间隔的连续 图像帧组成的时间图像序列,它在时间上比在空间上具有更大的相关性。大多数图像相邻 帧间细节变化很小,即图像帧间具有很强的相关性,利用帧所具有的这种相关性特点进行 帧间编码,可获得比帧内编码高得多的压缩比。H. 264帧间预测是利用已编码视频帧/场和 基于块的运动补偿的预测模式。2、帧内预测帧内预测是H. 264采用的一种新技术,指利用当前块的上方和左方的相邻像素作 为参考像素,对当前块的像素进行预测。帧内预测编码可以缩减图像的空间冗余,减小码率。3、变换和量化在图像编码中,变换编码和量化从原理上讲是两个独立的过程。但在H. 264中,将 两个过程的乘法合二为一,并进一步采用整数运算,减少编解码的运算量。量化过程是在不 降低视频效果的前提下减小图像编码长度,减少视频恢复中不必要的信息。其目的是去除 变换后对图像的视觉质量不重要的数据分量且保持视觉上重要的数据分量。其性质是被去 除后的分量不能恢复,是有损过程。4、去块滤波基于块的视频编码系统在重建图像时不可避免地在某些块边界处会出现一些较 为明显的块效应,特别是在低码率的情况下。出现块效应的原因在于块边界像素的运动补 偿精度一般都低于块内像素,而且块变换也导致了块边界的不连续性。去块滤波的主要过 程包括确定滤波强度、判断虚假边界、滤波计算。5、熵编码在视频编码中,熵编码把一系列用来表示视频序列的元素符号转变为一个用来传 输或是存储的压缩码流。输入的符号可能包括量化的变换系统、运动向量、标记、头以及附 加信息。本发明涉及H. 264视频编码器的熵编码器,为此,主要对H. 264的熵编码器进行说 明。H. 264的熵编码支持两种模式CAVLC (基于上下文的可变长编码)和CABAC (基 于上下文的算术编码),CAVLC编码复杂度及编码效率相对较低,抗误码即纠错能力较强; CABAC则编码复杂度及编码效率相对较高,但抗误码及纠错能力较弱。因此,在H. 264针对 不同应用领域的编码框架中,Baseline prof ile (基础框架,用于视频对话等)和Extended profile (扩展框架,用于网络视频流传输等)采用CAVLC,而Main profile (主要框架,用 于视频广播等)则采用CABAC。本发明所涉及的熵编码主要针对Baseline profile的CAVLC熵编码,在H. 264熵 编码中,待编码的语法元素可分作两类,一类是残差数据,采用CAVLC编码,在CAVLC编码算 法中,每个符号的编码都有几个基于上下文内容自适应的VLC表,而这些表的选择基于块 内容的统计信息。另一类语法元素统称为语法参数,包括头信息、宏块编码模式信息、量化 系数、参考帧索引等等,这些语法参数均采用Exp-Golomb (指数哥伦布)编码,指数哥伦布 编码是一种采用规则结构的变长编码,因其结构规则统一,故也称为统一变长编码(UVLC)。
H. 264标准尽管没有限制编码的方法,但规定了视频编码输出的比特流格式以及 解码算法,目前在实际应用中,有三种开源的参考编解码软件JM、X264和T264。JM参考模型是官方参考软件,实现了 H. 264所有的特性,但其程序结构冗长,只考 虑引入各种新特性以提高编码性能,忽视了编码复杂度,其编码复杂度高,不宜实用。X264是网上自由组织联合开发的兼容H. 264标准码流的编码器,其特点是注重实 用,和JM相比,在不明显降低编码性能的前提下,努力降低编码的计算复杂度。T264是中国视频编码自由组织联合开发的HJ64编解码器,其特点和X264的出发 点相似。本发明以X264为基础,即以X264代码形式的视频编码器的熵编码器的高级程序 语言算法描述为出发点,以实现熵编码器的集成电路设计。二、算子设计思想概述集成电路设计,从全定制的晶体管设计开始,发展到1984年前后以1. 0 μ m工艺节 点为代表的门阵列设计,再到1994年前后以0. 5 μ m工艺节点为代表的标准单元设计,以及 1999年前后以0. 25 μ m工艺节点为代表的基于IP (知识产权核)的设计和2004年0. 13um 工艺节点为代表的时间驱动,目前的集成电路设计一般基于标准单元粒度,由硬件描述语 言对集成电路硬件逻辑进行描述,然而硬件描述语言并不适合直接描述高级程序语言的程 序逻辑和执行流程,造成在目前的集成电路设计中,由高级语言向下层硬件映射的速度所 需时间较长,成为制约集成电路设计速度的瓶颈所在。随着集成电路制造工进入45nm以后,集成电路设计的效率严重滞后于制造工艺 的进步。传统ASIC设计由于设计周期长、设计成本高、灵活性差、扩展性差,难以满足产品 快速上市、功能不断提升的需求。大规模的基于标准单元的设计速度已不能满足要求,究 其原因,主要在于标准单元的粒度太小,只能进行加减乘除等运算,无法实现粒度较大的运 算。如一次操作可完成一个多路加法、移位加、加移位或|a_b|等运算,而这些算法在视频 算法中尤为常见。鉴于此,一种基于算子的快速设计方法被提出。算子设计的基本思想是快速设计, 其力图把握最有利的切分点,以实现集成电路的快速设计。算子设计方法希望从数学上能够支持算法的描述,为实现算法到算子语言、算子 结构的自动化翻译提供支撑。算子的特点如下1.粒度更大每个算子都具有一定功能,它是一种函数运算的符号表示。整个算子体系能够支 持算法描述中的各种功能实现,设计人员可以基于算子对算法进行描述和验证;2.支持算法的实现种类完备但是数量有限的算子能够支持上层语言描述中对运算、存储、控制和数 据路径的描述,并且可以基于算子描述进行优化和验证;3.能够加速设计和验证设计人员利用算子完成算法的功能描述后,对应的硬件设计也同时完成。因为所 有算子均是预先全定制的且已被验证正确的单元,因此将缩短设计和验证的时间,设计人 员只需要保证基于算子的描述和映射过程的正确即可,从而将大大加速设计和验证过程。本发明提出的算子,或者说算子单元,可以表示集成电路的硬件逻辑,基于算子的不同功能,可将算子分为运算类算子、存储类算子、路径类算子、控制类算子、时钟类算子等 几类,这些算子构成一套完备的算子体系,能支撑所有算法的实现。经过设计,这些基本算 子在面积、功耗、性能等参数上是最优化,它们构成了算子单元库。并且算子单元还可以组 成算子功能块,算子功能块间采用共享MEM链接方式进行数据通信,也可以采用寄存器传 递进行控制信息传递。下面对各类算子做一说明。1、运算类算子。运算类算子(AU)是用于实现逻辑运算、算术运算或逻辑与算术混合运算的基本 单元,支持算术逻辑、移位等运算功能的实现,实现这些基本运算的算子称为基本运算算 子。并且,针对不同应用可以在基本运算算子的基础上进行扩展而予以支持,比如媒体处理 中相减、取绝对值、求平均值、固定系数滤波运算等复杂但很常用的运算,实现这些扩展运 算的运算算子称为扩展运算算子,它们由基本运算算子搭建而成。运算类算子完成的常见 运算包括加法、加法累加、四个数的加法、完成2数相加再做M位移位的运算、输入数据的 限幅运算、控制码译码等等。图2. 1为一种运算类算子-ADDS算子的结构示意图,它包括用于实现加减操作的 ADD单元和用于实现移位操作的<</>>单元。运算类算子具有可重构性,可以为一个运算 类算子配置控制位以及多种运算功能,控制位用于择一选择一种运算,也就是说,运算类算 子包括算术逻辑运算单元和运算配置寄存器,运算配置寄存器用于接收和存储运算配置指 令,不同的运算配置指令对应不同的算术逻辑操作,根据不同应用的需求,通过配置控制位 (运算配置寄存器的运算配置指令),可以使运算算子实现不同的功能。例如上例中的ADDS 算子,可以通过控制位X的参数值实现多种不同功能,可重构算子由于丰富的应用功能可 以用在不同的场景中,减少了算子单元库中储存的算子数。并且可重构算子在其执行过程 中还可以通过改变控制位的方式实现动态的重构。而如果算子的运算功能被优化固定,则 可以将控制位固定(即固化定制)。2、存储类算子。图2. 2为存储类算子(MU)的基本结构示意图,存储类算子包括存储配置寄存器和 存储单元,存储单元包括地址产生单元、数据存储器、数据产生单元和数据输出控制单元。 存储配置寄存器可以通过数据输出控制单元配置存储算子(MU)的存储体(各种存储介质 寄存器、RAM等MEM)的写入和/或读出方式,还可以配置存储体对应的地址产生单元的工 作方式。根据地址产生单元生成的地址直接将输入数据存储到预定位置,并将需要的数据 从存放位置输出。算法中的不同阶段对数据处理的顺序和排列是不一样的,从而使得在每个阶段中 数据的存储格式和方式不同,存储算子还可以针对这类需求实现数据不同存储格式和方式 的转换。存储类算子可以支持不同应用中基本且常用的存储格式和转换方式,比如串并转 换、并串转换、队列结构、堆栈结构等。3、路径类算子。图2. 3为路径类算子(LU)的通用结构示意图。路径类算子包括路由配置寄存器 和组成路由选择单元的交换开关和数据寄存器(REG),其中,路由配置寄存器受到控制类算 子CU(见下文)的控制,在控制类算子的控制作用下控制交换开关按照期望的方式实现不 同运算类算子之间的连接。数据寄存器用于暂存运算类算子和存储类算子的输入输出数据。即,路径类算子的作用是连接存储类算子与运算类算子,形成数据流结构。其实现形式 主要有三种多选器、交叉开关和总线。4、控制类算子。图2. 4为控制类算子(⑶)的通用结构示意图。控制类算子主要是将配置信息传 送到相应的配置寄存器,配置运算类算子、存储类算子和路径类算子实现预定的功能。艮口, 控制类算子的作用是正常控制数据流的流动。其实现形式有三种计数器、状态机和微指令 字。控制输出内容包括运算类算子动态重构信息、存储类算子AGU的配置信息、路径类算 子的配置信息,实现对其他算子的控制。其中微指令字结构包含译码器、程序计数器、指令 存储器和流水线控制模块等。控制类算子通过执行简单的配置指令向各功能单元发送配置 fn息ο5、时钟类算子。时钟类算子是驱动和定时部件,用于提供运算类算子、存储类算子、路径类算子和 控制类算子的时钟信号,时钟信号包括控制时钟起停和控制时钟频率的信号,时钟信号可 以按照期望的方式配置。以上五类算子是实现以下实施方式的基础,可以理解的是,上述对根据功能将用 于集成电路设计中的算子分为五大类并非唯一的划分方式,还可以根据实际情况有针对性 进行更宽范围或更细范围的划分。集成电路(IC)的算子设计过程可以概括为将C、Matlab等高级语言的算法描述 转化为算子描述并在算子结构上进行优化设计的过程。由于算子已经预先设计并验证,因 此算法的算子描述可以快速或者自动完成设计验证过程。对于特定领域,比如通信或媒体, 可以设计一些更好支撑算法实现的扩展算子或算子IP,从而更大程度地加速和优化设计过程。本发明涉及将算子用于视频编码器的熵编码器的实现,其主要包括将高级程序语言算法描述的视频编码器的熵编码器的各个编码功能块映射成由 算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成熵编码器硬件集 成电路。在将高级程序语言算法描述的视频编码器的熵编码器的各个编码功能块映射成 由算子单元构成的硬件逻辑描述过程中,主要包括如下步骤1)程序分析步骤读取熵编码器的各个编码功能块的高级程序语言算法程序,根 据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数 对象;该步骤的主要作用在于算法分解,主要是将C、Java, Matlab等高级语言描述形式的 算法划分为若干个子算法过程。算法分解主要分析函数调用关系、函数结构体和变量、底层 函数的基本运算等信息,以便以上述的各类算子实现对算法的映射。执行对象主要包括运 算指令和/或控制指令,参数对象主要包括输入数据、输出数据和中间数据中的至少一种, 在算子映射时,将运算指令映射为运算类算子,将控制指令映射为控制类算子或路径类算 子,参数对象映射为存储类算子。运算类算子和存储类算子通过路径类算子链接,控制类算 子提供控制,时钟类算子提供时钟。2)数据控制流图生成步骤将识别出的执行对象和参数对象映射成描述熵编码 器算法的数据控制流图中相应节点。在数据控制流图上,运算指令映射为处理框图,控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,输入数据、输出数据和中 间数据映射为数据流上的存储节点。3)算子结构图生成步骤根据数据控制流图中的各个节点的功能处理,从算子单 元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的 算子时空图;算子时空图主要表示了利用算子将算法完全展开后的形式,当算法被算子完 全展开之后,算法将完全通过并行性执行,速度最快,面积最大,此即时空图展开。算子时空 图是用一个或多个算子单元的组合取代数据控制流图中的各节点,一个或多个算子单元的 组合可完成与各节点相同的功能。对于如何将数据控制流图展开,包括但不限于以下几种 方式如果数据控制流图中的数据流为顺序相关数据流结构,则将所述顺序相关数据流采 用流水线的方式展开;如果数据控制流图中的数据流中存在反馈,且该数据流是一个循环 时,如果该数据流的数据之间有数据相关性,则有数据相关性的数据流不能转化为流水结 构;如果数据流的数据之间存在数据相关性,并且存在数据相关性的各数据流内部不存在 数据相关性时,则将所述内部数据不存在数据相关性的各数据流采用局部流水线的方式展 开;如果数据控制流图中的数据流之间不存在数据相关性,则将所述并行数据流采用并行 方式展开,并转换成由算子单元组成的算子时空图。4)时序约束步骤根据用户规格需求和目标集成电路工艺的要求确定出总时序 约束,对算子时空图中的每个算子单元标注时间,另一方面,从算子单元库中可以提取算子 时序信息,对算子时空图做时序标注,形成时序约束的对象。从而根据数据流特性可以将时 序约束具体到算子时空图的每个层级,实现对算子时空图的每个层级进行时序约束。如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每 个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元。将数 据控制流中串行各节点所对应的各算子层级总的算子的基本时序单位作为总体时序约束, 按照各算子层级中最长运算路径所映射的运算算子的时序占各个算子层级中最长运算路 径所映射的算子单元对应的时序总和的比例来分配各算子层级的时序。5)时空图压缩步骤根据时间标注对算子时空图进行空间上的聚类压缩,并使总 体算法执行时间最接近于总时序约束;该步骤是根据各个子算法过程的时间标注,在算子 时空图中进行聚类压缩,通过增加控制类算子和路径类算子来提高存储类算子和运算类算 子的复用,使各个子算法过程的完成时间尽量与算法过程标注的时间接近,即尽量减少运 算和存储类算子的数量。将一个算法描述用算子完全平铺开,没有任何复用,算法的完成速度将最快,但这 带来的代价将是很高的面积成本和功耗,这并非设计所希望的。设计的目标期望满足在 满足用户时序要求的前提下,最大地减小面积和功耗需求,所以需要复用一些算子。这样就 需要在每个算子执行相应的功能上加上其执行时间的标注,从而能够根据执行时间复用算 子,使总体算法执行时间最接近于实际要求时间,这就是算子的时间图。而空间图是对算子 面积的定义,即在算子聚类映射时,根据算子的面积进行聚类,选择复用面积较小的算子。 在算子聚类过程中,这两种因素都需要考虑到。时空图的压缩例如按如下方式进行在算子 时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;然后根据时间 标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储 类算子在空间上进行合并压缩;然后引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。聚类压缩步骤和生成可重构算子功能块的步骤,都会产生不只一种结果。不同的 函数调用同一子函数,由于约束时间不同,所产生的聚类结果也不同。因此需要根据时间、 面积、功耗等参数进行优化,按性能(执行时间)排出顺序,恰好满足时间约束的聚类结果 表示其硬件实现代价最小,因此选择总体算法执行时间最接近于完成集成电路算法所需要 的总时序约束的时空图作为聚类压缩的优化结果。6)下层硬件映射步骤将聚类压缩后的算子时空图映射成由算子单元构成的硬 件逻辑描述。本实施例中以H. 264标准的X264代码描述的bS_write_ue函数为例来说明熵编 码器的算子设计流程。bs_Write_Ue函数完成无符号指数哥伦布编码。在函数中的val是待编码的参数, 经指数哥伦布编码后写入到结构体bs_t中。由高位开始,写到低位。首先进行函数分解,表1为bs_Write_ue函数输入输出关系。
权利要求
1.一种用于视频编码器的熵编码器的实现方法,其特征在于,包括将高级程序语言算法描述的视频编码器的熵编码器的各个编码功能块映射成由算子 单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成熵编码器硬件集成电路。
2.如权利要求1所述的方法,其特征在于,将高级程序语言算法描述的视频编码器的 熵编码器的各个编码功能块映射成由算子单元构成的硬件逻辑描述包括如下步骤程序分析步骤读取熵编码器的各个编码功能块的高级程序语言算法程序,根据该高 级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;数据控制流图生成步骤将识别出的执行对象和参数对象映射成描述熵编码器算法的 数据控制流图中相应节点;算子结构图生成步骤根据数据控制流图中的各个节点的功能处理,从所述算子单元 库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算 子时空图;时序约束步骤根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对 算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;时空图压缩步骤根据时间标注对算子时空图进行空间上的聚类压缩,并使总体算法 执行时间最接近于总时序约束;下层硬件映射步骤将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
3.如权利要求2所述的方法,其特征在于,所述算子单元库中的算子单元包括运算类 算子、存储类算子、控制类算子、路径类算子和时钟类算子中至少一种。
4.如权利要求3所述的方法,其特征在于,所述运算类算子为可重构算子,一个运算 类算子配置控制位以及多种运算,所述控制位用于择一选择一种运算;所述路径类算子用 于链接存储类算子与运算类算子,形成数据流结构,其实现形式包括多选器、交叉开关和总 线;所述控制类算子用于推动数据流的流动,其实现形式包括计数器、状态机和微指令字, 控制输出内容包括运算类算子动态重构信息、存储类算子的配置信息、路径类算子的配置 信息;所述存储类算子用于对不同的数据存储格式和计算格式进行转换。
5.如权利要求3所述的方法,其特征在于,所述执行对象包括运算指令和/或控制指 令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种,将所述运算指令映射 为运算类算子,将所述控制指令映射为控制类算子或路径类算子,将所述参数对象映射为 存储类算子。
6.如权利要求1所述的方法,其特征在于,所述编码功能块包括用于编码语法参数的 统一可变长编码功能块、用于编码残差数据的上下文自适应可变长编码功能块、以及拼接 所有编码码流的码流拼接功能块。
7.一种用于视频编码器的熵编码器,其特征在于,包括用于编码语法参数的统一可变 长编码功能块、用于编码残差数据的上下文自适应可变长编码功能块、以及拼接所有编码 码流的码流拼接功能块,所述各功能块由算子单元组成。
8.如权利要求7所述的熵编码器,其特征在于,所述自适应可变长编码功能块包括顺 序相连的数据缓冲重排序单元、残差系数解析单元、查找表或计算编码单元。
9.如权利要求8所述的熵编码器,其特征在于,所述数据缓冲重排序单元、残差系数解 析单元、查找表或计算编码单元采用级间流水形式设置。
10.如权利要求7所述的熵编码器,其特征在于,所述上下文自适应可变长编码功能块 的残差系数编码算子功能群落为实现一次子4*4块残差系数编码的算子功能群落。
全文摘要
本发明公开了一种用于视频编码器的熵编码器及其实现方法,所述熵编码器的实现方法包括将高级程序语言算法描述的视频编码器的熵编码器的各个编码功能块映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成熵编码器硬件集成电路。本发明能够加快熵编码器的集成电路设计速度。
文档编号H04N7/26GK102088603SQ201010620028
公开日2011年6月8日 申请日期2010年12月31日 优先权日2010年12月31日
发明者张兴, 王新安, 胡子一, 陈奎林 申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1