基于FPGA的實(shí)時(shí)無(wú)損數據壓縮系統設計
摘要:針對某些特殊的測試實(shí)驗,既要求測試系統微體積、低功耗,還要求記錄大量數據的問(wèn)題,提出基于FPGA的數據壓縮解決方案。介紹了LZW壓縮算法的基本理論及其用FPGA硬件實(shí)現的方法。大量的實(shí)驗表明,系統工作穩定,壓縮速度快(8 MB/s以上),對實(shí)測數據的壓縮效果好(25%左右)、工作時(shí)電流小(37 mA),實(shí)現了速度、性能、功耗三者的統一。
關(guān)鍵詞:FPGA;數據壓縮;LZW算法
引言
在工業(yè)生產(chǎn)和科研中,通常要對信號進(jìn)行長(cháng)時(shí)間高速采樣,會(huì )產(chǎn)生大量采樣數據。在一些特殊環(huán)境下,受體積和功耗的限制,不能添加過(guò)多存儲器,需要引入數據壓縮技術(shù)來(lái)解決。軟件壓縮算法的運算量較大,需要很高的CPU運算速度和數據緩存空間,所以軟件壓縮一般應用
在對時(shí)間要求不高的非實(shí)時(shí)壓縮場(chǎng)合。而對運行速度有特殊要求的情況下,對數據的實(shí)時(shí)壓縮一般都要用硬件實(shí)現。有損壓縮之后數據進(jìn)行重構,與原來(lái)的數據有所不同。多數數據采集系統因被測對象的不確定性,需要采用無(wú)損數據壓縮。由于LZW無(wú)損壓縮算法具有自適應特性,在對信號統計特性不明確的情況下仍然有較好的壓縮效果。結合FPGA的高集成度、低功耗、靈活性及并行運算的特性,該設計用FPGA硬件實(shí)現LZW算法,以提高系統的實(shí)時(shí)壓縮能力。
1 LZW算法簡(jiǎn)介
LZW算法是一種基于字典的壓縮算法,由Lemple、Ziv、Welch三人共同創(chuàng )造。該算法在數據的壓縮過(guò)程中會(huì )根據輸入的數據動(dòng)態(tài)地建立一個(gè)字典,后續輸入的數據都會(huì )在這個(gè)字典中匹配查找,根據查找是否成功決定壓縮編碼的輸出。該算法的巧妙之處在于,壓縮過(guò)程中動(dòng)態(tài)建立的字典不需要與壓縮數據流一道進(jìn)行傳輸和存儲。在對數據進(jìn)行解壓時(shí),也能夠通過(guò)壓縮數據流重新建立一個(gè)字典,來(lái)完成解壓縮。算法粗略的描述如下:
算法首先進(jìn)行字典的初始化。然后輸入第一個(gè)字符數據賦給變量String(S)。數據逐個(gè)輸入壓縮器中,并賦給變量Character(C)。s和C生成一個(gè)索引,與字典中的詞條數據進(jìn)行匹配:如果匹配成功,將S和C的編碼值賦給S,繼續進(jìn)行下一輪的匹配;如果匹配失敗,則將S輸出,將S和C的編碼值存入字典,并且將C的值賦給S,這一過(guò)程一直進(jìn)行直到結束。最后輸出S,輸出結束標志。
由算法描述可見(jiàn),LZW算法過(guò)程并不是很復雜,能夠得到較快的壓縮速度。并且其在對數據特征并不了解情況下,也能有較好的壓縮效果。同時(shí),其對應的解壓縮算法也不復雜,解壓速度也優(yōu)于其他一些算法。
評論