整型变换电路和整型变换方法

文档序号:7629049阅读:271来源:国知局
专利名称:整型变换电路和整型变换方法
技术领域
本发明涉及信号处理中的视频和图像编解码,特别涉及在编码解码过程中不用对数据进行转置处理的整型变换电路和整型变换方法。
背景技术
本发明中所说的变换是一种信号处理运算,其输入可以是一个二维矩阵,变换可以通过行变换和列变换实现。列变换为关于输入二维矩阵各个列数据的线性变换,行变换为关于输入二维矩阵各个行数据的线性变换,统称为行、列变换。
H.264/AVC是最新的视频编码国际标准。在2003年完成的H.264标准,采用4×4的整型变换,可以有效的消除块效应。与传统的DCT变换相比,因为变换矩阵的系数是整数,精度不会损失,可以避免编码器和解码器不匹配。
2004年7月,将FRExt(Fidelity Range Extensions)加入H.264标准。在FRExt中,采用8×8和4×4两种整型变换,对于帧间预测的宏块,如果有小于8×8的块分割,则使用4×4的整型变换。如果没有小于8×8的块分割,由语法元素transform_size_flag来标识是使用4×4变换还是使用8×8变换。如果transform_size_flag等于0,则使用4×4整型变换,如果transform_size_flag为1则使用8×8的整型变换。通过使用可变块大小的整型变换,对于高清序列平均有10%的比特减少。
H.264/AVC中整型变换的计算过程如下。
H.264/AVC中8×8变换系数矩阵为
88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-12310-10-312-64-88-4-48-843-610-1212-106-3·18.]]>二维整型变换表示为Z=CXCT,其中C为N×N变换矩阵(N=4或8),X和Z分别为输入N×N数据矩阵和输出N×N数据矩阵。对于正变换的整型变换Z=CXCT,第一步计算Y=CX,第二步计算Z=YCT。对于逆变换的整型变换Z=CTXC,第一步计算Y=CTX,第二步计算Z=YC。对于正、逆变换的第一步计算,由矩阵C或C的转置矩阵CT的行向量和X的列向量点乘,称为“行变换”;对于正、逆变换的第二步计算,由矩阵C或C的转置矩阵CT的列向量和Y的行向量点乘,称为“列变换”。由于C的行向量和C的的转置矩阵CT列向量等价,因此第一步计算和第二步计算的差别仅在于“行变换”对X列向量进行而“列变换”对Y的行向量进行。根据上述定义完成行变换的硬件结构为行变换模块,完成列变换的硬件结构为列变换模块。如果在X和Y之间插入具有矩阵转置功能的转置部件,那么列变换就可以和行变换就可以共用同一个行变换模块。
对于H.264/AVC中8×8整型变换正变换的一维变换,可以采用如下的快速蝶形运算来完成,其中in为输入矢量,out为变换后输出矢量。
a
=in
+in[7];a[1]=in[1]+in[6];a[2]=in[2]+in[5];a[3]=in[3]+in[4];b
=a
+a[3];b[1]=a[1]+a[2];
b[2]=a
-a[3];b[3]=a[1]-a[2];a[4]=in
-in[7];a[5]=in[1]-in[6];a[6]=in[2]-in[5];a[7]=in[3]-in[4];b[4]=a[5]+a[6]+((a[4]>>1)+a[4]);b[5]=a[4]-a[7]-((a[6]>>1)+a[6]);b[6]=a[4]+a[7]-((a[5]>>1)+a[5]);b[7]=a[5]-a[6]+((a[7]>>1)+a[7]);out
=b
+b[1];out[2]=b[2]+(b[3]>>1);out[4]=b
-b[1];out[6]=(b[2]>>1)-b[3];out[1]=b[4]+(b[7]>>2);out[3]=b[5]+(b[6]>>2);out[5]=b[6]-(b[5]>>2);out[7]=-b[7]+(b[4]>>2);对于H.264/AVC中整型变换逆变换的一维变换,可以采用如下的快速蝶形运算来完成,a
=in
+in[4];a[4]=in
-in[4];a[2]=(in[2]>>1)-in[6];a[6]=in[2]+(in[6]>>1);b
=a
+a[6];
b[2]=a[4]+a[2];b[4]=a[4]-a[2];b[6]=a
-a[6];a[1]=-in[3]+in[5]-in[7]-(in[7]>>1);a[3]=in[1]+in[7]-in[3]-(in[3]>>1);a[5]=-in[1]+in[7]+in[5]+(in[5]>>1);a[7]=in[3]+in[5]+in[1]+(in[1]>>1);b[1]=a[1]+(a[7]>>2);b[7]=-(a[1]>>2)+a[7];b[3]=a[3]+(a[5]>>2);b[5]=(a[3]>>2)-a[5];out
=b
+b[7];out[1]=b[2]+b[5];out[2]=b[4]+b[3];out[3]=b[6]+b[1];out[4]=b[6]-b[1];out[5]=b[4]-b[3];out[6]=b[2]-b[5];out[7]=b
-b[7];AVS是中国制定的先进音视频标准,2003年12月完成了标准草案的第一版。采用的也是8×8整型变换。
在AVS标准中,对输入的8×8数据CoeffMatrix进行整型变换,其变换步骤包括以下几步第一步,对变换系数矩阵进行如下水平反变换,H’=CoeffMarix×T8T其中,T8是8×8反变换矩阵,T8T是T8的转置矩阵,H’表示水平反变换后的中间结果。
T8=8101098642894-2-8-10-10-686-4-10-8210982-10-689-4-108-2-1068-9-4108-6-410-8-210-98-942-810-1068-1010-98-64-2]]>第二步,对矩阵H’中的每个系数加4再右移3位,得到矩阵H”。
第三步,对矩阵H”进行如下垂直反变换H=T8×H”,其中,H表示反变换后的8×8矩阵。从符合标准的比特流中解码得到的H矩阵元素取值范围应为-215..215-1。
第四步,变换后的残差样值矩阵ResidueMatrix的元素rij计算如下rij=[hij+26]>>7 i,j=0-7(正整数),其中hij是H矩阵的元素。
图1示出了一种4×4整型变换的电路结构,其中通过采用移位寄存器阵列来完成转置操作。所述转置电路由移位寄存器单元阵列来实现,每个转置寄存器单元包含一个三输入的复用器(MUX)和一个寄存器(REG)。复用器控制转置移位寄存器阵列的数据流向。复用器的第一个输入是自反馈输入,第二个输入来自上方的寄存器单元,第三个输入来自右边的寄存器单元。通过一维变换单元完成一维变换。OE为输出使能信号,DE为数据使能信号。移位寄存器阵列的数据流方向,每隔四个时钟周期变换一次,完成行/列数据并行输出的转换。然而,所述转置部分用移位寄存器阵列来实现,硬件的复杂度较高。

