李 博,袁興峰,李 隆
(合肥工業(yè)大學(xué)電子科學(xué)與應(yīng)用物理學(xué)院,安徽合肥 230009)
在一些嵌入式系統(tǒng)中,系統(tǒng)的正常工作需要大量的數(shù)據(jù)支持,數(shù)據(jù)量的大小和數(shù)據(jù)的傳遞速度直接影響了工作系統(tǒng)的成本和性能。采用數(shù)據(jù)壓縮的方法可以很好地緩解數(shù)據(jù)量巨大給嵌入式系統(tǒng)帶來(lái)的壓力。但是,在一般壓縮與解壓系統(tǒng)中無(wú)法滿足對(duì)任意段數(shù)據(jù)的解壓和提取[1-3],即如果需要壓縮包中的某段數(shù)據(jù)時(shí),必須對(duì)所有數(shù)據(jù)進(jìn)行解壓[4-6]。這種做法將降低解壓效率和系統(tǒng)性能。文中提出了一種優(yōu)化的壓縮與解壓系統(tǒng),提高了解壓的效率,降低了數(shù)據(jù)傳輸對(duì)帶寬的壓力。
該文完成的是一種軟件壓縮硬解壓的數(shù)據(jù)壓縮與解壓系統(tǒng)。數(shù)據(jù)壓縮是利用壓縮軟件完成的,解壓是在FPGA 端離線進(jìn)行的,系統(tǒng)并不需要關(guān)注軟件壓縮時(shí)的耗時(shí),如液晶儀表顯示系統(tǒng)[7-8]和識(shí)別系統(tǒng)[9-11]等。在軟件壓縮端,需要關(guān)注的是壓縮數(shù)據(jù)和校驗(yàn)碼生成的正確性。在硬件解壓端,需要關(guān)注解壓的正確性、速度和效率。系統(tǒng)框架圖如圖1 所示。
圖1 系統(tǒng)構(gòu)架
據(jù)圖1 可以看到數(shù)據(jù)首先通過(guò)PC 端進(jìn)行軟件壓縮,在壓縮過(guò)程中保證數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)壓縮完成后,將壓縮后的數(shù)據(jù)燒錄至嵌入式系統(tǒng)中的存儲(chǔ)器件如flash 等。至此,數(shù)據(jù)完成了壓縮與存儲(chǔ)。之后的操作脫離PC 端,數(shù)據(jù)的解壓操作將在嵌入式系統(tǒng)中進(jìn)行,系統(tǒng)運(yùn)行步驟如下所示:
1)嵌入式系統(tǒng)發(fā)出指令和地址到硬件數(shù)據(jù)解壓模塊;
2)硬件解壓模塊接收指令和地址,將地址轉(zhuǎn)化為壓縮后數(shù)據(jù)存儲(chǔ)的地址;
3)硬件解壓模塊根據(jù)指令和轉(zhuǎn)化后地址從存儲(chǔ)器件中取出壓縮數(shù)據(jù);
4)硬件解壓模塊接收從存儲(chǔ)器件返回的壓縮數(shù)據(jù),并進(jìn)行解壓;
5)硬件解壓模塊將解壓后的數(shù)據(jù)輸出到嵌入式系統(tǒng),供其使用。
經(jīng)過(guò)上述流程,可在嵌入式系統(tǒng)中對(duì)壓縮后的存儲(chǔ)數(shù)據(jù)有效地進(jìn)行解壓。
DEFLATE 壓縮算法是一種無(wú)損壓縮算法,由LZ77 和Huffman 兩部分組成[3]。
LZ77 算法是一種基于字典查找的壓縮算法。在一個(gè)文件中往往存在大量重復(fù)出現(xiàn)的字符串,有效地消除這些冗余的字符串,可以達(dá)到壓縮效果。在壓縮過(guò)程中,數(shù)據(jù)可以放入兩個(gè)窗口中,第一個(gè)窗口為已處理數(shù)據(jù),第二個(gè)窗口為未處理數(shù)據(jù),可以將已處理數(shù)據(jù)窗口中的數(shù)據(jù)看做字典。在未處理數(shù)據(jù)窗口中,將找到與已處理數(shù)據(jù)窗口中匹配長(zhǎng)度最長(zhǎng)的數(shù)據(jù)字符串,用一對(duì)有用的信息來(lái)描述這串字符串,這對(duì)有用的信息往往是相對(duì)距離和匹配長(zhǎng)度。通過(guò)這對(duì)信息,就可以快速且準(zhǔn)確找到它所匹配的數(shù)據(jù)。將文件中的所有數(shù)據(jù)經(jīng)過(guò)兩個(gè)窗口處理[12],即可完成LZ77 壓縮。
經(jīng)過(guò)LZ77 算法處理后的數(shù)據(jù)依然存在很大的壓縮空間。DEFLATE 壓縮算法的Huffman 編碼[5]部分對(duì)經(jīng)過(guò)LZ77 算法壓縮后的數(shù)據(jù)進(jìn)行進(jìn)一步壓縮。Huffman 編碼也是無(wú)損壓縮算法的一種[13]。其核心思想是對(duì)文件中的數(shù)據(jù)進(jìn)行重新編碼,給出現(xiàn)頻率高的字符賦予碼長(zhǎng)較短的編碼,給出現(xiàn)頻率低的字符賦予碼長(zhǎng)較長(zhǎng)的編碼,以此來(lái)達(dá)到平均碼長(zhǎng)最短的效果。
壓縮后的數(shù)據(jù),按照固定的方式進(jìn)行排序,這樣有利于硬件解壓的實(shí)現(xiàn)。通過(guò)壓縮算法的介紹,可以明顯地看出,DEFLATE 壓縮算法利用了數(shù)據(jù)前后的關(guān)聯(lián)性。因此,數(shù)據(jù)的解壓也必須是對(duì)一個(gè)完整的數(shù)據(jù)包進(jìn)行解壓[6]。一個(gè)系統(tǒng)在提取數(shù)據(jù)時(shí),可能從內(nèi)存中的任何一個(gè)位置開(kāi)始,考慮到系統(tǒng)的兼容性和解壓的效率,可以首先將原始數(shù)據(jù)分為固定大小的數(shù)據(jù)包,然后,對(duì)這些數(shù)據(jù)包依次進(jìn)行壓縮。當(dāng)需要內(nèi)存中間某段數(shù)據(jù)時(shí),不必從頭開(kāi)始進(jìn)行解壓,只需要通過(guò)解析地址提取出包含需要信息的一個(gè)或者幾個(gè)壓縮包進(jìn)行解壓即可。下面將以一個(gè)16 kB的原始數(shù)據(jù)包為例,并配合壓縮軟件流程圖對(duì)壓縮數(shù)據(jù)的格式進(jìn)行說(shuō)明。
壓縮軟件流程圖如圖2 所示。首先將待壓縮數(shù)據(jù)以16 kB 為一個(gè)壓縮包進(jìn)行切割,最后不滿16 kB的數(shù)據(jù)包用0 進(jìn)行補(bǔ)齊。然后,依次將數(shù)據(jù)包送入壓縮函數(shù)進(jìn)行壓縮。在一個(gè)數(shù)據(jù)包進(jìn)行壓縮后,需要判斷壓縮后的數(shù)據(jù)量比未壓縮前是否變小,如果沒(méi)有,即此數(shù)據(jù)包不進(jìn)行壓縮添加校驗(yàn)碼后直接輸出,如果變小了,即此數(shù)據(jù)包進(jìn)行壓縮并在添加校驗(yàn)碼后進(jìn)行輸出。之后,需要將此數(shù)據(jù)包的基本信息添加到查找表中,信息中包括是否壓縮、存放位置、壓縮后數(shù)據(jù)大小。為了方便查找表信息的記錄,壓縮后的數(shù)據(jù)需要進(jìn)行1 kB 對(duì)齊操作。最后,需要判斷處理的數(shù)據(jù)包是否為最后一個(gè)數(shù)據(jù)包,如果不是,則重復(fù)上述流程對(duì)剩余數(shù)據(jù)包進(jìn)行處理,如果是,則軟件壓縮流程結(jié)束。通過(guò)軟件壓縮流程操作后,得到按照固定格式排放的壓縮數(shù)據(jù)和查找表。
圖2 壓縮軟件流程圖
壓縮后數(shù)據(jù)結(jié)構(gòu)圖如圖3 所示。在壓縮后數(shù)據(jù)結(jié)構(gòu)中,前256 kB 用來(lái)保存查找表信息,文中規(guī)定一個(gè)16 kB 的數(shù)據(jù)包的數(shù)據(jù)是否壓縮,存儲(chǔ)大小,起始位置信息記錄到4個(gè)字節(jié)中,通過(guò)這種方式,256 kB查找表最多可記錄1 GB 的原始數(shù)據(jù)經(jīng)壓縮數(shù)據(jù)后的信息。查找表信息后存放壓縮后數(shù)據(jù),每個(gè)數(shù)據(jù)包包含校驗(yàn)包頭、壓縮處理后,數(shù)據(jù)以及4 字節(jié)的校驗(yàn)碼。
圖3 壓縮后數(shù)據(jù)結(jié)構(gòu)圖
Zlib 是提供數(shù)據(jù)壓縮功能的函式庫(kù)[13],此函式庫(kù)為自由軟件,使用Zlib 授權(quán)。Zlib 支持DEFLATE 算法,可以通過(guò)配置參數(shù),實(shí)現(xiàn)上文介紹的LZ77 和靜態(tài)Huffman 壓縮算法流程。通過(guò)Zlib 函式庫(kù),可以對(duì)上述算法流程進(jìn)行快速且可靠的開(kāi)發(fā)。
通過(guò)軟件壓縮系統(tǒng),得到了壓縮數(shù)據(jù)包。數(shù)據(jù)包中包含了解壓需要的查找表和壓縮后數(shù)據(jù)。在硬件端,需要將查找表的信息進(jìn)行解析,根據(jù)查找表的信息,查詢壓縮數(shù)據(jù)包的大小位置以及壓縮方式,通過(guò)解壓策略對(duì)數(shù)據(jù)進(jìn)行正確的解壓,并保證解壓出的數(shù)據(jù)與原始數(shù)據(jù)的一致性。
在壓縮過(guò)程中,數(shù)據(jù)首先經(jīng)過(guò)LZ77 算法處理,再經(jīng)過(guò)Huffman 算法處理,得到壓縮后數(shù)據(jù)[14]。對(duì)于壓縮數(shù)據(jù)包的解壓過(guò)程,與此過(guò)程相反。首先,需要對(duì)壓縮數(shù)據(jù)包進(jìn)行靜態(tài)Huffman 解壓,之后需要進(jìn)行LZ77 算法解壓。經(jīng)過(guò)兩次數(shù)據(jù)處理,即可得到解壓后與原數(shù)據(jù)相同的數(shù)據(jù)。
靜態(tài)Huffman 的解壓策略如下:需要處理的數(shù)據(jù)是完整的壓縮數(shù)據(jù)包,數(shù)據(jù)包中包含的數(shù)據(jù)是經(jīng)過(guò)靜態(tài)Huffman 編碼之后的數(shù)據(jù)。在解壓時(shí),每一段不同的二進(jìn)制編碼都可能代表著一個(gè)原始數(shù)據(jù)、一個(gè)長(zhǎng)度數(shù)據(jù)或者一個(gè)距離數(shù)據(jù)。解壓過(guò)程需要依賴(lài)靜態(tài)Huffman 表[1]。首先,對(duì)照字符-長(zhǎng)度Huffman編碼表[1],對(duì)其進(jìn)行解碼。在這一步中,可能得到的結(jié)果有兩種:第一種是通過(guò)解碼得到一個(gè)字符數(shù)據(jù),此時(shí)需要將此數(shù)據(jù)記錄下來(lái),并且設(shè)置標(biāo)志位以表示此位為一個(gè)原始字符;第二種是通過(guò)解碼得到一個(gè)長(zhǎng)度數(shù)據(jù),設(shè)置一個(gè)標(biāo)志位以表示此位為一個(gè)匹配長(zhǎng)度信息,同時(shí)還包含了另一個(gè)重要信息:在此位置的下一個(gè)數(shù)據(jù)是一個(gè)匹配距離編碼。因此,在對(duì)此位的下一組二進(jìn)制數(shù)進(jìn)行解碼時(shí),需要使用距離編碼表[1]中的映射關(guān)系進(jìn)行解碼。通過(guò)上述解碼過(guò)程,即可對(duì)原始數(shù)據(jù)壓縮包進(jìn)行靜態(tài)Huffman 解壓操作,并且生成LZ77 解壓流程所需數(shù)據(jù)。
經(jīng)過(guò)Huffman 解壓后的數(shù)據(jù)主要包含兩部分,一部分是需要進(jìn)行解壓的數(shù)據(jù),另一部分是這段數(shù)據(jù)的標(biāo)志位。此階段的解壓需要兩部分信息共同操作完成。在進(jìn)行解壓時(shí),首先需要根據(jù)標(biāo)志位置判斷此數(shù)據(jù)時(shí)原始字符數(shù)據(jù)還是長(zhǎng)度數(shù)據(jù)。如果是字符數(shù)據(jù),則直接進(jìn)行輸出;如果是長(zhǎng)度數(shù)據(jù),需要同時(shí)讀取此數(shù)據(jù)位的下一個(gè)數(shù)據(jù),即與此長(zhǎng)度信息相匹配的距離數(shù)據(jù)。根據(jù)長(zhǎng)度距離信息對(duì)進(jìn)行匹配數(shù)據(jù),將對(duì)應(yīng)數(shù)據(jù)復(fù)制到此長(zhǎng)度距離信息對(duì)位置,即可完成LZ77 解壓。在解壓完成后會(huì)產(chǎn)生一個(gè)校驗(yàn)碼,若此校驗(yàn)碼和壓縮時(shí)所產(chǎn)生的校驗(yàn)碼一致,則表明壓縮數(shù)據(jù)包讀取無(wú)誤,數(shù)據(jù)已進(jìn)行正確解壓。否則,則表明壓縮數(shù)據(jù)包讀取有誤,此次數(shù)據(jù)解壓結(jié)果錯(cuò)誤[15]。
解壓流程在FPGA 平臺(tái)實(shí)現(xiàn),硬件解壓結(jié)構(gòu)圖如圖4 所示。
圖4 硬件解壓結(jié)構(gòu)圖
數(shù)據(jù)解壓模塊首先需要接收到原始數(shù)據(jù)地址信息和指令,通過(guò)地址解析模塊后,即可將原始地址信息解析為壓縮后的數(shù)據(jù)包地址信息。這部分的邏輯如下:計(jì)算需要提取的數(shù)據(jù)在原始數(shù)據(jù)包中的位置。將該位置信息進(jìn)行解析,根據(jù)解析值提取相應(yīng)的查找表信息即可明確相應(yīng)壓縮數(shù)據(jù)包的位置、數(shù)據(jù)包大小、是否壓縮。根據(jù)上述信息即可得索引壓縮包地址。
從存儲(chǔ)器件讀入的壓縮數(shù)據(jù)包首先需要進(jìn)入靜態(tài)Huffman 解壓模塊。在進(jìn)行Huffman 解壓時(shí),需要根據(jù)靜態(tài)Huffman 解壓表對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行查找處理。主要硬件思想:輸入足夠的數(shù)據(jù)位首先需要判斷查找到的數(shù)據(jù)是字符還是長(zhǎng)度,如果是字符數(shù)據(jù),即可將其存儲(chǔ)至字符和長(zhǎng)度FIFO 中并附加一位標(biāo)識(shí)位0,表明此數(shù)據(jù)為字符,拼接在數(shù)據(jù)的最高位。如果是長(zhǎng)度數(shù)據(jù),需要根據(jù)靜態(tài)Huffman 字符-長(zhǎng)度編碼表[1]進(jìn)行解碼,將解析出來(lái)的長(zhǎng)度數(shù)據(jù)同樣存儲(chǔ)到字符和長(zhǎng)度FIFO 中并附加一位標(biāo)識(shí)位1,標(biāo)識(shí)此數(shù)據(jù)為長(zhǎng)度數(shù)據(jù)。如果在字符-長(zhǎng)度編碼表中未找到相匹配的數(shù)據(jù),即可對(duì)數(shù)據(jù)進(jìn)行距離靜態(tài)Huffman表[1]的解壓,將距離數(shù)據(jù)存儲(chǔ)到存儲(chǔ)距離FIFO 中。當(dāng)解析出停止標(biāo)識(shí)位后,靜態(tài)Huffman 解壓結(jié)束[16]。
在LZ77 解壓模塊,根據(jù)解壓策略可知,需要根據(jù)一個(gè)字典進(jìn)行解壓,因此,需要一塊RAM 進(jìn)行存儲(chǔ)字典數(shù)據(jù)。主要硬件思想:LZ77 會(huì)向字符和距離FIFO 申請(qǐng)數(shù)據(jù),得到數(shù)據(jù)后首先需要根據(jù)數(shù)據(jù)最高位即標(biāo)識(shí)位判斷數(shù)據(jù)是字符數(shù)據(jù)還是長(zhǎng)度數(shù)據(jù),如果是字符數(shù)據(jù)即標(biāo)識(shí)位為0,對(duì)數(shù)據(jù)進(jìn)行輸出,同時(shí)還需要將數(shù)據(jù)寫(xiě)入字典RAM 中,對(duì)字典進(jìn)行更新。如果是長(zhǎng)度數(shù)據(jù)即標(biāo)識(shí)位為1,需要向距離FIFO 中申請(qǐng)一個(gè)距離數(shù)據(jù),根據(jù)此長(zhǎng)度距離數(shù)據(jù)對(duì)在RAM中進(jìn)行查找數(shù)據(jù),長(zhǎng)度和距離即可表示為數(shù)據(jù)在RAM 中存儲(chǔ)的地址。RAM 的大小,應(yīng)該與LZ77 壓縮時(shí)已處理數(shù)據(jù)窗口的大小一致。
RAM 的存儲(chǔ)策略:假設(shè)一個(gè)指針指向最先進(jìn)來(lái)的數(shù)據(jù),距離數(shù)據(jù)的判斷即為與此指針位置的距離。在找到匹配數(shù)據(jù)后,需要將相應(yīng)的數(shù)據(jù)進(jìn)行復(fù)制輸出,同時(shí)用這段數(shù)據(jù)更新RAM 中的字典數(shù)據(jù)。
系統(tǒng)的壓縮部分實(shí)現(xiàn)平臺(tái)為Visual Studio 2012,在此平臺(tái)上可以根據(jù)Zlib 函式庫(kù),結(jié)合上述壓縮流程開(kāi)發(fā)出壓縮軟件。系統(tǒng)的解壓部分通過(guò)ISE 和modelsim 進(jìn)行設(shè)計(jì)和聯(lián)合仿真驗(yàn)證,并在spartan6-xc6slx16上進(jìn)行實(shí)現(xiàn)。
在硬件解壓端,首先需要進(jìn)行靜態(tài)Huffman 解壓。靜態(tài)Huffman 解壓模塊接口中,clk 為工作時(shí)鐘,頻率為125 MHz。經(jīng)過(guò)靜態(tài)Huffman 解壓操作,需要向字符長(zhǎng)度FIFO 傳輸寫(xiě)指令(即模塊中l(wèi)iteral_length_wr)和距離FIFO 中的寫(xiě)指令(即模塊中的distance_out_wr),對(duì)應(yīng)于上述兩個(gè)寫(xiě)指令的分別是輸出的字符和長(zhǎng)度的組合數(shù)據(jù)(literal_length_out)和距離數(shù)據(jù)(distance)。Bit_cost 信號(hào)表示一次靜態(tài)Huffman 解壓操作具體消耗的位寬,由于不同的數(shù)據(jù)消耗位寬不同,需要通過(guò)此信號(hào)判斷下一次解壓的起始位置。Unzip_done 信號(hào)是當(dāng)檢查到連續(xù)出現(xiàn)七位零數(shù)據(jù)時(shí)進(jìn)行拉高,表示此次數(shù)據(jù)壓縮包靜態(tài)Huffman 解壓操作完成。
經(jīng)過(guò)靜態(tài)Huffman 解壓之后,利用存儲(chǔ)在兩個(gè)FIFO 中的數(shù)據(jù)即可進(jìn)行LZ77 解壓操作。LZ77 解壓模塊接口中,unzip_data_en 為解壓數(shù)據(jù)輸出使能,unzip_data 為解壓數(shù)據(jù)輸出端口,dis_fifo_empty 信號(hào)是從距離FIFO 中輸入到LZ77 解壓模塊的信號(hào),表示此FIFO 中是否有數(shù)據(jù),dis_fifo_rd 是從距離FIFO中讀數(shù)據(jù)的使能信號(hào),dis_fifo_data 表示從距離FIFO中讀到的數(shù)據(jù)。len_fifo_empty 信號(hào)是從字符長(zhǎng)度FIFO 中輸入到LZ77 解壓模塊的信號(hào),表示此FIFO中是否有數(shù)據(jù),len_fifo_rd 是從字符距離FIFO 中讀數(shù)據(jù)的使能信號(hào),len_fifo_data 表示從字符長(zhǎng)度FIFO中讀到的數(shù)據(jù)。
通過(guò)上述流程,在進(jìn)行上板驗(yàn)證之前,先經(jīng)過(guò)beyond compare 對(duì)比軟件,將原始數(shù)據(jù)包和經(jīng)過(guò)軟件壓縮和硬件解壓之后的數(shù)據(jù)進(jìn)行對(duì)比。兩邊數(shù)據(jù)完全一致,驗(yàn)證了系統(tǒng)邏輯的正確性。
實(shí)物驗(yàn)證圖如圖5 所示,圖(a)為原始數(shù)據(jù)顯示圖片,圖(b)為經(jīng)過(guò)壓縮和解壓處理后得到驗(yàn)證圖。此次驗(yàn)證在FPGA 實(shí)驗(yàn)板上進(jìn)行,通過(guò)液晶屏進(jìn)行顯示。
圖5 實(shí)物驗(yàn)證圖
在驗(yàn)證功能的正確性之后,需要驗(yàn)證壓縮率。測(cè)試結(jié)果如表1 所示,不同文件(圖像紋理)的壓縮率不同。因?yàn)橄到y(tǒng)使用的壓縮算法是由靜態(tài)Huffman 和LZ77 組合而成,這兩種算法雖然都可以完成無(wú)損壓縮,但是在壓縮率上是不定的,壓縮效果的好壞與原始數(shù)據(jù)的結(jié)構(gòu)和不同字符出現(xiàn)的頻率有關(guān)。而且在壓縮數(shù)據(jù)包中,存在一個(gè)32 kB 的查找表,所占空間大小固定。原始數(shù)據(jù)量越大,壓縮效果越好。
表1 壓縮效果對(duì)比數(shù)據(jù)
表2 為傳輸數(shù)據(jù)量對(duì)比表。使用測(cè)試向量與表1 相同。其中系統(tǒng)傳輸數(shù)據(jù)量為嵌入式系統(tǒng)解壓出數(shù)據(jù)中任意連續(xù)的16 kB 數(shù)據(jù)時(shí)所需要從存儲(chǔ)器件中讀取的數(shù)據(jù)量。一般系統(tǒng)是指直接使用GZIP 算法進(jìn)行壓縮[1],其中Huffman 算法設(shè)定為使用靜態(tài)Huffman 算法。一般系統(tǒng)傳輸數(shù)據(jù)量即為壓縮包總量,該文系統(tǒng)傳輸數(shù)據(jù)量為可能的最大傳輸量。解壓效率為目標(biāo)數(shù)據(jù)量在解壓出的總數(shù)據(jù)量所占比重。
表2 系統(tǒng)性能對(duì)比表
通過(guò)表2 可以得到:第一點(diǎn),在解壓數(shù)據(jù)中連續(xù)16 kB 數(shù)據(jù)時(shí),該文系統(tǒng)的數(shù)據(jù)傳輸量遠(yuǎn)低于一般系統(tǒng),有效緩解了數(shù)據(jù)傳輸?shù)膸拤毫?;第二點(diǎn),該系統(tǒng)的解壓效率普遍達(dá)到50%,遠(yuǎn)高于一般系統(tǒng),有效減少了系統(tǒng)的無(wú)用功,提高了系統(tǒng)性能;第三點(diǎn),有效解壓數(shù)據(jù)量占原始數(shù)據(jù)量越小,一般系統(tǒng)的解壓效率越低,該文系統(tǒng)可根據(jù)數(shù)據(jù)需求量進(jìn)行分塊傳輸,減少了有效解壓數(shù)據(jù)量對(duì)解壓效率的影響。
該文首先講解了所使用壓縮算法的基本原理和改進(jìn)方法,并提出相應(yīng)的解壓策略和其硬件實(shí)現(xiàn)思想。然后,實(shí)現(xiàn)了基于Visual Studio 2012 平臺(tái)的壓縮功能和基于FPGA 的解壓功能。在壓縮時(shí)按照固定格式排列并生成了查找表,為穩(wěn)定地進(jìn)行解壓操作提供了保證。在解壓側(cè),利用FPGA 的并行性,進(jìn)行快速且準(zhǔn)確的解壓操作。最后,通過(guò)實(shí)驗(yàn)驗(yàn)證了該文系統(tǒng)的解壓效率高于一般系統(tǒng),以及高效解壓的穩(wěn)定性。