国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA的壓縮算法設(shè)計

FPGA技術(shù)江湖 ? 來源:FPGA技術(shù)江湖 ? 作者:FPGA技術(shù)江湖 ? 2025-07-10 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第一部分 設(shè)計概述 /Design Introduction

1.1設(shè)計目的

1804e918-5ac7-11f0-baa5-92fbcf53809c.png

本設(shè)計中,計劃實現(xiàn)對文件的壓縮及解壓,同時優(yōu)化壓縮中所涉及的信號處理和計算密集型功能,實現(xiàn)對其的加速處理。本設(shè)計的最終目標(biāo)是證明在充分并行化的硬件體系結(jié)構(gòu) FPGA 上實現(xiàn)該算法時,可以大大提高該算法的速度。我們將首先使用C語言進行代碼實現(xiàn),然后在Vivado HLS中綜合實現(xiàn),并最終在FPGA板(pynq-z2)上進行硬件實現(xiàn),同時于jupyter notebook中使用python來進行功能驗證。

為使代碼可綜合同時又需要較少的硬件,我們已進行了許多改進,包括以下方面:

將所有浮點變量進行量化處理,量化為Q16.16定點,以簡化算術(shù)運算。與定點相反,浮點型變量需要更多的硬件來執(zhí)行某些操作。

將余弦矩陣實現(xiàn)為8×8查找表,從而消除了對昂貴的CORDIC引擎的需求。

在頂層封裝時選用AXILITE接口,用于將文件從處理器傳輸給FPGA并讀回。這是PS端和PL端進行數(shù)據(jù)傳輸所必須的功能。

在各個功能函數(shù)分別進行流水線化,展開循環(huán)和內(nèi)聯(lián)功能,以最大程度地減少延遲并最大程度地提高吞吐量。

1.2 掌握技能

在本項目中,學(xué)習(xí)到了如下:

學(xué)習(xí)gzip的文件格式,及deflate壓縮算法。能夠使用deflate算法對文件進行壓縮處理,同時將其封裝為gzip型文件。

學(xué)習(xí)了hls和python語言的使用。能夠通過hls進行相關(guān)的IP核開發(fā),同時能夠使用python語言來對pynq-z2進行調(diào)試。

學(xué)習(xí)了vivado的使用核功能實現(xiàn)。能夠靈活利用HLS和vivado來進行功能開發(fā)。

1.3 應(yīng)用方向

隨著大數(shù)據(jù)時代來臨,大量信息需要通過互聯(lián)網(wǎng)進行傳輸,占用的網(wǎng)絡(luò)資源急劇增加,給網(wǎng)絡(luò)傳輸帶來極大的壓力。數(shù)據(jù)壓縮技術(shù)能夠節(jié)約數(shù)據(jù)存儲空間、傳輸時間和帶寬,從而緩解傳輸壓力。無損壓縮 Gzip 是目前最常用的一種壓縮工具,被廣泛應(yīng)用在網(wǎng)絡(luò)資料的下載和數(shù)據(jù)備份等領(lǐng)域。其中開源代碼 zlib 是 Gzip 算法最著名的實現(xiàn)版本,但因其算法本身計算量較大,導(dǎo)致壓縮的數(shù)據(jù)吞吐率較低。

FPGA 在數(shù)據(jù)處理速度上有著通用處理器無法比擬的巨大優(yōu)勢,能夠大大提升Gzip的處理速度,減小CPU的開銷。

1.4 團隊分工

李佩琦負(fù)責(zé)hls和vivado實現(xiàn),同時使用python進行功能驗證。

馮一飛負(fù)責(zé)資料查找,同時負(fù)責(zé)協(xié)助李佩琦進行功能實現(xiàn)和功能測試。

1.5 作品展示

整體功能已經(jīng)實現(xiàn),能夠在pynq z2上通過gzip壓縮方式對txt文件或大段字符串進行壓縮。具體展示如圖1,左側(cè)是在hls仿真是產(chǎn)生的結(jié)果,右側(cè)是通過jupyter notebook在pynq z2上進行調(diào)試的結(jié)果,兩者是一致的,壓縮功能能夠正常運行。圖2是jupyter notebook上部分python代碼。

18149d4a-5ac7-11f0-baa5-92fbcf53809c.png

圖 1

18250446-5ac7-11f0-baa5-92fbcf53809c.png

