基于FPGA的Gzip解壓縮硬件設(shè)計(jì)
Gzip解壓縮基本原理
本文引用地址:http://m.butianyuan.cn/article/235597.htmGzip文件格式分析
Gzip壓縮后的文件主要由3個(gè)部分組成,分別是文件頭、壓縮數(shù)據(jù)部分、文件尾,如圖1所示。
其中,文件頭包括:固定值,用于Gzip文件格式鑒別;壓縮方法,記錄壓縮時(shí)采用的壓縮方法;壓縮標(biāo)志,記錄操作系統(tǒng)等信息;文件名,記錄壓縮時(shí)文件的名稱;CRC16,記錄文件頭CRC16校驗(yàn)的值,等。
壓縮數(shù)據(jù)部分包括:1個(gè)或若干個(gè)壓縮數(shù)據(jù)塊,壓縮數(shù)據(jù)塊可能采用stored模式(直接存儲(chǔ)模式,當(dāng)數(shù)據(jù)不值得壓縮時(shí)直接進(jìn)行存儲(chǔ))、fixed模式(LZ77壓縮后的數(shù)據(jù)采用靜態(tài)huffman編碼)、dynamic模式(LZ77壓縮后的數(shù)據(jù)采用動(dòng)態(tài)huffman編碼)之中的一種。Gzip在壓縮數(shù)據(jù)時(shí)會(huì)采用上述3種模式對數(shù)據(jù)進(jìn)行壓縮,而存儲(chǔ)時(shí)則選擇一種最優(yōu)的壓縮模式。每個(gè)壓縮數(shù)據(jù)塊在最開始的3bits(其中前2bits:00,stored;01,fixed;10,dynamic;11:保留位;最后1bits:0,不是最后一個(gè)數(shù)據(jù)塊;1:最后一個(gè)數(shù)據(jù)塊)中會(huì)記錄該數(shù)據(jù)塊所采用的壓縮模式以及該數(shù)據(jù)塊是否為最后一個(gè)數(shù)據(jù)塊,而在解壓縮時(shí)只需針對性處理即可。
文件尾包括:CRC32,記錄原始數(shù)據(jù)CRC32校驗(yàn)值;ISIZE,記錄原始文件數(shù)據(jù)大小。該部分主要用于對解壓縮后的數(shù)據(jù)進(jìn)行校驗(yàn),保證解壓縮的正確性。
Gzip解壓縮算法流程研究
根據(jù)Gzip文件格式可以得出如圖2所示的解壓縮算法流程:
(1)準(zhǔn)備處理待解壓縮文件;
(2)對待解壓縮文件進(jìn)行文件頭處理,獲取壓縮方法、壓縮標(biāo)志、文件名等信息;
(3)處理每個(gè)塊剛開始的3bits,根據(jù)處理結(jié)果選擇進(jìn)入相應(yīng)的解壓縮模式(stored模式、fixed模式、dynamic模式);
fpga相關(guān)文章:fpga是什么
評論