本發(fā)明屬于集成電路技術(shù)領(lǐng)域,特別涉及一種低功耗二維離散余弦變換方法及其電路。
背景技術(shù):
二維離散余弦變換(dct)電路作為信號(hào)處理領(lǐng)域常用的數(shù)字集成電路模塊,具有很好的解相關(guān)特性和能量壓縮特性,可以將復(fù)雜的數(shù)據(jù)壓縮為非常簡(jiǎn)單的數(shù)據(jù),因此常常運(yùn)用在數(shù)字圖像處理、語(yǔ)音處理以及視頻壓縮等領(lǐng)域。二維dct電路還是jpeg(jointphotographicexpertsgroup,聯(lián)合圖像專家組)標(biāo)準(zhǔn)中的核心運(yùn)算單元,是mpeg(movingpictureexpertgroup,運(yùn)動(dòng)圖像專家組)標(biāo)準(zhǔn)中的重要運(yùn)算單元,在圖像和視頻的編解碼中起著重要的作用。
{f(x,y)}表示8×8個(gè)二維實(shí)數(shù)信號(hào)序列的集合,x,y=0,1,…,7,8×8矩陣的二維dct變換定義如下:
其中
圖1是采用了行列分離法的二維dct電路的結(jié)構(gòu)示意圖,首先將外部數(shù)據(jù)f(x,y)輸入至行dct變換單元進(jìn)行一維dct運(yùn)算,將計(jì)算結(jié)果存儲(chǔ)進(jìn)中間的轉(zhuǎn)置存儲(chǔ)器,然后將轉(zhuǎn)置后的中間計(jì)算結(jié)果輸入至列dct變換單元再次進(jìn)行一維dct運(yùn)算,得到的便是最終的二維dct變換結(jié)果。
由圖1可以看出二維dct電路的核心是其內(nèi)部?jī)蓚€(gè)一維dct變換單元,所以一維dct電路架構(gòu)對(duì)整體電路的面積和功耗有著非常大的影響。傳統(tǒng)二維dct電路中的一維dct變換單元由于精確計(jì)算全部dct系數(shù),需使用較多運(yùn)算單元,使得傳統(tǒng)二維dct電路的功耗比較大,難以適用于功耗要求非常低的應(yīng)用場(chǎng)景。
由于一維dct模塊計(jì)算所得dct系數(shù)的重要程度各有不同,f(0)至f(7)的重要程度依次減弱,所以可以降精度計(jì)算甚至放棄計(jì)算重要程度較低的dct系數(shù),最小程度的影響計(jì)算精度前提下,達(dá)到降低二維dct電路功耗的目的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的,就是針對(duì)上述傳統(tǒng)二維dct電路存在的功耗比較大的問(wèn)題,提出一種低功耗二維離散余弦變換方法及其電路,采用行列分離法,用于完成8×8像素矩陣的二維dct變換,通過(guò)截?cái)噍斎霐?shù)據(jù)低位的方法降精度計(jì)算部分重要程度較低的dct系數(shù),放棄計(jì)算部分重要程度最低的dct系數(shù),從而減少運(yùn)算單元的數(shù)量,在保證一定計(jì)算精度的情況下,實(shí)現(xiàn)低功耗二維離散余弦變換方法及其電路。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種低功耗二維離散余弦變換方法,包括以下步驟:
步驟一:將8×8像素矩陣數(shù)據(jù)逐行輸入到行dct變換單元進(jìn)行行dct變換,所述行dct變換的具體做法為:根據(jù)csd編碼后的余弦系數(shù),通過(guò)移位加的方式計(jì)算像素矩陣每一行數(shù)據(jù)一維dct變換的系數(shù),其中精確計(jì)算行dct系數(shù)fx(0)和fx(1),截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算行dct系數(shù)fx(2)、fx(3)和fx(4),放棄計(jì)算行dct系數(shù)fx(5)、fx(6)和fx(7);
步驟二:將行dct變換后的中間計(jì)算結(jié)果輸入到移位寄存器陣列保存;
步驟三:移位寄存器陣列將步驟二所述中間計(jì)算結(jié)果逐列輸入到列dct變換單元進(jìn)行列dct變換,所述列dct變換的具體做法為:根據(jù)csd編碼后的余弦系數(shù),通過(guò)移位加的方式計(jì)算中間計(jì)算結(jié)果每一列數(shù)據(jù)一維dct變換的系數(shù),其中精確計(jì)算列dct系數(shù)fy(0)和fy(1),截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算列dct系數(shù)fy(2)、fy(3)和fy(4),放棄計(jì)算列dct系數(shù)fy(5)、fy(6)和fy(7)。
具體的,所述精確計(jì)算行dct系數(shù)fx(0)和fx(1)的具體算法為:fx(0)=d(x0+x7)+d(x1+x6)+d(x2+x5)+d(x3+x4),fx(1)=a(x0-x7)+c(x1-x6)+e(x2-x5)+g(x3-x4),所述精確計(jì)算列dct系數(shù)fy(0)和fy(1)的具體算法為:fy(0)=d(y0+y7)+d(y1+y6)+d(y2+y5)+d(y3+y4),fy(1)=a(y0-y7)+c(y1-y6)+e(y2-y5)+g(y3-y4),其中a-g是余弦系數(shù),且a=cos(π/16),b=cos(2π/16),c=cos(3π/16),d=cos(4π/16),e=cos(5π/16),f=cos(6π/16),g=cos(7π/16),x0-x7表示所述8×8像素矩陣的每一行8個(gè)數(shù)據(jù),y0-y7表示所述中間計(jì)算結(jié)果的每一列8個(gè)數(shù)據(jù)。
具體的,所述截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算行dct系數(shù)fx(2)、fx(3)和fx(4)的具體算法為:fx(2)=b(z0+z7)+f(z1+z6)-f(z2+z5)-b(z3+z4),fx(3)=c(z0-z7)-g(z1-z6)-a(z2-z5)-e(z3-z4),fx(4)=d(z0+z7)-d(z1+z6)-d(z2+z5)+d(z3+z4),所述截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算列dct系數(shù)fy(2)、fy(3)和fy(4)的具體算法為:fy(2)=b(w0+w7)+f(w1+w6)-f(w2+w5)-b(w3+w4),fy(3)=c(w0-w7)-g(w1-w6)-a(w2-w5)-e(w3-w4),fy(4)=d(w0+w7)-d(w1+w6)-d(w2+w5)+d(w3+w4),其中z0-z7表示所述8×8像素矩陣每一行截?cái)嗟腿缓蟮臄?shù)據(jù),w0-w7表示所述中間計(jì)算結(jié)果每一列截?cái)嗟腿缓蟮臄?shù)據(jù)。
具體的,所述余弦系數(shù)a-g的csd編碼表為:
具體的,所述移位寄存器陣列儲(chǔ)存所述行dct變換后的中間計(jì)算結(jié)果時(shí),自上而下逐行移入中間計(jì)算結(jié)果,直到所有的中間計(jì)算結(jié)果都存儲(chǔ)進(jìn)移位寄存器陣列;將中間計(jì)算結(jié)果輸出到列dct變換單元時(shí),所述移位寄存器陣列將轉(zhuǎn)置后的中間計(jì)算結(jié)果自左向右逐列移出,直到所有的中間計(jì)算結(jié)果都移出了移位寄存器陣列。
一種低功耗二維離散余弦變換電路,包括狀態(tài)控制模塊、行dct變換單元、移位寄存器陣列、數(shù)據(jù)選擇模塊和列dct變換單元,
所述行dct變換單元的輸入端輸入外部輸入的8×8像素矩陣數(shù)據(jù),其輸出端連接移位寄存器陣列的數(shù)據(jù)輸入端,所述行dct變換單元根據(jù)csd編碼后的余弦系數(shù),通過(guò)移位加的方式計(jì)算像素矩陣每一行數(shù)據(jù)一維dct變換的系數(shù),其中精確計(jì)算行dct系數(shù)fx(0)和fx(1),截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算行dct系數(shù)fx(2)、fx(3)和fx(4),放棄計(jì)算行dct系數(shù)fx(5)、fx(6)和fx(7);
所述狀態(tài)控制模塊的輸入端連接外部控制信號(hào),其第一輸出端連接所述移位寄存器陣列的控制信號(hào)輸入端控制所述移位寄存器陣列的使能信號(hào),其第二輸出端連接所述數(shù)據(jù)選擇模塊的控制信號(hào)輸入端控制所述數(shù)據(jù)選擇模塊的選擇信號(hào);
所述數(shù)據(jù)選擇模塊包括第一輸入端和與所述移位寄存器陣列的輸出端連接的第二輸入端,所述數(shù)據(jù)選擇模塊輸入到第一輸入端的數(shù)據(jù)為0,所述數(shù)據(jù)選擇模塊的輸出端連接所述列dct變換模塊的輸入端,所述數(shù)據(jù)選擇模塊根據(jù)其控制信號(hào)輸入端輸入的選擇信號(hào)選擇輸出到所述列dct變換單元的數(shù)據(jù),選擇信號(hào)為0時(shí)輸入第一輸入端的數(shù)據(jù),選擇信號(hào)為1時(shí)輸入第二輸入端的數(shù)據(jù);
所述列dct變換單元的輸出端為所述低功耗二維離散余弦變換電路的輸出端,所述列dct變換單元根據(jù)csd編碼后的余弦系數(shù),通過(guò)移位加的方式計(jì)算中間計(jì)算結(jié)果每一列數(shù)據(jù)一維dct變換的系數(shù),其中精確計(jì)算列dct系數(shù)fy(0)和fy(1),截?cái)噍斎霐?shù)據(jù)的低三位后計(jì)算列dct系數(shù)fy(2)、fy(3)和fy(4),放棄計(jì)算列dct系數(shù)fy(5)、fy(6)和fy(7)。
具體的,所述移位寄存器陣列由40組11位寄存器組成,每5組為一行,一共有8行,構(gòu)成8×5的矩陣陣列;行變換狀態(tài)時(shí),移位寄存器陣列自上而下逐行移入行dct變換單元的計(jì)算結(jié)果,直到所有的中間計(jì)算結(jié)果都存儲(chǔ)進(jìn)移位寄存器陣列;列變換狀態(tài)時(shí),移位寄存器陣列將轉(zhuǎn)置后的中間計(jì)算結(jié)果自左向右逐列移出,并輸出到數(shù)據(jù)選擇模塊,直到所有的中間計(jì)算結(jié)果都移出了移位寄存器陣列。
具體的,所述狀態(tài)控制模塊通過(guò)一個(gè)有限狀態(tài)機(jī)完成計(jì)算狀態(tài)的控制,該狀態(tài)機(jī)一共有三種狀態(tài),分別為初始狀態(tài)、行變換狀態(tài)和列變換狀態(tài),根據(jù)外部控制信號(hào)和內(nèi)部數(shù)據(jù)變化進(jìn)行狀態(tài)轉(zhuǎn)換。
本發(fā)明的有益效果為,通過(guò)降精度計(jì)算和放棄計(jì)算部分重要程度較低的dct系數(shù),減少運(yùn)算單元的使用,降低電路硬件復(fù)雜度,較小影響計(jì)算精度的前提下有效降低電路功耗,適用于計(jì)算精度要求適中,但是功耗要求非常低的運(yùn)算場(chǎng)景。
附圖說(shuō)明
圖1為采用行列分離法實(shí)現(xiàn)的二維離散余弦變換dct電路的結(jié)構(gòu)示意圖;
圖2為本發(fā)明提出的低功耗二維離散余弦變換dct電路整體架構(gòu)圖;
圖3為狀態(tài)控制模塊的狀態(tài)轉(zhuǎn)移示意圖;
圖4為行dct變換單元計(jì)算dct系數(shù)f(1)的邏輯電路圖;
圖5為行dct變換單元計(jì)算dct系數(shù)f(2)的邏輯電路圖;
圖6為移位寄存器陣列結(jié)構(gòu)示意圖;
圖7為移位寄存器邏輯電路圖;
圖8為數(shù)據(jù)選擇模塊邏輯電路圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)的描述
本發(fā)明提供一種低功耗二維離散余弦變換dct方法及其電路,精確計(jì)算最重要的行dct系數(shù)fx(0)、fx(1)和列dct系數(shù)fy(0)和fy(1),截?cái)噍斎霐?shù)據(jù)低三位后降精度計(jì)算比較重要的行dct系數(shù)fx(2)、fx(3)、fx(4)和列dct系數(shù)fy(2)、fy(3)和fy(4),減少了部分運(yùn)算單元,直接放棄計(jì)算最不重要的dct系數(shù)fx(5)、fx(6)、fx(7)和列dct系數(shù)fy(5)、fy(6)和fy(7),進(jìn)一步降低了電路硬件復(fù)雜度。由于降精度計(jì)算的dct系數(shù)和舍棄的dct系數(shù)重要程度相對(duì)較低,二維dct電路的計(jì)算精度只會(huì)受到比較小的影響,但是隨著運(yùn)算單元明顯減少,電路硬件復(fù)雜度下降,功耗也明顯降低。
如圖2所示,該二維dct電路由狀態(tài)控制模塊、行dct變換單元、移位寄存器陣列、數(shù)據(jù)選擇模塊、列dct變換單元這五個(gè)模塊組成,每次完成一個(gè)8×8像素矩陣的二維dct變換。首先外部控制信號(hào)將狀態(tài)控制模塊中的有限狀態(tài)機(jī)由初始狀態(tài)轉(zhuǎn)換為行變換狀態(tài),并輸出相應(yīng)的控制信號(hào),行dct變換單元開(kāi)始進(jìn)入計(jì)算狀態(tài)。行dct變換單元開(kāi)始每個(gè)時(shí)鐘接收8個(gè)9位的外部輸入數(shù)據(jù)進(jìn)行一維dct運(yùn)算,由于行dct變換單元放棄計(jì)算dct系數(shù)fx(5)、fx(6)、fx(7),所以輸入矩陣中每行數(shù)據(jù)進(jìn)行一維dct變換后會(huì)得到5個(gè)11位的計(jì)算結(jié)果,一共有8行這樣的計(jì)算結(jié)果;因此,移位寄存器陣列由40組11位寄存器組成,每5組為一行,一共有8行,構(gòu)成8×5的矩陣陣列;所以每次計(jì)算得到5個(gè)11位的計(jì)算結(jié)果并將其自上而下逐行移入移位寄存器陣列,持續(xù)8個(gè)時(shí)鐘周期直到8×8像素矩陣中每一行數(shù)據(jù)都計(jì)算完畢,并且所有計(jì)算結(jié)果都存儲(chǔ)進(jìn)移位寄存器陣列。所有行dct變換結(jié)束后,狀態(tài)控制模塊根據(jù)內(nèi)部控制信號(hào)的變化將狀態(tài)由行變換狀態(tài)轉(zhuǎn)換為列變換狀態(tài),并輸出相應(yīng)控制信號(hào),列dct變換單元開(kāi)始進(jìn)入計(jì)算狀態(tài)。移位寄存器陣列開(kāi)始自左向右逐列移出中間計(jì)算結(jié)果,每個(gè)時(shí)鐘周期輸出一列數(shù)據(jù)至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊再根據(jù)控制信號(hào)選擇這列數(shù)據(jù)并輸入至列dct變換單元,進(jìn)行一維dct運(yùn)算。此時(shí)得到的計(jì)算結(jié)果就是最終的輸出數(shù)據(jù),由于移位寄存器共有5列,所以持續(xù)5個(gè)時(shí)鐘周期直到移位寄存器陣列中每一列中間結(jié)果都計(jì)算完畢,得到所有二維dct變換后的數(shù)據(jù)。
數(shù)據(jù)選擇模塊根據(jù)控制信號(hào)決定輸入至列dct變換單元的數(shù)據(jù),行變換狀態(tài)時(shí),控制信號(hào)選擇0輸入至列dct變換單元,停止該單元的計(jì)算;列變換狀態(tài)時(shí),控制信號(hào)選擇移位寄存器陣列輸出端的數(shù)據(jù)進(jìn)入列dct變換單元,對(duì)轉(zhuǎn)置后的中間計(jì)算結(jié)果逐列進(jìn)行一維dct運(yùn)算。
狀態(tài)控制模塊輸出的信號(hào)負(fù)責(zé)控制移位寄存器陣列和數(shù)據(jù)選擇模塊,能夠決定移位寄存器陣列中的數(shù)據(jù)移動(dòng)方向和列dct變換單元的輸入數(shù)據(jù)來(lái)源;狀態(tài)控制模塊主要由一個(gè)有限狀態(tài)機(jī)構(gòu)成,該狀態(tài)機(jī)一共有三種狀態(tài),分別為初始狀態(tài)、行變換狀態(tài)和列變換狀態(tài),根據(jù)外部控制信號(hào)和內(nèi)部數(shù)據(jù)變化進(jìn)行狀態(tài)轉(zhuǎn)換。狀態(tài)轉(zhuǎn)移示意圖如圖3所示,其中enable_row[7:0]表示移位寄存器陣列的行使能信號(hào),enable_row[0]-enable_row[7]分別自上而下控制第1行至第8行,enable_column[4:0]代表移位寄存器陣列的列使能信號(hào),enable_column[0]-enable_column[4]分別自左向右控制第1列至第5列,使能信號(hào)為1打開(kāi)寄存器,為0時(shí)關(guān)閉寄存器;judge_in表示數(shù)據(jù)選擇模塊的選擇信號(hào),為0時(shí)表示輸入0,為1時(shí)表示輸入中間計(jì)算結(jié)果。start是系統(tǒng)開(kāi)始信號(hào),start為1時(shí)代表系統(tǒng)已經(jīng)可以開(kāi)始計(jì)算了,此時(shí)狀態(tài)機(jī)由初始狀態(tài)跳轉(zhuǎn)到行變換狀態(tài),并將judge_in置0,enable_row清零。存儲(chǔ)第一組計(jì)算結(jié)果時(shí),enable_row[0]置為1,數(shù)據(jù)移入第一行寄存器,存儲(chǔ)第二組計(jì)算結(jié)果時(shí),再將enable_row[1]置為1,第一行數(shù)據(jù)移入第二行寄存器,計(jì)算結(jié)果移入第一行寄存器,依次類推。直到enable_row[7]為1時(shí),行dct變換的全部結(jié)果已經(jīng)移進(jìn)寄存器陣列,不需要再做任何移位存儲(chǔ)操作,狀態(tài)會(huì)由行變換狀態(tài)跳轉(zhuǎn)到列變換狀態(tài),并將judge_in置1,enable_column全部置1。同理,中間計(jì)算結(jié)果右移過(guò)程中列使能信號(hào)自左向右依次變?yōu)?,enable_column[4]為0時(shí)代表全部中間計(jì)算結(jié)果已經(jīng)移出寄存器陣列,此時(shí)所有計(jì)算結(jié)束,狀態(tài)由列變換狀態(tài)跳轉(zhuǎn)到初始狀態(tài),開(kāi)始下一組圖像數(shù)據(jù)的處理。
如果直接按照一維dct定義式計(jì)算8點(diǎn)一維dct變換,計(jì)算每個(gè)dct系數(shù)將會(huì)需要8次乘法和7次加法,完成一個(gè)8點(diǎn)一維dct變換至少需要64次乘法和56次加法,計(jì)算量非常的大,不利于圖像的實(shí)時(shí)處理。為了減少運(yùn)算量,利用定義式中余弦系數(shù)矩陣的對(duì)稱性進(jìn)行奇偶項(xiàng)分離,得到下面兩個(gè)矩陣乘法:
其中f(0)-f(7)是輸入的圖像數(shù)據(jù),f(0)-f(7)是計(jì)算得到一維的dct系數(shù),a-g是余弦系數(shù),且a=cos(π/16),b=cos(2π/16),c=cos(3π/16),d=cos(4π/16),e=cos(5π/16),f=cos(6π/16),g=cos(7π/16)。經(jīng)過(guò)奇偶項(xiàng)分離的一維dct變換,計(jì)算每個(gè)系數(shù)時(shí)減少了4次乘法和4次加法,并且f(0)與f(4)的乘法運(yùn)算完全一樣,所以最終只需要28次乘法運(yùn)算與32次加法運(yùn)算。本發(fā)明的行dct變換單元與列dct變換單元不直接采用功耗較大的乘法器,而是先將余弦系數(shù)進(jìn)行csd編碼,通過(guò)移位加的方式計(jì)算dct系數(shù),csd編碼如表1所示:
表1、8位余弦系數(shù)的csd編碼表
本發(fā)明中的一維dct變換單元需要精確計(jì)算行dct系數(shù)fx(0)、fx(1)和列dct系數(shù)fy(0)、fy(1),以計(jì)算fx(1)為例,圖4顯示的是行dct變換單元計(jì)算fx(1)時(shí)的邏輯電路圖,其中x0-x7對(duì)應(yīng)輸入數(shù)據(jù)f(0)-f(7),行dct變換單元的輸入數(shù)據(jù)位寬為9位,即x0[9:0]-x7[9:0]。從該邏輯電路圖可以看出,輸入數(shù)據(jù)根據(jù)余弦系數(shù)a、c、e、g中1與
列dct變換單元計(jì)算fx(1)時(shí)的邏輯電路圖與行dct變換單元類似,但是輸入數(shù)據(jù)的位寬有所區(qū)別,列dct變換單元的輸入數(shù)據(jù)為y0-y7,y0-y7表示所述中間計(jì)算結(jié)果的每一列8個(gè)數(shù)據(jù),位寬為11位,即y0[10:0]-y7[10:0]。
在計(jì)算重要程度較低的行dct系數(shù)fx(2)、fx(3)、fx(4)和列dct系數(shù)fy(2)、fy(3)和fy(4)時(shí),輸入數(shù)據(jù)需要截?cái)嗟腿辉龠M(jìn)行運(yùn)算。以計(jì)算fx(2)為例,圖5顯示的是行dct變換單元計(jì)算fx(2)時(shí)的邏輯電路圖,其中x0-x7對(duì)應(yīng)輸入數(shù)據(jù)f(0)-f(7),z0-z7對(duì)應(yīng)輸入截?cái)嗟腿缓蟮臄?shù)據(jù),行dct變換單元的輸入數(shù)據(jù)位寬為9位,截?cái)嗟腿缓鬄閤0[9:3]-x7[9:3]。在這個(gè)邏輯電路圖中,輸入數(shù)據(jù)是根據(jù)余弦系數(shù)b、f中1與
列dct變換單元計(jì)算fy(2)時(shí)的邏輯電路圖仍然與行dct變換單元類似,但是輸入數(shù)據(jù)位寬為11位,w0-w7對(duì)應(yīng)中間計(jì)算結(jié)果每一列截?cái)嗟腿缓蟮臄?shù)據(jù),截?cái)嗟腿缓鬄閤0[10:3]-x7[10:3]。從圖4、圖5可以看出,行dct變換單元與列dct變換單元計(jì)算dct系數(shù)的電路結(jié)構(gòu)相同,只是輸入數(shù)據(jù)的位寬有所不同,行dct變換單元的輸入數(shù)據(jù)位寬為9位,列dct變換單元的輸入數(shù)據(jù)位寬為11位。
本發(fā)明采用的移位寄存器陣列由40組11位寄存器組成,每5組為一行,一共8行,構(gòu)成8×5的矩陣陣列,如圖6所示,其中陣列自左向右分別存儲(chǔ)行dct系數(shù)fx(4)-fx(0)。行變換狀態(tài)時(shí),移位寄存器陣列受行使能信號(hào)enable_row[0]-enable_row[7]的控制,自上而下逐行移入行dct變換單元的計(jì)算結(jié)果,直至所有中間計(jì)算結(jié)果存儲(chǔ)完畢;在列變換狀態(tài)時(shí),移位寄存器陣列受列使能信號(hào)enable_column[0]-enable_column[4]控制,自左向右逐列移出中間計(jì)算結(jié)果,并輸出到數(shù)據(jù)選擇模塊。圖7顯示的是移位寄存器邏輯電路圖,數(shù)據(jù)端有來(lái)自上面寄存器或者左邊寄存器的數(shù)據(jù),通過(guò)一個(gè)2選1數(shù)據(jù)選擇器進(jìn)行選擇,當(dāng)enable_row信號(hào)為1時(shí)表明正在進(jìn)行行變換,選取上面寄存器的數(shù)據(jù),當(dāng)enable_row信號(hào)為0時(shí)表明正在進(jìn)行列dct變換,選取左邊寄存器的數(shù)據(jù)。使能端由行使能信號(hào)和列使能信號(hào)同時(shí)控制,兩個(gè)使能信號(hào)通過(guò)一個(gè)或門輸入到寄存器的使能端。
如圖8所示,本發(fā)明的數(shù)據(jù)選擇模塊主要由多路復(fù)用器組成,輸入分別為0和中間計(jì)算結(jié)果,輸出端連接列dct變換單元,其中中間計(jì)算結(jié)果由移位寄存器陣列輸出至數(shù)據(jù)選擇模塊,每次輸出8個(gè)11位數(shù)據(jù)。選擇信號(hào)judge_in來(lái)自狀態(tài)控制模塊,行變換狀態(tài)時(shí)judge_in為0,多路復(fù)用器選擇0進(jìn)入列dct變換單元,列變換狀態(tài)時(shí)judge_in為1,多路復(fù)用器選擇中間計(jì)算結(jié)果進(jìn)入列dct變換單元。
本發(fā)明提出的低功耗二維dct電路精確計(jì)算最重要的行dct系數(shù)fx(0)、fx(1)和列dct系數(shù)fy(0)和fy(1),截?cái)噍斎霐?shù)據(jù)低三位后降精度計(jì)算比較重要的行dct系數(shù)fx(2)、fx(3)、fx(4)和列dct系數(shù)fy(2)、fy(3)和fy(4),減少了部分運(yùn)算單元,直接放棄計(jì)算最不重要的dct系數(shù)fx(5)、fx(6)、fx(7)和列dct系數(shù)fy(5)、fy(6)和fy(7),節(jié)約了硬件資源,降低了電路功耗。經(jīng)過(guò)實(shí)驗(yàn)仿真得到,與精確計(jì)算全部dct系數(shù)的傳統(tǒng)二維dct電路相比,本發(fā)明的計(jì)算精度psnr僅僅下降了6.94db,但是電路面積下降了35.2%,功耗下降了42.3%,在保證一定計(jì)算精度的情況下,實(shí)現(xiàn)了低功耗二維dct電路。
本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開(kāi)的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。