二维反离散余弦转换装置的制作方法

文档序号:3429724阅读:213来源:国知局
专利名称:二维反离散余弦转换装置的制作方法
技术领域
本发明涉及一种反离散余弦转换(Inverse Discrete CosineTranform,下称IDCT)装置,特别涉及一种运用于超大型集成电路的IDCT装置。
离散余弦转换(Discrete Cosine Transform,下称DCT)或IDCT因其快速演算法的出现,已为广大用户所应用,并逐渐发展成各种音频、视频信号压缩处理所需的核心部份。在符合各种已有的音频、视频信号标准,例如JPEG(Joint Photographic Experts Group)、MPEG(Moving Picture Experts Group)和H.261等的情况下,提高DCT(IDCT)的效率已成为图像信息压缩功能改善的主要课题,以致各种运算法则相继提出。
以往,在运算法则未臻完善时,实际应用于超大型集成电路中的DCT/IDCT电路设计既大且杂,甚至因为转换效率过低而无法提供较完善的信息压缩服务。以

图1所示的已知普通IDCT电路结构为例,通过组合电路10将输入讯号,例如从y0到y7的八个数据,加以处理,而产生(y0,y1),(y2,y3),(y4,y5)和(y6,y7)四组组合数据,并将其依次送入第一至第四转换电路12至15和第五至第八转换电路16至19。其中,各转换电路的结构包括有参数存储器22、乘法器24、寄存器26和32,加法器28和累加器30。乘法器24将组合电路10提供的数据与存储器22内储存的IDCT参数相乘后,经寄存器26送至加法器28,以便与累加器30内值相加,再储入寄存器32。选择器34和36分别从转换电路12至15和16至19内的寄存器取得最后结果输出至加法器37和减法器38进行处理,再由排序电路40重新排序后输出,从而完成IDCT运算。
在图1已知普通IDCT电路中,每一转换电路内都有乘法器24,但乘法器运算速度过慢,将使IDCT处理效率降低,难以符合实时转换的要求。有的设计以只读存储器(ROM)取代乘法器,然而由于占有较大硬件空间,并需要以较复杂的电路相配置,这种设计有悖于超大型集成电路高密度化的目的。
因此,本发明的主要目的在于提供一种二维IDCT装置,利用一组分散式数值运算(Distributed Arithmetic,下称DA)结构,搭配若干输入输出缓冲器,以执行二维实时IDCT运算。
本发明的另一目的在于提供一种二维IDCT装置,通过输入输出缓冲器的定址功能控制输入输出资料顺序,从而避免复杂的电路配置,缩小IDCT装置硬件空间,满足超大型集成电路的需要。
为实现本发明上述目的,提出一种二维IDCT装置,该装置包括一变速率双端口缓冲器(Rate Buffer)、二个选择器、二组寄存器、一组参数生成器、一组累加器、一组求和器、一对修尾器、一个行列转换缓冲器(Transpose buffer)和一反变速率双端口缓冲器(IRate buffer)。该装置以分散式数值运算方式,将二维IDCT运算简化为一维较小矩阵的IDCT运算,即在寄存器、参数生成器和累加器的分散处理后,再经求和器将其结合,并重复二次一维IDCT运算,配合变速率的输入/输出和特定的定址方式,实现在较小硬件空间要求下进行实时转换的目的。
以下结合一个优选实施例,并配合附图,对本发明的上述目的、特征和优点作详细说明。
图1是一已知普通二维反离散余弦转换(IDCT)装置的功能方框图。
图2是本发明一个优选实施例的IDCT装置结构图。
图3是图2装置中一个寄存器的结构图。
图4是图2装置中一个参数生成器的结构图。
图5是图2装置中一个累加器的结构图。
图6是图2装置中一个求和器的结构图。
图7是图2装置的一个时序关系图。
在描述本发明的详细结构前,先对本发明所利用的IDCT运算式加以说明。首先,以一个二维8×8IDCT运算为例,将8×8的矩阵Xij从矩阵Yuv转换回来,所需要的公式如下Xij=14Σu=07Σv=07C(u)·C(v)·cos(2i+1)uπ16·cos(2j+1)vπ16·Yuv----(1)]]>其中,参数C(u)和C(v)分别为C(u),C(v)={1,(u,v≠0)12,(u,v=0)----(2)]]>而一般为了节省运算量,上式可改写为Xij=12·Σv=07C(v)·cos(2j+1)vπ16[12·Σu=07C(u)·cos(2i+1)uπ16·Yuv]----(3)]]>即以两次一维8×8IDCT来执行原来的二维IDCT运算。
于是,若将上式的一维IDCT运算式展开,以矩阵格式表示一次进一行(或一列)的一维IDCT运算,则为 其中,矩阵内各元素分别为A=12cosπ4,B=12cosπ8,C=12sinπ8,D=12cosπ16,]]>E=12cos3π16,F=12sin3π16,G=12sinπ16]]>再进一步分析上述矩阵,因为它具有对称性,若要降低实际运算量,可将其中8×8的矩阵乘法加以调整,而产生如下的二个4×4矩阵公式x0x1x2x3=ABACAC-A-BA-C-ABA-BA-Cy0y2y4y6+DEFGE-G-D-FF-DGEG-FE-Dy1y3y5y7---(5)]]>x7x6x5x4=ABACAC-A-BA-C-ABA-BA-Cy0y2y4y6-DEFGE-G-D-FF-DGEG-FE-Dy1y3y5y7---(6)]]>由于这二个运算式共有两种乘法关系,即仅有二个参数矩阵形式,令其分别为M和N,则 亦即,一维IDCT矩阵乘法公式可写成x0x1x2x3=M0M1M2M3+N0N1N2N3,x7x6x5x4=M0M1M2M3-N0N1N2N3---(8)]]>也就是说,只要进行两组4×4的矩阵乘法,即上述的M和N,再将其结果分别相加或相减,即可求得X值。
由于上式的矩阵乘法不适宜用运算速度较慢的乘法器进行,而如前所述,也难以直接利用ROM予以取代,因矩阵参数A至G二进制位数若分别为n和m,则所需的ROM容量将会高达2m+n个字符。因此,本发明采用分散式数值运算(DA)方式,从而将所用的ROM容量控制在合理范围内。
分散式数值运算的原理如下。
首先,假设一4×4矩阵乘法为O0O1O2O3=C00C01C02C03C10C11C12C13C20C21C22C23C30C31C32C33I0I1I2I3----(9)]]>其中,C.I和O分别为m、n和m+n位,以上矩阵可改写为Oi=Σj=03Cij·Ij,i=0,..,3----(10)]]>于是,若以二补码二进制方式表示Ij,即Ij=-Ij0+Σk=1n-1Ijk·2-k----(11)]]>其中,第0位为最高有效数位(MSB),而IjO。为正负号数位(signbit),则Oi=Σj=03Cij·(-Ijo+Σk=1n-1Ijk·2-k)=Σj=03Cij·(-Ijo)+Σk=1n-1[Σj=03Cij·Ijk·2-k]----(12)]]>上式中[]内的运算是以I0、I1、I2、I3相同加权的二进制位所组成的数字来选择加Ci0、Ci1Ci2、Ci3或0,例如当I04I14I24I34=1011,则K=4时[]内的值为Ci0+Ci2+Ci3,因此可以用一个可存储16个字符且每字符有m+n位的ROM,放入预先算好的Ci0I0k+Ci1I1k+Ci2I2k+Ci3I3k值,通过I0kI1kI2kI3k的选择,即可获得[]内的运算结果;则上式中的乘法运算Cij·Ij只须一个16个字符长度且每个字符有m+n位的ROM与一个(m+n)位的加减法器,经n次累加就可获得,可省下许多硬件线路。
图2是本发明的一个优选实施例的IDCT电路结构图。如图2所示,该IDCT装置包括一变速率双端口缓冲器10,二个选择器11和12、二组寄存器13和14、一组参数生成器15、一组累加器16、一组求和器17、一对修尾器18和19、一个行列转换缓冲器20以及一反变速率双端口缓冲器21。
以下对图2中各组成单元作进一步说明。
变速率缓冲器10基本上是一个8×8字符大小的可同时输入/输出双端口缓冲器,而其输出数据的速率为输入数据的两倍,并且具有输入/输出端口分别定址的功能。
选择器11和12是二选一的选择器,可由输入端11a(12a)和11b(12b)二者中选择一个输入数据,而从13a(14a)输出数据。
寄存器13均为一个字符长度的寄存器,而每个字符的长度则可依照二维IDCT所遵循标准的精确度而定。寄存器14也是一个字符长度的寄存器,其输入端14a或14b可输入一个字符长度的数据,但输出时则由LSB开始,每次由输出端15a和15b输出二位。参见图3所示的线路,其中由八个一位寄存器141串联形成的奇数位寄存路径以15a为输出,而另八个串联的一位寄存器则为偶数寄存路径,以15b为输出。
参数生成器15内含两个16个字符长度的只读存储器151和一个加减法器152,如图4所示,其中每个字符的长度为m+n,而m和n由上述第(9)公式所定义,是依照二维IDCT所遵循标准的精确度而定。参数生成器15的输入端15a和15b中,由15a输入的数值比由15b输入的数值少一阶(order),因此,由只读存储器选出的结果,在输出至152a时须向右移一位才能与从152b输出的数据相加减。至于加减法器152,在一般工作状态下都作加法运算,只有当15b的输入为正负号数时,才进行减法运算。
累加器16的结构如图5所示,包括一个加法器161和一个寄存器162。累加器将寄存器162内储存的数值送回加法器161,同输入端16a输入的数值相加而逐渐得到累加值。
求和器17是由一加法器171和一减法器组合而成,请参照图6所示的结构。求和器主要用于执行前述(12)式的加减法运算,而将结果从输出端1Sa0、18a1......、18a7输出。
修尾器18用于将18a0、18a1、18a2、18a3......18a7的输入修尾成为具有m位的数值,而修尾器19则将18a0、18a1、18a2、18a3......18a7的输出剪尾为9位数值,以符合IDCT对输出的要求。
行列转换缓冲器20是一个8×8字符长度的缓冲器,它不仅可对输入资料进行行列转换,还可根据实际需求对其输入输出端口顺序进行定址。
反变速率缓冲器21则是一个8×8字符长度可同时输入/输出的双端口缓冲器,其输入端口可同时输入8个字符,而输出端口则可依照前述输出资料区的输出顺序进行定址。
本发明直接选定8×8码组大小的二维IDCT运算来实施,最主要是因为目前几乎所有图像处理的标准,都是采用8×8码组大小的二维DCT/IDCT,且在本发明中一维IDCT运算周期(latency)有不能大于2N-1的限制(N×N为码组大小),当N=8时最难实施,因此只要验证本发明可用来实施8×8码组大小的二维IDCT运算,当N>8时也可适用。
为了使本发明的特征更清楚,以下对图7所示的时序关系进行描述,以进一步说明此IDCT装置的工作。
同时参照图2所示的IDCT装置结构。首先,IDCT输入数据Y以一行接一行方式,即所谓raster scan方式,依次自输入端10a输入变速率缓冲器10,而在Y的最后一行,即在本实施例里编号0至7行中的第7行的第1个数据Y70开始输入时,变速率缓冲器才开始以二倍于Y输入的速率从11a输出数据,并且以特殊定址方式,改变数据输出的顺序为Y0kY2k、Y4k、Y6k、Y1k、Y3k、Y5k和Y7k,而列编号K的值则顺序从0至7,其时序关系参见图7最上方二列所分别代表的输入数据与输出数据时序。
当IDCT装置处理第一维的IDCT运算时,选择器11将从输入端11a输入数据,使来自变速率缓冲器10的数据经选择器11逐个字符由端点13a输入寄存器13。此时选择器12从输入端12a输入数据,每当寄存器13储满8个字符长度时,就把8个字符通过端点14a和14b送至寄存器14。而当IDCT运算周期大于2N-1,以至第一维IDCT运算结果的第一行最后一个数据来不及回授给第二维IDCT时,选择器12即在12b输入端向这一数据提供路径,这一点将在下文继续探讨。
一旦数据输入寄存器14,寄存器14将以每次二位的方式由15a03、15b03输出,如图3所示。而15a0、15a1、15a2和15a3的加权(Weighting)相同,可组成一4位的总线15a。另15b0、15b1、15b2和15b3的加权相当,也可组成一4位总线15b。上述总线15b比15a大一阶(order)。
总线15a和15b的数据分别输入参数生成器15后,如图4,将从只读存储器151中选择数值并产生部份和(partial sum)在加法器152中相加,即在加法器152中将从15a选出的部分和经右移一位后与15b选出的部分和相加,再由16a端输出各参数,在累加器16中累加。
由前述第(7)和(8)式可知,经累加器16累加后的值仅为4×4矩阵的运算结果,须再经过求和器17的加减处理后才能产生最后结果。然而在一维IDCT运算完成后,求和器17的输出值位数相当长,为了使硬件复杂度降低,在不影响二维IDCT运算精确度的原则下,可以适量删除其最低有效位,只留下所需的m位。修尾器18就是因此目的而设计的。
经修尾器18修尾后的数据Z通过端口20a,以列顺序传入行列转换缓冲器20进行行列转换。在Z的倒数第二列的第一个数据,即在本实施例中第6列第1个数据Z06进行输入时,行列转换缓冲器20按行顺序且依据Zk0、Zk2、Zk4、Zk6、Zk1、Zk3、Zk5和Zk7(其中,K为行编号)的顺序由11b端输出数据,其时序关系如图7倒数第三行和正数第三行所示。从图7中长虚线标示处可以发现,当第二维IDCT运算数据要从行列转换缓冲器20中读出Z07时,在20a上的Z07尚未计算出来,这就是前述的用选择器12直接从20a7将数据取出,提供到端口14a的设计思想所在,从而使时序关系得以满足要求。
至于第二维IDCT的运算,除了选择器11由11b输入数据,另以选择器12在Z的第一行从寄存器13输入寄存器14时提供12b的输入外,基本上与第一维IDCT相同;而当第二维IDCT的运算结果从18a0至18a7输出后,经由修尾器19截取成9位,然后通过21a以行顺序存入反变速率缓冲器21,最后反变速率缓冲器21再以一行接着一行的方式将X由端口21b输出。
本发明采用一组一维DA结构的IDCT线路,搭配几个输入输出缓冲器,在只使用一组一维DA结构IDCT的情形下,可实时进行二维IDCT运算;且因输入输出缓冲器具有可控制的输入/输出定址功能,可节省大量硬件空间,非常适合超大型集成电路的实际运用。
权利要求
1.一种二维反离散余弦转换装置,用以处理一二维N×N字符长度的数据;该反离散余弦转换装置包括一变速率缓冲器,具有双倍速的输出/输入速率,用于将数据输入所述转换装置;一第一选择器,具有一第一输入端、一第二输入端和一输出端;其中,该第一输入端用于连接所述变速率缓冲器,该第一与第二输入端只有一个可供输入;N个第一寄存器,各具有一输入端与一输出端并形成串联;该第一寄存器以一输入端连接所述第一选择器的输出端,用于串行输入单个字符且并行输出N个字符;一第二选择器,具有一第一输入端、一第二输入端和一输出端;其中,该第一输入端接受所述第一寄存器输出的N个字符中一第一字符作为输入,且该第一和第二输入端只有一个可供输入;N个第二寄存器,各具一输入端、一第一输出端和一第二输出端,以一个输入端连接所述第二选择器的输出端,以其余各输入端分别连接未提供所述第二选择器输入的各所述第一寄存器输出端,而得到一N个字符的输入;该第二寄存器并将前N/2个寄存器的各第一输出端连接起来产生一第一总线,各第二输出端连接起来产生一第二总线,将后N/2个寄存器的各第一输出端连接起来产生一第三总线,以及各第二输出端连接起来产生一第四总线,并使所述总线具有N/2字符长度的容量;N个参数生成器,各具有一第一输入端、一第二输入端与一输出端;其中,前N/2个该参数生成器的各第一输入端连接所述第一总线,各第二输入端连接所述第二总线,后N/2个该参数生成器的各第一输入端连接所述第三总线,各第二输入端连接所述第四总线,以在各输出端生成参数;N个累加器,各具有一输入端和一输出端,其各输入端分别连接各所述参数生成器的输出端,用以累加所述参数生成器生成的参数;N/2个求和器,各具有一第一输入端、一第二输入端、一第一输出端和一第二输出端,其中,各个第一输入端分别连接前N/2个所述累加器的输出端,各个第二输入端则分别连接后N/2个所述累加器的输出端;一第一修尾器,连接所述求和器的输出端,以删除过长的最低有效位,并提供一输出路径到所述第二选择器的第二输入端;一行列转换缓冲器,连接所述第一修尾器,用以处理行列转换运算,并提供一输出路径到所述第一选择器的第二输入端;一第二修尾器,连接所述求和器的输出端,以删除过长的最低有效位;以及一反变速率缓冲器,具有双倍速的输入/输出速率,以供转换后的数据由所述装置中输出。
2.根据权利要求1所述的装置,其特征在于,所述第一寄存器是一个字符长度的寄存器。
3.根据权利要求1所述的装置,其特征在于,所述第二寄存器是一个字符长度的寄存器。
4.根据权利要求3所述的装置,其特征在于,所述第二寄存器是由二组各有串联的N个一位寄存器所构成,以提供该第一和第二输出端。
5.根据权利要求1所述的装置,其特征在于,所述参数生成器包括二只读存储器,分别根据该参数生成器的第一和第二输入端输入而定址;以及一加减法器,用于对所述只读存储器输出值作加减运算。
6.根据权利要求1所述的装置,其特征在于,所述累加器含有一加法器和一寄存器;该加法器将该寄存器内储存的数值与输入值相加,并用来取代原储存于该寄存器内的值,从而实现累加运算。
7.根据权利要求1所述的装置,其特征在于,所述求和器是一加法器与一减法器组合而成,该加法器与该减法器均提供该求和器的第一与第二输入端,以分别作加减运算,并分别提供其第一与第二输出端。
8.根据权利要求1所述的装置,其特征在于,所述变速率缓冲装置和该反变速率缓冲装置用于提供输入/输出端口重新定址的功能,改变资料输入/输出顺序,以利于处理。
9.根据权利要求1所述的装置,其特征在于,所述N×N字符数据是一8×8字符数据。
全文摘要
一种二维反离散余弦转换(IDCT)装置,包括一变速率缓冲器(R-ate buffer)、二个选择器、二组寄存器、一组参数生成器、一组累加器、一组求和器、一对修尾器(Truncator)、一个行列转换缓冲器和一反变速率缓冲器。此转换装置以分散式数值运算结构将二维IDCT简化成二次一维小矩阵运算,配合变速率的输入/输出和特定的定址方式,实现在最少硬件空间要求下进行实时IDCT运算的目的。
文档编号G06F17/16GK1135686SQ9510509
公开日1996年11月13日 申请日期1995年5月5日 优先权日1995年5月5日
发明者黄柏川 申请人:联华电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1