离散余弦转换/反离散余弦转换电路的转置存储器
本发明涉及一安插在两个一维转换电路之间的转置存储器。它可用在正离散余弦转换(Discrete CosineTransform-DCT)或反离散余弦转换(Inverse DCT)之电路。由此,它特别对影像信号压缩有用。
正离散余弦转换在影像信号压缩与处理已被广泛地应用。一个二维正离散余弦转换定义如下: 其中Xij为一个N×N矩阵的输入元素i,j=0,1,2,……,N-1,而zmn为一个N×N矩阵的输出元素,m,n=0,1,2,……,n-1。其中反离散余弦则被定义为: 方程式(1)的矩阵式为
Z=CXCt (3)其中X为输入资料矩阵,C是余弦转换矩阵,而Ct是矩阵C的转置。假使X为一个N×N矩阵,则方程式(3)可表示为: 反离散斜弦转换的运算非常类似正离散余弦转换,除了C与Ct对换。因此可以单以正离散余弦转换来讨论。方程式(3)可以分为如下的一维转换
Y=CX (5)
Z=YCt (6)其中Y是一个居中的积数矩阵,而Ct是矩阵C的转置。导自方程式(6),如下之方程式同样地有效:
Z=CYt (6a)其中Yt为矩阵Y的转置。若为反离散余弦转换,我们则有:
X=C
tY或 X=Y
tC(6b)许多传统应用输入资料矩阵的正离散余弦转换技术或电路,如N.Ahmed的“离散余弦转换”,IEEE Trans.on comp.,vol。C-23,Jan.,1974,90-93提出般性正离散余弦转换技术;N.Cho & S.Lee,“二维离散余弦转变的快速算法及实施(Fast Algorithm and Implementation of 2-D DCT”),IEEETrans.on Cir.& Sys.,Vol.38,No.3,Mar.1991,297-305提出运用N个-维正离散余弦转换电路或多工器,与N/2个一维正离散余弦转换电路来计算一个二维N×N正离散余弦转换;M。Sun et al.,“VLSI Implementation of a 16×16 DCT”,IEEETrans.on Cir.& Sys.,Vol.36,No.4,Apr.1989,610-17提出一个使用存储器来存储一维正离散余弦转换矩阵运算部分结果的二维正离散余弦转换;H.Hou,“计算离散余弦转换的快速递归算法(A Fast Recursive Algorithm for Computing theDCT)”,IEEE Trans.on Acoustic,Speech and SignalProcessing,Vol.ASSP-35,No.10,1987,1455-61利用正离散弦转换系数矩阵的对称性减少乘法运算的数量。方程式(5)可以写成:
其中Y
e是含有矩阵Y偶数行的矩阵,Y
o是含有矩阵Y奇数行的矩阵,X
f是含有矩阵X上半部行(upper half rows)的矩阵,X
r是含有矩阵X下半部行的矩阵,C
1和C
2是
正离散余弦转换系数矩阵。例如,以一个8×8正离散余弦转换来说,方程式(7)可写为:
其中A=cos(π/4),B=cos(π/8),C=sin(π/8),D=cos(π/16),E=cos(3π/16),F=sin(3π/16),G=(sinπ/16)。Y
0,Y
1,Y
2……,Y
7为矩阵Y的行,而X
0,X
1,……,X
7为输入资料矩阵X的行。由此,反离散余弦转换可写为:
其中C
1 t是C
1的转换而C
2 t是C
2是转换。例如,以一个8×8正离散余弦转换来说,方程式(8)可写为:
方程式7-7(a)与8-8(a)也可应用在决定如方程式(6a)的Z=CY
t,或在反离散余弦转换,Y=ZC。方程式(7a)和(8a)的优点是减少每一个一维正离散余弦转换的乘法运算量达50%。
图1是表示一个二维正/反离散弦转换的框图。如美国专4,791,598,其中第一个一维正离散余弦转换3经由n,线接收一个输入资料矩阵X。此一维正离散余弦转换3根据方式(5)或(7a)转换输入资料矩阵Y,并经由n2线输出至转置存储器5。转置存储器5将居中矩阵Y转置并经由n3线Y的转置Yt输出至第二个一维正离散余弦转换7。最后此一维正离散余弦转换7根据方程式(6),(6a)或(7a)经由n4线输出一个二维输出转换矩阵Z。
以一个正离散余弦转换电路为例,一个一维正离散余弦转换电路输出一个“行-栏”(row-column)顺序,也就是说,Y0,Y1,Y2,……,Y63。(以此看来,一个8×8矩阵的元素为Yij,i,j=0,1,2,……,7)。转置存储器5据此写入资料并以转置顺序(栏-行)将之读出。也就是说,Y0,Y8,Y24,Y32,……,Y1,Y9,Y17,Y25,Y33,……,Y63。不过,方程式(7a)显示一维正离散弦转换电路7须要从矩阵Y一次读出两个元素:(Y0,Y56),(Y8,Y48),(Y16,Y48),……,(Y1,Y57),(Y9,Y49),……,(Y31,Y39),或称之为“拖曳栏-行”(shuffled column-row)顺序。自转置存储器输出的资料则被一个含有算术逻辑单元(ALU)76和平移输入/平行输出寄存器7C的前处理(pre-processing)电路所接收,并以拖曳栏-行顺序平行地一次输出两个元素。
以一个反离散余弦电路为例,一个一维转换电路3将矩阵阵Y以Y0,Y7,Y1,Y6,Y2,Y5,……,Y8,Y15,Y9,Y14,……,Y59,Y60(拖曳行-栏顺序)输出至转置存储器,并以转置的混合栏-行顺序由转置存储器输出(Y0,Y56,Y8,Y48,Y16,Y40,……,Y1,Y57,Y9,Y49,……,Y31,Y39)。不过,方程式(8a)显示一维反离散余弦转换电路须要从矩阵Y一次读出两个元素:(Y0,Y8),(Y16,Y24),……,(Y1,Y9),(Y17,Y25),……,(Y55,Y63)。再一次的,前处理电路的平移输入/平行输出寄存器自移项存储器接收拖曳栏-行顺序输出资料,并以同样顺序一次输出两个元素。
将图1的架构设计为完全平行式是有其必要的,也就是说,居中矩阵Y从第一个一维正离散余弦转换3,经过转置存储器5,到第二个一维正离散余弦转换7之间的流通性没有任何中断。不过,转置存储器5通常是最困难的部分。例如,若资料是以行-栏顺序写入转置存储器5,则是以栏-行顺序读出。若读写所需的时间各为T,那麽一个传统转置存储器则需要2T时间来处理一个矩阵Y。
为了减少处理时间,不同的传统转置存储器相继被提出。最早的架构使用了两个转置存储器并交互处理每一个居中矩阵Y。在第一个时期,第一个转置存储器根据行-栏顺序将第一个居中矩阵Y1写入。在第二个时期,第二个时期,第二个转置存储器根据行-栏顺序写入第二个居中矩阵Y2,同时,Y1以栏-行顺序从第一个转置存储器读出。以此类推,在第三个时期,第一个转置存储器以行-栏顺序写入Y3,而同时从第二个转置存储器以栏-行顺序读出Y2。此转置存储器的缺点是需要两个存储器。
图2表示了由美国专利4,791,598提出的另一种传统方式。如图所示,转置存储器5包含一排的平移寄存器排13和一排平行寄存器排15。一个矩阵Y平移输入平移寄存器排13(以栏-行顺序)使得每一个寄存器13-1,13-2,……,13-N存储矩阵Y的一个对应行。当整个矩阵都存入平移寄存器排13时,每一个寄存器13-1,13-2,……,13-N便将它们的资料平行地传给对应的平行寄存器15-1,15-2,……,15-N。由此,平行寄存器排15的资料就可输入算术逻辑单元17。同时,平移寄存器排13马上可接收下一个矩阵Y。这种架构的缺点是浪费许多寄存器的空间。美国专利5,053,985提出另一种架构,如图3所示。一个一维正离散余弦转换20以两倍于资料输入率的速度来处理输入矩阵X。用一个一维正离散余弦转换20包括前寄存器和算术逻辑单元30来前处理资料,用乘法器与累加器35来处理矩阵乘法,还有后寄存器和算术逻辑单元40。此一维离散余弦转换20产生的居中矩阵Y存于一个RAM60,假若说以行-栏顺序,则自RAM 60是以栏-行顺序读出并再由一维正离散余弦转换处理。由于其转换之处理速度为矩阵X输入的两倍,因此以S.Urampto el al.的“一种100MHz的二维离散余弦转换中心处理器(A100MHz 2-D DCT CoreProcessor)”,IEEE J.of Solid State Cirs.,Vol.27,No.4,Apr.1992,P.429-99为例,资料输入率被限制在处理器速度一半。
美国专利5,042,007和5,177,704提出一个以平移寄存器连结成FIFO(First-in first-out)的转置存储器装置。两个专利皆以(N2+1)n位元平移寄存器和(2N2-2)2×1多工器组合为转置存储器。同样地,美国专利4,903,231提出另一个以N2个平移寄存器和大约N2个多工器来组合的转置存储器。此架构可将矩阵元素以行一栏或栏一行顺序输出或输入。不过这些架构的缺点是占了许多寄存器和多工器的面积。
美国专利4,769,790提出另一种架构,是将一个输入矩阵的栏(或行)输入一个延迟电路(delay circuit)。延迟栏输入一个分类电路(distribution circuit),并被旋转。被旋转的栏输出至第二个延迟电路再将之延迟。这种架构在每个延迟电路所用的平移寄存器占了很大的空间。
美国专利4,918,527提出的转置存储器被分割成两半。当资料被写入其中一半时,另一半则读出资料。而且,单数行的资料是以二对二的交替方式存入两半存储器,也就是说,在每个单数行,每一对的栏的元素交换式的存入存储器,直到整个居中矩阵皆存入为止。这种架构使用了大量的解码电路,因此占了很大的空间。
前述几种架构的主要缺点是它们占了相当大的面积。在二维正或反离散余弦转换架构更可能造成前处理器的寄存器超载。另外,前述之各种架构皆不能很有弹性地读,写资料,换句话说,就是在行-栏,栏-行,拖曳栏-行及拖曳行-栏之间变换。最后,传统转置存储器须要在正/反离散余弦转换间的读或写资料之前完全清除前笔资料。本发明的目标即是在于克服前述架构之缺点。
一个转置存储器根据第一顺序接受一个矩阵,然后根据第二顺序将收到的矩阵元素输出至正或反离散余弦转换电路。一个转置存储器包括4个双端口随机存取存储器(dual-portRAM)。每一个双端口存储器存储矩阵四分之一个象限的元素。一个转置存储器同时包括一个记数器用来将每一接收的矩阵元素写入某一特定之存储器。另外,也包括一个记数器根据第二顺序读出元素对(element pair)。
第一个记数器将一个矩阵元素写入选择的特定之双端口存储器以达到同时读出一对元素的目的。而且不须增加额外的寄存器。假使元素是输出到正离散余弦转换电路,每一个双端口存储器被分配1/4的矩阵元素。由此,第一个记数器将每一个矩阵元素写入一分配到的特定之双端口存储器。也就是说,左上角的矩阵元素写入第一个双端口存储器;右上角的写入第二个;左下角的写入第三个;右下角的写入第四个。假使元素是输出到反离散余弦转换电路,每一个双端口存储器则以行栏交互式地分配到矩阵元素。由此,第一个记数器将“单”或“双”行与栏的矩阵元素分别写入特定之双端口存储器。也就是说,位于单行与单栏的矩阵元素写入第一个存储器;位于单行双栏的写入第二个存储器;位于双行单栏的写入第三个存储器;位于双行双栏的写入第四个存储器。
因此,第一种写入方法允许元素对以拖曳顺序(Shuffledorder)读出。举例来说,元素Y0,Y8,Y16,Y24(位于矩阵之左上角)写在第一个存储器;而位于矩阵左下角的元素Y32,Y40,Y48,Y56存于第二个存储器。因此,第二个记数器即可很容易地以拖曳栏行顺序读出元素对(Y0,Y56),(Y8,Y48),(Y16,Y40),(Y24,Y32)。同样地,第二种写入方法允许元素对以非拖曳顺序(Non-Shuffled order)读出。举例来说,位于矩阵单行的元素Y0,Y16,Y32,Y48写在第一个存储器;而位于矩阵双行的元素Y8,Y24,Y40,Y56存于第二个存储器。因此,第二个计数器即可很容易地以拖曳栏行顺序读出元素对(Y0,Y8),(Y16,Y24),(Y32,Y40),(Y48,Y56)。
实际上,本发明提出的转置存储器可安插于二个一维转换电路之间,例如在两个正离散(或反离散)余弦转换电路之间。由此,第一和第二个记数器能以输入的矩阵元素之同步化来达到管线转置的运算(Pipeline Transpose operation)。也就是说,第一个记数器在第二个记数器读出前次写入之矩阵元素的同时,将接收的矩阵元素写入存储器。而写入元素所在的存储器储存元件已在下一元素写入之前先予以腾出。如此交互读写,本转置存储器即可以一种转换型式写入元素对,再以同一种或另一种型式读出。
简单地说,本转置存储器可以用四个较小面积的存储器,两个记数器及少许逻辑电路组合而成。且在各种不同的输入顺序下简单有规则地输出资料。
图1是一个传统二维正/反离散余弦转换电路之框图;
图2是一个传统转置存储器之框图;
图3是另一种传统转置存储器之框图;
图4是一个根据本发明为基礎之二维正/反离散余弦转换电路之框图;
图5是一个根据本发明的详细转置存储器的框图;
图6(a),(b),(c),(d)是根据本发明的具体写入地址记数器顺序;
图7实例说明图5之转置存储器状态:根据图6(a)之写入地址记数器顺序并将第一个矩阵之部分写入后的状态;
图8(a),(b),(c),(d)是根据本发明的具体读出地址记数器顺序;
图9实例说明图5之转置存储器状态:根据图6(d)的写入地址记数器顺序,将第二个矩阵的部分写入,且根据图8(a)之读取地址记数器顺序读出第一个矩阵后的状态;
图10实例说明另一图5之转置存储器状态:根据图6(a)之写入地址记数器顺序,将第三个矩阵之部分写入,且根据图8(d)之读取地址记数器顺序读出第二个矩阵后的状态;
图11实例说明一种图5之转置存储器状态;根据第图6(b)之写入地址记数器顺序并将第一个矩阵之部分写入后的状态;
图12实例说明图5之转置存储器状态:根据图6(c)之写入地址记数器顺序,将第二个矩阵之部分写入,且根据图8(b)之读取地址记数器顺序读出第一个矩阵后的形态;
图13实例说明图5之转置存储器状态;根据图6(b)之写入地址记数器顺序,将第三个矩阵之部分写入,且根据图8(c)之读取地址记数器顺序读出第二个矩限后的状态。
图4系一个二维正/反离散余弦转换电路架构100。如图所示,根据本发明的二维正/反离散余弦转换电路架构100包含一个一维正或反离散余弦转换电路110,其中输出居中矩阵Y为Y0,Y2,……,Y63(正离散余弦转换)或Y0,Y7,Y1,Y6,Y2,Y5,……,Y60(反离散余弦转换)之顺序。根据本发明,输出的矩阵Y经由n位元的汇流排111传给一个转置存储器120。此转置存储器120输出转置矩阵Yt为拖曳栏行顺序至正离散余弦转换电路140(或栏行顺序至反离散余弦转换电路140),且一次输出二个元素。矩阵Yt则传至仅含有一个算术逻辑单元(Aritnmetic Logic Unit——ALU)135的前处理器130。既然本发明之转置存储器120可以正确地输出矩阵Yt,因此现有技术所需的平移/平行寄存器13、15(如图2所示)可省略。
图5系本发明的转置存储器的详图。如图所示,一个可以转置N×N矩阵之转置存储器包含四个双端口随机存取存储器141,142,143,144。每一个双端口随机存取存储器141-144为
用来储存一个居中矩阵Y的元素的四分之一。每一个双端口随机存取存储器141-144包含一个对应资料输入端口141-1,142-1,143-1,144-1,分别用来接收经由n位元汇流排111,自图4的一维正/反离散余弦转换电路110输出的居中矩阵Y的元素。每一个双端口随机存取存储器141-144也包含一个对应地址写入端口141-2,142-2,143-2,144-2,分别连接至一个写入地址记数器151。另外,每一个双端口随机存取存储器又包含一个许可端(enable terminal)141-3,142-3,143-3,144-3,分别经由对应线151-1,151-2,151-3,151-4连接至写入地址记数器151。当写入地址记数器151在151-1,151-2,151-3,151-4等线产生许可信号,对应的双端口随机存取存储器则被许可。被许可的双端口随机存取存储器则根据写入地址记数器151的地址指示。将出现在资料输入线111的居中矩阵元素写入存储元件。
除了写入地址记数器151,本转置存储器120端口含有一个读取地址记数器152,且分别连接到每一个双端口随机存取存储器141-144的地址读取端口141-4,142-4,143-4,144-4。另外,读取地址记数器152输出二个选择控制信号S1和S2。当接收到读取地址记数器152的地址时,每一个双端口随机存取存储器141-142同时读出该地址指的存储元件值。双端口随机存取存储器141-144经由读取端口141-5,142-5,143-5和144-5读出元素。
选择控制信号S1连接至第一个多工器161。如图所示,多工器161自双端口随机存取存储器142及143的读取端口142-5及143-5接收输出元素。选择控制信号S2连接至第二及第三个多工器162及163。多工器161的输出分别传给多工器162及式工器163的一个资料输入,而双端口随机存取存储器141则输出资料至多工器162的另一个资料输入,双端口随机存取存储器144输出资料至多工器163的另一个资料输入。
如上所示,每一个双端口随机存取存储器141-144平行自地址读取端口141-5输出矩阵元素。但经过选择控制信号S1和S2,双端口随机存取存储器141,142,143,144的其中两个的元素即可时输出。
以下是本转置存储器120的运算说明。为了方便起见,假设每一个居中矩阵Y为8×8,而元素编号为Y0,Y1,……,Y8,Y9,……,Y63之行栏顺序。写入地址记数器151可以根据一串的写入计数顺序来对双端口随机存取存储器141-144的存储元件计数。举例来说,图6(a),(b),(c),(d)表示写入地址计数器151之四种不同的写入计数顺序。如图所示,每一个双端口随机存取存储器141-144分别包含用来存储16个矩阵元素之存储元件群171-0至171-15,172-0至172-15,173-0至173-15,174-0至174-15,编号1至64表示了写入地址计数器151写入各个元件之顺序。例如,根据图6(a),于第一周期(cycle),写入地址计数器151指到双端口随机存取存储器141的存储元件171-0。于第二周期,则指到双端口随机存取存储器141的存储文件171-1,以此类推。
由此可知,写入地址计数器151选择的计数顺序(图6(a)~(d))是根据居中矩阵Y之输入及输出元素的序列顺序(sequence order)来决定的。其输入及输出序列顺序详见表一。其中输出序列以括弧表示每一周期输出的元素对。
以下将讨论一个二维正离散弦转换的范例。如表一所示,图4之一维正离散余弦转换电路110将每一个居中矩阵Y以行栏序列输出。Y之元素中资料输入汇流排111以一周期一元素之速度输入转置存储器120。转置存储器120以拖电栏行顺序将输入的Y之元素再输出至前处理器135,而每个拖曳栏皆重覆一遍(如表1)。假设一维正离散余弦转换电路110序列地输出一串矩阵Y1,Y2,Y3,Y4,……,写入地址计数器151根据图6(a)之计数顺序计数。例如,首先将输入的元素Y0 1写入双端口随机存取存储器141的存储元件171-0,第二个元素Y:写入存储元件171-1,以此类推。前57个周期的矩阵Y的元素之写入及存储元件的指定详见表2。图7表示第57个周期之后双端口随机存取存储器141-144的状态。其中阴影部分表示空的存储元件。
与写入地址计数器151相类似,读取地址计数器152根据图8(a)-(d)之计数顺序计数。如图8(a)-(d)所示,读取地址计数器152在同一周期指到位于不同双端口随机存取存储器的两个存储元件。例如,根据图8(a),于第一周期,读取地址计数器152分别从双端口随机存取存储器141及143读出存储元件170-0及173-0内的元素。另外,矩阵每个输出栏对应之存储元件皆须重覆读取一次。例如图8(a),读取地址计数器152于第一至四周期指到双端口随机存取存储器141及143的一栏,也就是存储元件171-0,173-0,171-4,173-4,171-8,173-8,171-12,173-12。此一栏在第五至八周期又再读取一次。由此,读取地址计数器152在周期一至四分别读出元素对(Y0 1,Y56 1),(Y8 1,Y48 1),(Y16 1,Y40 1),(Y24 1,Y32 1),在周期五至八再分别读出一次。
为了使写入及读取地址计数器151及152能同时写入及读取矩阵元素,两者必须相互同步。假设第57周期后的双端口随机存取存储器状态为图7所示者,自第58周期开始,读取地址计数器152可根据图8(a)所示的顺序开始读出矩阵元素对。于是在第58个周期,写入地址计数器151将矩阵元素Y57 1存储于存储元件173-1内。另外,读取地址计数器152也自存储元件171-0及173-0读出元素对(Y0 1,Y56 1)。读取地址计数器152只须将一个地址输出至双端口随机存取存储器141-144的存储元件171-0,172-0,173-0,174-0即可达到读取之元素对。这是因为读取地址计数器152同时产生了适当的S1及S2选择控制信号,同以控制多工器161,162,163并选择正确的元素对输出。以上述为例,S1及S2即控制多工器161选择双端口随机存取存储器143的输出,并控制多工器162及163分别选择双端口随机存取存储器141及多工器161的输出。
由此,于第59个周期,读取地址计数器151将元素Y581写入存储元件173-2,且读取地址计数器152自存储元件171-4及173-4读取元素对(Y8 1,Y48 1)。此过程一直延续到第64个周期,详见表3。自第64个周期之后,写入地址计数器151已将矩阵Y1的最示元素Y36 1入,且读取地址计数器152也几乎将矩阵Y1的第一栏内的元素读完。
此时,写入地址计数器151将矩阵Y2的元素(Y0 2,Y1 2,……,Y8 2,Y9 2,……,Y63 2)写入双端口随机存取存储器141-144。不过,写入地址计数器151只可以将元素写入读取地址计数器152不再读取的存储元件内。例如,写入地址计数器151可将矩阵Y2第一行的元素写入目前储存了矩阵Y1第一栏元素的存储元件171-0,173-0,171-4,173-4,171-8,173-8,171-12,173-12。为了适当的存储矩阵Y2的元素,写入地址计数器151根据图6(d)之顺序计数那些读取地址计数器152不再需要之存储元件。因此,在第65个周期,当读取地址计数器152自存储元件171-12,173-12读出元素对(Y24 1,Y32 1)之同时,写入地址计数器151将元素Y0 2写入存储元件171-0。矩阵Y1的读取及矩阵Y2的写入一直延续到第121的周期,详见表3。自第121个周期之后,双端口随机存取存储器141-144的状态详见图9。其中阴影部分表示读取地址计数器152“不再需要”的存储元件部分。
自第122个周期始,读取地址计数器152开始将矩阵Y2的元素读出。不过,因为矩阵Y2的写入计数顺序(图6(d))不同于矩阵Y1的写入顺序(图6(a)),所以读取地址计数器152须以不同的计数顺序(图8(d))来计数。例如,在第122个周期,当读取地址计数器152自存储元件171-0,172-0读出元素对(Y0 2,Y56 2)之同时,写入地址计数器151将元素Y57 1写入存储元件172-4。这种同时分别根据图8(d)及图6(d)顺序的读与写一直延续到第128个周期,详见表4。
在第129个周期,写入地址计数器151开始将矩阵Y3的元素序列地写入那些读取地址计数器152不再需要的存储元件。此时,写入地址计数器151是根据图6(a)的计数顺序来计数。因此,在第129个周期,当读取地址计数器152从存储元件171-3,172-3读出元素对Y24 2,Y32 2之同时,写入地址计数器151将元素Y0 3写入存储元件171-0。这种同时根据图6(a)顺序的矩阵Y3之写入,与根据图8(d)顺序的矩阵Y2之读取,一直延续到第185个周期,详见表4。自第185个周期之后,双端口随机存取存储器141-144的状态详见图10。其中阴影部分表示读取地址计数器152“不再需要”的存储元件部分。
如图10所示,矩阵Y3所储存的元素与图7中矩阵Y1所存储的元素完全相同。因此,一个矩阵的写入与前一个矩阵的读取可以无限地同时延续下去。也就是说,只要单数矩阵Y1,Y3,……以图6(a)之计数顺序写入,偶数矩陈Y2,Y4,……以图6(d)之计数顺序写入,且交互以图8(a),(d)之计数顺序读出,那麽转置存储器120可以毫无间断地,不停地转置一个个居中矩阵Y。须注意图6(a)之写入计数顺序为相互转置。图8(a)与图8(d)之读取计数顺序为相互转置。
本转置存储器120也可应用在一个二维反离散余弦转换电路。如表1所示,第一个一维反离散余弦转换电路110以拖曳行栏序列经由汇流排111输出资料。第二个一维反离散余弦转换电路140须以栏行顺序一次读出居中矩阵Y的两个元素,且每一栏须重覆读取一次。假设图4之一维反离散余弦转换序列地输出矩阵Y1,Y2,Y3,……之元素,写入地址计数器151根据图6(b)之计数顺序将矩阵Y1之元素写入转置存储器120,如表5。也就是在第一周期,将Y0 1写入存储元件171-0;在第二周期,将元素Y7 1写入存储元件172-3;在第三调期,将元素Y11写入存储元件172-0;在第四周期,将元素Y6 1写入存储元件171-3,等等。图11表示第56个周期后双端口随机存取存储器141-144的状态,其中阴影部分表示空的存储元件。
表6显示了周期57与120之间,双端口随机存取存储器141-144同时读/写矩阵元素的对照。自周期57开始,读取地址计数器152根据第八(b)图之计数顺序读出矩阵Y1的元素。因此,在第57个周期,当读取地址计数器152从存储元件171-0,173-0读取元素对(Y0 1,Y8 1)之同时,写入地址计数器151将元素(Y0 1,Y8 1)之同时,写入地址计数器151将元素Y56 1写入存储元件173-12。
在第65个周期,写入地址计数器151开始将矩阵Y2的元素序列地写入那些读取地址计数器152不再需要的存储元件。此时,写入地址计数器151是根据图6(c)的计数顺序来计数。因此,在第65个周期,当读取地址计数器152从存储元件172-0,174-0读出元素对(Y1 1,Y9 1)的同时,写入地址计数器151将元素Y0 2写入存储元件171-0。这种同时根据图6(c)顺序的矩阵写入,与根据图8(b)顺序的矩阵读取,一直延续到第120个周期,详见表6。自第120个周期之后,双端口随机存取存储器141-144的状态详见图12。其中阴影部分表示读取地址计数器152“不再需要”的存储元件部分。
表7显示了周期121与184之间,双端口随机存取存储器141-144同时读/写矩阵元素的对照。写入地址计数器151根据图6(c)之计数顺序一直计数至第128个周期用以写入矩阵Y2的元素。然后再根据图8(c)计数自第121个周期至第184个周期用以写入矩阵Y3的元素。自第184个周期之后,双端口随机存取存储器141-144的状态详见图13。其中阴影部分表示读地址计数器152“不再需要”的存储元件部分。图13所示的状态,与图11的非常类似,因此上述之同时读/写矩阵元素之过程可以不停地延续下去。
就如二维正离散余弦转换电路100一般,本转置存储器120可在二维反离散余弦转换电路100内毫无间断,不停地转置一个居中矩阵。在此情况下,写入地址计数器151交互以图6(b)、(c)之计数顺序写入矩阵元素,且交互以图8(b)、(c)之计数顺序读取矩阵元素。须注意图6(b)与图6(c)之写入计数顺序为相互转置。图8(b)图与图8(c)之读取计数顺序为相互转置。
如上所述,写入地址计数器151将矩阵元素存储在双端口随机存取存储器141-144的顺序是为了使矩阵元素对很容易地读出。例如,当矩阵元素为输出至一维正离散余弦转换电路140时,输出顺序为拖曳栏行顺序,且每个拖曳栏皆重覆一次,也就是(Y0,Y56),……,(Y24,Y32),……,(Y0,Y56),……,(Y24,Y32),(Y0,Y56),……,(Y24,Y32),(Y31,Y39),……。每一元素对的元素来自不同的象限,因此读取地址计数器152可以很容易的读出。同样的,当矩阵元素为输出至一维反离散余弦转换电路140时,输出顺序为栏行顺序,且每栏皆重覆一次,也就是(Y0,Y8),……,(Y48,Y56),(Y0,Y8),……,(Y48,Y56),(Y55,Y63)……。每一元素对的元素分别来自单行和双行,因此读取地址计数器152可以很容易的读出。
由此可见,写入地址计数器151将矩阵元素写入双端口随机存取存储器141-144之特定存储元件使得读取地址计数器152可很容易地读出矩阵元素对。这只须要适当地控制S1与S2选择控制信号即可达到。例如,如图8(a)与表3所示,为了读出元素对(Y8,Y48),读取地址计数器152只须输出地址并指到存储元件171-4,172-4,173-4,174-4,同时适当选择控制信号S1与S2以输出双端口随机存取存储器141的存储元件171-4与双端口随机存存储器143的存储元件173-4,那对应矩阵元素对(Y8,Y48)即可读出。
本转置存储器120也可根据不同的输出序列顺序输出不同的矩阵。例如,第一个输入的矩阵的以拖曳栏行顺序输出,而第二个输入的矩阵是以栏行叶序输出。不过在这种情况下,第一个矩阵必须从转置存储器120全部读出,第二个矩阵才能再写入。因此,造成了一个矩阵长度的周期延迟。不过,却已大大的改善传统转置存储器120所须的系统长度的周期延迟。系统长度的周期延迟即指一个矩阵传达经过两个一维转换电路,转置存储器,及前/后处理器所需的时间。
简单的说,本转置存储器包含四个双端口存储器,一个写入地址计数器及一个读取地址计数器。假使一矩阵为输出至正离散余弦转换电路,那麽写入地址计数器将矩阵元素根据不同象限写入特定的双端口存储器。假使一矩阵为输出至反离散余弦转换电路,那麽写入地址计数器将矩阵元素根据单或双栏与行写入特定的双端口存储器。因此,本转置存储器占较小的集成电路面积。
本发明虽以所揭露之各项实施例来说明,但其申请之权利要求范围并不受这些实施例内容所局限。任何其他依本发明所申请之权利范围,其本意、原理、精义与内涵之实质,而加以实施者,都已包括在本发明按下列本申请的各项权利要求所界定的范围之内。
表1
电路110 |
输入序列 |
电路140 |
输出序列 |
1-D DCT |
Y0,Y1,...,Y8,Y9,…,Y63 |
1-D DCT |
(Y0,Y56),...,(Y34,Y32),(Y0,Y56),...,(Y24,Y32),(Y32,39) |
1-D IDCT |
Y0,Y7,...,Y8,Y51,...,Y60 |
1-D IDCT |
(Y0,Y8),...,(Y48,Y56),(Y0,Y8),...,(Y48,Y56),(Y55, Y63) |
1-D DCT |
Y0,Y1,...,Y3,Y9,...,Y63 |
1-D IDCT |
(Y0,Y8),...,(Y46,Y56),(Y0,Y9),...,(Y48,Y56),(Y55,Y63) |
1-D IDCT |
Y0,Y7,..,Y8,Y51,…,Y60 |
1-D DCT |
(Y0,Y56),...,(Y24,Y32),(Y3,Y55),...,(Y24,Y32),(Y31,Y39) |
表2
周期 |
输入 |
1 |
Y1 0171-0 |
2 |
Y1 1171-1 |
3 |
Y1 2171-2 |
4 |
Y1 3171-3 |
5 |
Y1 4172-3 |
6 |
Y1 5172-2 |
7 |
Y1 6172-1 |
8 |
Y1 7172-0 |
9 |
Y1 8171-4 |
10 |
Y1 9171-5 |
11 |
Y1 10171-6 |
12 |
Y1 11171-7 |
13 |
Y1 12172-7 |
14 |
Y1 13172-6 |
15 |
Y1 14172-5 |
16 |
Y1 15172-4 |
周期 |
输入 |
17 |
Y1 16171-8 |
18 |
Y1 17171-9 |
19 |
Y1 18171-10 |
20 |
Y1 19171-11 |
21 |
Y1 20172-11 |
22 |
Y1 21172-10 |
23 |
Y1 22172-9 |
24 |
Y1 23172-8 |
25 |
Y1 24171-12 |
26 |
Y1 25171-13 |
27 |
Y1 26171-14 |
28 |
Y1 27171-15 |
29 |
Y1 28172-15 |
30 |
Y1 29172-14 |
31 |
Y1 30172-13 |
32 |
Y1 31172-12 |
周期 |
输入 |
33 |
Y1 32173-12 |
34 |
Y1 33173-13 |
35 |
Y1 34173-14 |
36 |
Y1 35173-15 |
37 |
Y1 36174-15 |
38 |
Y1 37174-14 |
39 |
Y1 38174-13 |
40 |
Y1 39174-12 |
41 |
Y1 40173-8 |
42 |
Y1 41173-9 |
43 |
Y1 42173-10 |
44 |
Y1 43173-11 |
45 |
Y1 44174-11 |
46 |
Y1 45174-10 |
47 |
Y1 46174-9 |
48 |
Y1 47174-8 |
周期 |
输入 |
49 |
Y1 48173-4 |
50 |
Y1 49171-5 |
51 |
Y1 50173-6 |
52 |
Y1 51173-7 |
53 |
Y1 52174-7 |
54 |
Y1 53174-6 |
55 |
Y1 54174-5 |
56 |
Y1 55174-4 |
57 |
Y1 56173-0 |
表3
周期 |
输入 |
输出 |
58 |
Y1 57173-1 |
(Y1 0,Y1 56)171-0,173-0 |
59 |
Y1 58173-2 |
(Y1 8,Y1 48)171-4,173-4 |
60 |
Y1 59173-3 |
(Y1 16,Y1 40)171-8,173-8 |
61 |
Y1 60174-3 |
(Y1 24,Y1 32)171-12,173-12 |
62 |
Y1 61174-2 |
(Y1 0,Y1 56)171-0,173-0 |
63 |
Y1 62174-1 |
(Y1 8,Y1 48)171-4,173-4 |
64 |
Y1 63174-0 |
(Y1 16,Y1 40)171-8,173-8 |
65 |
Y2 0171-0 |
(Y1 24,Y1 32)171-12,173-12 |
66 |
Y2 1171-4 |
(Y1 1,Y1 57)171-1,173-1 |
67 |
Y2 2171-8 |
(Y1 9,Y1 49)171-5,173-5 |
68 |
Y2 3171-12 |
(Y1 17,Y1 41)171-9,173-9 |
69 |
Y2 4173-12 |
(Y1 25,Y1 33)171-13,173-13 |
70 |
Y2 5173-8 |
(Y1 1,1 57)171-1,173-1 |
71 |
Y2 6173-4 |
(Y1 9,1 49)171-5,173-5 |
72 |
Y2 7173-0 |
(Y1 17,Y1 41)171-9,173-9 |
73 |
Y2 8171-1 |
(Y1 25,Y1 33)171-13,173-13 |
74 |
Y2 9171-5 |
(Y1 2,Y1 59)171-2,173-2 |
表4
周期 |
输入 |
输出 |
122 |
Y2 57172-4 |
(Y2 0,Y56)171-0,172-0 |
123 |
Y2 58172-8 |
(Y2 8,Y2 45)171-1,172-1 |
124 |
Y2 59172-12 |
(Y1 16,Y1 40)171-2,172-2 |
125 |
Y2 60174-12 |
(Y2 24,Y2 32)171-3,172-3 |
126 |
Y2 61174-8 |
(Y2 0,Y2 56)171-0,172-0 |
127 |
Y2 62174-4 |
(Y2 8,Y2 48)171-1,172-1 |
128 |
Y2 63174-0 |
(Y2 16,Y2 40)171-2,172-2 |
129 |
Y3 0171-0 |
(Y2 24,Y2 32)171-3,172-3 |
130 |
Y3 1171-1 |
(Y2 1,Y2 57)171-4,172-4 |
131 |
Y3 2171-2 |
(Y2 9,Y2 49)171-5,172-5 |
132 |
Y3 3171-3 |
(Y2 17,Y2 41)171-6,172-6 |
133 |
Y3 4172-3 |
(Y2 25,Y2 33)171-7,172-7 |
134 |
Y3 5172-2 |
(Y2 1,Y2 57)171-4,172-4 |
135 |
Y3 6172-1 |
(Y2 9,Y2 49)171-5,172-5 |
136 |
Y3 7172-0 |
(Y2 17,Y1 41)171-6,172-6 |
137 |
Y3 8171-4 |
(Y2 25,Y2 33)171-7,172-7 |
138 |
Y3 9171-5 |
(Y2 2,Y2 58)171-8,172-8 |
表5
周期 |
输入 |
1 |
Y1 0171-0 |
2 |
Y1 7172-3 |
3 |
Y1 1172-0 |
4 |
Y1 6171-3 |
5 |
Y1 2171-1 |
6 |
Y1 5172-2 |
7 |
Y1 3172-1 |
8 |
Y1 4171-2 |
9 |
Y1 8173-0 |
10 |
Y1 15174-3 |
11 |
Y1 9174-0 |
12 |
Y1 14173-3 |
13 |
Y1 10173-1 |
14 |
Y1 13174-2 |
15 |
Y1 11174-1 |
16 |
Y1 12173-2 |
周期 |
输入 |
17 |
Y1 16171-4 |
18 |
Y1 23172-7 |
19 |
Y1 17172-4 |
20 |
Y1 22171-7 |
21 |
Y1 18171-5 |
22 |
Y1 21172-6 |
23 |
Y1 19172-5 |
24 |
Y1 20171-6 |
25 |
Y1 24173-4 |
26 |
Y1 31174-7 |
27 |
Y1 35174-4 |
28 |
Y1 30173-7 |
29 |
Y1 26173-5 |
30 |
Y1 29174-6 |
31 |
Y1 27174-5 |
32 |
Y1 28173-6 |
周期 |
输入 |
33 |
Y1 32171-8 |
34 |
Y1 39172-11 |
35 |
Y1 33172-8 |
36 |
Y1 38171-11 |
37 |
Y1 34171-9 |
38 |
Y1 37172-10 |
39 |
Y1 35172-9 |
40 |
Y1 36171-8 |
41 |
Y1 40173-8 |
42 |
Y1 47174-11 |
43 |
Y1 42173-8 |
44 |
Y1 46173-11 |
45 |
Y1 42173-9 |
46 |
Y1 45174-10 |
47 |
Y1 43174-9 |
48 |
Y1 44173-10 |
周期 |
输入 |
49 |
Y1 48171-12 |
50 |
Y1 55172-15 |
51 |
Y1 49172-12 |
52 |
Y1 54171-15 |
53 |
Y1 50171-13 |
54 |
Y1 53172-14 |
55 |
Y1 51172-13 |
56 |
Y1 52171-14 |
表6
周期 |
输入 |
输出 |
57 |
Y1 56173-12 |
(Y1 0,Y1 8)171-0,173-0 |
58 |
Y1 63174-15 |
(Y1 16,Y1 24)171-4,173-4 |
59 |
Y1 57174-12 |
(Y1 32,Y1 40)171-8,173-8 |
60 |
Y1 62173-15 |
(Y1 49,Y1 56)171-12,173-12 |
61 |
Y1 58173-13 |
(Y1 0,Y1 3)171-0,173-0 |
62 |
Y1 61174-14 |
(Y1 16,Y1 24)171-4,173-4 |
63 |
Y1 59174-13 |
(Y1 32,Y1 40)171-8,173-8 |
64 |
Y2 60173-14 |
(Y1 49,Y1 55)171-12,173-12 |
65 |
Y2 0171-0 |
(Y1 1,Y1 9)172-0,174-0 |
66 |
Y2 7173-12 |
(Y1 17,Y1 25)172-4,174-4 |
67 |
Y2 1173-0 |
(Y1 33,Y1 41)172-8,174-8 |
68 |
Y2 6171-2 |
(Y1 49,Y1 57)172-12,174-12 |
69 |
Y2 2171-4 |
(Y1 1,Y1 9)172-0,174-0 |
70 |
Y2 5173-8 |
(Y1 17,Y1 25)172-4,174-4 |
71 |
Y2 3173-4 |
(Y2 33,Y1 41)172-8,174-8 |
72 |
Y2 4171-8 |
(Y2 49,Y1 57)172-12,174-12 |
73 |
Y2 8172-0 |
(Y1 2,Y1 10)171-1,173-1 |
表7
周期 |
输入 |
输出 |
121 |
Y2 56172-3 |
(Y2 0,Y2 8)171-0,172-0 |
122 |
Y2 63174-15 |
(Y2 16,Y2 24)171-1,172-1 |
123 |
Y2 57174-3 |
(Y2 32,Y2 40)171-2,172-2 |
124 |
Y2 62172-15 |
(Y2 48,Y2 56)171-3,172-3 |
125 |
Y2 58172-7 |
(Y2 0,Y2 8)171-0,172-0 |
126 |
Y2 61174-11 |
(Y2 16,Y2 24)171-1,172-1 |
127 |
Y2 59174-7 |
(Y2 32,Y2 40)171-2,172-2 |
128 |
Y2 60172-11 |
(Y2 49,Y2 56)171-3,172-3 |
129 |
Y3 0171-0 |
(Y2 1,Y2 9)173-0,174-0 |
130 |
Y3 7172-3 |
(Y2 17,Y2 25)173-1,174-1 |
131 |
Y3 1171-1 |
(Y2 33,Y2 41)173-2,174-2 |
132 |
Y3 6171-3 |
(Y2 49,Y2 57)173-3,174-3 |
133 |
Y3 2171-1 |
(Y2 1,Y2 9)173-0,174-0 |
134 |
Y3 5172-2 |
(Y2 17,Y2 25)173-1,174-1 |
135 |
Y3 3172-1 |
(Y2 33,Y2 41)173-2,174-2 |
136 |
Y3 4171-2 |
(Y2 49,Y2 57)173-3,174-3 |
137 |
Y3 8173-0 |
(Y2 2,Y2 10)171-4,172-4 |