高并行度的帧内预测器的实现方法

文档序号:7966997阅读:215来源:国知局
专利名称:高并行度的帧内预测器的实现方法
技术领域
本发明涉及视频编解码的集成电路设计领域。
背景技术
H.264标准是国际电信联盟电信部门ITU-T的VCEG(视频编码专家组)和国际标准化组织/国际电工委员会ISO/IEC的MPEG(活动图像专家组)的联合视频组(JVT,Joint VideoTeam)开发的标准,这是目前最新的视频编码标准。与之前的标准相似,它们都是通过去除图像的空间与时间冗余度来达到压缩的目的。
H.264中的帧内预测H.264的帧内预测是利用当前块的上方和左方的相临像素作为参考像素,对当前块的像素进行预测,有效地去除空间冗余度,极大地提高了编码的效率。对于亮度分量,H.264有两种不同大小的块进行帧内预测4×4大小的块适用于带有大量细节的图像,有9种预测模式;16×16大小的块适用于平坦区域的图像,有4种预测模式。对于色度分量,只有8×8大小的块,有4种预测模式。对于不同大小的块和不同的预测模式,解码器采用不同的预测公式得到像素的预测值。3种不同大小的预测块和多达17种的预测模式,在提高预测精度的同时,也使得硬件实现时的复杂度和冗余度大大增加。
为了方便接下来问题的讨论,图1给出了空间坐标系的定义。其中每个方格表示一个像素点,灰色的方格表示当前块的预测像素点,白色的方格表示与当前块相邻的参考像素点,水平向右为x轴的正方向,竖直向下为y轴的正方向,x轴和y轴的起点坐标都为-1,步间距都为1。定义了坐标系之后,参考像素和预测像素的位置就可以由坐标[x,y]唯一确定。
p[x,-1],x=-1~15表示当前块上方的参考像素点,又取名为h1~h17;p[-1,y],y=0~15表示当前块左方的参考像素点,又取名为v2~v17。同时,用pred4×4L[x,y],x=0~3,y=0~3表示4×4大小的亮度块的16个预测像素点,用pred16×16L[x,y],x=0~15,y=0~15表示16×16大小的亮度块的256个预测像素点,用pred8×8c[x,y],x=0~7,y=0~7表示8×8大小的色度块的64个预测像素点。
4×4大小的亮度块的预测模式
4×4大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有9种预测模式,如图2所示,其中灰色的方格表示16个预测像素点,白色的标记为h1~h9和v2~v5的方格表示相邻的参考像素点。9种预测模式的名字和描述如表1所示,各个模式的预测公式在表后给出。
表1 4×4亮度块的预测模式的名字和描述

