專利名稱:二維逆離散余弦變換電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及實(shí)行二維逆離散余弦變換(IDCT)的電路,特別是,涉及使用了一對(duì)改進(jìn)的一維IDCT電路的二維IDCT電路,該每一個(gè)一維IDCT電路由應(yīng)用矩陣乘法運(yùn)算實(shí)行其IDCT操作。
眾所周知,數(shù)字化的視頻信號(hào)的傳輸能發(fā)出比模擬信號(hào)的傳輸質(zhì)量高得多的視頻圖像。當(dāng)含有一系列圖像“幀”的圖像信號(hào)被以數(shù)字形式表示時(shí),產(chǎn)生大量數(shù)據(jù)要傳輸,特別在高清晰度電視系統(tǒng)場(chǎng)合。然而,因?yàn)橥ǔ鬏斖ǖ赖目捎妙l帶寬度是有限的,為了通過(guò)有限的通道帶寬傳送大量數(shù)字?jǐn)?shù)據(jù),不可避免地要壓縮或減少所傳輸數(shù)據(jù)的數(shù)量。
圖像信號(hào)通常可被壓縮而不嚴(yán)重影響它完整性,因?yàn)橥ǔT谝粋€(gè)信號(hào)幀的若干像素間以及相鄰幀的像素間存在某些相關(guān)性或冗余。因此,多數(shù)現(xiàn)有技術(shù)圖像信號(hào)編碼方法采用的各種壓縮技術(shù)(或編碼方法)建立在利用或減少冗余的概念之上。
一類這種編碼方法是關(guān)于利用存在于一單幅幀中的冗余的變換技術(shù)。一種這樣的變換方法是二維(2-D)離散余變換(DCT),在Chen和Pratt的“Scene Adaptive Coder”(IEEE Transactions on Communication,COM-32,No.3(1984年3月))中有敘述。DCT被認(rèn)為對(duì)圖像壓縮或被頻帶寬壓縮在各種變換編碼方法中是最有效的技術(shù)。在通過(guò)DCT達(dá)到帶寬壓縮時(shí),一方塊數(shù)字編碼像素可以用行-列還原法靠用于實(shí)現(xiàn)二維DCT的二維或N×NDCT處理器來(lái)變換為頻域,其中N×N塊像素?cái)?shù)據(jù)被輸入到它那里,輸入矩陣用N×NDCT矩陣相乘產(chǎn)生中間矩陣,然后中間矩陣的轉(zhuǎn)置用同樣的DCT矩陣相乘以產(chǎn)生所需的逆變換矩陣。變換矩陣的各元素然后可被量化并只有其中最強(qiáng)的項(xiàng)(energetic term)被選來(lái)傳輸。在接收端。逆離散余弦變換(IDCT)被完成以在空間域內(nèi)重建原來(lái)的視頻信號(hào)。IDCT也可以由與一個(gè)IDCT矩陣相乘及轉(zhuǎn)置后與另外一個(gè)矩陣乘法來(lái)實(shí)現(xiàn)。
因?yàn)橛糜趯?shí)際圖像解碼系統(tǒng)中的IDCT電路需要快速卷積操作的能力,多種用于包括VLSI(超大規(guī)模集成)裝置的IDCT的快速操作的方案已被提出。
矩陣乘法包括構(gòu)成二個(gè)N維矢量的內(nèi)積來(lái)產(chǎn)生積矩陣的一個(gè)元素。因而輸入矩陣的一行中的每一元素乘以DCT/IDCT矩陣一列的相應(yīng)的元素,并將這些積加起來(lái)產(chǎn)生積矩陣的一個(gè)元素。對(duì)于變換一個(gè)8×8的像素塊,8個(gè)積被加起來(lái)產(chǎn)生有64個(gè)元素的輸出矩陣的一個(gè)元素。已有許多快速算法被推導(dǎo)出來(lái)降低需要計(jì)算的數(shù)量。例如,DCT/IDCT矩陣被還原成為幾個(gè)導(dǎo)致蝶形結(jié)構(gòu)的稀疏矩陣。使用了這種結(jié)構(gòu)的VLSI裝置的例子被描于一篇題為“A DiscreteFourier-Cosine Transform Chip”,刊于IEEE Journal on Selected Areas on Communication,Jan.’86,pp.49-61的論文中。蝶形結(jié)構(gòu)明顯減少計(jì)算的數(shù)量但仍要求許多高速乘法器,它也需要用于IC(集成電路)裝置的大的芯片面積。此外,蝶形結(jié)構(gòu)的其他缺點(diǎn)和內(nèi)部接線零亂及芯片上布線很差使得實(shí)施蝶形結(jié)構(gòu)的VLSI裝置的效率相當(dāng)差。
授予M.L.Niou等的美國(guó)專利No.4791598號(hào)提供了另外一種DCT/IDCT方案,涉及分布運(yùn)算,該法兼有十分頻、位串行結(jié)構(gòu)、及以部分求和來(lái)實(shí)現(xiàn)矢量的內(nèi)積,同時(shí)還有最小的存儲(chǔ)器尺寸。結(jié)果是一種有高度規(guī)則的結(jié)構(gòu)并且沒(méi)有乘法器的體系。這是可能的,因?yàn)樽儞Q操作的固有性質(zhì),即,變換矩陣中各元素是常數(shù),允許使用分布運(yùn)算,其中存儲(chǔ)器查閱的表、或只讀存儲(chǔ)器(ROM)被用作為乘法器的替代物;并且矩陣-矢量積是由幾個(gè)同時(shí)發(fā)生的矢量?jī)?nèi)積實(shí)現(xiàn)的。這方案是有效的,因?yàn)樗鼪](méi)有乘法器,并應(yīng)用高度規(guī)則的結(jié)構(gòu)。
但是,為支持上述方法的電路將是復(fù)雜的。此外,采用了位串行數(shù)據(jù)結(jié)構(gòu),矩陣乘法要逐位地實(shí)現(xiàn),例如,一個(gè)時(shí)鐘周期一位,這使得此方法不適用于實(shí)時(shí)用途。
所以本發(fā)明主要目的是提供一種高速IDCT電路,其硬件較不復(fù)雜,可用于實(shí)時(shí)圖像處理系統(tǒng),其中為在IDCT操作中實(shí)行的矩陣乘法采用了可編程邏輯陣列(PLA)。
按照本發(fā)明,提供了一種一維逆離散余弦變換(IDCT)電路用于對(duì)N個(gè)輸入數(shù)據(jù)進(jìn)行IDCT操作,從而提供N個(gè)輸出數(shù)據(jù),其中所述N個(gè)輸入數(shù)據(jù)由N/2個(gè)奇數(shù)輸入數(shù)據(jù)及N/2個(gè)偶數(shù)輸入數(shù)據(jù)組成,該電路包括第一乘法裝置,用于對(duì)所述偶數(shù)輸入數(shù)據(jù)做預(yù)定的偶數(shù)IDCT矩陣的乘法,從而提供第一組N/2個(gè)中間數(shù)據(jù),其中所述第一裝置包括多個(gè)乘法器和多個(gè)加法器來(lái)完成對(duì)N/2個(gè)偶數(shù)輸入數(shù)字的偶數(shù)IDCT矩陣乘法;第二乘法裝置,用于對(duì)所述奇數(shù)的輸入數(shù)據(jù)做預(yù)定的奇數(shù)IDCT矩陣的乘法,從而提供第二組N/2個(gè)中間數(shù)據(jù),其中所述第二裝置包括若干乘法器和多個(gè)加法器來(lái)完成對(duì)N/2個(gè)奇數(shù)輸入數(shù)據(jù)的奇數(shù)IDCT矩陣乘法;加法裝置,用于將每個(gè)第一組N/2個(gè)中間數(shù)據(jù)加到每一個(gè)相應(yīng)的第二組中間數(shù)據(jù)上,從而提供第一N/2個(gè)輸出數(shù)據(jù);以及減法裝置,用于將每個(gè)第二組N/2個(gè)中間數(shù)據(jù)從第一組N/2個(gè)中間數(shù)據(jù)的每一個(gè)相應(yīng)的數(shù)據(jù)減去,從而提供第二N/2個(gè)輸出數(shù)據(jù)。
本發(fā)明的上面的和其他的目的和特點(diǎn)從下面結(jié)合附圖敘述的優(yōu)選實(shí)施例將變得更清楚,這些附圖是
圖1表示本發(fā)明一維IDCT電路的框圖;圖2描述示于圖1乘法器的詳細(xì)結(jié)構(gòu);圖3是本發(fā)明的二維IDCT電路的框圖;圖4表示示于圖3中的轉(zhuǎn)置存儲(chǔ)器的詳細(xì)框圖;圖5A到5B表示為了解釋轉(zhuǎn)置存儲(chǔ)器工作的圖;以及圖6提供用于轉(zhuǎn)置存儲(chǔ)器的產(chǎn)生地址和使能信號(hào)的電路。
離散余弦變換(DCT)是由一組基本矢量組成的正交變換,這些基本矢量是抽樣的余弦函數(shù)。假設(shè)N點(diǎn)一維DCT的輸入數(shù)據(jù)為xj(N=2n;n是正整數(shù)),輸出數(shù)據(jù)是yi,此輸出數(shù)據(jù)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)式進(jìn)一步可用一矩陣來(lái)代表,如下Y=DX(2)其中X是N維輸入矢量,由下式給出 Y是一個(gè)N維輸出矢量,由下式給出 D是一個(gè)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)]]>相聯(lián)系的有di,j=(-1)i·di,N-j-1(7)假設(shè)N是8,(2)式可用以上關(guān)系式改寫(xiě)為 利用(7)式關(guān)系,有可能將所要求DCT系數(shù)(即DCT矩陣的元素?cái)?shù)目)及輸入數(shù)據(jù)的相乘次數(shù)減少一半。相似地,關(guān)于IDCT,假設(shè)輸入矢量和輸出矢量是分別由(3)式及(4)式定義的X及Y,則Y和X間的關(guān)系可修改表示如下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操作由使用奇數(shù)IDCT矩陣及偶數(shù)IDCT矩陣來(lái)表示。奇數(shù)的和偶數(shù)的IDCT矩陣的元素,例如,c2和c1用反轉(zhuǎn)修正的DCT矩陣式(8)得到。
在式(9a)及(9b),N維輸入矢量首先被分成N/2維偶數(shù)輸入矢量,例如(y0,y2,y4,y6),及奇數(shù)的輸入矢量,例如(y1,y3,y5,y7)。(9a)式偶數(shù)IDCT矩陣乘以偶數(shù)的輸入矢量提供N/2個(gè)中間數(shù)據(jù),它的每一個(gè)是輸出矢量的二個(gè)元素之和。相似地,奇數(shù)輸入矢量乘以(9b)式奇數(shù)IDCT矩陣,從而提供另一個(gè)N/2個(gè)中間數(shù)據(jù),它的每一個(gè)是輸出矢量的二個(gè)元素之差。
現(xiàn)有技術(shù)IDCT處理器根據(jù)式(9a)及(9b)完成IDCT操作,使用了分布運(yùn)算和位串行數(shù)據(jù)結(jié)構(gòu)(見(jiàn)授予M.L Niou等的美國(guó)專利No.4791598號(hào))按照本發(fā)明,式(9a)和(9b)可進(jìn)一步修正為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)的偶數(shù)IDCT矩陣式(10a)及(10b),以及奇數(shù)IDCT矩陣式(9b)或(10c)來(lái)表示。
參見(jiàn)圖1,那里是表示完成式(10a)到(10c)的一維IDCT操作的IDCT電路的框圖。偶數(shù)IDCT單元100實(shí)現(xiàn)示于式(9a)偶數(shù)IDCT矩陣的乘法,而奇數(shù)IDCT單元200實(shí)現(xiàn)示于式(9b)的奇數(shù)IDCT矩陣的乘法。從式(9a)及(9b),可容易地看出二個(gè)IDCT單元100及200可以以相同的方式實(shí)現(xiàn)。
然而,如上面所解釋的,式(9a)的矩陣相乘歸約為式(10a)及(10b)的相乘,因此,在偶數(shù)IDCT單元100,式(10a)及(10b)的計(jì)算被完成,以更有效的處理來(lái)提供式(9a)的結(jié)果。
一個(gè)是輸入矩陣的一行的輸入矢量首先被分成偶數(shù)和奇數(shù)的輸入矢量并被分別饋給偶數(shù)的及奇數(shù)IDCT單元100及200。例如,假設(shè)N=8,輸入矢量(y0,y1,y2…y7)被分成為(y0,y2,y4,y6)及(y1,y3,y5,y7);且一對(duì)輸入數(shù)據(jù),例如,(y0,y1),在線IN-EVEN及IN-ODD在相同的時(shí)鐘周期被輸入。
具體地,偶數(shù)輸入矢量式(10a)及(10b)首先被順序饋入并存儲(chǔ)在寄存和鎖存單元111,然后被并行輸出。輸入矢量在寄存和鎖存單元111的輸出口被鎖存4個(gè)時(shí)鐘周期。在此期間,y2和y6通過(guò)多路轉(zhuǎn)換器(MUX)122被傳送到乘法器141和142,用于式(10b)的計(jì)算。y0和y4分別被提供給線113及2的補(bǔ)碼變換器121,用于式(10a)的計(jì)算。
在偶數(shù)IDCT單元100中有二個(gè)乘法器,即MUL(c2)141及MUL(c6)142,用于完成式(10b)的矩陣相乘。由乘法器141及142所得的計(jì)算結(jié)果被送給加法器152。根據(jù)余弦函數(shù)的特性,在式(10a)中的c4是1且不需要與輸入數(shù)據(jù),例如,在式(10a)中的y0及y4相乘。因此,y0被直接送給加法器151,y4被通過(guò)2的補(bǔ)碼變換器121送給加法器151。在這里處理的數(shù)據(jù)被表示為2的補(bǔ)碼方式,2的補(bǔ)碼變換器121可根據(jù)COEF-SIGN,即,指示在歸約的IDCT矩陣中元素的符號(hào)的信號(hào)變換y4的符號(hào)以用于式(10a)的計(jì)算。二個(gè)乘法器141及142的操作及在線113及114上所提供的數(shù)據(jù)被描述于表1。
表1中每一行示出在每個(gè)時(shí)鐘周期內(nèi)給加法器151和152的4個(gè)輸入數(shù)據(jù)。加法器151在每個(gè)時(shí)鐘周期內(nèi)將同一行的第4和第5列的元素相加,同時(shí),加法器152將表1中取自第2和第3列的元素相加。在第1和第2個(gè)時(shí)鐘周期中,得自二個(gè)加法器151和152的結(jié)果被送給加法器/減法器161,在那里表1內(nèi)在一行中的4個(gè)元素被加在一起。在第3和第4時(shí)鐘周期,加法器152的結(jié)果在加法器/減法器161中被從加法器151的結(jié)果中減去。
在加法器151和152及加法器/減法器161中的操作可以用表示在表2中的式(10a)到(10c)的關(guān)系來(lái)概括。
可容易看出加法器151和152的輸出和式(10a)及(10b)的結(jié)果是一樣的,加法器/減法器161的輸出和式(9a)的結(jié)果一樣。能從表1和2看到,同樣的操作在乘法器141及142及加法器151和152中做二次以便提供在加法器/減法器161中所需的結(jié)果。如在上面所解釋,偶數(shù)IDCT單元100完成如示于圖(9a)那樣的將偶數(shù)IDCT矩陣乘以偶數(shù)輸入矢量的操作。
奇數(shù)IDCT單元200的全部操作相似于偶數(shù)IDCT單元100的操作,只是式(10c)的c1,c3,c5及c7需要4個(gè)乘法器。奇數(shù)輸入矢量在寄存及鎖存單元112的輸出口上被鎖存4個(gè)時(shí)鐘周期并通過(guò)多路轉(zhuǎn)換器123傳送給4個(gè)乘法器143到146用于式(10c)的計(jì)算。
4個(gè)乘法器143到146在不同時(shí)鐘周期的操作被表示在表3中。
每行的4個(gè)分量在一個(gè)對(duì)應(yīng)的時(shí)鐘周期在3個(gè)加法器153,154及162中相加,從而提供式(10c)左邊的各元素。如上面所解釋,奇數(shù)IDCT單元200將奇數(shù)IDCT矩陣乘以奇數(shù)輸入矢量,如示于式(10c)那樣。
如由式(9a)及(9b)表示的加法器/減法器161和加法器162的結(jié)果分別在加法器171及減法器172中被相加及相減,從而提供輸出數(shù)據(jù),例如,x0到x7。具體地,4對(duì)結(jié)果,例如(x0,x7),(x1,x6),x2,x5)及(x3,x4),被順序地由來(lái)自加法器171的第一分量及來(lái)自減法器172的第二分量分別提供。該結(jié)果順序地每一次一個(gè)地被提供并在舍入/截取單元181及182中考慮到在系統(tǒng)中所處理的數(shù)據(jù)的動(dòng)態(tài)范圍被舍入或截取到預(yù)定的位數(shù)。對(duì)下面的一個(gè)輸入矢量,即N×N輸入矩陣的另一行重復(fù)上面的程序。當(dāng)一個(gè)輸入矢量被鎖存在寄存及鎖存單元111及112的輸出口上時(shí),下一個(gè)輸入矢量被輸入該處,從而不停頓地啟動(dòng)下一個(gè)輸入矢量的處理。
參看圖2,示出了圖1中所示的MUL(c2)141的詳細(xì)框圖。乘法器包括2的補(bǔ)碼變換器210a及201b,PLA220a到220d及加法器230a到230c。
按照本發(fā)明,式(10b)的y2或y6由圖1中所示的線115被輸入MUL(c2)141。四個(gè)PLA220a到220d及3個(gè)加法器230a到230c完成二個(gè)正數(shù)之間的乘法運(yùn)算,即,輸入數(shù)據(jù)及屬于示于式(10a)到(10c)中的IDCT矩陣的一個(gè)元素,例如c2的預(yù)定的相乘系數(shù)的絕對(duì)值之間的乘法運(yùn)算。
因此,在輸入是表示為2的補(bǔ)碼形式的一個(gè)負(fù)數(shù)的場(chǎng)合,它首先在第一個(gè)2的補(bǔ)碼變換器210a中被變換為相應(yīng)的正數(shù)。輸入的MSB(最高位)或符號(hào)位作為SIGN BIT被送到2的補(bǔ)碼變換器210a以決定變換是否應(yīng)在那里發(fā)生。
由2的補(bǔ)碼變換器210a的輸出被分成多個(gè),例如4個(gè)位組。每個(gè)PLA接收一個(gè)位組并提供對(duì)應(yīng)于該組輸入位的相乘的部分結(jié)果,這里的部分結(jié)果是相乘系數(shù)乘以輸入的位。PLA的結(jié)構(gòu)可根據(jù)輸入和相乘系數(shù)的位數(shù)事先決定。具體地,一個(gè)PLA包括對(duì)全部可能的輸入位的全部部分結(jié)果,并根據(jù)該輸入位由選擇一個(gè)預(yù)定的部分結(jié)果完成乘法運(yùn)算。得自四個(gè)PLA220a到220d的四個(gè)部分結(jié)果被移位及相加于加法器230a到230c,從而提供完整的相乘結(jié)果。在第二2的補(bǔ)碼變換器210b中決定相乘結(jié)果的符號(hào)。具體地,假如輸入是正的,相乘系數(shù)也是正的如表2中第2列的第1及第4時(shí)鐘周期,加法器230c的結(jié)果作為MUL(c2)的輸出被提供在圖1所示的線116上。在二者皆為負(fù)的場(chǎng)合,結(jié)果一樣。否則,即,假如一個(gè)并只有其中一個(gè)是負(fù)的,MUL(c2)的輸出在第二2的補(bǔ)碼變換器210b中被轉(zhuǎn)換為對(duì)應(yīng)的負(fù)數(shù)。代表輸入數(shù)據(jù)和相乘系數(shù)的符號(hào)的信號(hào)SIGN BIT及COEF_SIGN被通過(guò)一個(gè)XOR(異或)門被輸入到2的補(bǔ)碼變換器210b以啟動(dòng)上面的操作。2的補(bǔ)碼變換器210a和210b也包括PLA以便有效地實(shí)行變換。
這樣,圖1中所示乘法器141到146以比現(xiàn)有技術(shù)中建立在分布運(yùn)算和位串行數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上的方法更為有效方式完成表2和3中指定的乘法運(yùn)算。乘法器的詳細(xì)結(jié)構(gòu)可依該輸入和相乘系數(shù)的位碼數(shù)目而變化,但它的主要結(jié)構(gòu)仍保持相似于圖2中那樣。
在真正的應(yīng)用時(shí),如圖像處理中,IDCT被在一個(gè)輸入矩陣,即,二維DCT變換數(shù)據(jù)上實(shí)行的。二維IDCT電路可用一對(duì)如上所述的一維IDCT電路構(gòu)成。一個(gè)二維DCT可以用下式表示Z=DtYD (11)其中Z是一個(gè)N×N輸出矩陣,或一個(gè)經(jīng)變換的矩陣;Y是一個(gè)N×N輸入矩陣;Dt是DCT矩陣D的轉(zhuǎn)置矩陣。
相似地,二維IDCT被表示為Y=CZCt(12)其中Z是一個(gè)N×N的輸入矩陣,或一個(gè)變換矩陣;Y是一個(gè)N×N輸出矩陣,或一個(gè)反變換矩陣;用逆變換DCT矩陣D可得到一個(gè)IDCT矩陣C。式(12)可修正為Y=C(CZt)t(13)從上式可容易看到二維IDCT可用將一維IDCT的結(jié)果轉(zhuǎn)置及再將其交給一維IDCT處理來(lái)達(dá)到。
參看圖3,那里示出按照本發(fā)明的IDCT電路來(lái)執(zhí)行式(13)的計(jì)算。圖3的電路有第一一維IDCT電路310,用于實(shí)行-N×N輸入矩陣對(duì)IDCT矩陣相乘從而提供一個(gè)中間矩陣;一個(gè)轉(zhuǎn)置存儲(chǔ)器320,用于將中間矩陣轉(zhuǎn)置;一個(gè)第二一維IDCT電路330,用于將經(jīng)轉(zhuǎn)置的中間矩陣作另一個(gè)IDCT矩陣乘法運(yùn)算;以及一個(gè)控制器340,用于產(chǎn)生各種用在本發(fā)明IDCT電路中的控制信號(hào)。
二個(gè)一維IDCT電路310及330按在參閱圖1和2所做的解釋來(lái)設(shè)計(jì)。因此,一對(duì)輸入數(shù)據(jù),其中一個(gè)是奇數(shù)的,另一個(gè)是偶數(shù)的,在同樣的時(shí)鐘周期被輸入第一一維IDCT電路310,中間矩陣的一對(duì)元素以上面所解釋的方式被提供。從第一一維IDCT電路310提供的中間矩陣在轉(zhuǎn)置存儲(chǔ)器320中被轉(zhuǎn)置,從而被提供給第二一維IDCT電路330。
參見(jiàn)圖4,那里說(shuō)明了圖3中所示的轉(zhuǎn)置存儲(chǔ)器320的詳細(xì)結(jié)構(gòu)。轉(zhuǎn)置存儲(chǔ)器320包括四個(gè)雙口RAM410a到410d,它的每一個(gè)可容納16個(gè)中間矩陣的元素;和附加電路,用來(lái)作轉(zhuǎn)置操作。從一維IDCT電路310輸出的中間矩陣被分成4組,即,偶-偶、奇-偶、偶-奇、及奇-奇,并被存儲(chǔ)在相應(yīng)的雙口RAM410a到410d,如在圖5A到5B中所示,其中xij表示中間矩陣第i行第j列的元素。例如,在圖5A情況,雙口RAM偶-偶410a存儲(chǔ)其列數(shù)及行數(shù)均為偶數(shù)的數(shù)據(jù),而雙口RAM偶-奇410c存儲(chǔ)其列數(shù)是奇數(shù),行數(shù)是偶數(shù)的數(shù)據(jù)。在圖5A及5B圓圈中的數(shù)字表示相應(yīng)的雙口RAM的地址。為提供經(jīng)轉(zhuǎn)置的中間矩陣給第二一維IDCT電路330,數(shù)據(jù)以和中間矩陣輸入轉(zhuǎn)置存儲(chǔ)器320的順序不同的順序被輸出。
如上所述,在圖1中線OUT_EVEN及OUT_ODD上所提供的中間矩陣被輸入到線DIN_EVEN及DIN_ODD,如表4所示其中xij(i=0,…7,j=0,……7)指的是以下式表示的中間矩陣X的元素X=CZt(14)在上式中,Zt被用來(lái)代替Z,表示輸入矩陣逐行地被提供給第一一維IDCT電路310。
經(jīng)比較表4和圖5A、5B,對(duì)于四個(gè)雙口RAM410a到410d的用來(lái)以在圖5A和5B中所描述的方式寫(xiě)中間矩陣的一連串的地址可容易地推導(dǎo)出如表5所示。
表5的上一半和下一半分別表示按圖5A和5B對(duì)四個(gè)雙口RAM410a到410d中每一個(gè)的寫(xiě)地址。在表5中,x表示在那個(gè)時(shí)鐘周期里沒(méi)有數(shù)據(jù)被存入相應(yīng)的雙口RAM。
以圖5A或圖5B的方式被存入雙口RAM410a到410d的數(shù)據(jù)以轉(zhuǎn)置的順序由圖4中線DOUT_EVEN及DOUT_ODD被提供給第二一維IDCT電路330。當(dāng)當(dāng)前存在雙口RAM410a到410d中的中間矩陣的元素被從那里檢出的同時(shí),從下一個(gè)輸入矩陣計(jì)算得來(lái)的下一個(gè)中間矩陣被輸入到那里。為了防止數(shù)據(jù)的任何丟失,雙口RAM410a到410d的讀和寫(xiě)操作應(yīng)該設(shè)計(jì)得使新數(shù)據(jù)被存入一個(gè)地址,這里先前所存的中間矩陣數(shù)據(jù)已經(jīng)被取出。為了將如圖5A那樣存儲(chǔ)的當(dāng)前中間矩陣進(jìn)行轉(zhuǎn)置,存儲(chǔ)在雙口RAM410a和410b的第一列中的中間矩陣的第一列先被取出。在雙口RAM410a和410b的第一列中的數(shù)據(jù)被取出之后,下一個(gè)中間矩陣的數(shù)據(jù)可被寫(xiě)入以代替取走的數(shù)據(jù)。下一個(gè)塊的頭8個(gè)數(shù)據(jù)以圖5B的雙口RAM EVEN_EVEN410a及Odd_EVEN410b的第一列的那種方式被存入,以防止保留在雙口RAM410a及410b的第二到第四列中的當(dāng)前存儲(chǔ)的中間矩陣內(nèi)的數(shù)據(jù)丟失。下一碼塊的其余數(shù)據(jù)在存儲(chǔ)于相應(yīng)位置的數(shù)據(jù)被取走后以圖5B的方式被存入。結(jié)果,連續(xù)的中間矩陣被交替地存入四個(gè)雙口RAM410a到410d中,一次如圖5A所示,另一次如圖5B所示。這樣做后,數(shù)據(jù)的連續(xù)塊可在四個(gè)雙口RAM中被存儲(chǔ)及轉(zhuǎn)置而不招致在轉(zhuǎn)置過(guò)程中丟失數(shù)據(jù)。
回過(guò)來(lái)參看圖4,成對(duì)地從第一一維IDCT電路310經(jīng)線DIN_EVEN及DIN_ODD輸入的一個(gè)數(shù)據(jù)塊由應(yīng)用4個(gè)多路轉(zhuǎn)換器420a到420d以描述于圖5A及5B的方式交替地被存入4個(gè)雙口RAM中。中間矩陣的一對(duì)元素從雙口RAM410a到410d經(jīng)由多路轉(zhuǎn)換器430被提供,從而被接到圖3中示出的第二一維IDCT電路330。。這次數(shù)據(jù)以轉(zhuǎn)置順序取出。具體地,在頭一列中的數(shù)據(jù),例如,x00,x10,……x70,在頭4個(gè)讀的時(shí)鐘周期里被取出。在一列中的數(shù)據(jù)以一個(gè)行的寫(xiě)的順序用相似的方式被取出。如上面所述,在圖3中的線DOUT_EVEN及DOUT_ODD上所提供的經(jīng)轉(zhuǎn)置的中間矩陣數(shù)據(jù)被歸納于表6。
經(jīng)將上面的序列和圖5A及5B相比較,可推論出用來(lái)取出以圖5A的方式存儲(chǔ)的數(shù)據(jù)的讀的地址的順序和按照?qǐng)D5B的寫(xiě)的地址順序是一樣的,或相反。
以上解釋的讀和寫(xiě)的操作可歸納為如表7a和7b所示。
讀的周期在表7b中第30個(gè)寫(xiě)的周期開(kāi)始以便防止丟失數(shù)據(jù),如上面所解釋,即,中間矩陣的29×2數(shù)據(jù)經(jīng)由各輸入線DIN_EVEN及DIN_OUT輸入并存儲(chǔ)入雙口RAM之后,經(jīng)轉(zhuǎn)置的中間矩陣的頭2個(gè)元素,例如,x00及x70從這里由線DOUT_ENEN及DOUT_ODD被取出。讀和寫(xiě)的時(shí)鐘周期這樣決定使在某地址內(nèi)的數(shù)據(jù)只有當(dāng)前中間矩陣的一個(gè)元素被寫(xiě)入之后才被取出,一個(gè)地址內(nèi)所存的數(shù)據(jù)只有它被從這里取出之后才被下一個(gè)中間矩陣的元素代替。注意到x70是在第29個(gè)寫(xiě)的時(shí)鐘周期寫(xiě)入而在第1個(gè)讀周期或第30個(gè)寫(xiě)的周期被取出。地址的順序以適時(shí)的方式來(lái)產(chǎn)生以便啟動(dòng)上面所述的讀和寫(xiě)的操作。
回過(guò)來(lái)看圖4,2個(gè)地址信號(hào),例如讀地址RAD_EE及寫(xiě)地址WAD_EE被輸入到各雙口RAM410a到410d。寫(xiě)啟動(dòng)輸入信號(hào),WEN_EE,用來(lái)判定是否可能把數(shù)據(jù)寫(xiě)入相應(yīng)的雙口RAM。當(dāng)數(shù)據(jù)沒(méi)有被寫(xiě)入一個(gè)雙口RAM,例如,在表5中用x代表的那樣,雙口RAM的寫(xiě)操作被中止,因而無(wú)關(guān)的數(shù)據(jù)不能被寫(xiě)入。上面所表示的各種信號(hào),例如RAD_EE,WEN_OE,WAD_00,利用示于圖6的電路來(lái)產(chǎn)生。在圖6中描述的電路也可合并到示于圖3中的控制器340中。
讀/寫(xiě)點(diǎn)信號(hào)發(fā)生器705根據(jù)時(shí)鐘信號(hào)提供一讀及寫(xiě)點(diǎn)信號(hào)。讀點(diǎn)信號(hào)指示對(duì)轉(zhuǎn)置存儲(chǔ)器320讀各中間矩陣的操作的開(kāi)始點(diǎn),而寫(xiě)的點(diǎn)信號(hào)指示各中間矩陣寫(xiě)的操作的開(kāi)始點(diǎn)。例如,寫(xiě)的點(diǎn)信號(hào)可在第1及第33寫(xiě)的時(shí)鐘周期啟動(dòng),而讀點(diǎn)信號(hào)可在表7a及7b中第30寫(xiě)的時(shí)鐘周期啟動(dòng)。
8個(gè)地址發(fā)生器710a到710d及720a到720d各產(chǎn)生標(biāo)在括號(hào)內(nèi)的地址序列。HOR_AD_GEN1 720a及HOR_AD_GEN2 720b產(chǎn)生寫(xiě)的地址用來(lái)存儲(chǔ)數(shù)據(jù),如圖5A所示,而HOR_AD_GEN1 710a及HOR_AD_EGN2 710b產(chǎn)生讀的地址用來(lái)提取已存儲(chǔ)的如圖5B的數(shù)據(jù)。相似地,VER_AD_GEN1 720c及VER_AD_GEN2 720d產(chǎn)生寫(xiě)的地址用來(lái)儲(chǔ)存如圖5B的數(shù)據(jù),而VER-AD-GEN1 710c及VER_AD_GEN2 720d產(chǎn)生讀的地址用來(lái)提取已儲(chǔ)存的如圖5A的數(shù)據(jù)。如上面所解釋,讀和寫(xiě)的地址利用T觸發(fā)器712及722和多路轉(zhuǎn)換器715a到715d及725a到725d在逐塊基礎(chǔ)上交替地產(chǎn)生。讀的地址信號(hào)RAD_EE,RAD_EO,RAD_OE,及RAD_OO,以及寫(xiě)的地址信號(hào)WAD-EE,WAD_EO,WAD-OE及WAD-OO被提供給相應(yīng)的雙口RAM,如圖4所示。
對(duì)于寫(xiě)的操作,也產(chǎn)生寫(xiě)的啟動(dòng)信號(hào)。4個(gè)雙口RAM中的二個(gè)利用示于圖6中的啟動(dòng)信號(hào)發(fā)生電路740在如表5中所說(shuō)明的那樣在相同的時(shí)間被啟動(dòng)。
由使用了上面解釋的地址及啟動(dòng)信號(hào),轉(zhuǎn)置中間矩陣被輸入到第二一維IDCT電路330,如在圖3中所示。
參看表7a及7b,給第二一維IDCT電路330的讀的數(shù)據(jù)或輸入數(shù)據(jù)的順序不同于給第一一維IDCT電路310的輸入數(shù)據(jù)順序。具體地,第一中間矩陣的,例如x00,x60,x20,x40被耦合到第二一維IDCT電路330。第二一維IDCT電路330完成和第一一維IDCT電路310同樣的操作,只是前者使用不同的輸入數(shù)據(jù)。因此,第二一維IDCT電路330可如圖1中所描述的那樣來(lái)構(gòu)成。輸入矢量被順序地輸入、儲(chǔ)存和鎖存于寄存和鎖存單元111及112,如圖1所示;因而,對(duì)于第一和第二一維IDCT電路,圖1中電路的工作除了寄存和鎖存單元111及112外是相同的。
使用了上面解釋的二維IDCT電路,由將一維IDCT的結(jié)果轉(zhuǎn)置并再使其作一維IDCT處理可得到二維IDCT。
本發(fā)明已結(jié)合具體實(shí)施例進(jìn)行敘述,對(duì)本領(lǐng)域的技術(shù)人員可知可以對(duì)之作出各種改變和修正而不偏離由權(quán)利要求書(shū)限定的發(fā)明精神和范圍。
表1
表2
表3
表4
表5
表6
表7a
表7b
權(quán)利要求
1.一種一維逆離散余弦變換(IDCT)電路,用于對(duì)N個(gè)輸入數(shù)據(jù)進(jìn)行IDCT操作從而提供N個(gè)輸出數(shù)據(jù),其中所述N個(gè)輸入數(shù)據(jù)由N/2個(gè)奇數(shù)輸入數(shù)據(jù)及N/2個(gè)偶數(shù)輸入數(shù)據(jù)組成,該電路包括第一乘法裝置,用于進(jìn)行預(yù)定的偶數(shù)IDCT矩陣對(duì)所述偶數(shù)輸入數(shù)據(jù)的乘法運(yùn)算,從而提供第一組N/2個(gè)中間數(shù)據(jù),其中所述第一裝置包括多個(gè)乘法器和多個(gè)加法器來(lái)完成該偶數(shù)IDCT矩陣對(duì)N/2個(gè)偶數(shù)輸入數(shù)據(jù)的乘法運(yùn)算;第二乘法裝置,用于進(jìn)行預(yù)定的奇數(shù)IDCT矩陣對(duì)所述奇數(shù)輸入數(shù)據(jù)的乘法運(yùn)算,從而提供第二組N/2個(gè)中間數(shù)據(jù),其中所述第二裝置包括若干乘法器和多個(gè)加法器來(lái)完成奇數(shù)IDCT矩陣對(duì)N/2個(gè)奇數(shù)輸入數(shù)據(jù)的乘法運(yùn)算;加法裝置,用于將各第一組N/2個(gè)中間數(shù)據(jù)加到第二組中間數(shù)據(jù)各相應(yīng)的數(shù)據(jù)上,從而提供第一N/2個(gè)輸出數(shù)據(jù),以及減法裝置,用于將各第二組N/2個(gè)中間數(shù)據(jù)從第一組N/2個(gè)中間數(shù)據(jù)的各相應(yīng)數(shù)據(jù)中減去的運(yùn)算,從而提供第二N/2個(gè)輸出數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的電路,其特征是其中各所述乘法器將包括在奇數(shù)或偶數(shù)IDCT矩陣中的預(yù)定的相乘系數(shù)和向其輸入的數(shù)據(jù)相乘,其包括當(dāng)輸入數(shù)字是一個(gè)負(fù)數(shù)時(shí)將所述輸入數(shù)據(jù)變換為其2的補(bǔ)碼的裝置;將輸入數(shù)據(jù)分成預(yù)定數(shù)目的輸入位組的裝置;預(yù)定數(shù)目的可編程邏輯陣列,其每一個(gè)包括對(duì)所有可能的輸入位組的部分積,且選擇對(duì)應(yīng)于各該輸入位該結(jié)果組的一個(gè)部分積;一個(gè)裝置,用來(lái)相加所選擇的部分積,從而提供相乘的結(jié)果,該結(jié)果是輸入數(shù)據(jù)和相乘系數(shù)間乘積的絕對(duì)值;一個(gè)裝置,用來(lái)根據(jù)預(yù)定的相乘系數(shù)和輸入數(shù)據(jù)的符號(hào)來(lái)決定相乘的結(jié)果的符號(hào);以及一個(gè)裝置,用來(lái)在所得相乘結(jié)果的符號(hào)被判定為負(fù)時(shí)將此相乘結(jié)果變換為其2的補(bǔ)碼。
3.根據(jù)權(quán)利要求1的電路,其特征是其中所述N為8,所述偶數(shù)IDCT矩陣的相乘運(yùn)算表示為x0+x7x1+x6x2+x5x3+x4=c4c2c4c6c4c6-c4-c2c4-c6-c4c2c4-c2c4-c6·y0y2y4y6]]>以及,所述奇數(shù)IDCT矩陣的相乘運(yùn)算表示為x0-x7x1-x6x2-x5x3-x4=c1c3c5c7c3-c7-c1-c5c5-c1c7c3c7-c5c3-c1·y1y3y5y7]]>第一和第二組中間數(shù)據(jù)分別包括(x0+x7),(x1+x6),(x2+x5)及(x3+x4),和(x0-x7),(x1-x6),(x2-x5)及(x3-x4),其中(y0,y1,y2…y7)表示N個(gè)輸入數(shù)據(jù),而(x0,x1,x2,…x7)表示N個(gè)輸出數(shù)據(jù)。
4.根據(jù)權(quán)利要求3的電路,其特征是其中所述偶數(shù)IDCT矩陣的相乘運(yùn)算被修正為x0+x7+x3+x4x1+x6+x2+x5=c4c4c4-c4·y0y4]]>x1+x6-x2-x5x0+x7-x3-x4=-c2c6c6c2·y6y2]]>
5.一種二維IDCT電路,用于對(duì)一個(gè)N×N輸入矩陣用行-列還原法進(jìn)行IDCT操作來(lái)提供一個(gè)N×N輸出矩陣,該電路包括(a)第一IDCT電路,用來(lái)通過(guò)對(duì)N×N輸入矩陣乘以預(yù)定的IDCT矩陣對(duì)其實(shí)行一維IDCT,產(chǎn)生N×N中間矩陣,該電路包括多個(gè)乘法器,每一個(gè)乘法器將包括在IDCT矩陣中的預(yù)定的相乘系數(shù)乘以向其輸入的數(shù)據(jù),該數(shù)據(jù)是所述N×N輸入的一個(gè)元素;(b)N×N轉(zhuǎn)置存儲(chǔ)器;(c)將所述N×N中間矩陣儲(chǔ)存所述N×N轉(zhuǎn)置存儲(chǔ)器的裝置;(d)第二IDCT電路,用于對(duì)儲(chǔ)存在N×N轉(zhuǎn)置存儲(chǔ)器中的N×N中間矩陣的轉(zhuǎn)置矩陣乘以預(yù)定的IDCT矩陣以對(duì)其實(shí)行一維IDCT,以產(chǎn)生所述的N×N輸出矩陣,該電路包括多個(gè)乘法器,其每一個(gè)將包括在IDCT矩陣中的一預(yù)定的相乘系數(shù)乘以一向其輸入的、是所述N×N中間矩陣的一個(gè)元素的數(shù)據(jù);以及(e)一個(gè)裝置,用來(lái)從N×N轉(zhuǎn)置存儲(chǔ)器中讀出N×N中間矩陣的裝置,該中間矩陣被輸入到第二IDCT電路中去,其中包括在第一和第二IDCT電路中的每一個(gè)所述乘法器具有(i)用來(lái)在輸入數(shù)據(jù)是一個(gè)負(fù)數(shù)的情況下將所述輸入數(shù)據(jù)變換為其2的補(bǔ)碼的裝置;(ii)將輸入數(shù)據(jù)分成預(yù)定數(shù)目的輸入位的組的裝置;(iii)預(yù)定數(shù)目的可編程邏輯陣列,其每一個(gè)包括對(duì)所有可能的輸入位組的部分積,并選擇對(duì)應(yīng)于各所述輸入位組的部分積之一;(iv)將所選擇的部分積加起來(lái),從而提供相乘結(jié)果的裝置,該相乘結(jié)果是輸入數(shù)據(jù)和相乘系數(shù)間的乘積的絕對(duì)值;(v)根據(jù)預(yù)定的相乘系數(shù)和輸入數(shù)據(jù)的符號(hào)決定該相乘結(jié)果的符號(hào)的裝置;(vi)當(dāng)相乘結(jié)果的符號(hào)被判定為負(fù)情況下將相乘結(jié)果變換為其2的補(bǔ)碼的裝置。6、根據(jù)權(quán)利要求5的電路,其特征是所述的N為8,所述IDCT矩陣乘法運(yùn)算對(duì)第一和第二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]]>其中,對(duì)第一IDCT電路(y0,y1,y2……y7)是輸入矩陣的一行,(x0,x1,x2……x7)是中間矩陣的一行;而對(duì)第二IDCT電路(y0,y1,y2…y7)是中間矩陣的一行,(x0,x1,x2…x7)是輸出矩陣的一行。
全文摘要
一種IDCT電路,包括一對(duì)一維IDCT電路和一轉(zhuǎn)置存儲(chǔ)器用來(lái)用行-列還原法產(chǎn)生N×N輸入矩陣的二維IDCT,輸入矩陣被乘以N×NIDCT矩陣在第一IDCT電路中產(chǎn)生一中間矩陣,其被儲(chǔ)存在轉(zhuǎn)置存儲(chǔ)器中;此中間矩陣的轉(zhuǎn)置在第二IDCT電路中被乘以同樣的系數(shù)矩陣產(chǎn)生逆變換矩陣。各一維IDCT電路,用乘以預(yù)定的IDCT矩陣實(shí)行IDCT操作,包括多個(gè)PLA,其每一個(gè)將輸入的輸入數(shù)據(jù)乘以預(yù)定的相乘系數(shù),系數(shù)是所述IDCT矩陣的一元素。
文檔編號(hào)H04N7/26GK1142162SQ95101990
公開(kāi)日1997年2月5日 申請(qǐng)日期1995年1月28日 優(yōu)先權(quán)日1995年1月28日
發(fā)明者金圣貞 申請(qǐng)人:大宇電子株式會(huì)社