二维逆离散余弦变换电路的制作方法

文档序号:7565981阅读:210来源:国知局
专利名称:二维逆离散余弦变换电路的制作方法
技术领域
本发明涉及实行二维逆离散余弦变换(IDCT)的电路,特别是,涉及使用了一对改进的一维IDCT电路的二维IDCT电路,该每一个一维IDCT电路由应用矩阵乘法运算实行其IDCT操作。
众所周知,数字化的视频信号的传输能发出比模拟信号的传输质量高得多的视频图像。当含有一系列图像“帧”的图像信号被以数字形式表示时,产生大量数据要传输,特别在高清晰度电视系统场合。然而,因为通常传输通道的可用频带宽度是有限的,为了通过有限的通道带宽传送大量数字数据,不可避免地要压缩或减少所传输数据的数量。
图像信号通常可被压缩而不严重影响它完整性,因为通常在一个信号帧的若干像素间以及相邻帧的像素间存在某些相关性或冗余。因此,多数现有技术图像信号编码方法采用的各种压缩技术(或编码方法)建立在利用或减少冗余的概念之上。
一类这种编码方法是关于利用存在于一单幅帧中的冗余的变换技术。一种这样的变换方法是二维(2-D)离散余变换(DCT),在Chen和Pratt的“Scene Adaptive Coder”(IEEE Transactions on Communication,COM-32,No.3(1984年3月))中有叙述。DCT被认为对图像压缩或被频带宽压缩在各种变换编码方法中是最有效的技术。在通过DCT达到带宽压缩时,一方块数字编码像素可以用行-列还原法靠用于实现二维DCT的二维或N×NDCT处理器来变换为频域,其中N×N块像素数据被输入到它那里,输入矩阵用N×NDCT矩阵相乘产生中间矩阵,然后中间矩阵的转置用同样的DCT矩阵相乘以产生所需的逆变换矩阵。变换矩阵的各元素然后可被量化并只有其中最强的项(energetic term)被选来传输。在接收端。逆离散余弦变换(IDCT)被完成以在空间域内重建原来的视频信号。IDCT也可以由与一个IDCT矩阵相乘及转置后与另外一个矩阵乘法来实现。
因为用于实际图像解码系统中的IDCT电路需要快速卷积操作的能力,多种用于包括VLSI(超大规模集成)装置的IDCT的快速操作的方案已被提出。
矩阵乘法包括构成二个N维矢量的内积来产生积矩阵的一个元素。因而输入矩阵的一行中的每一元素乘以DCT/IDCT矩阵一列的相应的元素,并将这些积加起来产生积矩阵的一个元素。对于变换一个8×8的像素块,8个积被加起来产生有64个元素的输出矩阵的一个元素。已有许多快速算法被推导出来降低需要计算的数量。例如,DCT/IDCT矩阵被还原成为几个导致蝶形结构的稀疏矩阵。使用了这种结构的VLSI装置的例子被描于一篇题为“A DiscreteFourier-Cosine Transform Chip”,刊于IEEE Journal on Selected Areas on Communication,Jan.’86,pp.49-61的论文中。蝶形结构明显减少计算的数量但仍要求许多高速乘法器,它也需要用于IC(集成电路)装置的大的芯片面积。此外,蝶形结构的其他缺点和内部接线零乱及芯片上布线很差使得实施蝶形结构的VLSI装置的效率相当差。
授予M.L.Niou等的美国专利No.4791598号提供了另外一种DCT/IDCT方案,涉及分布运算,该法兼有十分频、位串行结构、及以部分求和来实现矢量的内积,同时还有最小的存储器尺寸。结果是一种有高度规则的结构并且没有乘法器的体系。这是可能的,因为变换操作的固有性质,即,变换矩阵中各元素是常数,允许使用分布运算,其中存储器查阅的表、或只读存储器(ROM)被用作为乘法器的替代物;并且矩阵-矢量积是由几个同时发生的矢量内积实现的。这方案是有效的,因为它没有乘法器,并应用高度规则的结构。
但是,为支持上述方法的电路将是复杂的。此外,采用了位串行数据结构,矩阵乘法要逐位地实现,例如,一个时钟周期一位,这使得此方法不适用于实时用途。
所以本发明主要目的是提供一种高速IDCT电路,其硬件较不复杂,可用于实时图像处理系统,其中为在IDCT操作中实行的矩阵乘法采用了可编程逻辑阵列(PLA)。
按照本发明,提供了一种一维逆离散余弦变换(IDCT)电路用于对N个输入数据进行IDCT操作,从而提供N个输出数据,其中所述N个输入数据由N/2个奇数输入数据及N/2个偶数输入数据组成,该电路包括第一乘法装置,用于对所述偶数输入数据做预定的偶数IDCT矩阵的乘法,从而提供第一组N/2个中间数据,其中所述第一装置包括多个乘法器和多个加法器来完成对N/2个偶数输入数字的偶数IDCT矩阵乘法;第二乘法装置,用于对所述奇数的输入数据做预定的奇数IDCT矩阵的乘法,从而提供第二组N/2个中间数据,其中所述第二装置包括若干乘法器和多个加法器来完成对N/2个奇数输入数据的奇数IDCT矩阵乘法;加法装置,用于将每个第一组N/2个中间数据加到每一个相应的第二组中间数据上,从而提供第一N/2个输出数据;以及减法装置,用于将每个第二组N/2个中间数据从第一组N/2个中间数据的每一个相应的数据减去,从而提供第二N/2个输出数据。
本发明的上面的和其他的目的和特点从下面结合附图叙述的优选实施例将变得更清楚,这些附图是