模式0pred4×4L[x,y]=p[x,-1],x=0,1,2,3,y=0,1,2,3模式1pred4×4L[x,y]=p[-1,y],x=0,1,2,3,y=0,1,2,3模式2当参考像素h2~h5和v2~v5都存在时pred4×4L[x,y]=(p
+p[1,-1]+p[2,-1]+p[3,-1]+p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+4)/8当只有参考像素h2~h5存在时pred4×4L[x,y]=(p
+p[1,-1]+p[2,-1]+p[3,-1]+2)/4当只有参考像素v2~v5存在时pred4×4L[x,y]=(p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+2)/4当参考像素h2~h5和v2~v5都不存在时pred4×4L[x,y]=128模式3pred4×4L[x,y]=(p[6,-1]+3×p[7,-1]+2)/4x=3,y=3pred4×4L[x,y]=(p[x+y,-1]+2×p[x+y+1,-1]+p[x+y+2,-1]+2)/4 x=其他值,y=其他值模式4pred4×4L[x,y]=(p[x-y-2,-1]+2×p[x-y-1,-1]+p[x-y,-1]+2)/4 x>ypred4×4L[x,y]=(p[-1,y-x-2]+2×p[-1,y-x-1]+p[-1,y-x]+2)/4 x<ypred4×4L[x,y]=(p
+2×p[-1,-1]+p[-1,0]+2)/4 x=其他值,y=其他值模式5pred4×4L[x,y]=(p[x-(y/2)-1,-1]+p[x-(y/2),-1]+1)/2 2×x-y=0,2,4,6pred4×4L[x,y]=(p[x-(y/2)-2,-1]+2×p[x-(y/2)-1,-1]+p[x-(y/2),-1]+2)/4 2×x-y=1,3,5pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p
+2)/4 2×x-y=-1pred4×4L[x,y]=(p[-1,y-1]+2×p[-1,y-2]+p[-1,y-3]+2)/4 2×x-y=其他值模式6pred4×4L[x,y]=(p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+1)/2 2×y-x=0,2,4,6
pred4×4L[x,y]=(p[-1,y-(x/2)-2]+2×p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+2)/4 2×x-y=1,3,5pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p
+2)/4 2×x-y=-1pred4×4L[x,y]=(p[x-1,-1]+2×p[x-2,-1]+p[x-3,-1]+2)/4 2×x-y=其他值模式7pred4×4L[x,y]=(p[x+(y/2),-1]+p[x+(y/2)+1,-1]+1)/2 y=0,2pred4×4L[x,y]=(p[x+(y/2),-1]+2×p[x+(y/2)+1,-1]+p[x+(y/2)+2,-1]+2)/4 y=1,3模式8pred4×4L[x,y]=(p[-1,y+(x/2)]+p[-1,y+(x/2)+1]+1)/2 x+2×y=0,2,4pred4×4L[x,y]=(p[-1,y+(x/2)]+2×p[-1,y+(x/2)+1]+p[-1,y+(x/2)+2]+2)/4 x+2×y=1,3pred4×4L[x,y]=(p[-1,2]+3×p[-1,3]+2)/4 x+2×y=5pred4×4L[x,y]=p[-1,3] x+2×y=其他值16×16大小的亮度块的预测模式16×16大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有4种预测模式,如图3所示,其中灰色的部分表示256个预测像素点,白色的标记为h1~h17和v2~v17的部分表示相邻的参考像素点。4种预测模式的名字和描述如表2所示,各个模式的预测公式在表后给出。
表2 16×16亮度块的预测模式的名字和描述

模式9pred16×16L[x,y]=p[x,-1]x=0...15,y=0...15模式10pred16×16L[x,y]=p[-1,y]x=0...15,y=0...15模式11当参考像素h2~h17和v2~v17都存在时pred16×16L[x,y]=(p
+...+p[15,-1]+p[-1,0]+...+p[-1,15]+16)/32当只有参考像素h2~h17存在时pred16×16L[x,y]=(p
+...+p[15,-1]+8)/16当只有参考像素v2~v17存在时pred16×16L[x,y]=(p[-1,0]+...+p[-1,15]+8)/16当参考像素h2~h17和v2~v17都不存在时pred16×16L[x,y]=128模式15pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32a=16×(p[-1,15]+p[15,-1]),b=(5×H+32)/64,c=(5×V+32)/64
H=Σx=07(x+1)×(p[8+x,-1]-p[6-x,-1])]]>V=Σy=07(y+1)×(p[-1,8+y]-p[-1,6-y])]]>其中Clip1函数的意义是

8×8大小的色度块的预测模式8×8大小的色度块使用与其相邻的上面和左面的像素点来预测,一共有4种预测模式,如图4所示,其中灰色的部分表示64个预测像素点,白色的标记为h1~h9和v2~v9的部分表示相邻的参考像素点。4种预测模式的名字和描述如表3所示,各个模式的预测公式在表后给出。
表3 8×8色度块的预测模式的名字和描述

