組合壓縮在存儲(chǔ)測(cè)試系統(tǒng)中的應(yīng)用
3.2 算法的FPGA實(shí)現(xiàn)
系統(tǒng)的設(shè)計(jì)核心是壓縮算法實(shí)現(xiàn)。由于游程壓縮實(shí)現(xiàn)簡(jiǎn)單,下面重點(diǎn)討論LZW算法的實(shí)現(xiàn)。用FPGA實(shí)現(xiàn)LZW算法要解決以下幾個(gè)問(wèn)題[6]:
(1)壓縮過(guò)程中字典的緩存。因?yàn)樗袛?shù)據(jù)處理和傳輸工作都是由FPGA 完成,字典的緩存必須使用FPGA內(nèi)部有限RAM 資源。(2)字典的建立與更新。字典的建立使用FPGA 片內(nèi)資源來(lái)完成, 大容量字典雖然會(huì)提高壓縮比,但必須考慮到FPGA內(nèi)部的資源量。因此選用9 bit的定長(zhǎng)編碼方式對(duì)數(shù)據(jù)進(jìn)行處理。(3)壓縮后輸出數(shù)據(jù)流的傳輸和存儲(chǔ)。由于壓縮后是9 bit的數(shù)據(jù)流,不利于數(shù)據(jù)的存儲(chǔ)。因此需將9 bit的數(shù)據(jù)流轉(zhuǎn)換成8 bit的數(shù)據(jù)流進(jìn)行傳輸和存儲(chǔ)。FPGA設(shè)計(jì)過(guò)程中模塊劃分非常重要,好的模塊劃分能夠大大減少邏輯所消耗的面積和優(yōu)化功能的時(shí)序關(guān)鍵路徑。LZW算法實(shí)現(xiàn)劃分了8個(gè)模塊,各個(gè)模塊相互之間的連接如圖3所示。整個(gè)壓縮過(guò)程都是在狀態(tài)機(jī)控制模塊(U5)下進(jìn)行的。
3.3 結(jié)果與分析
本文對(duì)所實(shí)現(xiàn)壓縮算法進(jìn)行了綜合與仿真驗(yàn)證,使用開(kāi)發(fā)工具為Altera公司的QuartusII 7.2,使用Modelsim SE 6.1f仿真工具,用圖4所示的字符串作為輸入碼流進(jìn)行測(cè)試。圖中datain表示輸入數(shù)據(jù),dataout表示壓縮輸出碼流,以16進(jìn)制表示,用于驗(yàn)證壓縮的正確性。仿真結(jié)果與通過(guò)計(jì)算機(jī)軟件壓縮的結(jié)果完全一致。如圖4所示,本設(shè)計(jì)完全可行。
經(jīng)過(guò)綜合, 算法的實(shí)現(xiàn)使用了20個(gè)引腳,占用了13%的邏輯單元,使用了33%的內(nèi)部RAM存儲(chǔ)容量,綜合所得最高時(shí)鐘工作頻率為80 MHz,實(shí)時(shí)壓縮速度達(dá)到8 MB。表2是一組實(shí)測(cè)數(shù)據(jù)的壓縮效果。
本文介紹的在以FPGA為核心的存儲(chǔ)測(cè)試系統(tǒng), 實(shí)現(xiàn)了數(shù)據(jù)的無(wú)損組合壓縮。通過(guò)相關(guān)仿真和綜合驗(yàn)證, 壓縮效果顯著,大大減少了對(duì)存儲(chǔ)空間的要求,實(shí)現(xiàn)了壓縮性能與壓縮速度的統(tǒng)一。算法主體結(jié)構(gòu)用VHDL語(yǔ)言編寫, 具有可移植性,可廣泛地應(yīng)用于各種基于FPGA的數(shù)據(jù)壓縮系統(tǒng)中,有很大的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 張文棟.存儲(chǔ)測(cè)試系統(tǒng)的設(shè)計(jì)理論及其應(yīng)用[M].北京:高等教育出版社, 2002.
[2] 吳家安.數(shù)據(jù)壓縮技術(shù)及應(yīng)用[M].北京:科學(xué)出版社, 2009.
[3] 朱琳,羅家融,田一海.核聚變實(shí)驗(yàn)數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)壓縮算法的研究[J].計(jì)算機(jī)工程,2003,2(29):11-12.
[4] MARK N. LZW data compression[EB/OL].1989.http:marknelson.us/lzw-data-compression/.1989-10-01.
[5] Altera Corporation. Cyclone II device handbook,volume 1. 2007.
[6] 陳晉敏,黃春明,周軍.激光雷達(dá)數(shù)據(jù)無(wú)損壓縮的FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2007,15(1):100-102.
評(píng)論