圖2

第二部分 系統(tǒng)組成及功能說明 /System Construction & Function Description

2.1 系統(tǒng)的功能實現(xiàn)

本設(shè)計中,在pynq-z2 FPGA平臺上使用Gzip對文件進行了壓縮算法的加速實現(xiàn)。整體分為兩部分,硬件部分采用靜態(tài)霍夫曼編碼,使用deflate對文件進行壓縮操作。Python模塊將FPGA硬件的deflate輸出進行封裝,將其封裝為gzip格式。

2.2 項目系統(tǒng)框圖

系統(tǒng)結(jié)構(gòu)框圖如圖3所示。

1804e918-5ac7-11f0-baa5-92fbcf53809c.png

圖3

2.3 gzip的基本組成

Gzip 壓縮是廣泛使用的數(shù)據(jù)壓縮方案,核心是 Deflate算法,主要包括 LZ77 編碼和哈夫曼編碼兩大部分。

2.3.1 gzip文件頭的基本組成

文件頭部分結(jié)構(gòu)如圖4:

18b44a20-5ac7-11f0-baa5-92fbcf53809c.png

圖4

上面兩個“+”之間的內(nèi)容代表一個字節(jié),所以上面除了MTIME使用四個字節(jié)之外,其他只占用一個字節(jié)。

ID1 和ID2(IDentification) :這兩個字節(jié)用于標(biāo)識gzip文件,其中,ID1 = 31(0x1f,?37),ID2 = 139(0x8b,213),如果判斷某文件以這兩個字節(jié)開頭,那么可以初步認(rèn)為這是gzip文件,但具體是不是,必須該文件格式完全符合gzip文件格式才行;

CM (CompressionMethod):該字段用于標(biāo)識當(dāng)前gzip壓縮文件內(nèi)部的壓縮結(jié)果所使用的壓縮方法,取值范圍[0,8],其中,[0,7]保留,目前只用8,即gzip使用deflate壓縮方法;

FLG (FLaGs):標(biāo)記位,該標(biāo)記位中的每一比特分別代表后面對應(yīng)擴展位是否存在,各比特位含義不在此處列舉;

MTIME (ModificationTIME):該字段給出了被壓縮的原始文件最近被修改的時間。該時間使用Unix格式,即,自1970年1月1日0時起到現(xiàn)在的秒數(shù)。

XFL (eXtraFLags):該字段是用來記錄gzip文件中所使用的壓縮方法,由于當(dāng)前gzip只使用一種壓縮算法,即deflate,所以針對deflate,該字段有如下含義,

XFL= 2 – 壓縮率最大但是壓縮速度最慢(的那個壓縮級別);

XFL= 4 – 最快的壓縮(級別);

OS (OperatingSystem):該字段表示執(zhí)行壓縮操作的文件系統(tǒng)。該字段用于識別和確定確定文本文件的行結(jié)束標(biāo)志。

2.3.2 gzip文件尾和文件體的基本組成

相比gzip文件頭,gzip文件尾較簡單,只由四個字節(jié)構(gòu)成,結(jié)構(gòu)如圖5:

18cabc38-5ac7-11f0-baa5-92fbcf53809c.png

圖 5

CRC32 (Cyclic Redundancy Check):用標(biāo)準(zhǔn)循環(huán)冗余校驗算法對原始數(shù)據(jù)進行計算的結(jié)果。

ISIZE (InputSIZE):將原始數(shù)據(jù)大小對2^32取模的結(jié)果。

上面已經(jīng)將整個gzip文件的基本文件格式分析完畢,下面簡單介紹gzip文件的文件體。該文件體主要與壓縮算法deflate相關(guān)。因為只要用到deflate的文件格式,該部分都是一樣的,比如gzip的文件體和PKzip的文件體“基本”是一樣的,因為它們都使用deflate進行壓縮。

2.4 DEFLATE 算法原理

DEFLATE 算法標(biāo)準(zhǔn)是由兩個壓縮算法聯(lián)合構(gòu)成的,壓縮流程如6圖所示,其中主要包含 LZ77 和哈夫曼編碼。首先利用 LZ77 算法進行字典查找替代,消除重復(fù)信息,然后進行哈夫曼編碼構(gòu)造平均長度最短的壓縮碼流。

18d72c20-5ac7-11f0-baa5-92fbcf53809c.png