模式12分成四个区域进行预测(1)x=0~3和y=0~3的区域当参考像素h2~h5和v2~v5都存在时pred8×8C[x,y]=(p
+...+p[3,-1]+p[-1,0]+...+p[-1,3]+4)/8当只有参考像素h2~h5存在时pred8×8C[x,y]=(p
+...+p[3,-1]+2)/4当只有参考像素v2~v5存在时pred8×8C[x,y]=(p[-1,0]+...+p[-1,3]+2)/4当参考像素h2~h5和v2~v5都不存在时pred8×8C[x,y]=128(2)x=4~7和y=0~3的区域当参考像素h6~h9和v2~v5都存在时pred8×8C[x,y]=(p[4,-1]+...+p[7,-1]+p[-1,0]+...+p[-1,3]+4)/8当只有参考像素h6~h9存在时pred8×8C[x,y]=(p[4,-1]+...+p[7,-1]+2)/4
当只有参考像素v2~v5存在时pred8×8C[x,y]=(p[-1,0]+...+p[-1,3]+2)/4当参考像素h6~h9和v2~v5都不存在时pred8×8C[x,y]=128(3)x=0~3和y=4~7的区域当参考像素h2~h5和v6~v9都存在时pred8×8C[x,y]=(p
+...+p[3,-1]+p[-1,4]+...+p[-1,7]+4)/8当只有参考像素h2~h5存在时pred8×8C[x,y]=(p
+...+p[3,-1]+2)/4当只有参考像素v6~v9存在时pred8×8C[x,y]=(p[-1,4]+...+p[-1,7]+2)/4当参考像素h2~h5和v6~v9都不存在时pred8×8C[x,y]=128(4)x=4~7和y=4~7的区域当参考像素h6~h9和v6~v9都存在时pred8×8C[x,y]=(p[4,-1]+...+p[7,-1]+p[-1,4]+...+p[-1,7]+4)/8当只有参考像素h6~h9存在时pred8×8C[x,y]=(p[4,-1]+...+p[7,-1]+2)/4当只有参考像素v6~v9存在时pred8×8C[x,y]=(p[-1,4]+...+p[-1,7]+2)/4当参考像素h2~h5和v2~v5都不存在时pred8×8C[x,y]=128模式13pred8×8C[x,y]=p[-1,y]x=0...7,y=0...7模式14pred8×8C[x,y]=p[x,-]x=0...7,y=0...7模式16pred8×8C[x,y]=C1ip1((a+b×(x-3)+c×(y-3)+16))/32a=16×(p[-1,7]+p[7,-1]),b=(17×H+16)/32,c=(17×V+16)/32H=Σx=03(x+1)×(p[4+x,-1]-p[2-x,-1])]]>V=Σy=03(y+1)×(p[-1,4+y]-p[-1,2-y])]]>目前关于H.264解码器的帧内预测器的电路结构,有采用可重构的方法进行设计的。该方法先设计一个可以每个时钟周期计算1个像素点的预测值的可重构的运算单元,再通过将多个这样的运算单元并行来提高计算的并行度。可重构的方法以降低计算的并行度为代价节省了硬件资源,并且需要对每个运算单元的输入输出数据进行调度,增加了控制逻辑的复杂度。
本发明分析了H.264标准的帧内预测的17种预测模式,对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器,可以每个时钟周期计算16个预测像素点的值。

