新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的LZO實時無損壓縮的硬件設計

基于FPGA的LZO實時無損壓縮的硬件設計

作者:尚壯壯 時間:2015-04-27 來源:電子產(chǎn)品世界 收藏

  2.2 硬件加速方案

本文引用地址:http://m.butianyuan.cn/article/273211.htm

  (1)分離雙端口

  為了加速字符串的比對過程,本文提出如圖3(B)所示的分離雙端口的結(jié)構(gòu),圖中的多路選擇器1用于將待壓縮數(shù)據(jù)交替式寫入雙端口1和雙端口RAM2之一中,多路選擇器2用于將讀取的數(shù)據(jù)交替式輸出。例如,現(xiàn)有字符ABCDEFGHIJ要存入雙端口RAM中,具體如下:ABCD通過多路選擇器1被寫入RAM1中的data1處,EFGH通過多路選擇器1被寫入RAM2中的data2處,IJ通過多路選擇1被寫入data3,此時模塊需要讀取字符串BCDE,則在讀取RAM1中data1處的BCD的同時讀取RAM2中data2處的E,即給RAM1讀地址的同時可以給RAM2讀地址,這樣同一時刻可以讀2處地址對應的內(nèi)容。相比于一般性雙端口RAM結(jié)構(gòu),本結(jié)構(gòu)可以實現(xiàn)一次完成讀取操作。做進一步擴展可得出如下結(jié)論:若RAM的寬度為W,則讀取字符數(shù)在2W以內(nèi)時,采用分離雙端口RAM結(jié)構(gòu)可以一次完成讀取操作;則讀取字符數(shù)在2~2W以內(nèi)時,采用一般性雙端口RAM結(jié)構(gòu)可能要讀兩次。當然,不僅RAM的寬度可以增加,RAM的個數(shù)也可以增加,當RAM的寬度和RAM個數(shù)越大時,完成讀操作只需一次的可能性就越大。

  (2)塊標記

  LZO壓縮算法在壓縮每個數(shù)據(jù)塊之前都要對字典模塊進行初始化為0的操作,即對RAM進行寫0操作,然而寫0操作會耗費若干個周期。若字典模塊深度為16K,即RAM的深度為16K,當進行寫0操作時至少花費16K個周期。通常解決此類問題的一種方法是采用乒乓操作的方式,即用兩個字典來交替處理。為了解決初始化帶來的時間花費和資源消耗的問題,本文提出一種如圖3(C)所示的塊標記字典結(jié)構(gòu),該結(jié)構(gòu)主要包括:壓縮控制模塊,用于產(chǎn)生壓縮信息,即字符索引及字符所對應的Hash值;flag產(chǎn)生模塊,用于產(chǎn)生0或者1兩種flag標識,表示是當前數(shù)據(jù)塊還是歷史數(shù)據(jù)塊;信息合并模塊,用于將字符索引和flag標識進行合并,然后存入字典模塊。整個結(jié)構(gòu)的工作原理可歸納如下:flag標識0或1表示是當前數(shù)據(jù)塊或歷史數(shù)據(jù)塊,如壓縮第一個數(shù)據(jù)塊時標識為0,壓縮第二個數(shù)據(jù)塊時標識為1,壓縮第三個數(shù)據(jù)塊時標識為0,壓縮第四個數(shù)據(jù)塊時標識為1,如此進行反復;壓縮控制模塊產(chǎn)生字符索引然后與flag進行合并共同存入通過字符計算出的Hash值對應的地址處。例如,現(xiàn)假設已經(jīng)壓縮到第二個數(shù)據(jù)塊,則根據(jù)上面的工作原理可知,當前的標識應該為1,在壓縮時取出字典中的信息并判斷第一個bit位,如果第一個bit位為0則說明該壓縮信息是歷史數(shù)據(jù)塊,壓縮信息無效;如果第一個bit位為1則說明可能是當前數(shù)據(jù)塊(因為也有可能是很久以前的數(shù)據(jù)塊),根據(jù)壓縮信息取出相應字符進行比對確認。

  綜上所述,塊標記字典結(jié)構(gòu)具有如下特點:無需初始化操作,避免了初始化過程帶來的時間花費;摒棄了乒乓操作的思想,節(jié)省了乒乓操作帶來的大量資源的消耗;該結(jié)構(gòu)在片上資源緊缺的情況下是最優(yōu)的選擇。

  (3)字典分離

  軟件在實現(xiàn)LZO壓縮算法過程中,當碰撞發(fā)生時,LZO壓縮算法會進行第二次Hash操作,該次Hash操作在第一次Hash操作的基礎上進行偏移。為了提升LZO壓縮算法的壓縮率,本文提出一種如圖3(D)所示的字典分離的結(jié)構(gòu),當Hash碰撞發(fā)生時,LZO壓縮算法進行第二次Hash操作,但第二次Hash操作對應的字符串索引不再存入第一個字典中,而是單獨開辟一塊RAM空間進行存儲。字典分離結(jié)構(gòu)的總存儲空間增加了字典2的大小,這樣在壓縮文件的過程中,文件的壓縮信息量也會增加。可見,該結(jié)構(gòu)可以改進LZO壓縮算法的壓縮率。

fpga相關文章:fpga是什么


網(wǎng)線測試儀相關文章:網(wǎng)線測試儀原理


關鍵詞: LZO FPGA LZSS RAM 壓縮算法

評論


相關推薦

技術專區(qū)

關閉