圖6

2.5 LZ77 算法

LZ77 算法是一種基于字典模型的壓縮算法。DEFLATE 算法中用到的 LZ77 算法是在原始 LZ77 算法的基礎(chǔ)上略加改進得到的,但算法基本思想保持不變。其基本原理為:將先輸入的數(shù)據(jù)作為字典信息進行保存,利用數(shù)據(jù)中存在字符串重復(fù)帶來的數(shù)據(jù)冗余性,根據(jù)字典中存儲的歷史數(shù)據(jù)對后續(xù)數(shù)據(jù)進行替換達到壓縮的目的。

具體在 Gzip 壓縮的參考軟件代碼 zlib 中實現(xiàn) LZ77 算法的流程為:首先讀入緩存窗口大小 CHUNK 的數(shù)據(jù),其中窗口的大小與匹配最大距離 MAX_MATCH 有關(guān);依次計算輸入字符串的哈希值,將哈希值的作為字典地址的索引值,將字符串的位置信息依次存放在由哈希鏈表組成的字典中其哈希值對應(yīng)的位置上;然后對當(dāng)前的字符串根據(jù)索引值查找可能匹配的歷史字符串并進行最長匹配查找,判斷是否滿足匹配條件,若滿足則進行匹配對的替換;若不滿足則按照原始字符串輸出。對于 LZ77 壓縮算法的實現(xiàn)關(guān)鍵點在于歷史字符串的存儲、當(dāng)前字符串的匹配查找、以及最長匹配選擇。

2.6 Huffman 編碼

哈夫曼編碼( Huffman coding )在數(shù)據(jù)壓縮的分類中提到,是一種基于統(tǒng)計模型的壓縮算法。其編碼理論依據(jù)是統(tǒng)計符號出現(xiàn)的概率,對符號按照概率從小到大進行排序,將其中出現(xiàn)概率最小的符號分配最長的編碼長度,按照這樣的規(guī)則進行變長編碼,達到平均編碼長度最小。具體編碼過程為:首先統(tǒng)計不同符號出現(xiàn)的概率,然后根據(jù)概率構(gòu)建哈夫曼樹,最后根據(jù)哈夫曼樹得到每個符號的哈夫曼編碼。具體步驟如下:

步驟 1:統(tǒng)計 n 個不同信源符號出現(xiàn)的概率;

步驟 2:將概率按照從大到小的順序進行排列,并將其作為節(jié)點數(shù)為 1的子樹;

18eb6b4a-5ac7-11f0-baa5-92fbcf53809c.png

圖7

步驟 3:選出概率最小的兩個信源符號所在的子樹構(gòu)成新的子樹,并且新合成的子樹概率為這兩個信源符號的概率相加;

步驟 4:重復(fù)步驟 3,直到所有信源符號的所在子樹均被加入到同一樹中;

步驟 5. 對構(gòu)建的樹所有父節(jié)點的左結(jié)點標(biāo)記為 0,右結(jié)點標(biāo)記為 1;

步驟 6. 統(tǒng)計根節(jié)點到每個子節(jié)點的路徑,按照步驟 5 中 0-1 標(biāo)記的路徑就是對應(yīng)葉節(jié)點信源的哈夫曼編碼。

18fe38d8-5ac7-11f0-baa5-92fbcf53809c.png

圖8

另外,在 Gzip 壓縮中,哈夫曼編碼的實現(xiàn)有兩種:分別為靜態(tài)哈夫曼編碼和動態(tài)哈夫曼編碼。其中靜態(tài)哈夫曼編碼不需要對編碼的字符做頻率統(tǒng)計,而是直接根據(jù)預(yù)先定義的編碼規(guī)范表查找進行編碼;似的,在解碼的過程中也不需要統(tǒng)計頻率而直接使用與編碼一致的編碼規(guī)范表進行解碼。對于動態(tài)哈夫曼編碼則遵循哈夫曼編碼的原理,需要對出現(xiàn)的字符進行頻率統(tǒng)計,生成哈夫曼樹,再據(jù)此生成編碼表進行編碼。

在本設(shè)計中,我們采用靜態(tài)哈夫曼編碼來進行實現(xiàn)。

第三部分 完成情況及性能參數(shù) /Final Design & Performance Parameters

