亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的miniLZO解壓縮算法實(shí)現(xiàn)

        2018-11-13 05:31:20鄧計(jì)才尹紅霞
        現(xiàn)代電子技術(shù) 2018年22期
        關(guān)鍵詞:狀態(tài)機(jī)

        鄧計(jì)才 尹紅霞

        摘 要: miniLZO解壓縮算法是一種輕量級(jí)的無(wú)損解壓縮算法,廣泛應(yīng)用于網(wǎng)絡(luò)傳輸中。為提高解壓速度,降低傳輸延遲,該文充分利用FPGA的并行性,設(shè)計(jì)高速緩存方案和基于狀態(tài)機(jī)的解壓縮方案,實(shí)現(xiàn)了miniLZO的硬件解壓縮算法。該硬件解壓縮算法在Xilinx公司XC7K325T FPGA芯片上進(jìn)行了工程實(shí)現(xiàn),測(cè)試結(jié)果顯示,最高吞吐率可達(dá)到164 MB/s。該硬件解壓縮方案速度快、功能完備、便于移植,具有較強(qiáng)的工程實(shí)用性。

        關(guān)鍵詞: miniLZO; FPGA; 解壓縮算法; 網(wǎng)絡(luò)傳輸; 高速緩存; 狀態(tài)機(jī)

        中圖分類號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2018)22?0106?04

        Abstract: The miniLZO decompression algorithm is a lightweight lossless decompression algorithm, which is widely used in network transmission. The high?speed cache scheme and the decompression scheme based on the state machine are designed in this paper by making full use of the parallelism of the FPGA to implement the miniLZO hardware decompression algorithm, so as to improve the decompression speed and reduce transmission delay. Engineering implementation of the hardware decompression algorithm is performed on the XC7K325T FPGA chip of Xilinx Company. The test results show that the maximum throughput of the algorithm can reach 164 MB/s, and the hardware decompression scheme has fast speed, complete function, and is easy to be transplanted, which has a strong engineering practicability.

        Keywords: miniLZO; FPGA; decompression algorithm; network transmission; high?speed cache; state machine

        0 引 言

        LZO是一個(gè)開(kāi)源的無(wú)損壓縮C語(yǔ)言庫(kù),是致力于解壓速度的一種數(shù)據(jù)壓縮算法,其程序是線性安全的,LZO壓縮和解壓縮因其比較迅速且占用內(nèi)存小等特點(diǎn),廣泛應(yīng)用于網(wǎng)絡(luò)傳輸中。miniLZO是一種輕量級(jí)的壓縮和解壓縮庫(kù),它是基于LZO壓縮和解壓縮算法實(shí)現(xiàn)的。LZO雖然功能強(qiáng)大,但是編譯后的庫(kù)文件較大,而miniLZO編譯后的庫(kù)則小于5 Kbit,因此miniLZO是為那些僅需要簡(jiǎn)單壓縮和解壓縮功能的程序而設(shè)計(jì)。

        FPGA采用流水線與并行運(yùn)算,在數(shù)據(jù)處理中具有高效靈活的特點(diǎn),適用于硬件的解壓縮的實(shí)現(xiàn)[1?2]。基于FPGA的硬件解壓縮方案具有速度快、處理能力強(qiáng)的優(yōu)點(diǎn),因此得到了人們的重視。本文首先對(duì)miniLZO算法進(jìn)行簡(jiǎn)單分析,然后根據(jù)解壓縮算法原理設(shè)計(jì)出可移植的FPGA電路,并進(jìn)行測(cè)試與驗(yàn)證,最后對(duì)全文進(jìn)行總結(jié)。

        1 miniLZO算法

        LZO壓縮算法在壓縮過(guò)程中會(huì)采用特定的算法判斷當(dāng)前字符串是否會(huì)在歷史字符串(已經(jīng)處理過(guò)的字符串)中出現(xiàn)過(guò),如果出現(xiàn)過(guò)(定義為重復(fù)字符),則計(jì)算重復(fù)字符串的長(zhǎng)度和指回距離,采用(重復(fù)長(zhǎng)度,指回距離)代替當(dāng)前的重復(fù)字符串。這里的重復(fù)長(zhǎng)度是指,后出現(xiàn)的字符串與先出現(xiàn)的字符串中連續(xù)相同部分的長(zhǎng)度;指回距離是指,先后兩個(gè)字符串之間相隔的距離(每個(gè)字符為一個(gè)單位),如果沒(méi)有出現(xiàn)過(guò),就定義為新字符,則首先輸出新字符的個(gè)數(shù),再輸出新字符。例如待處理的字符串為“ABCDEFGHABCDEFJKLM”,壓縮算法逐個(gè)處理字符,處理“ABCDEFGH”時(shí)沒(méi)有發(fā)現(xiàn)重復(fù)字符;處理到“ABCDEF”時(shí)發(fā)現(xiàn)這些字符在歷史字符串中已經(jīng)出現(xiàn)過(guò),計(jì)算重復(fù)長(zhǎng)度為6,指回距離為8,則用(6,8)代替“ABCDEF”;處理到“JKLM”時(shí)沒(méi)發(fā)現(xiàn)重復(fù)字符。字符串到此處理完畢,則整個(gè)字符被壓縮成(08)H ABCDEFGH(6,8)(04)H JKLM,其中H表示16進(jìn)制。

        判斷字符是否出現(xiàn)過(guò)需要通過(guò)Hash計(jì)算建立待處理字符串與字符串索引的對(duì)應(yīng)關(guān)系。首先將Hash計(jì)算結(jié)果作為地址,然后將索引值作為數(shù)據(jù)存儲(chǔ)在字典中(字典為一塊單獨(dú)的數(shù)據(jù)存儲(chǔ)空間),在處理字符中只需要計(jì)算hash值即可,在字典中讀取Hash對(duì)應(yīng)的數(shù)據(jù)是否有字符索引值,完成此操作之后,再通過(guò)索引值讀取對(duì)比字符串進(jìn)行比對(duì),從而實(shí)現(xiàn)了重復(fù)字符的判斷。miniLZO的hash操作通常較為簡(jiǎn)單,Hash函數(shù)為:

        miniLZO解壓縮是直接將miniLZO的編碼數(shù)據(jù)通過(guò)相反的操作,根據(jù)接收到的數(shù)據(jù)判斷是新字符還是重復(fù)字符。若為新字符判斷新字符個(gè)數(shù),讀取新字符并輸出;若為重復(fù)字符則計(jì)算重復(fù)長(zhǎng)度和指回距離,讀取已經(jīng)處理的字符并輸出,直至處理到字符結(jié)束。解壓縮處理流程圖見(jiàn)圖2。

        2 解壓縮算法實(shí)現(xiàn)

        根據(jù)miniLZO的解壓縮流程,本文將FPGA實(shí)現(xiàn)電路規(guī)劃為3個(gè)部分,數(shù)據(jù)處理模塊,解壓縮模塊、數(shù)據(jù)保存模塊等。

        數(shù)據(jù)處理模塊主要實(shí)現(xiàn)對(duì)外部數(shù)據(jù)總線的數(shù)據(jù)交換,暫停需要解壓縮的數(shù)據(jù),為后端模塊提供數(shù)據(jù)供應(yīng)。解壓縮模塊則根據(jù)讀取的數(shù)據(jù)分離出新字符與重復(fù)字符,數(shù)據(jù)保存模塊對(duì)重復(fù)字符進(jìn)行處理,最后保存解壓縮后的數(shù)據(jù)[3]。miniLZO解壓縮硬件電路結(jié)構(gòu)圖如圖3所示。

        2.1 數(shù)據(jù)處理模塊

        數(shù)據(jù)處理模塊主要包含兩個(gè)模塊,即輸入緩存模塊和高速緩存模塊。輸入緩存模塊主要存儲(chǔ)外部數(shù)據(jù)總線輸出過(guò)來(lái)的數(shù)據(jù),為解壓縮模塊提供數(shù)據(jù)。高速緩存模塊主要是臨時(shí)存放待解壓數(shù)據(jù),用于提高處理時(shí)間[4]。

        為了實(shí)現(xiàn)數(shù)據(jù)的高速傳輸,本設(shè)計(jì)采用雙端口Dual?RAM實(shí)現(xiàn)輸入緩存模塊,可同時(shí)讀寫數(shù)據(jù),只要寫入/讀取地址不指向同一地址便不會(huì)出現(xiàn)錯(cuò)誤,亦可實(shí)現(xiàn)RAM未保存滿即可開(kāi)始解壓縮操作,提高了解壓縮速率[5],本設(shè)計(jì)中RAM大小設(shè)為4 kB,其中I/O寬度為64 bit,深度為512 bit。雙端口RAM雖然有存量空間可足夠大的優(yōu)點(diǎn),但缺點(diǎn)是讀取數(shù)據(jù)需要一定的時(shí)延。以XILINX公司的雙端口RAM為例,第一個(gè)周期內(nèi)讀取時(shí)鐘的上升沿到來(lái)時(shí),讀取地址需要處于穩(wěn)定的狀態(tài);下一個(gè)周期,數(shù)據(jù)會(huì)輸出到數(shù)據(jù)線上;第三個(gè)周期才能讀取數(shù)據(jù)的有效采樣,即數(shù)據(jù)的真正輸出延時(shí)一個(gè)時(shí)鐘周期。這對(duì)解壓縮速率來(lái)說(shuō)是不能容忍的。基于此,本文設(shè)計(jì)了高速緩存模塊,類似于內(nèi)存與Cache的關(guān)系,高速緩存模塊從RAM讀取數(shù)據(jù)并緩存,供后端使用[6?8]。

        根據(jù)解壓縮數(shù)據(jù)處理特點(diǎn),后端解壓縮處理模塊一次最多處理4 B(即32 bit)數(shù)據(jù),且處理地址從0開(kāi)始遞加,不會(huì)出現(xiàn)地址跳躍讀取現(xiàn)象。例如第一次讀取addr至addr+3的4 B,則下一次讀取的數(shù)據(jù)4個(gè)字節(jié)有5種可能:addr至addr+3,addr+1至addr+4,addr+2至addr+5,addr+3至addr+6,addr+4至addr+7。高速緩存模塊會(huì)提前緩存這5種可能的數(shù)據(jù),供后端第二次讀取。后端第二次讀取完成后,高速緩存模塊繼續(xù)更新緩存內(nèi)數(shù)據(jù)供后端第三次讀取,從而提高了數(shù)據(jù)讀取速率。高速緩存塊緩存內(nèi)容如表1所示。設(shè)計(jì)中使用的緩存大小為20 B,采用寄存器實(shí)現(xiàn),即在Verilog中聲明為reg類型。

        2.2 解壓縮模塊的實(shí)現(xiàn)

        根據(jù)miniLZO壓縮算法編碼規(guī)則,讀取到的編碼數(shù)據(jù)需要進(jìn)行判斷,判斷是否為新字符或重復(fù)字符,并計(jì)算出新字符個(gè)數(shù)、重復(fù)字符的重復(fù)長(zhǎng)度與指回距離。讀取到的編碼數(shù)據(jù)如表2所示。

        狀態(tài)跳轉(zhuǎn)圖如圖4所示。

        Dis_new_data:判斷新字符個(gè)數(shù),若新字符個(gè)數(shù)編碼中有8h00,則轉(zhuǎn)入New_com_255狀態(tài)。若沒(méi)有則可直接確定新字符個(gè)數(shù),轉(zhuǎn)向Out_new_char狀態(tài)。

        New_com_255:判斷有多少個(gè)8h00,每一個(gè)8h00表示新字符個(gè)數(shù)增加255個(gè)。

        Out_new_char:根據(jù)判斷的新字符個(gè)數(shù),讀取新字符并輸出,直到新字符輸出完畢。

        Dis_rep_data:根據(jù)重復(fù)字符編碼規(guī)則,計(jì)算重復(fù)長(zhǎng)度與指回距離。若重復(fù)字符編碼個(gè)數(shù)大于4 B,則轉(zhuǎn)向rep_com_255后轉(zhuǎn)再轉(zhuǎn)向rep _255_after,判斷重復(fù)長(zhǎng)度與指回距離。若重復(fù)字符編碼個(gè)數(shù)小于等于4 B,則可直接判斷出重復(fù)長(zhǎng)度與指回距離并輸出。根據(jù)miniLZO算法規(guī)則,若新字符個(gè)數(shù)小于等于3時(shí),新字符個(gè)數(shù)是插入到重復(fù)編碼字符的保留位中的,此狀態(tài)下需要判斷保留位中是否有數(shù)據(jù),若有數(shù)據(jù),則確定下一個(gè)新字符個(gè)數(shù)后,讀取新字符后直接輸出新字符,若沒(méi)有數(shù)據(jù)則讀取新字符后進(jìn)入Dis_new_rep狀態(tài)。

        rep_com_255:根據(jù)重復(fù)字符編碼中8h00的個(gè)數(shù)判斷重復(fù)長(zhǎng)度。

        rep _255_after:判斷重復(fù)長(zhǎng)度與指回距離后輸出,并進(jìn)入Rd_4bytes狀態(tài)。

        2.3 數(shù)據(jù)保存模塊

        該部分主要是將解壓縮的數(shù)據(jù)進(jìn)行保存,該模塊工作流程圖如圖5所示。

        根據(jù)讀取的數(shù)據(jù),判斷新字符還是重復(fù)字符。若是新字符,則直接儲(chǔ)存在RAM中,若是重復(fù)字符,則根據(jù)重復(fù)長(zhǎng)度與指回距離計(jì)算出開(kāi)始地址與結(jié)束地址,在已經(jīng)保存過(guò)的RAM中讀取數(shù)據(jù),再保存當(dāng)前地址,即完成了重復(fù)字符的解壓縮過(guò)程[9?10]。同時(shí)本模板中使用的RAM寬度為8 B(即64 bit),而每次需要保存的數(shù)據(jù)長(zhǎng)度不確定。為了保證存儲(chǔ)數(shù)據(jù)的連貫性,對(duì)需要保存的數(shù)據(jù)重新組合,使其達(dá)到64 bit滿足RAM存儲(chǔ)數(shù)據(jù)的要求。

        3 測(cè)試與性能

        本設(shè)計(jì)有5個(gè)外部接口,其中indata為待解壓縮數(shù)據(jù)的輸入端口,decomp_over為解壓縮完成標(biāo)識(shí),outdata為解壓縮后的數(shù)據(jù)輸出端口。其中數(shù)據(jù)端口設(shè)計(jì)為64 bit。實(shí)測(cè)性能見(jiàn)表3,在工作時(shí)鐘頻率為150 MHz時(shí)吞吐率可達(dá)到164 MB/s。

        4 結(jié) 語(yǔ)

        本文設(shè)計(jì)了miniLZO解壓縮算法在FPGA的實(shí)現(xiàn)電路,對(duì)各模塊進(jìn)行了測(cè)試驗(yàn)證。從驗(yàn)證結(jié)果來(lái)看,該設(shè)計(jì)功能完備,結(jié)構(gòu)合理,滿足設(shè)計(jì)要求。且該設(shè)計(jì)具有一般性、便于移植等特點(diǎn),在工作時(shí)鐘頻率為150 MHz時(shí)吞吐率可達(dá)到164 MB/s,具有較強(qiáng)的工程實(shí)用性。

        參考文獻(xiàn)

        [1] 翁天陽(yáng),莊宇,于瑋,等.基于HPS和FPGA的圖像壓縮感知編解碼系統(tǒng)[J].電子技術(shù)應(yīng)用,2017,43(5):90?93.

        WENG Tianyang, ZHUANG Yu, YU Wei, et al. Image compressed sensing coding and reconstruction system based on HPS and FPGA [J]. Application of electronic technique, 2017, 43(5): 90?93.

        [2] 趙元黎,陳鵬云.壓縮傳感圖像重建算法的FPGA實(shí)現(xiàn)[J].半導(dǎo)體光電,2016,37(4):596?600.

        ZHAO Yuanli, CHEN Pengyun. FPGA implementation of compressed sensing image reconstruction algorithm [J]. Semiconductor optoelectronics, 2016, 37(4): 596?600.

        [3] 汪磊.基于FPGA的視頻無(wú)損壓縮算法研究與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2013.

        WANG Lei. Research and implementation of FPGA?based lossless video compression algorithms [D]. Hangzhou: Zhejiang University of Technology, 2013.

        [4] 蘭向宇.基于FPGA的數(shù)據(jù)壓縮緩存系統(tǒng)研究[D].西安:西安電子科技大學(xué),2015.

        LAN Xiangyu. Research on data compression caching system based on FPGA [D]. Xian: Xidian University, 2015.

        [5] ZHAO Xia, LI Bing. Implementation of the LZMA compression algorithm on FPGA [C]// Proceedings of International Conference on Electron Devices and Solid?State Circuits. [S.l.]: IEEE, 2017: 1?2.

        [6] 范文晶,王召利,王惠娟,等.基于FPGA的無(wú)損圖像壓縮算法實(shí)現(xiàn)[J].電子科技,2016,29(11):126?128.

        FAN Wenjing, WANG Zhaoli, WANG Huijuan, et al. Implementation of lossless image compression algorithm based on FPGA [J]. Electronic science and technology, 2016, 29(11): 126?128.

        [7] 陶文澤,韋宏衛(wèi),張洪群.基于FPGA的并行RICE解碼技術(shù)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2017,39(6):1118?1125.

        TAO Wenze, WEI Hongwei, ZHANG Hongqun. An FPGA?based parallel RICE decoder [J]. Computer engineering & science, 2017, 39(6): 1118?1125.

        [8] 陳大莉.基于FPGA的GZIP解壓縮算法的設(shè)計(jì)和實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2016.

        CHEN Dali. A design and implementation of GZIP decompression algorithm based on the FPGA [D]. Xian: Xidian University, 2016.

        [9] 張玉書.數(shù)據(jù)壓縮與加密的協(xié)調(diào)性研究[D].重慶:重慶大學(xué),2014.

        ZHANG Yushu. Study on the coordination of data compression and encryption [D]. Chongqing: Chongqing University, 2014.

        [10] YAN J, YUAN J, LEONG P H W, et al. Lossless compression decoders for bitstreams and software binaries based on high?level synthesis [J]. IEEE transactions on very large scale integration systems, 2017, 25(10): 2842?2855.

        猜你喜歡
        狀態(tài)機(jī)
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        基于狀態(tài)機(jī)比對(duì)的狀態(tài)機(jī)推斷方案
        江蘇通信(2015年5期)2015-03-16 01:16:51
        雙口RAM讀寫正確性自動(dòng)測(cè)試的有限狀態(tài)機(jī)控制器設(shè)計(jì)方法
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        基于VHDL的一個(gè)簡(jiǎn)單Mealy狀態(tài)機(jī)
        色猫咪免费人成网站在线观看| 亚洲一二三四区免费视频| 久久99精品久久久久久琪琪| 中文字幕久久精品一二三区| 国产久视频国内精品999| 午夜视频福利一区二区三区| 日本a级黄片免费观看| 国产av无码专区亚洲avjulia| 欧美成人一区二区三区在线观看| 亚洲Va中文字幕无码毛片下载| 日韩一级137片内射视频播放 | 精品一品国产午夜福利视频| 国产在线AⅤ精品性色| 久久99国产综合精品女同| 蜜桃日本免费观看mv| 中文字幕影片免费在线观看| 最新永久免费AV网站| 亚洲一区二区三区激情在线观看 | 成人国产精品三上悠亚久久| av综合网男人的天堂| 亚洲色欲在线播放一区| av网站可以直接看的| 极品美女一区二区三区免费| 男人靠女人免费视频网站| 久久久久久久妓女精品免费影院| 日韩精品一区二区三区免费观影 | 91羞射短视频在线观看| 无码中文字幕人妻在线一区| 国产精自产拍久久久久久蜜| 久久精品无码一区二区三区不卡 | 人妻少妇精品视频一区二区三| 精品无码国产一区二区三区av | 亚洲无码中文字幕日韩无码| 日韩午夜免费视频精品一区| 我爱我色成人网| 国产精品99久久久久久98AV| 免费人成网站在线观看| 国产精品乱码人妻一区二区三区| 久久久久麻豆v国产精华液好用吗 欧美性猛交xxxx乱大交丰满 | 亚洲日韩乱码中文无码蜜桃臀| 国产在线一区二区视频免费观看 |