《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 2D-DCT的FPGA實現(xiàn)
2D-DCT的FPGA實現(xiàn)
來源:微型機與應用2012年第11期
郭前崗,潘 磊,周西峰
(南京郵電大學 自動化學院,,江蘇 南京210046)
摘要: 設計了采用FPGA來實現(xiàn)2D-DCT的方案,對于其中的關鍵部分——乘加運算,,給出了基于查找表的分布式算法。整個設計節(jié)省了資源,,提高了運算速度,。仿真結果表明,經(jīng)過2D-DCT變換后的數(shù)據(jù)與期望值總體上是一致的,,這對于數(shù)字圖像和視頻壓縮的研究有一定的意義,。
Abstract:
Key words :

摘  要: 設計了采用FPGA來實現(xiàn)2D-DCT的方案,,對于其中的關鍵部分——乘加運算,給出了基于查找表的分布式算法,。整個設計節(jié)省了資源,,提高了運算速度。仿真結果表明,,經(jīng)過2D-DCT變換后的數(shù)據(jù)與期望值總體上是一致的,,這對于數(shù)字圖像和視頻壓縮的研究有一定的意義。
關鍵詞: 2D-DCT,;FPGA,;圖像視頻壓縮

 在信息社會迅猛發(fā)展的21世紀,多媒體信息日益增多,,其中人類主要依靠圖像來接收各種各樣的信息,。圖像中包含如此巨大的數(shù)據(jù)量,如果不經(jīng)過壓縮,,不僅超出了計算機的存儲和計算能力,,而且無法完成信息的實時傳輸。圖像的高速傳輸和所需巨大的存儲容量已成為數(shù)字圖像通信的最大障礙,。離散余弦變換(DCT)由于其變換特點被認為是性能最接近K—L變換的準最佳變換,,現(xiàn)在已經(jīng)是最流行的圖像壓縮變換技術,并已經(jīng)在JPEG,、MPEG-1/2/4,、H.26x等國際編碼標準中獲得了廣泛的應用[1]。
 由于集成電子技術的高速發(fā)展和廣泛運用,,數(shù)字圖像處理也由軟件向硬件過渡并得到了非常迅速的發(fā)展,。FPGA作為當今運用極為廣泛的可編程邏輯器件,也是數(shù)字圖像處理的理想器件,。目前,利用FPGA進行圖像處理主要是直接在FPGA上利用硬件描述語言或EDA軟件進行設計,,這種設計方法的最大優(yōu)點就是速度快,,可以利用流水線實現(xiàn),具有一定的靈活性,。
 基于行列分解的2D-DCT由于算法規(guī)律性強,、實現(xiàn)結構直觀、時序控制簡單而被廣泛應用,。本文提出使用行列分解法和分布式算法來實現(xiàn)2D-DCT,,可以減少硬件資源,提高運算速度,,具有一定的現(xiàn)實意義,。
1 2D-DCT系統(tǒng)模塊設計
 離散余弦變換經(jīng)常使用在信號處理和圖像處理中,,用于對信號和圖像進行有損數(shù)據(jù)壓縮。這是由于離散余弦變換具有很強的“能量集中”特性,,使圖像的主要信息集中在變換后的低頻上,,并且能夠去掉像素間較強的相關性,讓圖像的信息集中在少數(shù)幾個系數(shù)上,,以減少冗余達到對圖像進行壓縮的目的,。


2 模塊功能介紹
2.1 控制模塊

 控制模塊用于保持整個模塊設計的時鐘同步,并且使用控制信號來控制1D-DCT模塊狀態(tài)之間的轉換,。1D-DCT模塊有空閑狀態(tài)和1D-DCT變換狀態(tài)2個狀態(tài),。當控制信號控制整個系統(tǒng)復位時,控制模塊通知1D-DCT模塊進入空閑狀態(tài),;當需要計算的數(shù)據(jù)輸入完成時,,控制模塊通知1D-DCT模塊進入1D-DCT變換狀態(tài)。1D-DCT模塊的狀態(tài)轉移圖如圖3所示,。

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

 

 

    其中Cn為常系數(shù),。這種乘法器不僅能夠有效地減少硬件資源,而且在增加輸出端口時能夠減小數(shù)據(jù)傳輸所帶來的延遲和布局布線面積[5],。
2.3 行列轉換模塊
    本文使用同步動態(tài)隨機存儲器(SDRAM)來存儲第一次1D-DCT的中間結果及數(shù)據(jù)的行列轉換,。由于SDRAM與系統(tǒng)時鐘同步,因此避免了不必要的等待周期,,減少了數(shù)據(jù)存儲時間,。SDRAM的核心結構由多個內存單元組成,這些內存單元又分成由行和列組成的二維陣列。2D-DCT變換首先是對8×8數(shù)據(jù)塊的每一行數(shù)據(jù)進行1D-DCT變換,,然后將結果放入SDRAM中,,每一行的結果就占SDRAM中的一行內存。SDRAM通過采用地址線行列復用技術讀取其儲存的內容,,訪問這些內存時,,在地址線上依次給出行地址和列地址[6],讀出SDRAM中的每一列數(shù)據(jù),,再重新送入1D-DCT模塊中進行1D-DCT變換,,這樣就完成了整個2D-DCT的變換。
3 仿真結果
 整個設計采用Verilog HDL語言進行編程,,使用Xilinx公司的Spartan3E系列FPGA(XC3S500E)實現(xiàn),,時鐘晶振為50 MHz,SDRAM容量為512 MB,,位寬為16 bit,,同步時鐘能達到100 MHz。使用的編程軟件是ISE,,仿真軟件是ModelSim,。
 圖6是用ModelSim仿真軟件仿真出來的2D-DCT的仿真結果及執(zhí)行結果。其中,,din是8 bit數(shù)據(jù)輸入端口,,dout是經(jīng)變換后12 bit數(shù)據(jù)輸出端口。由執(zhí)行結果可以看出,,從輸入端口輸入的64個數(shù)據(jù)在經(jīng)過2D-DCT變換后,,所得到的結果與期望值一致。

 本文提出了分布式算法和行列分解法相結合的方案來實現(xiàn)2D-DCT,,該方案不僅能夠減少硬件資源的使用,,提高資源的利用率,并能提高運算速度,,能夠滿足數(shù)字圖像和視頻壓縮的實時性要求,。在查找表中所使用的值取的精度不夠高,所以存在一定的誤差,,但這種誤差不會引起人眼視覺上的差別,,是允許存在的。因此,,該方案可作為用FPGA來進行數(shù)字圖像和視頻壓縮中的一部分。
參考文獻
[1] 王相海,,宋傳鳴.圖像及視頻可分級編碼[M].北京:科學出版社,,2009.
[2] 王新年,張濤.數(shù)字圖像壓縮技術實用教程[M].北京:機械工業(yè)出版社,2009.
[3] KASSEM A,, HAMAD M,, HAIDAMOUS E. Image compression on FPGA using DCT[C]. IEEE International Conference on the Engineering Applications, 2009(7):320-323.
[4] FAKHR W,, EL-BANNA H. An efficient implementation of the 1D DCT using FPGA technology[C]. 11th IEEE International Conference and Workshop on the Engineering of Computer-Based Systems,, 2004(7): 356-360.
[5] PRASOON A K, RAJAN K. 4×4 2-D DCT for H.264/AVC[C]. International Conference on Advances in Computing,,Communication and Control,, 2009(5):573-576.
[6] NAVINER L, DANGER J L. Efficient implementation for high accuracy DCT processor based on FPGA[C]. 42nd Midwest Symposium on Circuits and System,, 1999,,8(1): 508-511.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。