新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 2D-DCT的FPGA實(shí)現(xiàn)

2D-DCT的FPGA實(shí)現(xiàn)

作者: 時(shí)間:2013-02-28 來源:網(wǎng)絡(luò) 收藏

由于中硬件乘法器資源有限,直接應(yīng)用乘法會消耗大量的資源。本方案中使用分布式算法[4]來實(shí)現(xiàn)乘法,它是一種適合的乘加運(yùn)算,與傳統(tǒng)算法實(shí)現(xiàn)乘加運(yùn)算的區(qū)別在于,執(zhí)行部分積運(yùn)算的先后順序不一樣。分布式算法在實(shí)現(xiàn)乘加功能時(shí),首先將各輸入數(shù)據(jù)的每一對應(yīng)位產(chǎn)生的部分積預(yù)先進(jìn)行相加,形成相應(yīng)的部分積,然后再對各個(gè)部分積累加形成最終結(jié)果;而傳統(tǒng)算法是所有乘積已經(jīng)產(chǎn)生之后再相加完成乘加運(yùn)算的。與傳統(tǒng)算法相比,分布式算法可極大地減少硬件電路的規(guī)模,提高電路的執(zhí)行速度。分布式乘法器結(jié)構(gòu)如圖5所示。

其中Cn為常系數(shù)。這種乘法器不僅能夠有效地減少硬件資源,而且在增加輸出端口時(shí)能夠減小數(shù)據(jù)傳輸所帶來的延遲和布局布線面積[5]. 2.3行列轉(zhuǎn)換模塊本文使用同步動態(tài)隨機(jī)存儲器(SDRAM)來存儲第一次1的中間結(jié)果及數(shù)據(jù)的行列轉(zhuǎn)換。由于SDRAM與系統(tǒng)時(shí)鐘同步,因此避免了不必要的等待周期,減少了數(shù)據(jù)存儲時(shí)間。SDRAM的核心結(jié)構(gòu)由多個(gè)內(nèi)存單元組成,這些內(nèi)存單元又分成由行和列組成的二維陣列。2變換首先是對8×8數(shù)據(jù)塊的每一行數(shù)據(jù)進(jìn)行1變換,然后將結(jié)果放入SDRAM中,每一行的結(jié)果就占SDRAM中的一行內(nèi)存。SDRAM通過采用地址線行列復(fù)用技術(shù)讀取其儲存的內(nèi)容,訪問這些內(nèi)存時(shí),在地址線上依次給出行地址和列地址[6],讀出SDRAM中的每一列數(shù)據(jù),再重新送入1D-DCT模塊中進(jìn)行1D-DCT變換,這樣就完成了整個(gè)2D-DCT的變換。

3仿真結(jié)果

整個(gè)設(shè)計(jì)采用Verilog HDL語言進(jìn)行編程,使用Xilinx公司的Spartan3E系列(XC3S500E)實(shí)現(xiàn),時(shí)鐘晶振為50 MHz,SDRAM容量為512 MB,位寬為16 bit,同步時(shí)鐘能達(dá)到100 MHz.使用的編程軟件是ISE,仿真軟件是ModelSim.圖6是用ModelSim仿真軟件仿真出來的2D-DCT的仿真結(jié)果及執(zhí)行結(jié)果。其中,din是8 bit數(shù)據(jù)輸入端口,dout是經(jīng)變換后12 bit數(shù)據(jù)輸出端口。由執(zhí)行結(jié)果可以看出,從輸入端口輸入的64個(gè)數(shù)據(jù)在經(jīng)過2D-DCT變換后,所得到的結(jié)果與期望值一致。

本文提出了分布式算法和行列分解法相結(jié)合的方案來實(shí)現(xiàn)2D-DCT,該方案不僅能夠減少硬件資源的使用,提高資源的利用率,并能提高運(yùn)算速度,能夠滿足數(shù)字圖像和視頻壓縮的實(shí)時(shí)性要求。在查找表中所使用的值取的精度不夠高,所以存在一定的誤差,但這種誤差不會引起人眼視覺上的差別,是允許存在的。因此,該方案可作為用FPGA來進(jìn)行數(shù)字圖像和視頻壓縮中的一部分。


上一頁 1 2 3 下一頁

關(guān)鍵詞: D-DCT FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