CN101237574A - 图像数据的译码运算系统 - Google Patents
图像数据的译码运算系统 Download PDFInfo
- Publication number
- CN101237574A CN101237574A CN 200710006998 CN200710006998A CN101237574A CN 101237574 A CN101237574 A CN 101237574A CN 200710006998 CN200710006998 CN 200710006998 CN 200710006998 A CN200710006998 A CN 200710006998A CN 101237574 A CN101237574 A CN 101237574A
- Authority
- CN
- China
- Prior art keywords
- computing
- module
- matrix
- idct
- discrete cosine
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种图像数据的译码运算系统,该系统包括:一反哈达玛模块,包含反哈达玛运算的复数处理阶段,对图像数据之中一操作块的表示矩阵中的一第一列执行反哈达玛运算,在完成所述第一列的所述反哈达玛运算的一第一处理阶段后,接收所述操作块的表示矩阵中的一第二列以对所述第二列执行反哈达玛运算的第一阶段;以及一反量化模块,在所述第一列的所述反哈达玛运算完成后,接收所述第一列,并对所述第一列执行反量化,并且在所述第二列的所述反哈达玛运算完成后,接收所述第二列,并对所述第二列执行反量化。本发明可以最大限度地以最小的面积达到最快的运算速度。
Description
技术领域
本发明系有关于计算机技术,且特别有关于图像数据的译码运算系统(VIDEO DATA DECODING SYSTEMS)。
背景技术
高清晰度电视(High Definition TV,简称HDTV)对图像译码器(Videodecoder)的译码速度提出了更高的要求,而运算量大的反离散余弦变换的运算速度往往是图像译码器译码速度的瓶颈之一,尤其是在新一代视频压缩编码标准-H.264中,与MPEG标准相比,在反量化(inverse quantization,简称IQ)与反离散余弦变换(inverse discrete cosine transform,简称IDCT)之前增加了直流反哈达玛(Hadamard)变换的运算(以下称为IHAD),而宏块(macroblock)内部的操作块(block)的尺寸大小也从单一的8×8上升到8×8、4×4、2×2同时存在的情况。这对运算量大的反离散余弦变换的运算速度提出了更为苛刻的要求。
现有的大部分设计,IQ、IDCT的运算速度大都是每一时间单位处理一像素(1Pixel/1T),设计上采用如图1的结构:经过直流反哈达玛变换IHAD与反量化IQ之后的结果,通常需要单独的缓冲器(Buffer,例如图1中缓冲器BUF2)来存储,以便给后级的IDCT运算之用。而对于IQ运算与IDCT运算之间,为了满足速度要求,又通常用两个8×8块大小的乒乓缓冲器(如图1中缓冲器BUF3)用作IDCT的输入缓冲器;这样,IHAD、IQ、IDCT之间就会需要有好几个缓冲器,如图1中的缓冲器BUF2、缓冲器BUF3,面积会比较大,速度上也还是受影响,需要提高频率来满足要求。
现有技术中还有一种比较常见的是IQ是串行的,IHAD、IDCT是并行的,同样如图1在IQ与IHAD之间,IQ与IDCT之间需要缓冲器来作调整。
另外,现有的技术,大部分只考虑到4×4IHAD运算单元与4×4IDCT运算单元共享,而8×8IDCT与他们是完全独立的运算单元。
发明内容
有鉴于此,本发明的目的在提供图像数据的译码运算系统。
基于上述目的,本发明实施例提供一种图像数据的译码运算系统,包含反哈达玛模块及反量化模块。上述反哈达玛模块包含反哈达玛运算的复数处理阶段,对图像数据之中一操作块的表示矩阵中的一第一列执行反哈达玛运算,在完成该第一列的上述反哈达玛运算的一第一处理阶段后,接收上述操作块的表示矩阵中的一第二列以对该第二列执行反哈达玛运算的第一阶段。上述反量化模块,在该第一列的上述反哈达玛运算完成后,接收该第一列,并对该第一列执行反量化,并且在该第二列的上述反哈达玛运算完成后,接收该第二列,并对该第二列执行反量化。
另外,本发明实施例提供一种图像数据的译码运算系统,包含反量化模块。上述反量化模块包含反量化运算的复数处理阶段,每一处理阶段用以处理图像数据之中一操作块的表示矩阵中一向量,并且在完成该表示矩阵中一第一向量的第一处理阶段后,接收该表示矩阵中的第二向量,并对该第二向量执行上述反量化运算的第一处理阶段。
本发明可以最大限度地以最小的面积达到最快的运算速度。
附图说明
图1显示传统图像数据译码器的示意图;
图2显示图像数据译码运算系统实施例的示意图;
图3显示图像数据上像素点行的示意图;
图4显示转置存储器实施例的示意图;
图5至图24显示图像数据在译码运算系统中的处理的流水顺序示意图。
主要组件符号说明:
BUF1~缓冲器;BUF2~缓冲器;BUF3~缓冲器;M1~转置存储器;M2~转置存储器;M3~转置存储器;M4~转置存储器;MC~后一级运算单元;IHAD~反哈达玛模块;IQ~反量化模块;IDCT~反离散余弦变换模块;VLD~前一级运算单元;1~IHAD前一级运算单元;2~IHAD一维运算模块;3~IHAD二维运算模块;4~IQ模块;5及6~IDCT一维运算模块;7及8~IDCT二维运算模块;9~运算器;10~IQ前一级运算单元;11~运算器;12~缓冲器;13~转置存储器;200~图像数据的译码运算系统;300~像素点行;301~位置。
具体实施方式
以下说明是本发明的较佳实施例。其目的是要举例说明本发明一般性的原则,不应视为本发明的限制,本发明的范围当以权利要求所界定者为准。以下提出图像数据的译码运算系统。
为了提高IHAD、IQ、IDCT的整体运算速度,同时又要求面积尽可能小,例如节省掉图1中的BUF2、BUF3,在这个前提下,采用了一些新的设计。
系统架构
参考图2,图像数据的译码运算系统200包含IHAD模块、IQ模块5、IDCT模块及转置存储器(Transpose memory)13。IHAD前一级运算单元1为图像数据的直流(DC)系数的IHAD运算的前一级运算单元,而IQ前一级运算单元10为交流(AC)系数的IQ运算的前一级运算单元。转置存储器13可以由寄存器堆组成,包含转置存储器M1,M2,M3,及M4,在储存一矩阵后,可以输出该矩阵的转置矩阵(transposed matrix)。上述IHAD模块由IHAD一维运算模块2及IHAD二维运算模块3构成。上述IDCT模块由IDCT一维运算模块5、6及IDCT二维运算模块7、8构成。
对于一4×4矩阵 其IHAD运算为:
IHAD一维运算模块2执行IHAD运算中的一维运算:
假设IHAD_1d(A)=B,IHAD二维运算模块3执行IHAD运算中的二维运算:
对于一2×2矩阵 其IHAD运算为:
IHAD一维运算模块2执行IHAD运算中的一维运算:
假设IHAD_1d(A1)=B1,IHAD二维运算模块3执行IHAD运算中的二维运算:
当上述IDCT模块取得一个4×4矩阵 上述矩阵D的IDCT运算为:
其中上述IDCT一维运算模块5用以执行上述矩阵D的IDCT运算中的一维运算:
假设IDCT_1d(D)=B2,上述IDCT二维运算模块7用以执行上述矩阵D的IDCT运算中的二维运算:
当上述IDCT模块取得一个8×8矩阵:
上述矩阵C的IDCT运算为:
IDCT一维运算模块5、6及运算器9执行IDCT(C)的一维运算,上述IDCT(C)的一维运算为:
IDCT一维运算模块7、8及运算器11执行IDCT(C)的一维运算。当IDCT_1d(C)=8×8矩阵m,上述IDCT(C)中的二维运算为:
假设矩阵K代表:
则可以看出IDCT(C)=K×C×KT;且
IDCT_2d(m)
=m×KT
=((m×KT)T)T
=(K×mT)T
=IDCT_1d(mT)T
(12-1)
4×4矩阵及8×8矩阵共享运算单元:
其次从面积上考虑,H.264宏块内部操作块的大小是4×4及8×8同时存在的,因此既有4×4的IDCT运算,也有8×8的IDCT运算。4×4的IDCT运算可与4×4IHAD运算共享运算单元的。为了使8×8的IDCT运算与4×4的IDCT运算共享部分运算单元,当IDCT_1D(C)=矩阵m,则上述算式(11)可以由下列算式取代,以计算出矩阵m:
上述IDCT一维运算模块5用以执行上述矩阵C的IDCT运算中的一维运算算式(13)及(14)中的下列算式:
从上述算式(8)及(15)可以看出,其中的常数矩阵是相同的。上述IDCT一维运算模块6用以执行上述矩阵C的IDCT运算中的一维运算算式(13)及(14)中的下列算式:
运算器9将算式(15)与(16)的结果相加以求出算式(13)中的 以及将算式(15)的结果减去(16)的结果以求出算式(14)中的 及 可以在转置存储器13中组合成矩阵m。根据算式(12-1)可以利用算式(13)及(14)计算mT的IDCT一维运算(即IDCT_1d(mT)),再将结果于转置存储器13中经过转置后(即IDCT_1d(mT)T),即可得出IDCT_2d(m)的结果(即IDCT_2d(m)=IDCT_1d(mT)T)。
或者,当IDCT_2d(m)=矩阵p,则上述算式(12)可以由下列算式取代,以计算出矩阵p:
(17)
(18)
[pi0 pi1 pi2 pi3]及[pi7 pi6 pi5 pi4]可以在缓冲器12中组合成矩阵p,即:
[pi0 pi1 pi2 pi3 pi4 pi5 pi6 pi7]。
上述IDCT二维运算模块7用以执行算式(17)及(18)中的下列算式:
从上述算式(9)及(19)可以看出,其中的常数矩阵是相同的。4×4矩阵及8×8矩阵不会同时进行,因此IDCT一维运算模块5及IDCT二维运算模块7可以让4×4矩阵及8×8矩阵共享以计算IDCT运算。上述IDCT二维运算模块8用以执行上述矩阵C的IDCT运算中的二维运算算式(17)及(18)中的下列算式:
运算器11将算式(19)与(20)的结果相加以求出算式(17)中的[pi0 pi1 pi2 pi3],以及将算式(19)的结果减去(20)的结果以求出算式(18)中的[pi7 pi6 pi5 pi4]。[pi0 pi1 pi2 pi3]及[pi7 pi6 pi5 pi4]可以在运算器11或缓冲器12中组合成矩阵p。
处理4×4矩阵时,IHAD一维运算单元2与IDCT一维运算单元5可以是完全共享的,同时也可以是8×8IDCT运算中的偶像素点矩阵的一维运算单元。IHAD二维运算单元3与IDCT二维运算单元7可以是完全共享的,同时也可以是8×8IDCT的偶像素点矩阵的二维运算单元。IDCT一维运算模块6及IDCT二维运算模块8分别是8×8IDCT运算中的奇像素点矩阵的一维与二维运算单元。
IHAD与IQ之间、IQ与IDCT之间的流水操作:
先从译码速度上来考虑,IHAD与IQ之间,IQ与IDCT之间要能够进行并行的流水操作。所谓的并行、流水操作,就是说IHAD与IQ之间,IQ与IDCT之间要都能够同时运算一个块矩阵的一行或一列,例如,当IHAD运算完一个块矩阵的一行或列时,立即进行这个块矩阵的一行或列的IQ运算,这样IHAD与IQ就可以以块矩阵的行或列为单位进行管线方式(pipeline)的运算。另外,当IQ模块4运算完一个块矩阵的一向量时(例如行或列向量),不需要经过缓冲器(例如图1的缓冲器BUF3)立即进行这一向量的IDCT运算,这样只需要增加IQ的运算单元与控制行或列运算顺序的逻辑,就可以使IHAD、IQ、IDCT的整体运算速度达到1行/1T或者是1列/1T,较的常用技术的1pixel/1T的运算速度,提高到了4倍或者8倍(4×4模式时一行或一列是4个pixel,8×8模式时一行或一列是8个pixel),同时可以不要缓冲器BUF3。
M1、M2、M3、M4为四个4×4×16的寄存器堆组成的转置存储器,每一者具有4×4个储存单元,每个储存单元的位宽为16位。然而,转置存储器M1、M2、M3、M4也可以具有不同的结构。
图像数据的译码运算系统200内的功能模块内分别作矩阵的行运算或列运算。图像数据的译码运算系统200处理数据的流程,依操作块的不同可以分为下列情况。
(一)、4×4操作块需要做IHAD运算的整个反量化反离散余弦运算顺序为:
第一步,先做直流(DC)系数的IHAD与IQ运算,数据经过的功能模块顺序为:
1->2->M1->3->4->M4
数据暂时保存在M4中,其具体存放格式稍后介绍。其中功能模块1、2、4中的运算顺序是矩阵的行顺序,其中功能模块3中的运算顺序是矩阵的列顺序;
第二步,再做交流(AC)系数的IQ运算,由IQ模块4执行IQ运算,数据的处理顺序为:
10->4
其中功模块0、4中的运算顺序是矩阵的行顺序;
第三步,IDCT一维运算模块5将这个4×4块的DC系数以串行方式(一个块只有一个DC系数)从M4中读出来,替换在第二步运算完的结果这一行的第一个位置上,组成新的一行,如图3所示,在第二步运算完的结果的像素点行300的第一个位置301被上述DC系数取代。
第四步,IDCT一维运算模块5执行这一行的IDCT的一维运算,将运算后的结果存至存储器M1,数据处理顺序如下:
5->M1
第五步,当这一个4×4块的4行都运算完,结果都保存在M1中,此时将以列的方式读出来进入模块7中运算,运算完的结果即可以给后级的模块使用,至此,这个块的整个IQ及IDCT运算就算结束。
(二)、4×4操作块不需要做IHAD运算的整个反量化反离散余弦运算顺序比较简单,处理顺序为:
10->4->5->M1->7
(三)、8×8操作块的整个反量化反离散余弦运算顺序为:
第一步:
处理8×8操作块的功能模块顺序如下:
10->4->5
第二步:
将4运算完的这一行结果的矩阵依电路分成两部分,矩阵第0、2、4、6行作为偶像素点行,第1、3、5、7行作为奇像素点行,分别输入IDCT一维运算模块5及6。
第三步:
偶像素点行进入IDCT一维运算模块5运算,奇像素点行进入IDCT一维运算模块6运算,两者同时进行。IDCT一维运算模块5、6同时运算完后的结果由运算器9进行个加、减的操作。IDCT一维运算模块5与6的结果相加,得到第0、1、2、3行的一维结果,IDCT一维运算模块5与6的结果相减,得到第4、5、6、7行的一维结果,具体算法请参考算式(13)及(14)。整个这个8×8block的一维运算结果存入由M1、M2、M3、M4组成的8×8×16位的转置存储器13中,具体摆放格式于下文中描述。
第四步:
从转置存储器13中按列顺序读出数据,同样拆分成偶像素点列与奇像素点列,分别同时送入IDCT二维运算模块7、8运算。IDCT二维运算模块7、8运算后的结果由运算器11作加减处理,具体算法请参考算式(17)及(18)。处理后就可以送给后级的译码运算模块,整个8×8的IQ及IDCT运算就算结束。
在图2中,运算器9及11只有在8×8IDCT运算时才会用到。IHAD一维运算模块2与IDCT一维运算模块5的硬件功能模块可以是共享的,即由相同硬件以分时复用方式提供IHAD一维运算与IDCT一维运算。IHAD二维运算模块3与IDCT二维运算模块7的硬件功能模块可以是共享的。IDCT一维运算模块5及IDCT二维运算模块7作为8×8IDCT的偶像素点矩阵的运算单元与4×4IDCT的运算单元,是完全共享相同硬件资源。
因为IDCT一维运算模块5和6是按块矩阵的行顺序运算的,为了做完IQ之后马上做IDCT(反离散余弦变换)运算,IQ模块4用块矩阵的行顺序运算。这样既可以节省一个用于矩阵行列变换缓冲器,也可以加快运算的速度。所以IQ模块4也采用行运算顺序。同时请注意DC系数在经过功能模块1>2>M1>3>4的运算之后,是按照并行方式储存到M4的(即每次写矩阵的一列数值到M4),但是在做IDCT运算时每次只读一个DC值出来填到对应的位置进行运算。此时即利用串行读的操作。因此,转置存储器13可以在一次存取操作中存取矩阵的一行或一列,也可以在一次存取操作中只存取矩阵的一元素。
IQ模块4包含IQ运算的复数处理阶段,每一处理阶段用以处理图像数据之中一操作块的表示矩阵中一向量。上述第一及第二向量可以为行向量或列向量。IQ模块4在完成该向量的第一处理阶段后,传送该向量至第二处理阶段,接收该表示矩阵中的第二向量,并对该第二向量执行上述IQ运算的第一处理阶段。IQ运算中的最后处理阶段输出上述第一向量后,即完成上述第一向量的IQ运算。以此进行IQ模块4内部管线方式(pipeline)的IQ运算。
译码运算系统200的IDCT模块包含IDCT运算的复数处理阶段,每一处理阶段用以处理上述表示矩阵中的一向量。IDCT模块在完成该向量的第一处理阶段后,传送该向量至第二处理阶段,接收该表示矩阵中的第二向量,并对该第二向量执行IDCT运算的第一处理阶段。IDCT的最后处理阶段输出上述第一向量后,即完成上述第一向量的IDCT运算。以此进行IDCT模块内部管线方式的IDCT运算。
上述IDCT模块在上述IQ模块4完成上述第一向量的IQ运算后,取得IQ运算后的上述第一向量以执行IDCT,在上述IQ模块4完成上述第二向量的IQ运算后,取得IQ运算后的上述第二向量以执行IDCT。以此进行IQ模块4与IDCT模块之间管线方式的IDCT运算。
依相同原理,IHAD模块包含IHAD运算的复数处理阶段,对图像数据之中一操作块的表示矩阵中的一向量执行IHAD运算,在完成该向量的上述IHAD运算的一第一处理阶段后,传送该向量至第二处理阶段,接收上述操作块的表示矩阵中的第二向量以对该第二向量执行IHAD运算的第一阶段。IHAD的最后处理阶段输出上述第一向量后,即完成上述第一向量的IHAD运算。以此进行IHAD模块内部管线方式的IHAD运算。
IQ模块4在该第一列的上述IHAD运算完成后,接收该第一列,并对该第一列执行IQ运算,并且在该第二列的上述IHAD运算完成后,接收该第二列,并对该第二列执行IQ运算。以此进行IHAD模块与IQ模块4之间管线方式的IDCT运算。
上述IQ模块4是具有复数处理阶段的管线处理结构,上述复数处理阶段中一最后处理阶段输出上述交流系数矩阵的第一行后,即完成上述交流系数矩阵的上述第一行的IQ运算。
以下举列说明译码运算系统200内各功能模块之间管线方式的运算。
先说明图2中的运算顺序。其中IHAD一维运算模块2是按矩阵的行顺序运算的,IHAD二维运算模块3是按矩阵的列顺序运算的。IQ模块4是按矩阵的行顺序运算的,IDCT一维运算模块5及6是按块矩阵的行顺序运算的,IDCT二维运算模块7及8是按块矩阵的列顺序运算的。IHAD二维运算模块3与IQ模块4之间运算顺序看似矛盾:即IHAD二维运算模块3是按块矩阵的列顺序运算的,运算完后的结果直接进入IQ模块4运算,但是IQ模块4是按块矩阵的行顺序运算的,但是其实并不矛盾。在IQ模块4内部会有一个运算的处理。因为要做IHAD运算的一定是DC系数组成的块矩阵,而同一个块内这些DC系数做IQ运算的反量化缩放(Scaling)参数值是一样的,不同的只是它们的调整(Adjust)参数,而每个DC系数组成的块矩阵各个像素点所处的位置的调整(Adjust)参数是确定的,为常数。这样我们就可以在IQ_ALU模块内按行顺序正确地计算出每一个DC系数的反量化值。
IHAD,IQ及IDCT是利用管线处理(PipeLine)的方式来运算的。首先需要说明的是IHAD有4×4模式和2×2模式,其中4×4模式用于亮度(luma)块矩阵的DC系数,2×2模式用于色度(chroma)块矩阵的DC系数。以下用H.264色度快矩阵的IHAD、IQ、IDCT运算为例来说明管线处理的过程:
在YUV色彩模型中,色度块有Cb、Cr两个部分,Cb有一个2×2的DC系数矩阵,4个4×4的AC系数矩阵;Cr也有一个2×2的DC系数矩阵,4个4×4的AC系数矩阵。它们的运算顺序是:
第一个时钟周期,请参照图5,IHAD前一级运算单元模块1从前一级译码单元读Cb第一行像素点DC系数(标为Cb_DC_R1)给IHAD一维运算模块2进行运算。
第二个时钟周期,请参照图6,IHAD一维运算模块2运算完毕Cb第一行像素点DC系数(标为Cb_DC_R1),将结果按行顺序写往M1;同时IHAD前一级运算单元模块1从前一级译码单元读Cb第二行像素点DC系数(标为Cb_DC_R2)给IHAD一维运算模块2进行运算。
第三个时钟周期,请参照图7,IHAD一维运算模块2运算完毕Cb第二行像素点DC系数(标为Cb_DC_R2),将结果按行顺序写往M1;同时IHAD前一级运算单元模块1从前一级译码单元读Cr第一行像素点DC系数(标为Cr_DC_R1)给IHAD一维运算模块2进行运算。
第四个时钟周期,请参照图8,IHAD一维运算模块2运算完毕Cr第一行像素点DC系数(标为Cr_DC_R1),将结果按行顺序写往M1;同时IHAD前一级运算单元模块1从前一级译码单元读Cr第二行像素点DC系数(标为Cr_DC_R2)给IHAD一维运算模块2进行运算,由于这时Cb的IHAD的一维运算结束,整个2×2矩阵一维IHAD的结果(标为Cb_DC)已经保存到M1,这时马上激活Cb的IHAD的二维运算,也就是IHAD二维运算模块3按列顺序从M1中读Cb的第一列(标为Cb_DC_C1)一维运算结果进行二维IHAD运算。
第五个时钟周期,请参照图9,IHAD一维运算模块运算完毕Cr第二行像素点DC系数(标为Cr_DC_R2),将结果按行顺序写往M1,并同时停止运算;同时IHAD前一级运算单元模块1也停止从前一级译码单元读数据。同时IHAD二维运算模块3运算完Cb第一列像素点DC系数的二维运算,将结果送往IQ模块4进行反量化运算,并同时从M1读Cb的第二列一维运算结果(标为Cb_DC_C2)进行二维IHAD运算。
第六个时钟周期,请参照图10,IHAD二维运算模块3运算完Cb第二列像素点DC系数(标为Cb_DC_C2)的二维IHAD运算,将结果送往IQ模块4进行反量化运算,并同时从M1读Cr的第一列一维IHAD运算结果(标为Cr_DC_C1)进行二维IHAD运算。
第七个时钟周期,请参照图11,IHAD二维运算模块3运算完Cr的第一列DC系数(标为Cr_DC_C1)的二维IHAD运算,将结果送往IQ模块4进行反量化运算,从M1读Cr的第二列一维IHAD运算结果(标为Cr_DC_C2)进行二维IHAD运算。
第八个时钟周期,请参照图12,IHAD二维运算模块3运算完Cr的第二列DC系数的二维IHAD运算,停止运算,将结果送往IQ模块4进行反量化运算。
由于反量化运算是采用的四级管线(pipe)运算,即四个处理阶段,从第一个数据输入以后,要4个时钟周期以后结果才会出来,因此:
第九个时钟周期,请参照图13,IQ模块4运算完Cb第一列像素点DC系数,将此结果按列顺序并行写入到M4。
第十个时钟周期,请参照图14,IQ模块4运算完Cb第二列像素点DC系数,将此结果按列顺序并行写入到M4。
第十一个时钟周期,请参照图15,IQ模块4运算完Cr第一列像素点DC系数,将此结果按列顺序并行写入到M4。
第十二个时钟周期,请参照图16,IQ模块4运算完Cr第二列像素点DC系数,将此结果按列顺序并行写入到M4。
这个时候色度Cb、Cr的DC系数的IHAD、IQ的管线处理(PipeLine)运算结束,何时激活IQ、IDCT的管线处理(PipeLine)运算,要看前一级译码单元VLD是否已经将色度Cb的4×4的AC系数矩阵译码完了,若是还没有,则要等到它译码完才能激活。假定VLD译码速度够快,将需要的每一个4×4的AC系数矩阵译码完了,则:
第十三个时钟周期,请参照图17,IQ前一级运算单元模块0按行顺序从前一级译码单元VLD读Cb的第一个4×4的AC系数矩阵的第一行(标为Cb_AC_R1),送到IQ模块4进行反量化运算。
前面已说明,由于IQ模块4内部是一个四级的PipeLine运算过程,因此从第十三个时钟周期一直到第十六个时钟周期,模块0-IQ前一级运算单元按行顺序从前一级译码单元VLD分别读Cb的第一个4×4的AC系数矩阵的第一行,第二行、第三行、第四行数据,送到IQ模块4进行反量化运算,请参照图18。
第十七个时钟周期,请参照图19,IQ前一级运算单元模块0按行顺序开始从前一级译码单元VLD读Cb的第二个4×4的AC系数矩阵的第一行(标为Cb_2AC_R1),送到IQ模块4进行反量化运算。色度块Cb的第一个4×4AC系数矩阵的第一行数据的反量化结果出来,由IQ模块4送往IDCT一维运算模块5,同时要从转置存储器13的M4以串行方式读出一个对应的DC系数,替换这一行的第一个像素点的值,组成新的一行(标为Cb_1AC_R1’),如图3所示,以后每一个4×4AC系数矩阵的第一行数据的第一个像素点的值都要这样去替换。需注意的是,一个4×4AC系数块矩阵只有第一行的第一个像素点的值需要被替换成DC值。组成的这新的一行去做一维的IDCT运算。
这里需要说明,每一个IDCT的运算单元(IDCT一维运算模块5、IDCT一维运算模块6、IDCT二维运算模块7、IDCT二维运算模块8),其内部是一个2级的管线运算过程,也就具有是2个处理阶段,从数据输入以后,要2个时钟周期以后即第三个时钟周期才有结果。
第十八个时钟周期,请参照图20,色度块Cb的第一个4×4AC系数矩阵的第二行数据的反量化结果(标为Cb_1AC_R2)出来,由IQ模块4送往IDCT一维运算模块5,同时IQ前一级运算单元模块0按行顺序从前一级译码单元VLD读Cb的第二个4×4的AC系数矩阵的第二行(标为Cb_2AC_R2),送到IQ模块4进行反量化运算。
第十九个时钟周期,请参照图21,色度块Cb的第一个4×4AC系数矩阵的第三行数据的反量化结果(标为Cb_1AC_R3)出来,由IQ模块4送往IDCT一维运算模块5,同时IDCT一维运算模块0运算完Cb第一个4×4AC系数矩阵的第一行数据的一维IDCT运算结果(标为Cb_1AC_R1)写入到M1。同时模块0-IQ前一级运算单元按行顺序从前一级译码单元VLD读Cb的第二个4×4的AC系数矩阵的第三行(标为Cb_2AC_R3),送到IQ模块4进行反量化运算。
第二十个时钟周期,请参照图22,色度块Cb的第一个4×4AC系数矩阵的第四行数据的反量化结果(标为Cb_1AC_R4)出来,由IQ模块4送往IDCT一维运算模块5,同时IDCT一维运算模块5运算完Cb第一个4×4AC系数矩阵的第二行数据的一维IDCT运算结果(标为Cb_1AC_R2)写入到M1。同时IQ前一级运算单元模块0按行顺序从前一级译码单元VLD读Cb的第二个4×4的AC系数矩阵的第四行(标为Cb_2AC_R4),送到IQ模块4进行反量化运算。
第二十一个时钟周期,请参照图23,类似第十七个时钟周期,IQ前一级运算单元模块0按行顺序开始从前一级译码单元VLD读Cb的第三个4×4的AC系数矩阵的第一行(标为Cb_3AC_R1),送到IQ模块4进行反量化运算,同时第二个4×4AC系数矩阵的第一行数据的反量化结果(标为Cb_2AC_R1)出来,需要从M4中读一个DC系数组合成新一行(标为Cb_2AC_R1’)进行一维IDCT运算。同时IDCT一维运算模块5运算完Cb第一个4×4AC系数矩阵的第三行数据的一维IDCT运算结果(标为Cb_1AC_R3)写入到M1。
第二十二个时钟周期,请参照图24,IDCT一维运算模块5运算完Cb第一个4×4AC系数矩阵的第四行数据的一维IDCT运算结果(标为Cb_1AC_R4)写入到M1,此时第一个4×4AC系数矩阵的一维IDCT运算完毕。IQ模块4在同时在管线运算Cb的第二个、第三个4×4的AC系数矩阵的反量化,IDCT一维运算模块5在做第二个4×4的AC系数矩阵的IDCT(反离散余弦变换)运算。
第二十三个时钟周期,IDCT二维运算模块7按列顺序从M1中读数据进行第一个4×4AC系数矩阵的第一列数据的IDCT(反离散余弦变换)运算,这样就可以看到IQ运算、IDCT的一维运算、IDCT的二维运算是一个管线处理(PipeLine)的运算过程,而且可能在运算不同的4×4AC系数矩阵块内,有的在按行顺序运算,有的在按列顺序运算,从而达到作为一个整体快速运算的目的。
转置存储器:
图2中,4个的转置存储器M1、M2、M3及M4,其中M2及M3两块只有在8×8IDCT运算的时候才会用到,作为8×8IDCT的转置存储器。另外M1及M4两块的有几方面的作用:
(1).8×8IDCT时,同时作为8×8IDCT的转置存储器。
(2).转置存储器M1作为4×4IDCT与4×4IHAD时的共享转置存储器。
(3).转置存储器M4作为经过IHAD与IQ运算之后的结果保存用的存储器。
图4比较详细地说明了这一特殊转置存储器13的数据存取结构的一种实现方式,它既能同时并行地存入或者取出2×2、4×4、8×8块矩阵的一行或一列数据,也能同时串行地存入或取出4×4、2×2块矩阵的某一个像素的值。其中同时并行存或取2×2、4×4块矩阵的一行或一列数据时,是作为2×2、4×4IHAD或4×4IDCT的转置存储器;同时并行存或取8×8块矩阵的一行或一列数据时,是作为8×8IDCT的转置存储器;串行地存入或取出4×4、2×2块矩阵的某一个像素的值时,它是与4×4IDCT并行存或取4×4块矩阵的一行或一列数据同时存在的,是利用了4×4模式时空闲出来的转置存储器区域来存储2×2、4×4IHAD和IQ之后的结果,给4×4IDCT之用,图4将较为详细地介绍其中的数据存取结构及方法。
8×8模式时:数据存储结构相对比较简单,整个存储单元的结构是储存单元E0-E31与储存单元O0-O31所构成的8×8个储存单元的转置存储器。
按此顺序组成一个8×8的矩阵,每个存储单元的位宽,举例来说,可以是16位(bit),或根据运算精度的需要而定。数据如果按图4垂直方向的DIN0-DIN7进来,则按水平方向的OUT0-OUT7的顺序出去;若按图4水平方向的DIN00-DIN07进来,则按垂直方向的OUT0-OUT7的顺序出去,数据的输入与输出是可以同时进行的。转置存储器13采用的是寄存器堆设计的,采用的是移位寄存器堆的方式,一边移入,另外一边移出。可以避免数据同时存取时数据不一致的问题。
4×4模式时:
此时储存单元O0-O31存储单元是空闲的。
储存单元E0-E15组成一个4×4的块矩阵,作为4×4IHAD或4×4IDCT的转置存储器,并行存取;
储存单元E0-E1-E4-E5组成一个2×2的块矩阵,作为2×2IHAD的转置存储器13,并行存取;
储存单元E16、E17、E20及E21组成一个2×2的存储块矩阵,保存2×2IHAD与IQ之后的结果,此为Cb的DC系数,是串行存取的;
储存单元E18、E19、E22及E23组成一个2×2的存储块矩阵,保存2×2IHAD与IQ之后的结果,此为Cr的DC系数,是串行存取的;
储存单元E16-E31组成一个4×4的块矩阵,保存4×4IHAD与IQ之后的结果,此为亮度(Luma)的DC系数,是串行存取的,其中E16-E23是与Cb、Cr共享的。
其中的E0-E15并行存取的顺序与8×8模式类似,都是垂直方向进来,则水平方向出去;若水平方向进来,则垂直方向出去,存取可同时进行。
图4的转置存储器是实现(1)、(2)、(3)所描述功能的一种方式,也可以采用其它的数据存取结构,例如用O0-O15或O16-O31来作为串行存取的单元。
针对H.264的这种特性,本发明提出了将IHAD、IQ、IDCT捆绑成一个整体,按照不同情况按矩阵行或按矩阵列并行、流水运算的方式,解决译码速度的问题;同时从提高产品竞争力、降低成本起见,采取一些复杂的控制逻辑与变换算法,使得2×2、4×4IHAD与4×4IDCT共享运算单元与转置存储器,8×8IDCT偶像素点矩阵与4×4IDCT共享运算单元与转置存储器,从而最大限度地以最小的面积达到最快的运算速度。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识,在不脱离本发明的精神和范围内,当可作各种的更动与润饰,因此本发明的保护范围当以权利要求所界定者为准。
Claims (17)
1. 一种图像数据的译码运算系统,其特征在于,所述系统包含:
一反哈达玛模块,包含反哈达玛运算的复数处理阶段,对图像数据之中一操作块的表示矩阵中的一第一列执行反哈达玛运算,在完成所述第一列的所述反哈达玛运算的一第一处理阶段后,接收所述操作块的表示矩阵中的一第二列以对所述第二列执行反哈达玛运算的第一阶段;以及
一反量化模块,在所述第一列的所述反哈达玛运算完成后,接收所述第一列,并对所述第一列执行反量化,并且在所述第二列的所述反哈达玛运算完成后,接收所述第二列,并对所述第二列执行反量化。
2. 如权利要求1所述的图像数据的译码运算系统,其特征在于,所述表示矩阵包含所述操作块的直流系数,所述反量化模块执行所述操作块的交流系数矩阵的一第一行的反量化运算,所述图像数据的译码运算系统还包含:
一反离散余弦变换模块,在所述反量化模块完成所述交流系数矩阵的所述第一行的反量化运算后,将所述第一行与所述表示矩阵中的一直流系数整合成新的第一行,对所述新的一行执行反离散余弦变换,在所述反量化模块完成所述交流系数矩阵的一第二行的反量化运算后,对所述第二行执行反离散余弦变换。
3. 如权利要求2所述的图像数据的译码运算系统,其特征在于,所述反量化模块是具有复数处理阶段的管线处理结构,所述复数处理阶段中一最后处理阶段输出所述交流系数矩阵的第一行后,即完成所述交流系数矩阵的所述第一行的反量化运算。
4. 如权利要求3所述的图像数据的译码运算系统,其特征在于,所述复数处理阶段中一第一处理阶段输出所述交流系数矩阵的第一行至一第二处理阶段后,接收所述交流系数矩阵的第二行,以进行所述第二行的反量化运算。
5. 如权利要求2所述的图像数据的译码运算系统,其特征在于,所述表示矩阵为4×4矩阵,所述反离散余弦变换模块包含处理4×4矩阵的反离散余弦变换运算的一维运算模块及二维运算模块,所述一维及二维运算模块提供4×4矩阵及8×8矩阵的反离散余弦变换运算。
6. 如权利要求5所述的图像数据的译码运算系统,其特征在于,所述反离散余弦变换模块与所述反哈达玛模块为硬件结构上相同的运算逻辑单元,以分时复用方式提供反哈达玛及反离散余弦变换运算。
7. 如权利要求5所述的图像数据的译码运算系统,其特征在于,当所述反离散余弦变换模块取得一个4×4矩阵 所述矩阵D的反离散余弦变换运算为:
其中所述一维运算模块用以执行所述矩阵D的反离散余弦变换运算中的一维运算:
其中所述二维运算模块用以执行所述矩阵D的反离散余弦变换运算中的二维运算:
8. 如权利要求7所述的图像数据的译码运算系统,其特征在于,当所述反离散余弦变换模块取得一个8×8矩阵:
所述矩阵C的反离散余弦变换运算为:
所述IDCT(C)的一维运算为:
当IDCT_1D(C)=矩阵m,则:
所述一维运算模块用以执行所述矩阵C的反离散余弦变换运算中的一维运算中的下列算式:
9. 如权利要求8所述的图像数据的译码运算系统,其特征在于,当IDCT_1d(C)=8×8矩阵m,所述IDCT(C)中的二维运算为:
当IDCT_2d(m)=矩阵p,则:
;以及
所述二维运算模块用以执行所述IDCT_2d(m)中的下列算式:
10. 如权利要求2所述的图像数据的译码运算系统,其特征在于,所述系统还包含:
一转置存储器,以分时复用法来储存所述反哈达玛模块与反量化模块的运算结果,及所述反离散余弦变换模块执行8×8矩阵的反离散余弦变换运算的结果。
11. 如权利要求10所述的图像数据的译码运算系统,其特征在于,所述转置存储器在一次存取操作中存取矩阵的一行或一列,以及在一次存取操作中存取矩阵的一元素。
12. 如权利要求2所述的图像数据的译码运算系统,其特征在于,所述图像数据的译码运算系统整合为一芯片。
13. 一种图像数据的译码运算系统,其特征在于,该系统包含:
一反量化模块,包含反量化运算的复数处理阶段,每一处理阶段用以处理图像数据之中一操作块的表示矩阵中一向量,并且在完成所述表示矩阵中一第一向量的第一处理阶段后,接收所述表示矩阵中的第二向量,并对所述第二向量执行所述反量化运算的第一处理阶段。
14. 如权利要求13所述的图像数据的译码运算系统,其特征在于,所述第一及第二向量为行向量或列向量。
15. 如权利要求13所述的图像数据的译码运算系统,其特征在于,所述复数处理阶段中一最后处理阶段输出所述第一向量后,即完成所述第一向量的反量化运算,所述图像数据的译码运算系统还包含:
一反离散余弦变换模块,在所述反量化模块完成所述第一向量的反量化运算后,取得反量化运算后的所述第一向量以执行反离散余弦变换,在所述反量化模块完成所述第二向量的反量化运算后,取得反量化运算后的所述第二向量以执行反离散余弦变换。
16. 如权利要求15所述的图像数据的译码运算系统,其特征在于,所述反离散余弦变换模块包含反离散余弦变换运算的复数处理阶段,每一处理阶段用以处理所述表示矩阵中的一向量。
17. 如权利要求15所述的图像数据的译码运算系统,其特征在于,所述反离散余弦变换模块提供4×4矩阵及8×8矩阵的反离散余弦变换运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710006998 CN101237574A (zh) | 2007-02-01 | 2007-02-01 | 图像数据的译码运算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710006998 CN101237574A (zh) | 2007-02-01 | 2007-02-01 | 图像数据的译码运算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101237574A true CN101237574A (zh) | 2008-08-06 |
Family
ID=39920885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710006998 Pending CN101237574A (zh) | 2007-02-01 | 2007-02-01 | 图像数据的译码运算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101237574A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841711A (zh) * | 2010-04-17 | 2010-09-22 | 上海交通大学 | 用于视频解码的反量化装置及其实现方法 |
CN101673392B (zh) * | 2008-09-12 | 2012-06-06 | 慧国(上海)软件科技有限公司 | 影像译码装置及方法 |
CN104702952A (zh) * | 2014-01-21 | 2015-06-10 | 杭州海康威视数字技术股份有限公司 | 一种图像数据压缩方法 |
-
2007
- 2007-02-01 CN CN 200710006998 patent/CN101237574A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673392B (zh) * | 2008-09-12 | 2012-06-06 | 慧国(上海)软件科技有限公司 | 影像译码装置及方法 |
CN101841711A (zh) * | 2010-04-17 | 2010-09-22 | 上海交通大学 | 用于视频解码的反量化装置及其实现方法 |
CN101841711B (zh) * | 2010-04-17 | 2012-01-04 | 上海交通大学 | 用于视频解码的反量化装置及其实现方法 |
CN104702952A (zh) * | 2014-01-21 | 2015-06-10 | 杭州海康威视数字技术股份有限公司 | 一种图像数据压缩方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lai et al. | A data-interlacing architecture with two-dimensional data-reuse for full-search block-matching algorithm | |
CA2099146C (en) | Method and arrangement for transformation of signals from a frequency to a time domain | |
CN101083764B (zh) | 可编程视频处理单元与视频数据处理方法 | |
JP2628493B2 (ja) | コサイン変換計算装置並びに計算装置等を備えた画像コード装置及び画像デコード装置 | |
US8989509B2 (en) | Streaming wavelet transform | |
Zhu et al. | Fully pipelined DCT/IDCT/Hadamard unified transform architecture for HEVC Codec | |
US20060140498A1 (en) | Apparatus and method for processing an image | |
US8270743B2 (en) | Discrete cosine processing circuit and image processing device utilizing the same | |
Garrido et al. | A 2-D multiple transform processor for the versatile video coding standard | |
CN101729893B (zh) | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 | |
CN1532686B (zh) | 处理器以及由处理器为矩阵处理使用两组寄存器的方法 | |
EP0714212A2 (en) | Video decoder using concurrent processing and resource sharing | |
Li et al. | Architecture and bus-arbitration schemes for MPEG-2 video decoder | |
CN101237574A (zh) | 图像数据的译码运算系统 | |
KR100818034B1 (ko) | 데이터 전송 방법, 회로 장치 및 데이터 전송 장치 | |
CN101640795B (zh) | 一种视频解码优化方法及装置 | |
Sun et al. | An area-efficient 4/8/16/32-point inverse DCT architecture for UHDTV HEVC decoder | |
US20010054051A1 (en) | Discrete cosine transform system and discrete cosine transform method | |
US5793658A (en) | Method and apparatus for viedo compression and decompression using high speed discrete cosine transform | |
CN107277551B (zh) | 一种用于图像处理的近似离散余弦变换方法 | |
CN108184127A (zh) | 一种可配置的多尺寸dct变换硬件复用架构 | |
CN101562744B (zh) | 二维反变换装置 | |
Chen et al. | A high-performance low power direct 2-D transform coding IP design for MPEG-4 AVC/H. 264 with a switching power suppression technique | |
Viitamäki et al. | High-level synthesized 2-D IDCT/IDST implementation for HEVC codecs on FPGA | |
Liang et al. | A full-pipelined 2-D IDCT/IDST VLSI architecture with adaptive block-size for HEVC standard |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080806 |