发明内容
本发明的目的在于提供了一种采用数字计算强度缩减的方法去除计算的冗余后得到的高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。
对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。
数字计算强度缩减算法数字计算强度缩减是旨在减少计算强度的数字变换技术。该方法的思想是通过一定的变换和重组,找出不同的计算中相同的子表达式,即冗余操作,对这些冗余操作只需要进行一次计算,并将计算结果共享,从而减少计算的强度,节省硬件资源。
设计思想观察图2、图3和图4所示的一共17种预测模式的预测公式,可以看出,同一个像素点的不同模式的预测公式之间有很多子表达式是相同的,适合采用数字计算强度缩减的方法共享这些子表达式,从而节省硬件资源。进一步的观察发现,不但同一个像素点的不同预测模式的预测公式之间有很多冗余计算,而且一个4×4大小块的16个像素点的同一个预测模式的预测公式之间也有很多相同的子表达式。于是,本发明提出的帧内预测器的系统结构,基于以下的设计思想对每个4×4大小块的16个像素点的17种预测模式的预测公式,采用数字计算强度缩减的方法,消除其中的冗余操作。
采用这样的结构,可以每个时钟周期计算16个预测像素点的值,从而在不降低计算并行度的条件下,有效地减少硬件资源。具体实现时,对图2所示的4×4大小块,每个时钟周期得到该块的16个预测像素点的值,对图3所示的16×16大小块和图4所示的8×8大小块,分别划分为16个和4个4×4大小块,按照光栅扫描的顺序,每个时钟周期得到其中一个4×4大小块的16个预测像素点的值。
帧内预测器整体框图图2、图3和图4中已经将17种预测模式从模式0到模式16编号。观察17种预测模式的预测公式,可以看出,模式0到模式14的预测公式都只有加法运算(其中与常数的乘法运算可以用加法和移位实现),模式15和模式16都是利用线形plane函数进行预测,其预测公式包含加法、减法和乘法运算。所以,我们设计的帧内预测器,将模式0到模式14放在一起采用数字计算强度缩减的方法进行化简,将模式15和模式16放在一起采用数字计算强度缩减的方法进行化简。图5给出了帧内预测器的整体结构框图,它一共包含4个主要的模块adders模块用来计算每个4×4大小块的16个像素点的模式0到模式14的预测值;plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块,计算16个像素点的模式15或模式16的预测值;select模块根据不同的预测模式以及参考像素是否存在的信号,从模式0到模式16的预测值中,选择一个模式的预测值作为16个预测像素点的值输出;control模块是控制单元,为plane模块产生块位置信号。
adders模块adders模块采用数字计算强度缩减的方法减少加法运算的次数,对于每个4×4大小块的16个像素点的模式0到模式14的所有预测公式中相同的加法运算,将计算结果共享,消除计算的冗余。最终得到的adders模块的结构框图如图6所示,其中有22个8位加法器,21个9位加法器,8个10位加法器,2个11位加法器和1个12位加法器,一共55个加法器。图6所示的adders模块的输入数据是参考像素h1~h17和v2~v17,输出数据是每个4×4大小块的16个像素点的模式0到模式14的所有预测值。为了减小关键路径的长度,在10bit加法器组与11bit加法器组之间插入一组寄存器。按照数字计算强度缩减的方法设计的加法器可以逐级增加加法器位宽,而按照可重构的设计方法,运算单元中的加法器都需要按照最大可能的数据位宽,设置为16位的加法器。
plane模块plane模块采用数字计算强度缩减的方法去除了两方面的冗余一方面,16×16大小的亮度块的预测模式15和8×8大小的色度块的预测模式16都是利用线形plane函数进行预测,预测过程完全相似,只是块的大小不同,所以模式16的计算可以全部并入模式15中;另一方面,模式15和模式16对每个像素点的预测值的计算包含2个乘法运算,可以将16个像素点的预测值的计算中的乘法运算拆分为加法运算,并且去除其中的冗余,从而消除了乘法运算。最终得到的plane模块的结构框图如图7所示,其中的常数计算模块根据模式15和模式16的预测公式计算参数a、b、c,预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。
select模块select模块的结构如图8所示。根据预测模式以及参考像素是否存在的信号,通过多路选择器从adders模块和plane模块计算得到的模式0到模式16的预测值中,为每个4×4大小块的16个像素点选择一个模式的预测值输出,并对输出的预测值完成四舍五入和移位操作。
control模块本发明提出的高并行度的结构可以同时计算得到一个4×4大小块的16个像素点的17个模式的预测值,所以control模块需要完成的控制就很简单,只需要对16×16大小的亮度块或者8×8大小的色度块内不同位置的4×4大小块产生不同的块位置(xb,yb),具体的产生方法如表4和表5所示。而采用可重构的设计方法,每个运算单元都需要有一个控制模块负责该运算单元内的数据流的调度,运算单元之间还有一个总的控制模块负责各个运算单元的输入数据的选择和各个运算单元之间的数据流的调度,随着并行度的提高,控制逻辑也会变得复杂。
表4 16×16亮度块的块位置产生方法