整體功能已經(jīng)實現(xiàn)。并具備一定的加速效果,相比純arm進行壓縮速度提高了1.6倍。Vivado硬件工程能夠通過綜合、應(yīng)用、生成比特流。最后通過Jupyter Notebook在pynq z2平臺上進行功能驗證。具體展示如圖9,左側(cè)是在hls仿真是產(chǎn)生的結(jié)果,右側(cè)是通過jupyter notebook在pynq z2上進行調(diào)試的結(jié)果,兩者是一致的,壓縮功能能夠正常運行。

18149d4a-5ac7-11f0-baa5-92fbcf53809c.png

圖9

圖10,圖11中,hls正常進行仿真,首先通過壓縮算法對txt文件或字符串進行壓縮,接著進行解壓操作,將解壓后的代碼與源代碼進行比較,如果結(jié)果一致,則能夠驗證壓縮算法本身功能的準(zhǔn)確性。

1923d17e-5ac7-11f0-baa5-92fbcf53809c.png

圖10

194515f0-5ac7-11f0-baa5-92fbcf53809c.png

圖11

在圖12,圖13中,我們展示了部分壓縮算法代碼及優(yōu)化指令,整體設(shè)計的源代碼為github上的開源代碼,在優(yōu)化后我們外部的接口采用hls::stream的形式,內(nèi)部使用到了pipeline,unroll等。

1957a800-5ac7-11f0-baa5-92fbcf53809c.png

圖12

1966b886-5ac7-11f0-baa5-92fbcf53809c.png

圖 13

在圖14,15中我們展示資源占比情況和時序分析,進行優(yōu)化后實現(xiàn)了部分流水。

19772c48-5ac7-11f0-baa5-92fbcf53809c.png

圖14

198e92ac-5ac7-11f0-baa5-92fbcf53809c.png

圖15

圖16中,vivado電路設(shè)計圖中hls生成的gzip ip核通過dma與ps端進行數(shù)據(jù)交互。

19a12390-5ac7-11f0-baa5-92fbcf53809c.png

圖16

圖17中,我們展示notebook部分調(diào)試代碼,為了方便查看對部分輸出結(jié)果進行輸出,與HLS仿真結(jié)果進行對比發(fā)現(xiàn)結(jié)果正確,達到了最初的設(shè)計要求。

19b9fa96-5ac7-11f0-baa5-92fbcf53809c.png

18149d4a-5ac7-11f0-baa5-92fbcf53809c.png

圖17

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19884

    瀏覽量

    235020
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22036

    瀏覽量

    618110
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141587
  • 壓縮算法
    +關(guān)注

    關(guān)注

    1

    文章

    22

    瀏覽量

    10630