图1表示本发明一维IDCT电路的框图;图2描述示于图1乘法器的详细结构;图3是本发明的二维IDCT电路的框图;图4表示示于图3中的转置存储器的详细框图;图5A到5B表示为了解释转置存储器工作的图;以及图6提供用于转置存储器的产生地址和使能信号的电路。
离散余弦变换(DCT)是由一组基本矢量组成的正交变换,这些基本矢量是抽样的余弦函数。假设N点一维DCT的输入数据为xj(N=2n;n是正整数),输出数据是yi,此输出数据yi可表示为yi=2/N·Σj=0N-1xj·u(i)·cos[(2j+1)iπ/2N]------(1)]]>其中i=0,1,…,N-1,j=0,1,……,N-1并且u(i)=1/2,i=01,i=1,2,...,N-1]]>(1)式进一步可用一矩阵来代表,如下Y=DX(2)其中X是N维输入矢量,由下式给出 Y是一个N维输出矢量,由下式给出 D是一个N×N DCT矩阵,由下式给出D=d0,0d0,1d0,2…d0,N-1d1,0d1,1d1,2…....…....….dN-1,0dN-1,1dN-1,2…dN-1,N-1------(5)]]>DCT矩阵D的元素可表示为di,j=2/N·u(i)·cos[(2j+1)iπ/2N]------(6)]]>相联系的有di,j=(-1)i·di,N-j-1(7)假设N是8,(2)式可用以上关系式改写为 利用(7)式关系,有可能将所要求DCT系数(即DCT矩阵的元素数目)及输入数据的相乘次数减少一半。相似地,关于IDCT,假设输入矢量和输出矢量是分别由(3)式及(4)式定义的X及Y,则Y和X间的关系可修改表示如下x0+x7x1+x6x2+x5x3+x4=c4c2c4c6c4c6-c4-c2c4-c6-c4c2c4-c2c4-c6·y0y2y4y6------(9a)]]>x0-x7x1-x6x2-x5x3-x4=c1c3c5c7c3-c7-c1-c5c5-c1c7c3c7-c5c3-c1·y1y3y5y7------(9b)]]>其中IDCT操作由使用奇数IDCT矩阵及偶数IDCT矩阵来表示。奇数的和偶数的IDCT矩阵的元素,例如,c2和c1用反转修正的DCT矩阵式(8)得到。
在式(9a)及(9b),N维输入矢量首先被分成N/2维偶数输入矢量,例如(y0,y2,y4,y6),及奇数的输入矢量,例如(y1,y3,y5,y7)。(9a)式偶数IDCT矩阵乘以偶数的输入矢量提供N/2个中间数据,它的每一个是输出矢量的二个元素之和。相似地,奇数输入矢量乘以(9b)式奇数IDCT矩阵,从而提供另一个N/2个中间数据,它的每一个是输出矢量的二个元素之差。
现有技术IDCT处理器根据式(9a)及(9b)完成IDCT操作,使用了分布运算和位串行数据结构(见授予M.L Niou等的美国专利No.4791598号)按照本发明,式(9a)和(9b)可进一步修正为x0+x7+x3+x4x1+x6+x2+x5=c4c4c4-c4·y0y4------(10a)]]>x1+x6-x2-x5x0+x7-x3-x4=-c2c6c6c2·y6y2------(10b)]]>x0-x7x1-x6x2-x5x3-x4=c1c3c5c7c3-c7-c1-c5c5-c1c7c3c7-c5c3-c1·y1y3y5y7------(10c)]]>其中IDCT操作由使用由修正(9a)式得到的归约(reduced)的偶数IDCT矩阵式(10a)及(10b),以及奇数IDCT矩阵式(9b)或(10c)来表示。
参见图1,那里是表示完成式(10a)到(10c)的一维IDCT操作的IDCT电路的框图。偶数IDCT单元100实现示于式(9a)偶数IDCT矩阵的乘法,而奇数IDCT单元200实现示于式(9b)的奇数IDCT矩阵的乘法。从式(9a)及(9b),可容易地看出二个IDCT单元100及200可以以相同的方式实现。
然而,如上面所解释的,式(9a)的矩阵相乘归约为式(10a)及(10b)的相乘,因此,在偶数IDCT单元100,式(10a)及(10b)的计算被完成,以更有效的处理来提供式(9a)的结果。
一个是输入矩阵的一行的输入矢量首先被分成偶数和奇数的输入矢量并被分别馈给偶数的及奇数IDCT单元100及200。例如,假设N=8,输入矢量(y0,y1,y2…y7)被分成为(y0,y2,y4,y6)及(y1,y3,y5,y7);且一对输入数据,例如,(y0,y1),在线IN-EVEN及IN-ODD在相同的时钟周期被输入。
具体地,偶数输入矢量式(10a)及(10b)首先被顺序馈入并存储在寄存和锁存单元111,然后被并行输出。输入矢量在寄存和锁存单元111的输出口被锁存4个时钟周期。在此期间,y2和y6通过多路转换器(MUX)122被传送到乘法器141和142,用于式(10b)的计算。y0和y4分别被提供给线113及2的补码变换器121,用于式(10a)的计算。
在偶数IDCT单元100中有二个乘法器,即MUL(c2)141及MUL(c6)142,用于完成式(10b)的矩阵相乘。由乘法器141及142所得的计算结果被送给加法器152。根据余弦函数的特性,在式(10a)中的c4是1且不需要与输入数据,例如,在式(10a)中的y0及y4相乘。因此,y0被直接送给加法器151,y4被通过2的补码变换器121送给加法器151。在这里处理的数据被表示为2的补码方式,2的补码变换器121可根据COEF-SIGN,即,指示在归约的IDCT矩阵中元素的符号的信号变换y4的符号以用于式(10a)的计算。二个乘法器141及142的操作及在线113及114上所提供的数据被描述于表1。
表1中每一行示出在每个时钟周期内给加法器151和152的4个输入数据。加法器151在每个时钟周期内将同一行的第4和第5列的元素相加,同时,加法器152将表1中取自第2和第3列的元素相加。在第1和第2个时钟周期中,得自二个加法器151和152的结果被送给加法器/减法器161,在那里表1内在一行中的4个元素被加在一起。在第3和第4时钟周期,加法器152的结果在加法器/减法器161中被从加法器151的结果中减去。
在加法器151和152及加法器/减法器161中的操作可以用表示在表2中的式(10a)到(10c)的关系来概括。
可容易看出加法器151和152的输出和式(10a)及(10b)的结果是一样的,加法器/减法器161的输出和式(9a)的结果一样。能从表1和2看到,同样的操作在乘法器141及142及加法器151和152中做二次以便提供在加法器/减法器161中所需的结果。如在上面所解释,偶数IDCT单元100完成如示于图(9a)那样的将偶数IDCT矩阵乘以偶数输入矢量的操作。
奇数IDCT单元200的全部操作相似于偶数IDCT单元100的操作,只是式(10c)的c1,c3,c5及c7需要4个乘法器。奇数输入矢量在寄存及锁存单元112的输出口上被锁存4个时钟周期并通过多路转换器123传送给4个乘法器143到146用于式(10c)的计算。
4个乘法器143到146在不同时钟周期的操作被表示在表3中。
每行的4个分量在一个对应的时钟周期在3个加法器153,154及162中相加,从而提供式(10c)左边的各元素。如上面所解释,奇数IDCT单元200将奇数IDCT矩阵乘以奇数输入矢量,如示于式(10c)那样。
如由式(9a)及(9b)表示的加法器/减法器161和加法器162的结果分别在加法器171及减法器172中被相加及相减,从而提供输出数据,例如,x0到x7。具体地,4对结果,例如(x0,x7),(x1,x6),x2,x5)及(x3,x4),被顺序地由来自加法器171的第一分量及来自减法器172的第二分量分别提供。该结果顺序地每一次一个地被提供并在舍入/截取单元181及182中考虑到在系统中所处理的数据的动态范围被舍入或截取到预定的位数。对下面的一个输入矢量,即N×N输入矩阵的另一行重复上面的程序。当一个输入矢量被锁存在寄存及锁存单元111及112的输出口上时,下一个输入矢量被输入该处,从而不停顿地启动下一个输入矢量的处理。
参看图2,示出了图1中所示的MUL(c2)141的详细框图。乘法器包括2的补码变换器210a及201b,PLA220a到220d及加法器230a到230c。
按照本发明,式(10b)的y2或y6由图1中所示的线115被输入MUL(c2)141。四个PLA220a到220d及3个加法器230a到230c完成二个正数之间的乘法运算,即,输入数据及属于示于式(10a)到(10c)中的IDCT矩阵的一个元素,例如c2的预定的相乘系数的绝对值之间的乘法运算。
因此,在输入是表示为2的补码形式的一个负数的场合,它首先在第一个2的补码变换器210a中被变换为相应的正数。输入的MSB(最高位)或符号位作为SIGN BIT被送到2的补码变换器210a以决定变换是否应在那里发生。
由2的补码变换器210a的输出被分成多个,例如4个位组。每个PLA接收一个位组并提供对应于该组输入位的相乘的部分结果,这里的部分结果是相乘系数乘以输入的位。PLA的结构可根据输入和相乘系数的位数事先决定。具体地,一个PLA包括对全部可能的输入位的全部部分结果,并根据该输入位由选择一个预定的部分结果完成乘法运算。得自四个PLA220a到220d的四个部分结果被移位及相加于加法器230a到230c,从而提供完整的相乘结果。在第二2的补码变换器210b中决定相乘结果的符号。具体地,假如输入是正的,相乘系数也是正的如表2中第2列的第1及第4时钟周期,加法器230c的结果作为MUL(c2)的输出被提供在图1所示的线116上。在二者皆为负的场合,结果一样。否则,即,假如一个并只有其中一个是负的,MUL(c2)的输出在第二2的补码变换器210b中被转换为对应的负数。代表输入数据和相乘系数的符号的信号SIGN BIT及COEF_SIGN被通过一个XOR(异或)门被输入到2的补码变换器210b以启动上面的操作。2的补码变换器210a和210b也包括PLA以便有效地实行变换。
这样,图1中所示乘法器141到146以比现有技术中建立在分布运算和位串行数据结构的基础上的方法更为有效方式完成表2和3中指定的乘法运算。乘法器的详细结构可依该输入和相乘系数的位码数目而变化,但它的主要结构仍保持相似于图2中那样。
在真正的应用时,如图像处理中,IDCT被在一个输入矩阵,即,二维DCT变换数据上实行的。二维IDCT电路可用一对如上所述的一维IDCT电路构成。一个二维DCT可以用下式表示Z=DtYD (11)其中Z是一个N×N输出矩阵,或一个经变换的矩阵;Y是一个N×N输入矩阵;Dt是DCT矩阵D的转置矩阵。
相似地,二维IDCT被表示为Y=CZCt(12)其中Z是一个N×N的输入矩阵,或一个变换矩阵;Y是一个N×N输出矩阵,或一个反变换矩阵;用逆变换DCT矩阵D可得到一个IDCT矩阵C。式(12)可修正为Y=C(CZt)t(13)从上式可容易看到二维IDCT可用将一维IDCT的结果转置及再将其交给一维IDCT处理来达到。
参看图3,那里示出按照本发明的IDCT电路来执行式(13)的计算。图3的电路有第一一维IDCT电路310,用于实行-N×N输入矩阵对IDCT矩阵相乘从而提供一个中间矩阵;一个转置存储器320,用于将中间矩阵转置;一个第二一维IDCT电路330,用于将经转置的中间矩阵作另一个IDCT矩阵乘法运算;以及一个控制器340,用于产生各种用在本发明IDCT电路中的控制信号。
二个一维IDCT电路310及330按在参阅图1和2所做的解释来设计。因此,一对输入数据,其中一个是奇数的,另一个是偶数的,在同样的时钟周期被输入第一一维IDCT电路310,中间矩阵的一对元素以上面所解释的方式被提供。从第一一维IDCT电路310提供的中间矩阵在转置存储器320中被转置,从而被提供给第二一维IDCT电路330。
参见图4,那里说明了图3中所示的转置存储器320的详细结构。转置存储器320包括四个双口RAM410a到410d,它的每一个可容纳16个中间矩阵的元素;和附加电路,用来作转置操作。从一维IDCT电路310输出的中间矩阵被分成4组,即,偶-偶、奇-偶、偶-奇、及奇-奇,并被存储在相应的双口RAM410a到410d,如在图5A到5B中所示,其中xij表示中间矩阵第i行第j列的元素。例如,在图5A情况,双口RAM偶-偶410a存储其列数及行数均为偶数的数据,而双口RAM偶-奇410c存储其列数是奇数,行数是偶数的数据。在图5A及5B圆圈中的数字表示相应的双口RAM的地址。为提供经转置的中间矩阵给第二一维IDCT电路330,数据以和中间矩阵输入转置存储器320的顺序不同的顺序被输出。
如上所述,在图1中线OUT_EVEN及OUT_ODD上所提供的中间矩阵被输入到线DIN_EVEN及DIN_ODD,如表4所示其中xij(i=0,…7,j=0,……7)指的是以下式表示的中间矩阵X的元素X=CZt(14)在上式中,Zt被用来代替Z,表示输入矩阵逐行地被提供给第一一维IDCT电路310。
经比较表4和图5A、5B,对于四个双口RAM410a到410d的用来以在图5A和5B中所描述的方式写中间矩阵的一连串的地址可容易地推导出如表5所示。
表5的上一半和下一半分别表示按图5A和5B对四个双口RAM410a到410d中每一个的写地址。在表5中,x表示在那个时钟周期里没有数据被存入相应的双口RAM。
以图5A或图5B的方式被存入双口RAM410a到410d的数据以转置的顺序由图4中线DOUT_EVEN及DOUT_ODD被提供给第二一维IDCT电路330。当当前存在双口RAM410a到410d中的中间矩阵的元素被从那里检出的同时,从下一个输入矩阵计算得来的下一个中间矩阵被输入到那里。为了防止数据的任何丢失,双口RAM410a到410d的读和写操作应该设计得使新数据被存入一个地址,这里先前所存的中间矩阵数据已经被取出。为了将如图5A那样存储的当前中间矩阵进行转置,存储在双口RAM410a和410b的第一列中的中间矩阵的第一列先被取出。在双口RAM410a和410b的第一列中的数据被取出之后,下一个中间矩阵的数据可被写入以代替取走的数据。下一个块的头8个数据以图5B的双口RAM EVEN_EVEN410a及Odd_EVEN410b的第一列的那种方式被存入,以防止保留在双口RAM410a及410b的第二到第四列中的当前存储的中间矩阵内的数据丢失。下一码块的其余数据在存储于相应位置的数据被取走后以图5B的方式被存入。结果,连续的中间矩阵被交替地存入四个双口RAM410a到410d中,一次如图5A所示,另一次如图5B所示。这样做后,数据的连续块可在四个双口RAM中被存储及转置而不招致在转置过程中丢失数据。
回过来参看图4,成对地从第一一维IDCT电路310经线DIN_EVEN及DIN_ODD输入的一个数据块由应用4个多路转换器420a到420d以描述于图5A及5B的方式交替地被存入4个双口RAM中。中间矩阵的一对元素从双口RAM410a到410d经由多路转换器430被提供,从而被接到图3中示出的第二一维IDCT电路330。。这次数据以转置顺序取出。具体地,在头一列中的数据,例如,x00,x10,……x70,在头4个读的时钟周期里被取出。在一列中的数据以一个行的写的顺序用相似的方式被取出。如上面所述,在图3中的线DOUT_EVEN及DOUT_ODD上所提供的经转置的中间矩阵数据被归纳于表6。
经将上面的序列和图5A及5B相比较,可推论出用来取出以图5A的方式存储的数据的读的地址的顺序和按照图5B的写的地址顺序是一样的,或相反。
以上解释的读和写的操作可归纳为如表7a和7b所示。
读的周期在表7b中第30个写的周期开始以便防止丢失数据,如上面所解释,即,中间矩阵的29×2数据经由各输入线DIN_EVEN及DIN_OUT输入并存储入双口RAM之后,经转置的中间矩阵的头2个元素,例如,x00及x70从这里由线DOUT_ENEN及DOUT_ODD被取出。读和写的时钟周期这样决定使在某地址内的数据只有当前中间矩阵的一个元素被写入之后才被取出,一个地址内所存的数据只有它被从这里取出之后才被下一个中间矩阵的元素代替。注意到x70是在第29个写的时钟周期写入而在第1个读周期或第30个写的周期被取出。地址的顺序以适时的方式来产生以便启动上面所述的读和写的操作。
回过来看图4,2个地址信号,例如读地址RAD_EE及写地址WAD_EE被输入到各双口RAM410a到410d。写启动输入信号,WEN_EE,用来判定是否可能把数据写入相应的双口RAM。当数据没有被写入一个双口RAM,例如,在表5中用x代表的那样,双口RAM的写操作被中止,因而无关的数据不能被写入。上面所表示的各种信号,例如RAD_EE,WEN_OE,WAD_00,利用示于图6的电路来产生。在图6中描述的电路也可合并到示于图3中的控制器340中。
读/写点信号发生器705根据时钟信号提供一读及写点信号。读点信号指示对转置存储器320读各中间矩阵的操作的开始点,而写的点信号指示各中间矩阵写的操作的开始点。例如,写的点信号可在第1及第33写的时钟周期启动,而读点信号可在表7a及7b中第30写的时钟周期启动。
8个地址发生器710a到710d及720a到720d各产生标在括号内的地址序列。HOR_AD_GEN1 720a及HOR_AD_GEN2 720b产生写的地址用来存储数据,如图5A所示,而HOR_AD_GEN1 710a及HOR_AD_EGN2 710b产生读的地址用来提取已存储的如图5B的数据。相似地,VER_AD_GEN1 720c及VER_AD_GEN2 720d产生写的地址用来储存如图5B的数据,而VER-AD-GEN1 710c及VER_AD_GEN2 720d产生读的地址用来提取已储存的如图5A的数据。如上面所解释,读和写的地址利用T触发器712及722和多路转换器715a到715d及725a到725d在逐块基础上交替地产生。读的地址信号RAD_EE,RAD_EO,RAD_OE,及RAD_OO,以及写的地址信号WAD-EE,WAD_EO,WAD-OE及WAD-OO被提供给相应的双口RAM,如图4所示。
对于写的操作,也产生写的启动信号。4个双口RAM中的二个利用示于图6中的启动信号发生电路740在如表5中所说明的那样在相同的时间被启动。
由使用了上面解释的地址及启动信号,转置中间矩阵被输入到第二一维IDCT电路330,如在图3中所示。
参看表7a及7b,给第二一维IDCT电路330的读的数据或输入数据的顺序不同于给第一一维IDCT电路310的输入数据顺序。具体地,第一中间矩阵的,例如x00,x60,x20,x40被耦合到第二一维IDCT电路330。第二一维IDCT电路330完成和第一一维IDCT电路310同样的操作,只是前者使用不同的输入数据。因此,第二一维IDCT电路330可如图1中所描述的那样来构成。输入矢量被顺序地输入、储存和锁存于寄存和锁存单元111及112,如图1所示;因而,对于第一和第二一维IDCT电路,图1中电路的工作除了寄存和锁存单元111及112外是相同的。
使用了上面解释的二维IDCT电路,由将一维IDCT的结果转置并再使其作一维IDCT处理可得到二维IDCT。
本发明已结合具体实施例进行叙述,对本领域的技术人员可知可以对之作出各种改变和修正而不偏离由权利要求书限定的发明精神和范围。
表1
表2
表3
表4
表5
表6
表7a
表7b
权利要求
1.一种一维逆离散余弦变换(IDCT)电路,用于对N个输入数据进行IDCT操作从而提供N个输出数据,其中所述N个输入数据由N/2个奇数输入数据及N/2个偶数输入数据组成,该电路包括第一乘法装置,用于进行预定的偶数IDCT矩阵对所述偶数输入数据的乘法运算,从而提供第一组N/2个中间数据,其中所述第一装置包括多个乘法器和多个加法器来完成该偶数IDCT矩阵对N/2个偶数输入数据的乘法运算;第二乘法装置,用于进行预定的奇数IDCT矩阵对所述奇数输入数据的乘法运算,从而提供第二组N/2个中间数据,其中所述第二装置包括若干乘法器和多个加法器来完成奇数IDCT矩阵对N/2个奇数输入数据的乘法运算;加法装置,用于将各第一组N/2个中间数据加到第二组中间数据各相应的数据上,从而提供第一N/2个输出数据,以及减法装置,用于将各第二组N/2个中间数据从第一组N/2个中间数据的各相应数据中减去的运算,从而提供第二N/2个输出数据。
2.根据权利要求1的电路,其特征是其中各所述乘法器将包括在奇数或偶数IDCT矩阵中的预定的相乘系数和向其输入的数据相乘,其包括当输入数字是一个负数时将所述输入数据变换为其2的补码的装置;将输入数据分成预定数目的输入位组的装置;预定数目的可编程逻辑阵列,其每一个包括对所有可能的输入位组的部分积,且选择对应于各该输入位该结果组的一个部分积;一个装置,用来相加所选择的部分积,从而提供相乘的结果,该结果是输入数据和相乘系数间乘积的绝对值;一个装置,用来根据预定的相乘系数和输入数据的符号来决定相乘的结果的符号;以及一个装置,用来在所得相乘结果的符号被判定为负时将此相乘结果变换为其2的补码。
3.根据权利要求1的电路,其特征是其中所述N为8,所述偶数IDCT矩阵的相乘运算表示为x0+x7x1+x6x2+x5x3+x4=c4c2c4c6c4c6-c4-c2c4-c6-c4c2c4-c2c4-c6·y0y2y4y6]]>以及,所述奇数IDCT矩阵的相乘运算表示为x0-x7x1-x6x2-x5x3-x4=c1c3c5c7c3-c7-c1-c5c5-c1c7c3c7-c5c3-c1·y1y3y5y7]]>第一和第二组中间数据分别包括(x0+x7),(x1+x6),(x2+x5)及(x3+x4),和(x0-x7),(x1-x6),(x2-x5)及(x3-x4),其中(y0,y1,y2…y7)表示N个输入数据,而(x0,x1,x2,…x7)表示N个输出数据。
4.根据权利要求3的电路,其特征是其中所述偶数IDCT矩阵的相乘运算被修正为x0+x7+x3+x4x1+x6+x2+x5=c4c4c4-c4·y0y4]]>x1+x6-x2-x5x0+x7-x3-x4=-c2c6c6c2·y6y2]]>
5.一种二维IDCT电路,用于对一个N×N输入矩阵用行-列还原法进行IDCT操作来提供一个N×N输出矩阵,该电路包括(a)第一IDCT电路,用来通过对N×N输入矩阵乘以预定的IDCT矩阵对其实行一维IDCT,产生N×N中间矩阵,该电路包括多个乘法器,每一个乘法器将包括在IDCT矩阵中的预定的相乘系数乘以向其输入的数据,该数据是所述N×N输入的一个元素;(b)N×N转置存储器;(c)将所述N×N中间矩阵储存所述N×N转置存储器的装置;(d)第二IDCT电路,用于对储存在N×N转置存储器中的N×N中间矩阵的转置矩阵乘以预定的IDCT矩阵以对其实行一维IDCT,以产生所述的N×N输出矩阵,该电路包括多个乘法器,其每一个将包括在IDCT矩阵中的一预定的相乘系数乘以一向其输入的、是所述N×N中间矩阵的一个元素的数据;以及(e)一个装置,用来从N×N转置存储器中读出N×N中间矩阵的装置,该中间矩阵被输入到第二IDCT电路中去,其中包括在第一和第二IDCT电路中的每一个所述乘法器具有(i)用来在输入数据是一个负数的情况下将所述输入数据变换为其2的补码的装置;(ii)将输入数据分成预定数目的输入位的组的装置;(iii)预定数目的可编程逻辑阵列,其每一个包括对所有可能的输入位组的部分积,并选择对应于各所述输入位组的部分积之一;(iv)将所选择的部分积加起来,从而提供相乘结果的装置,该相乘结果是输入数据和相乘系数间的乘积的绝对值;(v)根据预定的相乘系数和输入数据的符号决定该相乘结果的符号的装置;(vi)当相乘结果的符号被判定为负情况下将相乘结果变换为其2的补码的装置。6、根据权利要求5的电路,其特征是所述的N为8,所述IDCT矩阵乘法运算对第一和第二IDCT电路被表示为x0+x7x1+x6x2+x5x3+x4=c4c2c4c6c4c6-c4-c2c4-c6-c4c2c4-c2c4-c6·y0y2y4y6]]>以及x0-x7x1-x6x2-x5x3-x4=c1c3c5c7c3-c7-c1-c5c5-c1c7c3c7-c5c3-c1·y1y3y5y7]]>其中,对第一IDCT电路(y0,y1,y2……y7)是输入矩阵的一行,(x0,x1,x2……x7)是中间矩阵的一行;而对第二IDCT电路(y0,y1,y2…y7)是中间矩阵的一行,(x0,x1,x2…x7)是输出矩阵的一行。
全文摘要
一种IDCT电路,包括一对一维IDCT电路和一转置存储器用来用行-列还原法产生N×N输入矩阵的二维IDCT,输入矩阵被乘以N×NIDCT矩阵在第一IDCT电路中产生一中间矩阵,其被储存在转置存储器中;此中间矩阵的转置在第二IDCT电路中被乘以同样的系数矩阵产生逆变换矩阵。各一维IDCT电路,用乘以预定的IDCT矩阵实行IDCT操作,包括多个PLA,其每一个将输入的输入数据乘以预定的相乘系数,系数是所述IDCT矩阵的一元素。
文档编号H04N7/26GK1142162SQ95101990
公开日1997年2月5日 申请日期1995年1月28日 优先权日1995年1月28日
发明者金圣贞 申请人:大宇电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1