表5 8×8色度块的块位置产生方法

本发明的特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中
8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系水平向右为x轴的正方向,竖直向下为y轴的正反向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中预测模式15是16×16大小的亮度块的预测模式,表示为pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,a=16×(p[-1,15]+p[15,-1]),b=(5×H+32)/64,c=(5×V+32)/64,H=Σx=07(x+1)×(p[8+x,-1]-p[6-x,-1]),]]>V=Σy=07(y+1)×(p[-1,8+y]-p[-1,6-y]),]]>其中Clip1函数的意义是 其中(x,y)是像素点的坐标,下同;
预测模式16是8×8大小的色度块的预测模式,表示为pred8×8C[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,a=16×(p[-1,7]+p[7,-1]),b=(17×H+16)/32,c=(17×V+16)/32,H=Σx=03(x+1)×(p[4+x,-1]-p[2-x,-1]),]]>V=Σy=03(y+1)×(p[-1,4+y]-p[-1,2-y]);]]>预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,dx=4×xb,dy=4×yb,用于8×8大小的色度块,所述预测值计算模块共28用个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值参考像素值,取相应的参考像素值作为输出值;数字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;
控制模块control,输入信号指示当前要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
本设计硬件上用FGPA实现,用Matlab进行行为级建模,用Verilog进行RTL级编码和功能仿真。基于SMIC 0.18μm最坏的工艺,综合后的电路的关键路径最大时延为10 ns,即时钟频率达到100MHz,电路规模不超过1.4万门。


图1 坐标定义说明图2 4×4亮度块的9种预测模式图3 16×16亮度块的4种预测模式图4 8×8色度块的4种预测模式图5 帧内预测器的整体框6 adders模块的结构框7 plane模块的结构框8 select模块的结构框图实施方式这里具体说明采用数字计算强度缩减算法,去除计算冗余后得到adders模块和plane模块的具体实施过程,以及select模块的实施方式。
图6所示的adders模块由加法器组构成,通过观察4×4大小块的16个像素点的模式0到模式14的预测公式,对其中相同的加法运算,只计算一次并将结果共享。为了减少关键路径的长度,在图6的10位加法器组和11位加法器组之间插入了一组寄存器。图6中的各个加法器组所完成的加法运算如下所示8bit加法器组

9bit加法器组

10bit加法器组

11bit加法器组

12bit加法器组

图7所示的plane模块由常数计算模块和预测值计算模块组成。
常数计算模块根据模式15和模式16的预测公式,计算参数a、b、c。预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。下面说明预测值计算模块采用数字计算强度缩减算法的具体实施过程。
根据模式15和模式16的预测公式可以知道,对16×16大小的亮度块的每个像素点完成(1)式的计算,或者对8×8大小的色度块的每个像素点完成(2)式的计算,就可以得到像素点的预测值。其中的[x,y]是待预测像素点在坐标系中的位置坐标。
a+b×(x-7)+c×(y-7)(1)
a+b×(x-3)+c×(y-3)(2)通过引入一对系数(dx,dy)和一对坐标(xp,yp),可以将(1)式和(2)式的计算统一用(3)式实现。其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标。
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)](3)令C=(a+b×dx+c×dy),对于每个4×4大小块的16个像素点,C是一个公共子表达式,可以只计算一次将结果共享。对于16×16大小的亮度块,(dx,dy)按照(4)式得到,对于8×8大小的色度块,(dx,dy)按照(5)式得到。(4)式和(5)式中的乘法运算都可以用移位操作实现,并且得到的dx和dy都是4的倍数,所以C中的乘法运算也可以用移位操作实现,于是完成C的计算一共需要2个加法器。
dx=4×(xb-1),dy=4×(yb-1)(4)dx=4×xb,dy=4×yb(5)令S=[b×(3-xp)+c×(3-yp)],对于每个4×4大小块的16个像素点,由于其位置(xp,yp)不同,所以需要分别计算各自的S值。将16个像素点的位置坐标(xp,yp)代入S的计算式,并将乘法运算用加法运算实现,得到表6所示的结果,其中b+c是一个可以共享的子表达式。统计表6中16个像素点的S值的计算,可以看到一共需要10个加法器。所以,通过数字计算强度缩减的方法,完成16个像素点的S值的计算,只需要用10个加法器,而省去了乘法运算。
表6 16个像素点的S值的计算