原文標(biāo)題:基于 FPGA 的壓縮算法加速實現(xiàn)

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FPGA實現(xiàn)滑動平均濾波算法和LZW壓縮算法

    采集數(shù)據(jù)中的量化噪聲,在進行數(shù)據(jù)壓縮前采用濾波的預(yù)處理技術(shù)。介紹LZW算法和滑動濾波算法的基本理論,詳細(xì)闡述用單片FPGA實現(xiàn)兩種算法的方法
    發(fā)表于 04-24 09:05

    基于FPGA的數(shù)字脈沖壓縮技術(shù)

    基于FPGA的數(shù)字脈沖壓縮技術(shù)1.數(shù)字脈沖壓縮實現(xiàn)原理2.電路設(shè)計2.1APEX2OKE系列FPGA 簡介2.2 基于FPGA
    發(fā)表于 03-02 09:41

    語音壓縮算法研究

    希望廣大DSP大俠們幫我出出主意,怎么才能寫一個好的音頻壓縮算法,最好是在時域的壓縮。頻域的壓縮發(fā)現(xiàn)都相對比較復(fù)雜。大家好,我是做語音芯片的。最近想研究一種
    發(fā)表于 09-18 17:38

    FPGA圖像壓縮設(shè)計開發(fā)

    FPGA 2支持算法SPIHT 3壓縮性能支持有損壓縮和無損壓縮 4數(shù)據(jù)處理能力數(shù)據(jù)率:≥30M samples/s 5圖像數(shù)據(jù)支持串行和1
    發(fā)表于 08-01 15:27

    什么是壓縮算法呢?壓縮算法又是怎么定義的呢?

    認(rèn)識壓縮算法想必都有過壓縮和解壓縮文件的經(jīng)歷,當(dāng)文件太大時,我們會使用文件壓縮來降低文件的占用空間。比如微信上傳文件的限制是100MB,有個
    發(fā)表于 07-28 07:22

    認(rèn)識壓縮算法

    壓縮算法認(rèn)識壓縮算法我們想必都有過壓縮和 解壓縮文件的經(jīng)歷,當(dāng)文件太大時,我們會使用文件
    發(fā)表于 07-28 08:12

    壓縮算法是怎么定義的呢

    什么是壓縮算法呢?壓縮算法又是怎么定義的呢?文件是如何存儲的?
    發(fā)表于 10-19 07:01

    基于LZW算法的數(shù)據(jù)無損壓縮硬件實現(xiàn)

    本文利用FPGA實現(xiàn)了改進的LZW壓縮算法,仿真證明其算法具有很高壓縮率,適合工程的實際應(yīng)用。
    發(fā)表于 04-02 10:59 ?4097次閱讀
    基于LZW<b class='flag-5'>算法</b>的數(shù)據(jù)無損<b class='flag-5'>壓縮</b>硬件實現(xiàn)

    一種圖像動態(tài)范圍壓縮算法及其FPGA實現(xiàn)

    一種圖像動態(tài)范圍壓縮算法及其FPGA實現(xiàn),感興趣的小伙伴們可以看一看。
    發(fā)表于 09-14 17:17 ?5次下載

    神經(jīng)網(wǎng)絡(luò)圖像壓縮算法FPGA實現(xiàn)技術(shù)研究

    神經(jīng)網(wǎng)絡(luò)圖像壓縮算法FPGA實現(xiàn)技術(shù)研究,下來看看
    發(fā)表于 09-17 07:29 ?19次下載

    空間圖像CCSDS壓縮算法研究與FPGA實現(xiàn)

    空間圖像CCSDS壓縮算法研究與FPGA實現(xiàn),感興趣小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 14:57 ?17次下載

    FPGA實現(xiàn)滑動平均濾波算法和LZW壓縮算法的論文資料說明

    針對數(shù)據(jù)采集系統(tǒng)高速長時間的采樣和后端數(shù)據(jù)傳榆及存儲能力有限的問題,提出基于FPGA的數(shù)據(jù)壓縮解決方案。同時為平滑采集數(shù)據(jù)中的量化噪聲,在進行數(shù)據(jù)壓縮前采用濾波的預(yù)處理技術(shù)。介紹LZW算法
    發(fā)表于 01-25 14:26 ?4次下載
    <b class='flag-5'>FPGA</b>實現(xiàn)滑動平均濾波<b class='flag-5'>算法</b>和LZW<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>的論文資料說明

    如何使用FPGA實現(xiàn)空間圖像CCSDS壓縮算法的設(shè)計

    的存儲容量和傳輸帶寬,它的研究對于遙感圖像的應(yīng)用具有重要的現(xiàn)實意義。CCSDS圖像壓縮算法是空間數(shù)據(jù)系統(tǒng)咨詢委員會(CCSDS)提出的圖像數(shù)據(jù)壓縮算法。該
    發(fā)表于 02-05 15:54 ?6次下載
    如何使用<b class='flag-5'>FPGA</b>實現(xiàn)空間圖像CCSDS<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>的設(shè)計

    如何使用FPGA實現(xiàn)圖像動態(tài)范圍壓縮算法

    灰度動態(tài)范圍壓縮是一種基本的圖像增強處理方法,廣泛應(yīng)用于圖像識別,視頻監(jiān)控等領(lǐng)域中。結(jié)合這一應(yīng)用,提出了一種基于非線性變換的動態(tài)范圍壓縮算法,并且以FPGA為基礎(chǔ),針對一幅圖像的處理進
    發(fā)表于 02-05 17:00 ?22次下載
    如何使用<b class='flag-5'>FPGA</b>實現(xiàn)圖像動態(tài)范圍<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>

    FPGA壓縮算法有哪些

    在圖像壓縮算法中可以采用哈夫曼編碼的方式對編碼冗余的信息進行壓縮,可以采用預(yù)測的方式來減少像素間冗余,可以采用量化的方式完成心理視覺冗余信息的去除
    的頭像 發(fā)表于 04-15 11:48 ?1061次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>有哪些