发明内容
为了克服现有技术中的不足,本发明设计为基于包括多个双口二维存储器单元的并行二维存储器来实现无转置的整型变换。本发明提出一种包括多个双口二维存储器单元的并行二维存储器、一种使用所述包括多个双口二维存储器单元的并行二维存储器的整型变换电路、和一种不需要转置的整型变换方法。
根据本发明的一个方案,提供一种并行二维存储器,其包括多个双口二维存储器单元,所述多个双口二维存储器单元存储有在将原始矩阵数据重新排列后并行输入的新矩阵的行/列数据,并且并行输出新矩阵的行/列数据。根据本发明的并行二维存储器,还包括输入地址调整单元,当输入矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输入的行的地址或要输入的列的地址;输入数据调整单元,根据输入的行数或列数,对将要输入到多个双口二维存储器单元中的数据进行调整;输出地址调整单元,当输出矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输出的行的地址或要输出的列的地址;以及输出数据调整单元,根据输出的行数或列数,对将要从多个双口二维存储器单元中输出的数据进行调整。
根据本发明的并行二维存储器,其中,对原始矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的双口二维存储器单元,所述映射规则如下式x′=(x+y%N)%N,y′=y,其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
根据本发明的另一个方案,提供一种整型变换电路,包括包括多个双口二维存储器单元的并行二维存储器,所述多个双口二维存储器单元存储有在将原始矩阵数据重新排列后并行输入的新矩阵的行/列数据,并且并行输出新矩阵的行/列数据;变换运算单元,包括一个或多个变换和/或运算单元,根据来自于控制单元的控制信号,对从所述并行二维存储器中并行输出的重新排列后的行/列数据进行行变换和列变换;以及控制单元,根据编解码信息,为所述并行二维存储器提供地址信号和读写控制信号,为所述变换运算单元提供控制信号。
根据本发明的整型变换电路,其中,所述并行二维存储器还包括输入地址调整单元,当输入矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输入的行的地址或要输入的列的地址;输入数据调整单元,根据输入的行数或列数,对将要输入到多个双口二维存储器单元中的数据进行调整;输出地址调整单元,当输出矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输出的行的地址或要输出的列的地址;以及输出数据调整单元,根据输出的行数或列数,对将要从多个双口二维存储器单元中输出的数据进行调整。
根据本发明的整型变换电路,其中,对原始矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的双口二维存储器单元,所述映射规则如下式x ′=(x+y%N)%N,y′=y,其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
根据本发明的另一个方案,提供一种整型变换方法,包括以下步骤a)将原始的矩阵数据重新排列,并行输入,并进行二维存储;b)对二维存储的行数据或列数据进行行变换或列变换;以及c)对二维存储的列数据或行数据进行列变换或行变换。根据本发明的整型变换方法,其中,步骤a)中,对原始的矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的存储位置,所述映射规则如下式x′=(x+y%N)%N,y′=y,其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
根据本发明的整型变换方法,其中,步骤b)还包括b1)对二维存储的行数据或列数据进行调整,并行输出调整后的行数据或列数据;b2)对并行输出的调整后的行数据或列数据进行行变换;以及b3)对行变换后的行数据或列数据进行调整,存储调整后的行数据或列数据;并且,步骤c)还包括c1)对二维存储的列数据或行数据进行调整,并行输出调整后的列数据或行数据;c2)对并行输出的调整后的列数据或行数据进行行变换;以及c3)对行变换后的列数据或行数据进行调整,存储调整后的列数据或行数据。