另外,用(3)式完成16个像素点的预测值计算,完成还需要16个减法器。
综上,对每个4×4大小块的16个像素点,完成(3)式的计算,一共需要2+10+16=28个加法器(包含减法器)。为了减少关键路径的长度,可以在图7的常数计算模块和预测值计算模块之间插入一组寄存器。
图8所示的select模块根据预测模式和参考像素是否存在的信号,通过一个多路选择器选择相应预测模式的预测值输出,具体的选择方法如表7所示。其中“输出的预测值”一列中有可能出现四种数据一是参考像素值,表示取相应的参考像素值作为预测值;二是数字128,表示预测值就是128;三是加法器的编号,表示取相应的加法器的输出作为预测值;四是plane模块的输出,表示取plane模块的输出作为预测值。
表7 输出的预测值的选择方法

从实现结果来看,采用数字计算强度缩减的方法进行设计,与可重构的方法相比,有以下三个优点①可重构的方法得到的设计需要复杂的控制逻辑,数字计算强度缩减的方法使得控制逻辑很简单。②采用数字计算强度缩减的方法设计可以逐级增大加法器的位宽,而可重构的方法需要按照最大可能的位宽设计加法器。③两种设计方法在达到相同的计算并行度时,需要的硬件资源数目相当,但是考虑到可重构的方法需要按照最大可能的位宽设计加法器,并且控制逻辑也相对复杂,所以数字计算强度缩减的方法得到的电路面积更小。
权利要求
1.高并行度的帧内预测器,其特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系水平向右为x轴的正方向,竖直向下为y轴的正反向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中预测模式15是16×16大小的亮度块的预测模式,表示为pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,a=16×(p[-1,15]+p[15,-1]),b=(5×H+32)/64,c=(5×V+32)/64,H=Σx=07(x+1)×(p[8+x,-1]-p[6-x,-1]),]]>V=Σy=07(y+1)×(p[-1,8+y]-p[-1,6-y]),]]>其中Clip1函数的意义是 其中(x,y)是像素点的坐标,下同;预测模式16是8×8大小的色度块的预测模式,表示为pred8×8c[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,a=16×(p[-1,7]+p[7,-1]),b=(17×H+16)/32,c=(17×V+16)/32,H=Σx=03(x+1)×(p[4+x,-1]-p[2-x,-1]),]]>V=Σy=03(y+1)×(p[-1,4+y]-p[-1,2-y]);]]>预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,dx=4×xb,dy=4×yb,用于8×8大小的色度块,所述预测值计算模块共28用个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值参考像素值,取相应的参考像素值作为输出值;数字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;控制模块control,输入信号指示当前要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
全文摘要
本发明属于视频编解码的集成电路设计领域,其特征在于对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期处理16个像素点的预测值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。
文档编号H04N7/26GK1937774SQ200610113868
公开日2007年3月28日 申请日期2006年10月20日 优先权日2006年10月20日
发明者李树国, 杨晨 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1