CN102075765B - 用于视频编解码器的色度插值电路及其实现方法 - Google Patents
用于视频编解码器的色度插值电路及其实现方法 Download PDFInfo
- Publication number
- CN102075765B CN102075765B CN 201010619799 CN201010619799A CN102075765B CN 102075765 B CN102075765 B CN 102075765B CN 201010619799 CN201010619799 CN 201010619799 CN 201010619799 A CN201010619799 A CN 201010619799A CN 102075765 B CN102075765 B CN 102075765B
- Authority
- CN
- China
- Prior art keywords
- operator
- class
- control
- data
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
本发明公开了一种色度插值器,包括依次相连的第一级部件、第二级部件和第三级部件,及用于控制所述第一级部件、第二级部件和第三级部件的控制部件;所述第一级部件包括用于实现加法操作操作的第一级运算单元,所述第二级部件包括用于实现加法操作的第二级运算单元,所述第三级部件包括用于实现移位和取整操作的移位取整单元;所述第一级部件、第二级部件、第三级部件和控制部件均由算子实现。本发明还公开了一种基于算子设计的色度插值器的实现方法,可以加快上述色度插值器的集成电路实现。
Description
技术领域
本发明涉及视频编解码领域,尤其是一种用于视频编解码器的色度插值器及其实现方法。
背景技术
视频压缩编解码技术是对数字视频信号进行压缩和解压缩的技术。衡量一个视频压缩编解码技术优劣的标志是既有较大的压缩比,又能保证视频质量。H.264/AVC视频压缩标准就是这样一种高效、优异的视频压缩编码技术。其广泛用于高清视频中。
H.264/AVC视频压缩标准是由ITU_T VCEG和ISO/IEC MPEG的专家共同组成的联合视频小姐JVT(joint video team)发展和制定的新一代视频编码国际标准。与以往的视频编码标准相比,H.264/AVC标准采用了许多新的特性,比如可变块大小的运动补偿、1/4像素精度的运动补偿、多参考帧、环内去块滤波等等。这些新的特性使H.264/AVC提高了两倍的压缩效率,同时显著提高了计算的复杂度。
数字视频信号由分布在离散时间上的一幅一幅的图像组成。由于邻近的图像之间很可能存在相关性,也就是说可能两幅图像像素的值很接近或后一幅图像某一块区域就是前一幅某一块区域的移动、拉伸等变化。所以在视频的编码端,为了节省带宽,没有必要对每一幅图像都单独编码,可以对前一幅图像编码,然后将它作为参考图像,计算出后一幅图像相对于参考图像的位置变化(运动矢量)和像素值的差(残差数据),然后只需要传送运动矢量和残差数据,达到压缩编码的效果(帧间预测)。在视频解码端,当解码出前一幅图像后,就可以根据运动矢量和残差数据解码得到后一幅图像。
在H.264/AVC中,一幅图像划分成若干个宏块,一个宏块由一个16×16亮度像素、一个8×8的Cb和一个8×8的Cr像素块组成(其中Cb和Cr统称为色度)。宏块还可以划分为分割和亚分割。每一个帧间预测的宏块的分割或亚分割都是由参考图像中相同大小的一块区域来预测的。为了提高预测精度,H.264/AVC采用1/4像素精度的运动估计/运动补偿。预测数据由参考图像与残差数据相加得到。运动矢量对亮度部分的是四分之一精度、对色度部分是八分之一精度。由于在参考图像中亮度和色度的分数像素点(指半像素点、1/4像素点、1/8像素点)都不存在,所以必须用已经解码的整像素点来插值得到。
H.264/AVC的色度插值就是在亮度1/4运动矢量的基础上对色度块进行处理,得到具有1/8像素精度的色度预测块,也就是说,色度的帧内预测不需要额外的运动估计的步骤,只需要进行相应的运动补偿。如图1所示,为色度插值一个点的示意图,其计算公式如下:
a=round[(8-dx)(8-dy)A+dx(8-dy)B+(8-dx)dyC+dxdyD]/64 公式一
其中,a是待插值的像素,(dx,dy)亮度运动估计得到的1/4运动矢量,A、B、C和D是色度参考宏块的像素点。
在公式一中,一旦(dx,dy)确定下来,插值也就确定了下来。但由于(dx,dy)事先无法确定,所以现有技术中通常采用乘法器或模拟乘法器实现色度插值的计算。而在集成电路设计领域,乘法器的硬件结构复杂,占用芯片面积大,影响了色度插值部分硬件电路的实现速度和质量。
发明内容
本发明要解决的主要技术问题是,提供一种用于视频编解码器的色度插值器,能够避免乘法器使用。本发明还提供一种上述色度插值器的实现方法,使用该方法可以加快色度插值器的硬件实现速度。
为解决上述技术问题,本发明提供一种用于视频编码器的色度插值器的实现方法,其特征在于,包括:
将高级程序语言算法描述的视频编码器的色度插值器的各个功能块映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成色度插值器硬件集成电路。
上述方法中,将高级程序语言算法描述的视频编码器的色度插值器的各个功能模块映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取色度插值器的各个功能块的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述色度插值器算法的数据控制流图中相应节点;
算子时空图生成步骤:根据数据控制流图中各个节点的功能处理,从所述算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
时空图压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使总体算法执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
上述方法中,所述算子单元库中的算子单元包括控制类算子、运算类算子、存储类算子、路径类算子和时钟类算子中的至少一种。
上述方法中,所述运算类算子为可重构算子,一个运算类算子配置控制位以及多种运算,所述控制位用于择一选择一种运算;所述路径类算子用于链接存储类算子与运算类算子,形成数据流结构,其实现形式包括多选器、交叉开关和总线;所述控制类算子用于推动数据流的流动,其实现形式包括计数器、状态机和微指令字,控制输出内容包括:运算类算子动态重构信息、存储类算子的配置信息、路径类算子的配置信息;所述存储类算子用于对不同的数据存储格式和计算格式进行转换。
上述方法中,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种,将所述运算指令映射为运算类算子,将所述控制指令映射为控制类算子,所述参数对象映射为存储类算子。
一种用于视频编码器的色度插值器,包括依次相连的第一级部件、第二级部件和第三级部件,以及用于控制所述第一级部件、第二级部和第三级部件的控制部件;所述第一级部件包括用于实现加法操作的第一级运算单元,所述第二级部件包括用于实现加法操作的第二级运算单元,所述第三级部件包括用于实现移位与取整操作的移位取整单元;所述第一级部件、第二级部件、第三级部件和控制部件均由算子实现
上述色度插值器中,所述第一级运算单元实现的加法操作包括实现7x+y,3x+y,5x+3y,x+y,所述第二级部件实现的加法操作包括7x+y,3x+y,5x+3y,x+y。
上述色度插值器中,所述第一级运算单元包括四个并联的分别实现7x+y,3x+y,5x+3y,x+y加法操作的运算类算子单元;所述第一级部件还包括两个由存储类算子实现的寄存器单元、一个由路径类算子实现的选择开关和一个由路径类算子实现的选择器,所述两个寄存器单元并联后与所述选择开关、第一级运算单元和选择器依次相连;所述寄存器单元用于保存计算色度插值时所使用到的参考宏块的参考像素的数据,所述选择开关用于根据控制部件的控制将所述像素数据分发给第一级运算单元,所述选择器用于在控制部件的控制作用下选择第一级运算单元中相应的算子单元进行运算,并将运算结果传递给第二级部件。
上述色度插值器中,所述第二级运算单元包括四个并联的分别实现7x+y,3x+y,5x+3y,x+y加法操作的运算类算子单元;所述第一级部件还包括两个由存储类算子实现的寄存器单元、一个由路径类算子实现的选择开关和一个由路径类算子实现的选择器,所述两个寄存器单元并联后与所述选择开关、第一级运算单元和选择器依次相连;所述寄存器单元用于保存计算色度插值时所使用到的参考宏块的参考像素的数据,所述选择开关用于根据控制部件的控制将所述像素数据分发给第一级运算单元,所述选择器用于在控制部件的控制作用下选择第一级运算单元中相应的算子单元进行运算,并将运算结果传递给第二级部件。
上述色度插值器中,所述第三级部件包括由存储类算子实现的两个寄存器和一个由运算类算子实现的移位取整单元,一个寄存器的输入端接收所述第二级部件发送来的数据,并将所述数据通过其输出端传递给所述移位取整单元,所述移位取整单元在控制单元的控制作用下将接收到的数据进行移位取整操作,并将移位取整后的结果发送给另一个寄存器。
本发明的有益效果是:通过对色度宏块的4×4子块中每一个点的色度插值计算公式的分析,发现在计算色度插值时只需要4种类型的运算配合移位与取整操作就可以实现,这4种类型的运算分别是:7x+y、3x+y、5x+3y、x+y。在上述4种类型的运算中,由于x,y的系数固定,所以可以避免硬件电路中乘法器的出现,从而使实际中用于计算色度插值的硬件结构变得简单,用集成电路实现时,芯片面积也将得到缩小。
本发明所述的方法通过设计表示硬件逻辑的算子单元,将视频编码器的色度插值器的高级语言算法通过工具映射由算子单元构成的硬件逻辑描述,从而加速了色度插值器的集成电路设计速度。
附图说明
图1为色度插值示意图;
图2为1个宏块的色度插值示意图;
图3为利用插值算子分解插值公式的表格图;
图4为1个色度宏块所用到的插值算子表格图;
图5为本发明的一种实施方式中用于计算色度插值的电路模块图;
图6为本发明的一种实施方式中用于计算色度插值的电路结构图;
图7为色度插值专用算子的结构图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
图2为1个宏块的色度插值示意图,可以看作是图1重复64次得到。其中黑色的像素表示参考的整数像素(相当于图1中的A、B、C和D)、灰色的像素表示待插值的像素。
分析图2和公式1可以看出,图2和公式1均具有对称性,所以对于图2所示的一个宏块,只需要分析其1/4部分的子块即可,通常选择位于左上角的4×4子块进行分析。
对图2中左上角的4×4子块的色度插值进行分析,并提取各算式所使用到的运算部件。具体分析和提取的部件见图3所示,图3中算式表达式由(dx,dy)的值代入公式1得到,比如将(dx,dy)=(2,3)代入公式一得a=round{2[5(3A+B)+3(3C+D)]}/64,取大括号部分的内容写入图3所示表中的算式一栏中。由于在计算色度插值a时,A、B、C和D为参考的整数像素的值,为已知量,所以对于某一具体的(dx,dy),要实现计算算式部分的内容,只需要两类算子,一类是3x+y,用于在两个周期内分别以(A,B)和(C,D)作为参数计算得到3A+B,3C+D;另一类是5x+3y,用于以(3A+B,3C+D)作为参数(上面计算得到的结果),计算得到5(3A+B)+3(3C+D),对于算式2[5(3A+B)+3(3C+D)]只需将5(3A+B)+3(3C+D)通过移位的方式实现,不涉及特别的算式。将上述涉及的两个算子3x+y和5x+3y填入图3中对应的所用到算子一栏。
按照上述方式,对图2中左上角的4×4子块进行分析,得到如图3所示的完整表格。从表格中可以看到,实际用到算子只有4种,分别是:7x+y、3x+y、5x+3y、x+y。并且每个算子的系数固定,所以用集成电路实现时,不会涉及到乘法器的运用。由于公式一和图2所示宏块的对称性,在计算宏块中除左上角4×4子块的其它子块的色度插值上,所用到的算子只可能是上述算子的对称操作,而对称操作不会改变算子的硬件结构,所以对应于硬件时,也仅涉及到上述四种算子的硬件实现结构。所谓算子的对称操作是指,以算子3x+y为例,其对称操作的表达式是x+3y。由于用于运算的四种操作的系数固定,所以通过上述算子实现色度插值器的硬件时,可以避免乘法器的应用,从而节约芯片面积。
在上述基础上,对图2所示的一个宏块计算色度插值时所用到的所有算子进行分析,如图4所示。图中括号内涉及的1、2、3和4分别是指:算子1,7x+y;算子2,3x+y;算子3,5x+3y;算子4,x+y。其中形如(1,2)的是指先进行算子2的运算,再进行算子3的运算。其中标有“’”的算子即是指相应算子的对称操作,比如2’是指算子2的对称操作,算子2的对称操作是y+3x。从算子的表达式可知,算子4本身是对称的。
在上面理解的基础上,结合具体实施方式对本发明的用于视频编解码器的色度插值的电路和实现方法进行更详细的描述。
实施例1:
如图5所示,为实现本发明计算色度插值的一种硬件电路图。图中包括第一级部件,第二级部件和第三级部件,其中第一级部件首先进行关于A和B的运算,得计算结果tmp1,将计算结果tmp1传递给第二级部件暂存;然后进行关于C和D的运算,得计算结果tmp2,将计算结果tmp2传递给第二级部件暂存。其中,A、B、C和D是指用于计算色度插值的参考宏块的整像素点的值;第二级部件进行关于tmp1和tmp2的运算,得到计算结果tmp3,将计算结果tmp3传递给第三级部件;第三级部件对接收到的值进行移位和取整操作,从而完成色度插值的计算过程。在上述过程中,第一级部件、第二级部件和第三级部件都受到控制部件的控制,控制部件控制上述计算过程的时序,即控制上述过程在不同的时序周期内有节奏地完成,控制部件还控制第一级部件和第二级部件选择合适的运算操作进行运算,第一级部件和第二级部件可供选择的运算操作是实现7x+y、3x+y、5x+3y、x+y及其对称的运算,选择的依据是亮度估计得到的1/4运动矢量的值(dx,dy),控制部件还控制第三级部件进行移位的位数。在硬件实现上,对称操作和原操作可以用同一电路实现,所以在本实施例中实现对称操作的硬件电路与实现其原操作的硬件电路为同一电路,只是实现原操作和对称操作时输入相反。
图6为图5的一种实施例中更具体的硬件电路的结构图,从图示中可以看出,第一级部件和第二级部件均包括两个用于暂存数据的寄存器单元;一个开关单元,图示中选用SWITH来实现;四个运算单元,用于分别实现7x+y、3x+y、5x+3y、x+y;一个选择器单元,图示中选用多路选择器MUX来实现。第三级部件包括一个用于暂存数据的寄存器单元、一个移位和取整单元、一个用于保存色度插值的寄存器单元。控制部件与第一级部件和第二级部件的开关单元和选择单元连接,还与第三级部件的移位和取整单元连接,用于控制上述单元的具体工作和控制整个电路的时序。图示中,MCC_C OP#1、MCC_C OP#2、MCC_C OP#3和MCC_C OP#4可以用运算类算子实现,分别用于实现7x+y、3x+y、5x+3y、x+y;控制部件controller可以用控制算子实现。开关单元和选择器单元可以用路径类算子实现;因此,上述电路的设计可以采用基于算子的设计方法,而采用算子的设计方法具有设计速度快,节约功耗等优点。
下面结合(dx,dy)=(2,3)时,对用图6所示的电路实现色度插值的计算过程进行详细的说明:
当(dx,dy)=(2,3)时,公式一化简为:a=round{2[5(3A+B)+3(3C+D)]}/64。利用上述电路的实现过程为:
第一级部件完成的操作:
步骤1:寄存器REG1和REG2分别保存用于计算色度插值的参考宏块的参考像素A和B的值,控制部件controller控制选择开关SWITH将A和B的值分发给MCC_C OP#2单元,MCC_C OP#2单元用于实现3x+y操作,控制部件controller还控制选择器MUX选择MCC_C OP#2进行运算,并将运算后得到的结果传送给第二级部件的REG3单元进行存储。上述操作在一个周期内完成;
步骤2:在另一个周期内,控制部件controller控制选择开关SWITH将REG1和REG2保存的用于计算色度插值的参考宏块的参考像素C和D的值分发给MCC_COP#2单元,控制部件controller还控制多路选择器MUX选择MCC_C OP#2进行运算,并将运算后得到的结果传送给第二级部件的REG4单元进行存储。
在步骤1和2中,控制部件controller选择MCC_C OP#2进行操作的依据是,亮度运动矢量估计(dx,dy)=(2,3)时,第一级部件中对应的操作是3x+y。这个可以从图3的对应关系中得出,另一方面,由于在本发明算子编号和(dx,dy)完全对应,因此,当dx<4时,第一级部件中采用7x+y、3x+y、5x+3y、x+y的原型操作,其余情况采用对称操作。如果7x+y、3x+y、5x+3y、x+y操作用算子实现,也就是采用算子的原型。可以理解的是,在上述过程中,SWITH选择开关也可以将REG1和REG2保存的值同时分发给所有的运算单元,多路选择器选择好用于运算的单元后,可以将其余的运算单元关闭,以节约功耗;第一级部件在两个周期内通过步骤1和步骤2实现3A+B和3C+D的计算,并将计算得到的结果传递给第二级部件暂存。
第二级部件完成的操作:
步骤3:控制部件controller控制选择开关将REG3和REG4保存的值分发给MCC_C OP#3单元或所有运算单元,还控制多路选择器MUX选择MCC_C OP#3单元进行运算,得到运算结果:5(3A+B)+3(3C+D)并将得到的结果传递给第三级部件的REG5。在步骤3中,控制部件controller选择MCC_C OP#3进行操作的依据是,亮度运动矢量估计为(dx,dy)=(2,3)时,第二级部件中对应的操作是5x+3y。这个可以从图4的对应关系中得出,另一方面,由于本发明算子编号和(dx,dy)完全对应,因此,当dy<4时,第二级部件中采用7x+y、3x+y、5x+3y、x+y的原型操作,其余情况采用对称操作。如果7x+y、3x+y、5x+3y、x+y操作用算子实现,也就是采用算子的原型。
第三级部件完成的操作:
步骤4:在控制部件controller控制作用下,对REG5保存的数据进行移位和取整操作,首先对对第二级部件得到的运算结果5(3A+B)+3(3C+D)右移1位,也就是乘以2的操作,得到2[5(3A+B)+3(3C+D)],然后左移6位,也就是对上述运算结果进行除以64的操作,上述操作也可以综合起来直接左移5位完成,具体移多少位由控制部件根据(dx,dy)的值综合确定。移位后,再对结果进行ROUND运算,也就是取整运算。将取整运算后的结果保存入REG6中,REG6中保存的数据就是所求的色度插值。可以理解的是,在实际中,移位和取整操作通常混合在一起进行,所谓的取整本质是实现四舍五入操作。比如,计算9/2的四舍五入值,应该是5,但直接写9/2,硬件取整的方式是直接去掉小数,结果就是4;为了实现四舍五入,就会进行(9+1)/2的操作,即加上除数的一半,再作除法(即移位),从而实现四舍五入。所以移位和取整实际上通过加法和移位实现的。
通过上述部件的配合操作,实现了色度插值计算的硬件实现,并且上述硬件实现过程中避免了乘法器的使用,从而使电路结构变得简单。并且上述各部件可以采用基于算子的集成电路结构实现,从而进一步提高了集成电路的设计速度。
图6中所涉及的用于分别实现7x+y、3x+y、5x+3y、x+y操作的MCC_C OP#1、MCC_C OP#2、MCC_C OP#3和MCC_C OP#4的单元采用算子实现时,其算子结构的一种结构图如图7所示。同时,SWITH可以用2选1路径算子实现,MUX可以用四选一路径选择算子实现。
上述给出了当第一级部件和第二级部件均参与运算时的实现过程。在实际中,对于某些情况,并不是第一级部件和第二级部件均会有所参与的。在一种实施方式中,第一级和第二级的控制中加入旁通支路控制(对dx和/或dy为0的情况进行特殊处理),即不进行第一级部件和/或者第二级部件的运算处理,直接进入下一级。例如(dx,dy)=(0,0)时,第一级部件和第二级部件就会直接旁路掉,直接进入第三级部件的处理;当(dx,dy)=(0,3),则第一级部件被旁路掉,直接进入第二级部件的处理。
实施例2:
对于实施例1所述的色度插值器的硬件集成电路,可以用本实施例中提到的方法进行实现,这种方法将加快色度插值器的实现速度。虽然,现有技术中和前述内容中对算子均有所介绍,但在本实施例中还是对算子及基于算子的设计方法进行更全面的介绍:
一、算子具有如下特点:
1.粒度更大
每个算子都具有一定功能,它是一种函数运算的符号表示。整个算子体系能够支持算法描述中的各种功能实现,设计人员可以基于算子对算法进行描述和验证;
2.支持算法的实现
种类完备但是数量有限的算子能够支持上层语言描述中对运算、存储、控制和数据路径的描述,并且可以基于算子描述进行优化和验证;
3.能够加速设计和验证
设计人员利用算子完成算法的功能描述后,对应的硬件设计也同时完成。因为所有算子均是预先全定制的且已被验证正确的单元,因此将缩短设计和验证的时间,设计人员只需要保证基于算子的描述和映射过程的正确即可,从而将大大加速设计和验证过程。
二、算子的常见种类。
本发明提出的算子,或者说算子单元,可以表示集成电路的硬件逻辑,基于算子的不同功能,可将算子分为运算类算子、存储类算子、路径类算子、控制类算子、时钟类算子等几类,这些算子构成一套完备的算子体系,能支撑所有算法的实现。经过设计,这些基本算子在面积、功耗、性能等参数上是最优化,它们构成了算子单元库。并且算子单元还可以组成算子功能块,算子功能块间采用共享MEM链接方式进行数据通信,也可以采用寄存器传递进行控制信息传递。下面对各类算子做一说明。
1.运算类算子
运算类算子支持算术逻辑、移位等运算功能的实现,实现这些基本运算的算子称为基本运算算子。并且,针对不同应用可以在基本运算算子的基础上进行扩展而予以支持,比如媒体处理中相减、取绝对值、求平均值、固定系数滤波运算等复杂但很常用的运算,实现这些扩展运算的运算算子称为扩展运算算子,它们由基本运算算子搭建而成。
运算类算子具有可重构性,即可以为一个运算类算子配置多种运算及控制位,控制位用于择一选择一种运算。根据不同应用的需求,通过配置控制位,可以使运算算子实现不同的功能。如果算子在执行运算过程中变化,可以通过控制位实现动态可重构。而如果算子的运算功能被优化固定,则可以将控制位固定(即固化定制)。
2.存储类算子
算法中的不同阶段对数据处理的顺序和排列是不一样的,从而使得在每个阶段中数据的存储格式和方式不同,存储算子则针对这类需求实现数据不同存储格式和方式的转换。存储类算子可以支持不同应用中基本且常用的存储格式和转换方式,比如串并转换、并串转换、队列结构、堆栈结构等。
3.路径类算子
路径类算子的作用是连接存储类算子与运算类算子,形成数据流结构。其实现形式主要有三种:多选器、交叉开关和总线。
4.控制类算子
控制类算子的作用是正常控制数据流的流动。其实现形式有三种:计数器、状态机和微指令字。控制输出内容包括:运算类算子动态重构信息、存储类算子AGU的配置信息、路径类算子的配置信息,实现对其他算子的控制。
5.时钟类算子
时钟类算子是驱动和定时部件,用于产生供控制和处理算子的时钟信号,时钟信号包含控制时钟起停和控制时钟频率的信号。
集成电路(IC)的算子设计过程可以概括为将C、Matlab等高级语言的算法描述转化为算子描述并在算子结构上进行优化设计的过程。由于算子已经预先设计并验证,因此算法的算子描述可以快速或者自动完成设计验证过程。对于特定领域,比如通信或媒体,可以设计一些更好支撑算法实现的扩展算子或算子IP,从而更大程度地加速和优化设计过程。
在上述认识的基础上,本实施例中基于算子的设计方法实现色度插值器的方法为:
将高级程序语言算法描述的视频编码器的色度插值器的各个功能块映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成色度插值器硬件集成电路。可能理解的是,上述描述色度插值器的高级语言算法可以用C语言对公式一直接进行描述,也可以基于实施例1中认识,对公式一重新进行的描述,此处所指的实施例1的认识主要是指公式一可以用7x+y、3x+y、5x+3y、x+y操作而避免乘法器的使用。
将高级程序语言算法描述的视频编码器的色度插值器的各个功能块映射成由算子单元构成的硬件逻辑描述过程中,主要包括如下步骤:
1)程序分析步骤:读取色度插值器的各个功能块的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;该步骤的主要作用在于算法分解,主要是将C、Java、Matlab等高级语言描述形式的算法划分为若干个子算法过程。算法分解主要分析函数调用关系、函数结构体和变量、底层函数的基本运算等信息,以便以上述的各类算子实现对算法的映射。执行对象主要包括运算指令和/或控制指令,参数对象主要包括输入数据、输出数据和中间数据中的至少一种,在算子映射时,将运算指令映射为运算类算子,将控制指令映射为控制类算子,参数对象映射为存储类算子。运算类算子和存储类算子通过路径类算子链接,控制类算子提供控制,时钟类算子提供时钟。
2)数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述色度插值器算法的数据控制流图中相应节点。
即将匹配出的执行对象和参数对象映射成描述集成电路算法的数据控制流图中的相应节点。例如:将所述运算指令映射为处理框图,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述输入数据、输出数据和中间数据映射为数据流上的存储节点。每个函数具有自己的数据控制流图。
3)算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;算子时空图主要表示了利用算子将算法完全展开后的形式,当算法被算子完全展开之后,算法将完全通过并行性执行,速度最快,面积最大,此即时空图展开。
将数据控制流图转换成算子时空图时将上层函数和下层函数的数据控制流图分别转换成各自的算子时空图。先将数据控制流图根据其数据流相关性展开,然后将展开后节点转换成可完成节点功能的算子单元。用一个或多个算子单元的组合取代数据控制流图中的各节点,一个或多个算子单元的组合(算子块)可完成与各节点功能相同的功能。展开成算子时空图后扩大了集成电路的设计面积,但这种情况下时序最快。
将数据控制流图展开的方式包括但不限于以下几种方式:
如果数据控制流图中的数据流为顺序相关数据流结构,则将所述顺序相关数据流采用流水线的方式展开。
如果数据控制流图中的数据流中存在反馈时,当数据流是一个循环时,对于有数据相关性的数据流不能转化为流水结构,如果数据流的数据之间存在数据相关性,并且存在数据相关性的各数据流内部不存在数据相关性时,则将所述内部数据不存在数据相关性的各数据流采用局部流水线的方式展开。
如果数据控制流图中的数据流之间不存在数据相关性,则将所述并行数据流采用并行方式展开,并转换成由算子单元组成的算子时空图。
4)时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束。
如果所述数据流结构为并行数据流,则将总时序约束平分给到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元。将数据控制流中串行各节点所对应的各算子层级总的算子的基本时序单位作为总体时序约束,按照各算子层级中最长运算路径所映射的运算算子的时序占各个算子层级中最长运算路径所映射的算子单元对应的时序总和的比例来分配各算子层级的时序。
5)时空图压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使总体算法执行时间最接近于总时序约束;该步骤是根据各个子算法过程的时间标注,在算子时空图中进行聚类压缩,通过增加控制类算子和路径类算子来提高存储类算子和运算类算子的复用,使各个子算法过程的完成时间尽量与算法过程标注的时间接近,即尽量减少运算和存储类算子的数量。
将一个算法描述用算子完全平铺开,没有任何复用,算法的完成速度将最快,但这带来的代价将是很高的面积成本和功耗,这并非设计所希望的。设计的目标期望满足:在满足用户时序要求的前提下,最大地减小面积和功耗需求,所以需要复用一些算子。这样就需要在每个算子执行相应的功能上加上其执行时间的标注,从而能够根据执行时间复用算子,使总体算法执行时间最接近于实际要求时间,这就是算子的时间图。空间图是对算子面积的定义,即在算子聚类映射时,根据算子的面积进行聚类,选择复用面积较小的算子。在算子聚类过程中,这两种因素都需要考虑到。
在一种实施例中,对时空图进行压缩包括以下步骤:在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;然后根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;然后引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
聚类压缩步骤和生成可重构算子功能块的步骤,都会产生不只一种结果。不同的函数调用同一子函数,由于约束时间不同,所产生的聚类结果也不同。因此需要根据时间、面积、功耗等参数进行优化,按性能(执行时间)排出顺序,恰好满足时间约束的聚类结果表示其硬件实现代价最小,因此选择总体算法执行时间最接近于完成集成电路算法所需要的总时序约束的时空图作为聚类压缩的优化结果。
6)下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
在基于快速设计的算子方法学中,从高级程序语言算法描述开始,通过映射得到可配置算子的时空图,从时空图经过聚类将算子进行空间压缩,使得在满足时序条件的情况下,基于功能相近与控制一致的原则,将算子聚类形成初步算子实现的ASIC架构。根据目标算法的实现去除算子不必要的可重构部件,使得面积、功耗、性能等参数得到进一步优化,最后为定制完成的ASIC生成配置指令。这一过程可省去对高级程序语言算法,例如C程序算法的研读,而可直接根据C算法的属性进行算子的映射,进而大大地缩短了设计时间。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (6)
1.一种用于视频编码器的色度插值器的实现方法,其特征在于,包括:
将高级程序语言算法描述的视频编码器的色度插值器映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成色度插值器硬件集成电路;其中,将高级程序语言算法描述的视频编码器的色度插值器的各个功能模块映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取色度插值器的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述色度插值器算法的数据控制流图中相应节点;
算子时空图生成步骤:根据数据控制流图中各个节点的功能处理,从所述算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
时空图压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使总体算法执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述;
其中,所述算子单元库中的算子单元包括控制类算子、运算类算子、存储类算子、路径类算子和时钟类算子中的至少一种;所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种,将所述运算指令映射为运算类算子,将所述控制指令映射为控制类算子,所述参数对象映射为存储类算子。
2.如权利要求1所述的方法,其特征在于,所述运算类算子为可重构算子,一个运算类算子配置控制位以及多种运算,所述控制位用于择一选择一种运算;所述路径类算子用于链接存储类算子与运算类算子,形成数据流结构,其实现形式包括多选器、交叉开关和总线;所述控制类算子用于推动数据流的流动,其实现形式包括计数器、状态机和微指令字,控制输出内容包括:运算类算子动态重构信息、存储类算子的配置信息、路径类算子的配置信息;所述存储类算子用于对不同的数据存储格式和计算格式进行转换。
3.一种用于视频编码器的色度插值器,其特征在于,包括依次相连的第一级部件、第二级部件和第三级部件,以及用于控制所述第一级部件、第二级部和第三级部件的控制部件;所述第一级部件包括用于实现加法操作的第一级运算单元,所述第二级部件包括用于实现加法操作的第二级运算单元,所述第三级部件包括用于实现移位与取整操作的移位取整单元;所述第一级部件、第二级部件、第三级部件和控制部件均由算子实现;
所述第一级运算单元实现的加法操作包括实现7x+y,3x+y,5x+3y,x+y,所述第二级部件实现的加法操作包括7x+y,3x+y,5x+3y,x+y。
4.如权利要求3所述的色度插值器,其特征在于,所述第一级运算单元包括四个并联的分别实现7x+y,3x+y,5x+3y,x+y加法操作的运算类算子单元;所述第一级部件还包括两个由存储类算子实现的寄存器单元、一个由路径类算子实现的选择开关和一个由路径类算子实现的选择器,所述两个寄存器单元并联后与所述选择开关、第一级运算单元和选择器依次相连;所述寄存器单元用于保存计算色度插值时所使用到的参考宏块的参考像素的数据,所述选择开关用于根据控制部件的控制将所述像素数据分发给第一级运算单元,所述选择器用于在控制部件的控制作用下选择第一级运算单元中相应的算子单元进行运算,并将运算结果传递给第二级部件。
5.如权利要求3所述的色度插值器,其特征在于,所述第二级运算单元包括四个并联的分别实现7x+y,3x+y,5x+3y,x+y加法操作的运算类算子单元;所述第一级部件还包括两个由存储类算子实现的寄存器单元、一个由路径类算子实现的选择开关和一个由路径类算子实现的选择器,所述两个寄存器单元并联后与所述选择开关、第一级运算单元和选择器依次相连;所述寄存器单元用于保存计算色度插值时所使用到的参考宏块的参考像素的数据,所述选择开关用于根据控制部件的控制将所述像素数据分发给第一级运算单元,所述选择器用于在控制部件的控制作用下选择第一级运算单元中相应的算子单元进行运算,并将运算结果传递给第二级部件。
6.如权利要求3所述的色度插值器,其特征在于,所述第三级部件包括由存储类算子实现的两个寄存器和一个由运算类算子实现的移位取整单元,一个寄存器的输入端接收所述第二级部件发送来的数据,并将所述数据通过其输出端传递给所述移位取整单元,所述移位取整单元在控制单元的控制作用下将接收到的数据进行移位取整操作,并将移位取整后的结果发送给另一个寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010619799 CN102075765B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编解码器的色度插值电路及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010619799 CN102075765B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编解码器的色度插值电路及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102075765A CN102075765A (zh) | 2011-05-25 |
CN102075765B true CN102075765B (zh) | 2012-12-05 |
Family
ID=44034086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010619799 Expired - Fee Related CN102075765B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编解码器的色度插值电路及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102075765B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615519B (zh) * | 2022-01-27 | 2024-06-18 | 百果园技术(新加坡)有限公司 | 视频处理方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946178A (zh) * | 2006-10-20 | 2007-04-11 | 西安交通大学 | 一种用于运动估计的vlsi装置及运动估计的方法 |
CN101141657A (zh) * | 2007-07-24 | 2008-03-12 | 浙江大学 | 视频图像色度插值的方法和装置 |
CN101426134A (zh) * | 2007-11-01 | 2009-05-06 | 上海杰得微电子有限公司 | 用于视频编解码的硬件装置及方法 |
KR20090102646A (ko) * | 2008-03-25 | 2009-09-30 | 숭실대학교산학협력단 | 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기의 보간 연산기 구조 |
-
2010
- 2010-12-31 CN CN 201010619799 patent/CN102075765B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1946178A (zh) * | 2006-10-20 | 2007-04-11 | 西安交通大学 | 一种用于运动估计的vlsi装置及运动估计的方法 |
CN101141657A (zh) * | 2007-07-24 | 2008-03-12 | 浙江大学 | 视频图像色度插值的方法和装置 |
CN101426134A (zh) * | 2007-11-01 | 2009-05-06 | 上海杰得微电子有限公司 | 用于视频编解码的硬件装置及方法 |
KR20090102646A (ko) * | 2008-03-25 | 2009-09-30 | 숭실대학교산학협력단 | 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기의 보간 연산기 구조 |
Non-Patent Citations (3)
Title |
---|
Ziyi Hu et al.Operator Design Methodology and Implementation for H.264 Entropy Encoder.《ICIECS 2010 2nd international conference》.2010, * |
王新.算子设计方法缩小IC设计与制造间的"剪刀差".《集成电路应用》.2010,(第07期),第24页第1栏第1行-第26页下栏第3栏. |
王新.算子设计方法缩小IC设计与制造间的"剪刀差".《集成电路应用》.2010,(第07期),第24页第1栏第1行-第26页下栏第3栏. * |
Also Published As
Publication number | Publication date |
---|---|
CN102075765A (zh) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8213511B2 (en) | Video encoder software architecture for VLIW cores incorporating inter prediction and intra prediction | |
JP7223045B2 (ja) | マルチコンポーネント画像またはビデオ符号化のコンセプト | |
US7457362B2 (en) | Loop deblock filtering of block coded video in a very long instruction word processor | |
US8472527B2 (en) | Hierarchical motion estimation using original frame for sub-sampled reference | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
US10165270B2 (en) | Intra/inter mode decision for predictive frame encoding | |
Diniz et al. | A reconfigurable hardware architecture for fractional pixel interpolation in high efficiency video coding | |
CN102804165A (zh) | 具有可扩展数据路径的前端处理器 | |
US20240037700A1 (en) | Apparatus and method for efficient motion estimation | |
Kalali et al. | An approximate HEVC intra angular prediction hardware | |
Azgin et al. | A computation and energy reduction technique for HEVC intra prediction | |
Koziri et al. | Implementation of the AVS video decoder on a heterogeneous dual-core SIMD processor | |
CN102075765B (zh) | 用于视频编解码器的色度插值电路及其实现方法 | |
CN102054107B (zh) | 集成电路下层硬件映射方法、时空图生成方法及装置 | |
Shafique et al. | Optimizing the H. 264/AVC video encoder application structure for reconfigurable and application-specific platforms | |
CN102075762B (zh) | 用于视频编码器的帧间预测电路及其实现方法 | |
JP5195674B2 (ja) | 画像符号化装置 | |
CN102055980B (zh) | 用于视频编码器的帧内预测电路及其实现方法 | |
Shafique et al. | Hardware/software architectures for low-power embedded multimedia systems | |
JPH1155668A (ja) | 画像符号化装置 | |
Han et al. | Functional modeling techniques for efficient SW code generation of video codec applications | |
Nguyen et al. | An Efficient Implementation of H. 264/AVC Integer Motion Estimation Algorithm on Coarse-grained Reconfigurable Computing System. | |
Maiti et al. | Efficient deblocking filter implementation on reconfigurable processor | |
Furht | Processor architectures for multimedia | |
Mei et al. | Exploration of full HD media decoding on a software defined radio baseband processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20211231 |