图1示出了已有技术中的一种4×4整型变换的电路结构。
图2示出了根据本发明的包括多个双口二维存储器单元的并行二维存储器结构框图。
图3示出了根据本发明的无转置的行/列分离的整型变换电路结构框图。
图4示出了在根据本发明实施例的并行二维存储器中排列数据时使用的直接映射规则。
图5示出了在根据本发明实施例在并行二维存储器中重新排列数据时使用的线性移位映射规则。
图6示出了根据本发明实施例的的输入8×8数据和扫描表S1。
图7示出了将该8×8输入数据重排列后得到的中间的扫描顺序的扫描表S2。
图8示出了根据本发明实施例的输入数据在二维并行存储器中的排列方式及新的扫描表。
图9示出了根据本发明实施例的输入8×8残差数据。
图10示出了根据本发明实施例的正变换输入数据在根据本发明的并行二维存储器中的最终的重新排列方式。
图11示出了根据本发明的整型变换方法的流程图。
具体实施例方式
整型变换的硬件复杂度主要体现在两个方面,一是根据变换矩阵进行行(列)变换的计算,二是数据的访问模式。
对于第一点,整型变换变换矩阵的系数都是整数,基于行列分离的一维变换都可以通过移位和加法实现。在本发明中一维变换可以设计成在一个时钟周期内完成或分成几级流水阶段完成,以提高数据吞吐量。
对于第二点,基于行列分离的整型变换,在行变换时,需要并行输出列数据,在列变换时,需要并行输出行数据。在已有的技术方案中,通过在行变换和列变换中插入一个转置电路来完成行并行数据输出到列并行数据输出的转换。
图2示出了根据本发明的包括多个双口二维存储器单元的并行二维存储器结构框图。所述“双口”指的是包含输入口和输出口,能够同时输入和输出数据,所述“并行”指的是行/列数据可并行输入和输出,所述“二维”指的是并行二维存储器通过所述双口二维存储器单元以二维方式存储数据。
如图2所示的并行二维存储器作为外部二维存储器,其包含8个双口二维存储器单元(M0,M1,…,M7),通过输入/输出地址调整模块和输入/输出数据调整模块,实现行/列数据的并行输入输出。其中,当输入矩阵的行数据或列数据时,输入地址调整单元将每个双口二维存储器单元地址调整为要输入的行的地址或要输入的列的地址;输入数据调整单元根据输入的行数或列数对将要输入到多个双口二维存储器单元中的数据进行调整;当输出矩阵的行数据或列数据时,输出地址调整单元将每个双口二维存储器单元地址调整为要输出的行的地址或要输出的列的地址;以及输出数据调整单元根据输出的行数或列数对将要从多个双口二维存储器单元中输出的数据进行调整。输入数据调整单元和输出数据调整单元为选择器,对输入输出数据进行位选择调整。将输入N×N(N=8或4等)数据矩阵在包括多个双口二维存储器单元的并行二维存储器中重新排列,使任意一行或一列数据分布在不同的二维存储器单元(M0,M1,…,M7)中,使行/列数据均能并行输入(输出)。在硬件实现上,将数据重排列方式与扫描表组合实现,不会引入额外的硬件开销。
下面参照图8以对Xee行列数据的输入输出为例来说明地址调整单元和数据调整单元的操作过程
(1)行数据的输入/输出如图8所示,当对行数据输入/输出时,每个存储器单元地址为要输入/输出的行的地址,数据调整单元根据输入输出的行数,对从多个存储器单元中输入/输出的数据调整。
(2)列数据的输入/输出如图8所示,当对列数据输入/输出时,每个存储器单元的地址为要输入/输出的列的地址,例如,当输出第0列时,四个双口二维存储器单元的输入/输出地址分别为0,1,2,3。
当然,本领域普通技术人员能够理解,使用8个双口二维存储器单元仅仅是本发明的优选实施例,可根据需要使用4个双口二维存储器单元或其它数量的双口二维存储器单元来构成本发明的并行二维存储器。而且,所述并行二维存储器可以使用随机存取存储器(RAM)等各种存储器来实现。
图3示出了根据本发明的整型变换电路结构框图。所述整型变换电路包括包括多个双口二维存储器单元的并行二维存储器,其根据来自控制单元的地址信号和读写控制信号,存储输入的行/列数据(宏块数据),将输入的行/列数据重新排列,并且并行输入输出重新排列后的行/列数据;变换运算单元,包括一个或多个用于变换和/或运算单元,根据来自于控制单元的控制信号,对从所述并行二维存储器中并行输出的重新排列后的行/列数据进行行变换和列变换;以及控制单元,根据编解码信息,为所述并行二维存储器提供地址信号和读写控制信号,为所述变换运算单元提供控制信号。其中,所述变换运算单元包括一维Ce变换模块和一维Co变换模块,对并行输出的行/列数据进行一维变换;以及蝶形运算模块,在控制单元的控制下,对经由所述两个一维变换模块一维变换过的数据或从所述并行二维存储器中输出的重新排列后的行/列数据进行蝶形运算。例如,所述蝶形运算模块可以执行对于H.264/AVC中8×8进行的整型变换中的快速蝶形运算。当然,本领域技术人员将会理解,所述变换运算单元还可以包括其它变换和/或运算模块,例如滤波运算模块等。
在本发明中,能同时支持H.264/AVC和AVS标准中的整型变换。在下面的叙述中,将以H.264/AVC标准中的8×8整型变换为例,来进行详细描述。
下面参照图11来说明本发明的整型变换方法。在步骤S10,将输入的宏块数据按照一定的映射方式重新排列,并且将重新排列的数据并行输入以进行二维存储。在步骤S20,进行与行变换(列变换)相关的操作,其中,在步骤S201,将二维存储的数据按行(按列)并行输出,在步骤S202,对并行输出的数据进行行变换(列变换),并且在步骤S203,并行存储行变换(列变换)之后的的数据。在步骤S30,进行与列变换(行变换)相关的操作,其中,在步骤S301,将二维存储的数据按列(按行)并行输出,在步骤S302,对并行输出的数据进行列变换(行变换),并且在步骤S303,并行存储列变换(行变换)之后的的数据。这样,就完成了一个完整的整型变换过程。
下面将分别针对8×8整型变换的正变换和8×8整型变换的逆变换来对图11中示出的整型变换方法的步骤进行详细叙述。
8×8整型变换逆变换的实现包括以下几个步骤步骤一8×8输入数据在二维存储器中重新排列为了实现8×8输入矩阵行列数据的并行输入输出,对输入的8×8数据按照一定的映射方式在并行二维存储器中的存储进行重新排列。该映射规则使每一行数据或每一列数据分布在不同的存储器单元,从而实现行数据和列数据的并行输入输出。
另外,在标准中定义了扫描表,扫描表用于确定了输入的一维数据(64个输入的一维数据)对应到二维存储器中的位置。本发明的重新排列方式可以和标准中规定的任何一张扫描表组合,形成新的组合扫描表,完成将一维数据到二维数据的存储。
对于4×4输入数据,其重新排列的地址映射规则可以如下x′=(x+y%4)%4 (1)y′=y其中x(x=0,1,2,3),y(y=0,1,2,3)分别为原4×4输入数据的行地址和列地址,x′(x=0,1,2,3),y′(y=0,1,2,3)分别为映射后4×4数据的行地址和列地址。
该地址映射规则可以扩展到N×N矩阵。其对应的地址映射规则公式可以描述为x′=(x+y%N)%N (2)y′=yx,y以及x′,y′的定义与前面的定义一样,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为原N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址。根据该规则映射后,将行数据或列数据存储在不同的存储器中,从而实现行数据和列数据的并行的输入输出。
根据该规则排列,能够并行的输入输出行/列的数据。
经过该映射后的各行可任意交换,仍然满足每一行或每一列的数据存放在不同的双口二维存储器单元。
下面以4×4为例,给出4×4数据的重新排列方式。假设每个4×4矩阵如图4所示。
按照式(1)的线性移位映射规则,将每一行或每一列数据存放在不同的存储器单元,以充分利用二维存储器的并行空间,如图5所示。
8×8输入数据(如图6),图中的数字为一维64个数据的顺序,即Zigzag扫描顺序。8×8输入数据也可以是任意其他一张扫描表定义的扫描顺序。将其偶数行偶数列,偶数行奇数列,奇数行偶数列和奇数行奇数列的数据分别取出,可以构成4个4×4数据矩阵,分别为Xee,Xeo,Xoe,Xoo,如图7所示。每个4×4数据矩阵可以按照4×4数据矩阵的重新排列方式重新排列,从而构成8×8数据矩阵的重新排列方式,如图8所示。
根据图8所示的组合排列方式将输入数据存储在并行二维存储器中。
将会理解,可以是上述一个已知的扫描表与8×8数据的重新排列方式结合来得到新的组合扫描顺序,也可以是任何一个扫描表和8×8数据在并行二维存储器中的重新排列方式相结合得到新的组合扫描顺序。将新的组合扫描顺序用硬件电路实现,输入数据在二维存储器中的重新排列,不会引入额外的硬件开销。
步骤二行变换H.264/AVC中8×8整型变换的变换系数矩阵如下所示88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-12310-10-312-64-88-4-48-843-610-1212-106-3·18]]>根据变换系数矩阵的对称性质,可以将8×8变换系数矩阵分解为Ce和Co两个4×4变换系数矩阵。
Ce=888884-4-88-8-884-88-4---(3)]]>Co=12106310-3-12-66-123103-610-12---(4)]]>在变换运算单元中的一维Ce变换模块是根据Ce变换系数矩阵定义的变换模块,一维Co变换模块是Co变换系数矩阵定义的变换模块。
通过将8×8变换系数矩阵分解为两个4×4变换系数矩阵,一维的8点变换可以由两个一维4点变换来完成。在整型变换中,变换系数都是整数,每个一维四点变换可以用移位和加法来实现,可以在一个时钟周期内完成或分成几个流水阶段完成,以提高吞吐量。
整型变换逆变换中,行变换的计算由下式给出Y=YLUYRUYLDYRD=XEECe+XEOCoXEECe-XEOCoXOECe+XOOCoXOECe-XOOCo]]>其中,Y为行变换后的8×8数据矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵。
为了使Y矩阵的列数据能并行输出,在将经变换运算后的数据存入并行二维存储器中,经并行二维存储器中的输入数据调整单元,将Y矩阵按如下方式存储Y′=YLUYLDYRUYRU]]>其中Y′为行变换后,在并行二维存储器中存放的数据矩阵。
这样对于8×8整型逆变换的行变换,包括如下的两个变换对XEECeand XEOCoXOECeand XOOCo每个变换对可以并行计算。
Ce变换系数矩阵对应的变换由图1中变换运算单元的一维Ce变换模块完成,Co变换系数矩阵对应的变换由变换运算单元的一维Co变换模块完成。由蝶形运算单元完成XEECe和XEOCo以及XOECe和XOOCo的蝶形加减运算。
行变换的过程,就是从并行二维存储器中并行的取出行数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元,由一维Ce变换模块和一维Co变换模块,以及蝶形运算单元完成行变换,行变换后的数据,经并行二维存储器中的输入数据调整单元,存储到并行二维存储器中。
步骤三列变换列变换的计算由下式给出Z′=CeTYLU+CoYLDCeTYRU+CoYRDCeTYLU-CoYLDCeTYRU-CoYRD]]>其中Ce,Co的定义如前面式(3)和式(4)所示,CeT为Ce的转置矩阵。Y为行变换后的8×8数据矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵。
这样对于8×8整型逆变换的列变换,包括如下的两个变换对
CeTYLUand CoYLDCeTYRUand CoYRD两个变换对可以并行计算。
最终的逆变换的结果由下式给出Z=RZ′R其中R=I400P,]]>其中I4为4×4单位矩阵。P=0001001001001000]]>由Z′到Z,由输入数据调整单元完成。
列变换的过程,就是从并行二维存储器中并行的取出列数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元,由一维Ce变换模块和一维Co变换模块,以及蝶形运算单元完成列变换,列变换后的数据,经并行二维存储器中的输入数据调整单元,存储到并行二维存储器中。从而完成8×8整型变换逆变换。
8×8整型变换正变换的实现和8×8整型变换逆变换的实现步骤相似,8×8整型变换正变换的实现包括以下几个步骤步骤一8×8输入数据在二维存储器中重新排列与整型变换逆变换类似,为了实现8×8输入矩阵行列数据的并行输入输出,对输入的8×8数据按照一定的映射方式在并行二维存储器中的存储进行重新排列。该映射规则使每一行数据或每一列数据分布在不同的存储器单元,从而实现行数据和列数据的并行输入输出。
待变换的8×8数据矩阵(如图9所示),将该8×8数据矩阵划分成XLU,XRU,XLD,XRD四个4×4矩阵,其中XLU为左上角4×4矩阵,XRU为右上角4×4矩阵,XLD为左下角4×4矩阵,XRD为右下角4×4矩阵。
每个四个4×4矩阵可以按照4×4数据矩阵的重新排列方式重新排列,从而构成正变换8×8数据矩阵的重新排列方式。如图10所示。
步骤二行变换整型变换正变换中,行变换的计算由下式给出Y=YLUYRUYLDYRD=(XLU+XRUP)CeT(XLU-XRUP)Co(XLD+XRDP)CeT(XLD-XRDP)Co]]>其中P=0001001001001000,]]>Ce,Co的定义如前面式(3)和式(4)所示,CeT为Ce的转置矩阵。Y为行变换后的8×8数据矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵。
为了使Y矩阵的列数据能并行输出,在将经变换运算后的数据存入并行二维存储器中,经并行二维存储器中的输入数据调整单元,将Y矩阵按如下方式存储Y′=YLUYLDYRUYRU]]>其中Y′为行变换后,在并行二维存储器中存放的数据矩阵。
这样对于8×8整型正变换的行变换,包括如下的两个变换对(XLU+XRUP)CeTand (XLU-XRUP)Co(XLD+XRDP)CeTand (XLD-XRDP)Co两个变换对可以并行计算。
由蝶形运算单元完成XLU和XRUP以及XLD和XRDP的蝶形加减运算。Ce变换系数矩阵对应的变换由图1中变换运算单元的一维Ce变换模块完成,Co变换系数矩阵对应的变换由变换运算单元的一维Co变换模块完成。
行变换的过程,就是从并行二维存储器中并行的取出行数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元,由蝶形运算单元,以及一维Ce变换模块和一维Co变换模块完成行变换,行变换后的数据,经并行二维存储器中的输入数据调整单元,存储到并行二维存储器中。
步骤三列变换列变换的计算由下式给出Z′=Ce(YLU+PYLD)Ce(YRU+PYRD)Co(YLU-PYLD)Co(YRU-PYRD)]]>其中Ce,Co的定义如前面式(3)和式(4)所示。Y为行变换后的8×8数据矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵。
这样对于8×8整型正变换的列变换,包括如下的两个变换对Ce(YLU+PYLD) and Co(YLU-PYLD)Ce(YRU+PYRD) and Co(YRU-PYRD)两个变换对可以并行计算。
最终的逆变换的结果由下式给出Z=QTZ′Q其中,Q=1000000000100000000010000000001001000000000100000000010000000001,]]>QT为Q矩阵的转置矩阵。
由Z′到Z,由输入数据调整单元完成。
列变换的过程,就是从并行二维存储器中并行的取出列数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元,由蝶形运算单元,以及一维Ce变换模块和一维Co变换模块完成列变换,列变换后的数据,经并行二维存储器中的输入数据调整单元,存储到并行二维存储器中。从而完成8×8整型变换逆变换。
下面以逆变换为例,来说明实施例中整型变换的过程。
(1)对应于发明方法中8×8整型变换逆变换的步骤一,根据图8所示的新的组合扫描表,将8×8数据经总线输入包括多个双口存储器单元的并行二维存储器;(2)行变换对应于本发明整型变换方法中的步骤S20,从双口,多存储器单元并行二维存储器中,按行并行取出Xee和Xeo的行数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元。在变换运算单元,由一维Ce变换和一维Co变换以及蝶形运算模块完成第一个4×4变换对的运算,经变换运算单元计算的数据,通过输入数据调整单元,存储到并行二维存储器中;按行并行取出Xoe和Xoo的行数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元。在变换运算单元,由一维Ce变换和一维Co变换以及蝶形运算模块完成第二个4×4变换对的运算,经变换运算单元计算的数据,通过输入数据调整单元,存储到并行二维存储器中。
(3)列变换对应于发明方法中的步骤S30,从双口,多存储器单元并行二维存储器中,按列并行取出YLU和YLD的列数据,经并行二维存储器中的输出数据调整单元,输出到变换运算单元。在变换运算单元,由蝶形运算模块和一维Ce变换模块,一维Co变换模块完成列变换第一个4×4变换对的运算,经变换运算单元计算的数据,通过输入数据调整单元,存储到并行二维存储器中在运算单元,完成列变换的第一个4×4变换对的运算;按列并行取出YRU和YRD的列数据,同样经并行二维存储器中的输出数据调整单元,输出到变换运算单元。在变换运算单元,由蝶形运算模块和一维Ce变换模块,一维Co变换模块完成列变换第二个4×4变换对的运算,经变换运算单元计算的数据,通过输入数据调整单元,存储到并行二维存储器中在运算单元,完成列变换的第二个4×4变换对的运算。
本发明通过将输入的数据在双口、多存储器单元并行二维存储器中的重新排列,使待变换数据矩阵能实现行数据输入(输出)和列数据输入(输出),从而去除行列变换的转置电路,因此可大大减小硬件开销。而且,数据重新排列方式与扫描表组合实现,不会引入额外的硬件开销。变换运算单元中的多个变换和/或运算模块可以并行运算,具有高的数据吞吐量。
本发明的整型变换电路可以作为一个硬件加速单元,集成在视频编码、图像处理、视频通信的超大规模集成电路(VLSI)芯片之中,也可以实现为一个装置或几个装置的组合。
尽管已经参照优选实施例和附图对本发明进行了描述,但是,本领域技术人员能够理解,在不脱离本发明的精神和范围的情况下,可以对本发明的技术方案作出各种变型。例如,在本发明中,根据输入行/列(矩阵)数据大小的不同,并行二维存储器可以采用不同数量的双口二维存储器单元;根据所需的数据量和所执行功能的不同,所述变换运算单元可以包括不同的变换和运算模块;根据在并行二维存储器中所期望的数据的重新排列不同,可以进行用不同的扫描表来和行/列(矩阵)数据的重新排列方式相结合来得到不同的组合扫描顺序。
权利要求
1.一种应用于存储变换所需的输入数据,中间运算数据,和输出数据的并行二维存储器,其特征在于包括多个双口二维存储器单元,所述并行二维存储器在将原始矩阵数据重新排列后能够并行输入新矩阵的行/列数据,并且并行输出新矩阵的行/列数据。
2.如权利要求1所述的并行二维存储器,其特征在于还包括输入地址调整单元,当输入矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输入的行的地址或要输入的列的地址;输入数据调整单元,根据输入的行数或列数,对将要输入到多个双口二维存储器单元中的数据进行调整;输出地址调整单元,当输出矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输出的行的地址或要输出的列的地址;以及输出数据调整单元,根据输出的行数或列数,对将要从多个双口二维存储器单元中输出的数据进行调整。
3.如权利要求1或2所述的并行二维存储器,其特征在于,对原始矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的双口二维存储器单元,所述映射规则如下式x′=(x+y%N)%N,y′=y,其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
4.如权利要求3所述的双并行二维存储器,其特征在于包括8个双口二维存储器单元,并且所述原始的矩阵数据是8×8矩阵,并且所述公式中的N是4。
5.如权利要求1或2所述的并行二维存储器,其特征在于包括8个双口二维存储器单元,并且所述并行输入的行/列数据是8×8矩阵。
6.如权利要求2所述的并行二维存储器,其特征在于,所述输入数据调整单元和所述输出数据调整单元是选择器,用于分别对输入和输出数据进行位选择调整。
7.如权利要求4所述的并行二维存储器,其特征在于,所述原始矩阵数据按H.264/AVC中规定的zigzag扫描表或其他扫描表存储,重新排列方式可以与任意扫描表组合,形成新的扫描表,来输入或输出并行二维存储器中的数据。
8.一种并行二维存储器,其特征在于包括多个双口二维存储器单元,所述并行二维存储器在将原始矩阵数据重新排列后能够存储并行输入新矩阵的行/列数据,并且并行输出新矩阵的行/列数据;其中,原始矩阵数据按H.264/AVC中规定的zigzag扫描表或其他扫描表存储,重新排列方式可以与任意扫描表组合,形成新的扫描表,来输入或输出并行二维存储器中的数据。
9.一种整型变换电路,包括包括多个双口二维存储器单元的并行二维存储器,所述多个双口二维存储器单元存储有在将原始矩阵数据重新排列后并行输入的新矩阵的行/列数据,并且并行输出新矩阵的行/列数据;变换运算单元,包括一个或多个变换和/或运算单元,根据来自于控制单元的控制信号,对从所述并行二维存储器中并行输出的重新排列后的行/列数据进行行变换和列变换;以及控制单元,根据编解码信息,为所述并行二维存储器提供地址信号和读写控制信号,为所述变换运算单元提供控制信号。
10.如权利要求9所述的整型变换电路,其特征在于,所述并行二维存储器还包括输入地址调整单元,当输入矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输入的行的地址或要输入的列的地址;输入数据调整单元,根据输入的行数或列数,对将要输入到多个双口二维存储器单元中的数据进行调整;输出地址调整单元,当输出矩阵的行数据或列数据时,将每个双口二维存储器单元地址调整为要输出的行的地址或要输出的列的地址;以及输出数据调整单元,根据输出的行数或列数,对将要从多个双口二维存储器单元中输出的数据进行调整。
11.如权利要求9或10所述的整型变换电路,其特征在于,对原始矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的双口二维存储器单元,所述映射规则如下式x′=(x+y%N)%N,y′=y,其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
12.如权利要求11所述的双口并行二维存储器,其特征在于包括8个双口二维存储器单元,并且所述原始的矩阵数据是8×8矩阵,并且所述公式中的N是4。
13.如权利要求10所述的整型变换电路,其特征在于,所述输入数据调整单元和所述输出数据调整单元是选择器,用于分别对输入和输出数据进行位选择调整。
14.如权利要求9或10所述的整型变换电路,其特征在于,所述并行二维存储器包括8个双口二维存储器单元,并且所述并行输入的行/列数据是8×8矩阵。
15.如权利要求14所述的整型变换电路,其特征在于,所述变换运算单元包括根据Ce变换系数矩阵定义的一维Ce变换模块,在控制单元的控制下,进行一维Ce变换;根据Co变换系数矩阵定义的一维Co变换模块,在控制单元的控制下,进行一维Co变换;以及蝶形运算模块,在控制单元的控制下,对经由所述两个一维变换模块一维变换过的数据和从所述并行二维存储器中输出的重新排列后的行/列数据进行蝶形运算,其中,将根据H.264/AVC标准中的8×8整型变换的变换系数矩阵88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-12310-10-312-64-88-4-48-843-610-1212-106-3·1/8]]>根据变换系数矩阵的对称性质,分解为Ce和Co两个4×4变换系数矩阵Ce=888884-4-88-8-884-88-4,]]>Co=12106310-3-12-66-123103-610-12.]]>
16.如权利要求12所述的整型变换电路,其特征在于,所述原始矩阵数据按H.264/AVC中规定的zigzag扫描表或其他扫描表存储,重新排列方式可以与任意扫描表组合,形成新的扫描表,来输入或输出并行二维存储器中的数据。
17.如权利要求15所述的整型变换电路,其特征在于,所述一维变换在一个时钟周期内完成。
18.一种整型变换电路,包括包括多个双口二维存储器单元的并行二维存储器,所述并行二维存储器在将原始矩阵数据重新排列后能够存储并行输入的新矩阵的行/列数据,并且并行输出新矩阵的行/列数据;变换运算单元,包括一个或多个变换和/或运算单元,根据来自于控制单元的控制信号,对从所述并行二维存储器中并行输出的重新排列后的行/列数据进行行变换和列变换;以及控制单元,根据编解码信息,为所述并行二维存储器提供地址信号和读写控制信号,为所述变换运算单元提供控制信号,其中,原始矩阵数据按H.264/AVC中规定的zigzag扫描表或其他扫描表存储,重新排列方式可以与任意扫描表组合,形成新的扫描表,来输入或输出并行二维存储器中的数据。
19.一种整型变换方法,包括以下步骤a)将原始的矩阵数据重新排列,并行输入,并进行二维存储;b)对二维存储的行数据或列数据进行行变换或列变换;以及c)对二维存储的列数据或行数据进行列变换或行变换。
20,如权利要求19所述的整型变换方法,其特征在于,步骤a)中,对原始的矩阵数据按照一映射规则进行重新排列,该映射规则使每一行数据或每一列数据分布在不同的存储位置,所述映射规则如下式x′=(x+y%N)%Ny′=y其中,x和y分别为输入数据的行地址和列地址,其中N为自然数,x(x=0,1,…,N-1),y(y=0,1,…,N-1)分别为N×N输入数据的行地址和列地址,x′(x=0,1,…,N-1),y′(y=0,1,…,N-1)分别为映射后N×N数据的行地址和列地址,根据该规则映射后,将行数据或列数据按不同的地址存储,从而实现行数据和列数据的并行的输入和输出。
21,如权利要求19或20所述的整型变换方法,其特征在于,步骤b)还包括b1)对二维存储的行数据进行调整,并行输出调整后的行数据;b2)对并行输出的调整后的行数据进行行变换;以及b3)对行变换后的行数据进行调整,存储调整后的行数据;并且,步骤c)还包括c1)对二维存储的列数据进行调整,并行输出调整后的列数据;c2)对并行输出的调整后的列数据进行列变换;以及c3)对列变换后的列数据进行调整,存储调整后的列数据。
22,如权利要求20所述的整型变换方法,其特征在于,其中,原始的矩阵数据为8×8数据,并且N为4。
23.如权利要求21所述的整型变换方法,其特征在于,其中,原始的矩阵数据为8×8数据。
24.如权利要求21所述的整型变换方法,其特征在于,步骤b)和步骤c)中进行的行变换和列变换都是一维变换。
25.如权利要求24所述的整型变换方法,其特征在于,所述一维变换在一个时钟周期内完成或分成几级流水线完成。
26.如权利要求23所述的整型变换方法,其特征在于,在进行8×8整型变换正变换时,步骤b2)中,行变换的计算如下Y=YLUYRUYLDYRD=(XLU+XRUP)CeT(XLU-XRUP)Co(XLD+XRDP)CeT(XLD-XRDP)Co]]>其中,Y为行变换后的8×8数据矩阵,XLU表示在步骤b1)中并行输出的8×8数据中左上角4×4矩阵,XRU表示在步骤b1)中并行输出的8×8数据中右上角4×4矩阵,XLD表示在步骤b1)中并行输出的8×8数据中左下角4×4矩阵,XRD表示在步骤b1)中并行输出的8×8数据中右下角4×4矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵P=0001001001001000,]]>并且,其中,将根据H.264/AVC标准中的8×8整型变换的变换系数矩阵88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-12310-10-312-64-88-4-48-843-610-1212-106-3·1/8]]>根据变换系数矩阵的对称性质,分解为Ce和Co两个4×4变换系数矩阵Ce=888884-4-88-8-884-88-4,]]>Co=12106310-3-12-66-123103-610-12,]]>CeT为Ce的转置矩阵;以及步骤c2)中,列变换的计算如下Z′=Ce(YLU+PYLD)Ce(YRU+PYRD)Co(YLU-PYLD)Co(YRU-PYRD)]]>最终的正变换结果由下式给出Z=QTZ′Q,其中,Q=1000000000100000000010000000001001000000000100000000010000000001,]]>QT为Q矩阵的转置矩阵。
27.如权利要求26所述的整型变换方法,其特征在于,包括如下的两个变换对(XLU+XRUP)CeTand (XLU-XRUP)Co,(XLD+XRDP)CeTand (XLD-XRDP)Co其中,两个变换对可以并行计算,并且由蝶形运算单元完成XLU和XRUP以及XLD和XRDP的蝶形加减运算。
28.如权利要求23所述的整型变换方法,其特征在于,在进行8×8整型变换逆变换时,步骤b2)中,行变换的计算如下Y=YLUYRUYLDYRD=XEECe+XEOCoXEECe-XEOCoXOECe+XOOCoXOECe-XOOCo]]>其中,Y为行变换后的8×8数据矩阵,XEE表示在步骤b1)中并行输出的8×8数据中由偶数行偶数列构成的4×4矩阵,XEO表示在步骤b1)中并行输出的8×8数据中由偶数行奇数列构成的4×4矩阵,XOE表示在步骤b1)中并行输出的8×8数据中由奇数行偶数列构成的4×4矩阵,XOO表示在步骤b1)中并行输出的8×8数据中由奇数行奇数列构成的4×4矩阵,YLU为Y矩阵的左上角4×4矩阵,YRU为Y矩阵的右上角4×4矩阵,YLD为Y矩阵的左下角4×4矩阵,YRD为Y矩阵的右下角4×4矩阵,并且,将根据H.264/AVC标准中的8×8整型变换的变换系数矩阵88888888121063-3-6-10-1284-4-8-8-44810-3-12-66123-108-8-888-8-886-12310-10-312-64-88-4-48-843-610-1212-106-3·1/8]]>根据变换系数矩阵的对称性质,分解为Ce和Co两个4×4变换系数矩阵Ce=888884-4-88-8-884-88-4,]]>Co=12106310-3-12-66-123103-610-12,]]>CeT为Ce的转置矩阵;以及步骤c2)中,列变换的计算如下Z′=CeTYLU+CoYLDCeTYRU+CoYRDCeTYLU-CoYLDCeTYRU-CoYRD]]>最终的逆变换结果由下式给出Z=RZ′R其中,R=I400P,]]>其中I4为4×4单位矩阵,P=0001001001001000.]]>
29.如权利要求28所述的整型变换方法,其特征在于,对于8×8整型逆变换的行变换,包括如下的两个变换对XEECeand XEOCo,XOECeand XOOCo其中,每个变换对可以并行计算。
全文摘要
本发明提供一种整型变换电路,包括包括多个双口二维存储器单元的并行二维存储器,所述多个双口二维存储器单元存储器在将原始矩阵数据重新排列后能够并行输入的新矩阵的行/列数据,并且并行输出新矩阵的行/列数据;变换运算单元,包括一个或多个变换和/或运算单元,根据来自于控制单元的控制信号,对从所述并行二维存储器中并行输出的重新排列后的行/列数据进行行变换和列变换;以及控制单元,根据编解码信息,为所述并行二维存储器提供地址信号和读写控制信号,为所述变换运算单元提供控制信号。
文档编号H04N7/30GK1801940SQ20051013098
公开日2006年7月12日 申请日期2005年12月15日 优先权日2005年12月15日
发明者何芸, 李宇 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1