国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

地震數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)壓縮與FPGA 實(shí)現(xiàn)

2020-08-11 06:53:04李可寒楊俊峰宋克柱
數(shù)據(jù)采集與處理 2020年4期
關(guān)鍵詞:拖纜壓縮算法字節(jié)

李可寒 ,楊俊峰 ,宋克柱

(1.中國(guó)科學(xué)技術(shù)大學(xué)核探測(cè)與核電子學(xué)國(guó)家重點(diǎn)實(shí)驗(yàn)室,合肥,230026;2.中國(guó)科學(xué)技術(shù)大學(xué)近代物理系,合肥,230026)

引 言

地震勘探是當(dāng)前油氣勘探中一種應(yīng)用廣泛的方法[1],它對(duì)數(shù)據(jù)采集系統(tǒng)的要求有多通道、高精度、數(shù)據(jù)量大和實(shí)時(shí)處理等[2]。數(shù)據(jù)采集系統(tǒng)在采集到地震數(shù)據(jù)之后,將采集的數(shù)據(jù)匯聚至控制與紀(jì)錄模塊供以后數(shù)據(jù)分析使用?;诘卣鹂碧綌?shù)據(jù)采集系統(tǒng)的實(shí)時(shí)、多通道等要求,數(shù)據(jù)采集系統(tǒng)需要實(shí)時(shí)采集和傳輸大量數(shù)據(jù)。

在已有的地震數(shù)據(jù)采集系統(tǒng)中,通常使用拖纜中長(zhǎng)度為100 m 的傳輸線進(jìn)行數(shù)據(jù)傳輸。由于傳輸距離較長(zhǎng),如果傳輸速率過(guò)快將導(dǎo)致誤碼率增高。因此,在傳輸線質(zhì)量無(wú)法提升的情況下,可以使用數(shù)據(jù)壓縮來(lái)降低需要的傳輸速率,從而降低數(shù)據(jù)傳輸?shù)恼`碼率,同時(shí)也能降低系統(tǒng)的功耗。

現(xiàn)有的地震數(shù)據(jù)壓縮算法[3-4]利用地震波的物理特征采用小波變換、Dreamlet 變換等方式能夠起到很好的壓縮效果。但這些算法的計(jì)算過(guò)程較復(fù)雜,而且需要輸入整個(gè)地震數(shù)據(jù)文件才能完成壓縮,很難用于基于現(xiàn)場(chǎng)可編程門陣列(Field programmable gate array,FPGA)的實(shí)時(shí)采集處理系統(tǒng),因此需要一種針對(duì)地震數(shù)據(jù)流的壓縮算法。

現(xiàn)有的地震數(shù)據(jù)流壓縮算法[5]是一種針對(duì)數(shù)據(jù)流的無(wú)損壓縮算法,根據(jù)地震數(shù)據(jù)的數(shù)值將3 字節(jié)的數(shù)據(jù)壓縮至1~4 字節(jié),是一種熵編碼。

本文考慮地震波的物理特征,同時(shí)使用熵編碼,實(shí)現(xiàn)了一種針對(duì)地震數(shù)據(jù)流的無(wú)損壓縮算法。

1 系統(tǒng)簡(jiǎn)介

海上地震數(shù)據(jù)采集系統(tǒng)[6-7]分為水下部分和水上部分。水下部分包括采集和傳輸數(shù)據(jù)的拖纜,系統(tǒng)可以有多條拖纜;水上部分包括數(shù)據(jù)處理機(jī)箱和室內(nèi)控制顯示工作站,數(shù)據(jù)處理機(jī)箱負(fù)責(zé)轉(zhuǎn)發(fā)控制命令和匯總拖纜數(shù)據(jù)。由于水下部分的傳輸距離更長(zhǎng),因此數(shù)據(jù)傳輸?shù)钠款i主要在水下部分。

地震數(shù)據(jù)采集系統(tǒng)支持若干條拖纜,其中單條水下拖纜的結(jié)構(gòu)如圖1 所示。每段拖纜長(zhǎng)100 m,里面包含16 個(gè)傳感器,道間距為6.25 m,采用24 位的ADC,最大采樣率為2 ksps,最大要求支持150 段拖纜。兩段拖纜之間由傳輸節(jié)點(diǎn)相連,每一個(gè)傳輸節(jié)點(diǎn)除了負(fù)責(zé)收集本級(jí)采集數(shù)據(jù)和狀態(tài)數(shù)據(jù)外,還負(fù)責(zé)接收后級(jí)傳輸節(jié)點(diǎn)數(shù)據(jù)并轉(zhuǎn)發(fā)。根據(jù)系統(tǒng)結(jié)構(gòu),越往前級(jí)數(shù)據(jù)量越大,其中滿負(fù)荷情況下首節(jié)點(diǎn)的凈數(shù)據(jù)量可以達(dá)到150×16×24×2 000=115.2 (Mb/s)。如果考慮協(xié)議開銷,首節(jié)點(diǎn)需要的傳輸速率則會(huì)更大。

圖1 水下拖纜整體結(jié)構(gòu)Fig.1 Integral structure of underwater towline

2 數(shù)據(jù)壓縮

當(dāng)拖纜段數(shù)增加時(shí),首節(jié)點(diǎn)需要更大的傳輸速率。為了控制誤碼率,可以考慮對(duì)地震數(shù)據(jù)進(jìn)行壓縮,減少需要傳輸?shù)臄?shù)據(jù)量。另外,傳輸速率的減小能夠降低單個(gè)節(jié)點(diǎn)的功耗,從而使系統(tǒng)能夠支持更多段拖纜。

現(xiàn)有的大部分地震數(shù)據(jù)壓縮算法針對(duì)的是一個(gè)地震數(shù)據(jù)文件,用于減小地震數(shù)據(jù)占用的存儲(chǔ)空間,無(wú)法在數(shù)據(jù)采集的時(shí)候使用以提高傳輸效率?,F(xiàn)有的地震數(shù)據(jù)流壓縮算法[5]針對(duì)的是單個(gè)地震數(shù)據(jù),利用地震數(shù)據(jù)的分布特征,將3 字節(jié)的地震數(shù)據(jù)壓縮至1~4 字節(jié)。該算法沒(méi)有考慮數(shù)據(jù)之間的相關(guān)性,故而壓縮性能有待提升。

本文將根據(jù)地震數(shù)據(jù)的時(shí)空特征,同時(shí)借鑒語(yǔ)音壓縮算法,提出一種易于用FPGA 實(shí)現(xiàn)的24 位地震數(shù)據(jù)流無(wú)損壓縮算法。

2.1 地震數(shù)據(jù)

任意兩段拖纜之間由一個(gè)傳輸節(jié)點(diǎn)相連,每個(gè)傳輸節(jié)點(diǎn)負(fù)責(zé)收集附近16 個(gè)傳感器采集到的地震數(shù)據(jù)。為了提高壓縮效果,傳輸節(jié)點(diǎn)通常需要緩存若干個(gè)采樣時(shí)刻的數(shù)據(jù)。圖2 為隨機(jī)截取的連續(xù)16 個(gè)通道、16 個(gè)采樣時(shí)刻的地震數(shù)據(jù),即為待壓縮的數(shù)據(jù)。

從圖2 可以看出,待壓縮的16×16 地震數(shù)據(jù)具有如下特點(diǎn):(1)傳感器的數(shù)值隨采樣時(shí)刻的變化不大;(2)傳感器的數(shù)值隨傳感器號(hào)的變化不可預(yù)知。

圖2 地震數(shù)據(jù)Fig.2 Seismic data

傳感器收集的是地震波數(shù)據(jù),地震波本質(zhì)上是機(jī)械波,理想情況下應(yīng)該是一個(gè)類正弦波信號(hào)。激發(fā)人工地震波的震源頻率約為幾十赫茲,而傳感器的采樣周期通常為毫秒量級(jí)(對(duì)應(yīng)頻率為千赫茲量級(jí)),即采樣頻率遠(yuǎn)大于振動(dòng)頻率。因此,在不長(zhǎng)的時(shí)間里,某一個(gè)傳感器的數(shù)值不會(huì)有太大的變化。而在同一時(shí)刻,相鄰傳感器采集的數(shù)據(jù)可能相近,也可能相差很大,這取決于地層結(jié)構(gòu)。由于地層結(jié)構(gòu)無(wú)法預(yù)知,所以很難事先得知同時(shí)刻不同傳感器數(shù)據(jù)之間的關(guān)系。

因此,本文中的壓縮主要考慮針對(duì)同一個(gè)傳感器在若干個(gè)采樣時(shí)刻的地震數(shù)據(jù),這樣的數(shù)據(jù)類似于機(jī)械波(聲波),故可以借鑒語(yǔ)音壓縮的相關(guān)算法。

2.2 壓縮算法

對(duì)地震數(shù)據(jù)的壓縮可以借鑒語(yǔ)音壓縮,一種常見的語(yǔ)音壓縮算法分為預(yù)測(cè)編碼和熵編碼兩步,其過(guò)程如圖3 所示。

圖3 語(yǔ)音壓縮過(guò)程Fig.3 Process of speech compression

2.3 預(yù)測(cè)編碼

預(yù)測(cè)編碼是根據(jù)離散信號(hào)之間存在著一定關(guān)聯(lián)性的特點(diǎn),利用前一個(gè)或多個(gè)信號(hào)預(yù)測(cè)下一個(gè)信號(hào),然后對(duì)實(shí)際值和預(yù)測(cè)值的差(預(yù)測(cè)誤差)進(jìn)行編碼。如果預(yù)測(cè)比較準(zhǔn)確,誤差就會(huì)很小。在同等精度要求的條件下,就可以用比較少的比特進(jìn)行編碼,達(dá)到壓縮數(shù)據(jù)的目的。

常見的預(yù)測(cè)編碼有線性預(yù)測(cè)編碼,即現(xiàn)在值可用若干個(gè)過(guò)去值的加權(quán)線性組合來(lái)逼近,加權(quán)系數(shù)即為預(yù)測(cè)系數(shù),預(yù)測(cè)值為

為使線性預(yù)測(cè)誤差

最小,可以根據(jù)實(shí)際采樣值讓線性預(yù)測(cè)誤差的平方達(dá)到最小值,從而確定最佳預(yù)測(cè)系數(shù)。

由于線性預(yù)測(cè)編碼比較復(fù)雜,尤其是預(yù)測(cè)系數(shù)的計(jì)算在硬件上實(shí)現(xiàn)起來(lái)難度很大,因此考慮一種更加簡(jiǎn)單的線性預(yù)測(cè)編碼,即差分編碼。

對(duì)于原始數(shù)據(jù)X1,X2,…,Xn,一階差分編碼為X1,X2-X1,…,Xn-Xn-1,一階差分編碼是預(yù)測(cè)階數(shù)p=1,預(yù)測(cè)系數(shù)A1=1 的線性預(yù)測(cè)編碼。預(yù)測(cè)值=Xn-1,即估計(jì)后一個(gè)數(shù)據(jù)和前一個(gè)數(shù)據(jù)差不多。

二階差分編碼為X1,X2-X1,X3-2X2+X1,…,Xn-2Xn-1+Xn-2,二階差分編碼是預(yù)測(cè)階數(shù)p=2,預(yù)測(cè)系數(shù)A1=2,A2=-1 的線性預(yù)測(cè)編碼。預(yù)測(cè)值=2Xn-1-Xn-2,即用前兩個(gè)點(diǎn)擬合一次函數(shù),并預(yù)測(cè)下一個(gè)點(diǎn)會(huì)出現(xiàn)在該直線上。

以此類推,可得高階差分編碼。

差分編碼只需要作若干次減法,易于硬件上的實(shí)現(xiàn)。

2.4 熵編碼

由于地震數(shù)據(jù)及其各階導(dǎo)數(shù)隨時(shí)間的變化不是很明顯,因此地震數(shù)據(jù)在差分編碼之后,其絕對(duì)值將變得很小(相比原來(lái)的數(shù)據(jù))?,F(xiàn)在就要想辦法用較少的比特來(lái)存儲(chǔ)這些絕對(duì)值很小的數(shù)據(jù)。

熵編碼又稱為統(tǒng)計(jì)編碼,是根據(jù)消息出現(xiàn)概率的分布特性而進(jìn)行的無(wú)損數(shù)據(jù)壓縮編碼(差分編碼之后,絕對(duì)值小的數(shù)據(jù)出現(xiàn)的概率更大)。

2.4.1 指數(shù)哥倫布編碼[8]

指數(shù)哥倫布編碼刪去了數(shù)據(jù)高位多余的0(負(fù)數(shù)刪去多余的1),并添加上若干位的標(biāo)記位。表示非負(fù)整數(shù)N的k階指數(shù)哥倫布編碼生成方法如下:

(1)將N用二進(jìn)制碼表示,去掉低位的k個(gè)比特,然后加1;

(2)計(jì)算留下的比特?cái)?shù),將此數(shù)減1,并記作m;

(3)將第(1)步中去掉的k個(gè)比特補(bǔ)回串尾,并在串頭添加m個(gè)0。

例如,對(duì)1 階指數(shù)哥倫布編碼,0 到13 的編碼如下:

0——0000——10

1——0001——11

2——0010——0100

3——0011——0101

4——0100——0110

5——0101——0111

6——0110——001000

7——0111——001001

8——1000——001010

9——1001——001011

10——1010——001100

11——1011——001101

12——1100——001110

13——1101——001111

由此可見,如果數(shù)據(jù)出現(xiàn)小幅度的概率比出現(xiàn)大幅度的概率大,則通過(guò)指數(shù)哥倫布編碼可以較好地壓縮數(shù)據(jù)。但如果數(shù)據(jù)不滿足上述特征,則壓縮后的數(shù)據(jù)可能會(huì)比原來(lái)更大。

k階指數(shù)哥倫布編碼包含m位的0 + 1 位的1 + (m+k)位的數(shù)據(jù),若要解碼,對(duì)于某串k階指數(shù)哥倫布編碼的數(shù)據(jù),先計(jì)算數(shù)據(jù)頭部0 的個(gè)數(shù),并記作m;則除去這m個(gè)0,該數(shù)據(jù)的有效位數(shù)為m+k+1,將該數(shù)據(jù)減去2k,即可得到指數(shù)哥倫布編碼數(shù)據(jù)的解碼,即原始數(shù)據(jù)。

由編碼和解碼的過(guò)程可知,解碼能過(guò)完全恢復(fù)出編碼之前的數(shù)據(jù),不會(huì)損失數(shù)據(jù)的精度,因此指數(shù)哥倫布編碼能夠?qū)崿F(xiàn)無(wú)損壓縮。

單個(gè)數(shù)據(jù)的指數(shù)哥倫布編碼很容易用硬件實(shí)現(xiàn),然而要壓縮的數(shù)據(jù)往往有很多個(gè),在指數(shù)哥倫布編碼之后通常要將這些數(shù)據(jù)拼接起來(lái)。由于這些數(shù)據(jù)往往不是整數(shù)字節(jié),而且長(zhǎng)度不一,這會(huì)導(dǎo)致數(shù)據(jù)的拼接需要消耗大量的邏輯資源。因此,指數(shù)哥倫布編碼并不是熵編碼的最佳選擇。

2.4.2 整數(shù)字節(jié)熵編碼

指數(shù)哥倫布編碼之后的數(shù)據(jù)不是整數(shù)字節(jié),而且長(zhǎng)度也不確定,這給后續(xù)處理帶來(lái)了很大的麻煩,下面考慮一種將差分編碼后的數(shù)據(jù)壓縮成整數(shù)個(gè)字節(jié)的熵編碼。

對(duì)于24 bit 地震數(shù)據(jù),一階差分后的數(shù)據(jù)可用25 bit 表示,其大小位于[-16 777 216 , 16 777 215]區(qū)間,并且差分?jǐn)?shù)據(jù)中的大多數(shù)數(shù)據(jù)數(shù)值都很小,因此可按照如下方式[5]壓縮數(shù)據(jù):

(1)如果差分?jǐn)?shù)據(jù)位于[-64 , 63]區(qū)間,可用1 個(gè)字節(jié)A[7:0]表示該數(shù)據(jù)。A[6]為差分?jǐn)?shù)據(jù)的符號(hào)位,A[7]=0,A[6:0]為差分?jǐn)?shù)據(jù)的有效值。

(2)如果差分?jǐn)?shù)據(jù)位于 [-8 192 , 8 191]區(qū)間,可用2 個(gè)字節(jié)B[15:0]表示該數(shù)據(jù)。B[13]為差分?jǐn)?shù)據(jù)的符號(hào)位,B[15:14]=10,B[13:0]為差分?jǐn)?shù)據(jù)的有效值。

(3)如果差分?jǐn)?shù)據(jù)位于[-1 048 576 , 1 048 575]區(qū)間,可用3 個(gè)字節(jié)C[23:0]表示該數(shù)據(jù)。C[20]為差分?jǐn)?shù)據(jù)的符號(hào)位,C[23:21]=110,C[20:0]為差分?jǐn)?shù)據(jù)的有效值。

(4)無(wú)論如何,可用 4 個(gè)字節(jié) D[31:0]表示該數(shù)據(jù)。D[24]為差分?jǐn)?shù)據(jù)的符號(hào)位,D[31:25]=1 110 000,D[24:0]為差分?jǐn)?shù)據(jù)的絕對(duì)值。

以上方法簡(jiǎn)單易實(shí)現(xiàn),可將25bit 差分?jǐn)?shù)據(jù)壓縮為1~4 字節(jié)的數(shù)據(jù)。

由于壓縮后的數(shù)據(jù)由若干個(gè)字節(jié)組成,因此如要解壓,首先要判斷哪幾個(gè)字節(jié)(1 到4 字節(jié))對(duì)應(yīng)一個(gè)差分?jǐn)?shù)據(jù)。首先從緩存區(qū)中讀取一個(gè)字節(jié)的數(shù)據(jù)A[7:0],如果A[6]=0,該數(shù)據(jù)為1 個(gè)字節(jié);如果A[6:5]=10,該數(shù)據(jù)為 2 個(gè)字節(jié);如果 A[6:4]=110,該數(shù)據(jù)為 3 個(gè)字節(jié);如果 A[6:4]=111,該數(shù)據(jù)為 4 個(gè)字節(jié)。

先通過(guò)以上方法將差分后的數(shù)據(jù)分離出來(lái),轉(zhuǎn)換成25 bit 的數(shù)據(jù);再進(jìn)行差分逆變換,得到24 bit 的原始地震數(shù)據(jù)。

由編碼和解碼的過(guò)程可知,解碼能過(guò)完全恢復(fù)出編碼之前的數(shù)據(jù),不會(huì)損失數(shù)據(jù)的精度,因此整數(shù)字節(jié)熵編碼能夠?qū)崿F(xiàn)無(wú)損壓縮。

如果地震數(shù)據(jù)不是24 bit,或者采用的差分編碼不是一階差分編碼,也可以使用類似的整數(shù)字節(jié)熵編碼。

3 FPGA 實(shí)現(xiàn)

為了減少傳輸節(jié)點(diǎn)需要上傳的數(shù)據(jù)量,可以利用傳輸節(jié)點(diǎn)中的FPGA 對(duì)采集到的24 位地震數(shù)據(jù)進(jìn)行壓縮;當(dāng)壓縮后的數(shù)據(jù)到達(dá)船上時(shí),再利用數(shù)據(jù)處理機(jī)箱中的FPGA 對(duì)數(shù)據(jù)解壓。每個(gè)傳輸節(jié)點(diǎn)只負(fù)責(zé)壓縮附近16 個(gè)傳感器的地震數(shù)據(jù)。

因?yàn)閷?duì)FPGA 的功耗有一定的要求,所以很難使用比較復(fù)雜的壓縮算法。本文實(shí)現(xiàn)了一種用一階差分編碼和整數(shù)字節(jié)熵編碼來(lái)完成地震數(shù)據(jù)壓縮的算法。

3.1 數(shù)據(jù)壓縮

使用一階差分編碼和整數(shù)字節(jié)熵編碼來(lái)完成地震數(shù)據(jù)的壓縮。在每一個(gè)采樣周期內(nèi),需要輸入24 bit 數(shù)據(jù),然后輸出1~4 字節(jié)的數(shù)據(jù)。數(shù)據(jù)壓縮模塊的輸入輸出端口如圖4 所示。

數(shù)據(jù)的輸入和輸出均使用AXI-Stream 接口。輸入的數(shù)據(jù)是24 bit 的地震數(shù)據(jù),i_last 表示某一次壓縮的最后一個(gè)數(shù)據(jù);輸出的數(shù)據(jù)是壓縮后的數(shù)據(jù),壓縮后的數(shù)據(jù)以8 bit 為單位,o_last 表示壓縮后數(shù)據(jù)的最后一個(gè)字節(jié)。數(shù)據(jù)壓縮過(guò)程分差分編碼和熵編碼兩步來(lái)實(shí)現(xiàn)。

3.1.1 差分編碼

差分編碼由一個(gè)24 位寄存器和一個(gè)24 位減法器實(shí)現(xiàn),寄存器保存上一個(gè)數(shù)據(jù),減法器利用當(dāng)前輸入的數(shù)據(jù)減去上一個(gè)數(shù)據(jù)得到差分?jǐn)?shù)據(jù),如圖5 所示。圖中:i_last 控制寄存器的清零(當(dāng)最后一個(gè)數(shù)據(jù)到來(lái)時(shí));i_valid 和i_ready 控制寄存器的使能端(僅i_valid 和i_ready 都有效時(shí)才進(jìn)行差分編碼)。

圖4 數(shù)據(jù)壓縮模塊Fig.4 Module of data compression

圖5 差分編碼器Fig.5 Differential encoder

3.1.2 熵編碼

整數(shù)字節(jié)熵編碼可用一個(gè)組合邏輯電路來(lái)實(shí)現(xiàn),輸入25 位數(shù)據(jù)data_dif 和有效的字節(jié)數(shù)byte_cnt,輸 出 4 字 節(jié) 數(shù) 據(jù) data_out(1~4 字 節(jié) 有效),Verilog 代碼如圖 6 所示。

有效的字節(jié)數(shù)byte_cnt 可根據(jù)輸入數(shù)據(jù)data_dif 高位多余的 0(負(fù)數(shù)為 1)得到。

在熵編碼之后,需要將熵編碼器輸出的數(shù)據(jù)data_out[31:0]從 o_data[7:0]端口輸出,根據(jù) byte_cnt 的不同需要 1~4 個(gè)時(shí)鐘周期。在輸出完成之前,將i_ready 拉低,暫時(shí)停止前級(jí)的輸入,直到輸出結(jié)束才將i_ready 拉高。

圖6 整數(shù)字節(jié)熵編碼器的Verilog 實(shí)現(xiàn)Fig.6 Verilog implementation of integer byte entropy encoder

3.2 數(shù)據(jù)解壓

數(shù)據(jù)解壓在船上數(shù)據(jù)處理機(jī)箱中的FPGA 上進(jìn)行。數(shù)據(jù)解壓模塊也是使用AXI-Stream 接口,輸入8 bit 壓縮數(shù)據(jù),輸出24 bit 地震數(shù)據(jù)。數(shù)據(jù)解壓過(guò)程分反熵編碼和反差分編碼兩步。

3.2.1 反熵編碼

反熵編碼的第1 步是根據(jù)每個(gè)壓縮數(shù)據(jù)的第一個(gè)字節(jié)來(lái)判斷該數(shù)據(jù)占用了幾個(gè)字節(jié),然后將這幾個(gè)字節(jié)的數(shù)據(jù)當(dāng)作反熵編碼器的輸入,并開始解析下一個(gè)數(shù)據(jù),該過(guò)程可以通過(guò)一個(gè)狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。

反熵編碼器則可以通過(guò)一個(gè)簡(jiǎn)單的組合邏輯電路實(shí)現(xiàn),輸入4 字節(jié)數(shù)據(jù)data_in(1~4 字節(jié)有效)和有效的字節(jié)數(shù)byte_cnt,輸出25 bit 數(shù)據(jù)data_dif,Verilog 代碼如圖 7 所示。

有效的字節(jié)數(shù)byte_cnt 通過(guò)反熵編碼第一步的狀態(tài)機(jī)得到。

3.2.2 反差分編碼

類似于差分編碼,反差分編碼可用一個(gè)25 位寄存器和一個(gè)25 位加法器實(shí)現(xiàn),寄存器保存之前所有數(shù)據(jù)的和值(即上一個(gè)原始數(shù)據(jù)),加法器將當(dāng)前差分?jǐn)?shù)據(jù)和上一個(gè)原始數(shù)據(jù)相加得到當(dāng)前原始數(shù)據(jù),如圖8 所示。圖中:i_last 控制寄存器的清零(當(dāng)最后一個(gè)數(shù)據(jù)到來(lái)時(shí));i_valid 控制寄存器的使能端(僅i_valid 有效時(shí)才進(jìn)行反差分編碼)。

圖7 反熵編碼器的Verilog 實(shí)現(xiàn)Fig.7 Verilog implementation of inverse entropy encoder

圖8 反差分編碼器Fig.8 Inverse differential encoder

4 測(cè)試結(jié)果

4.1 壓縮率

壓縮率指數(shù)據(jù)壓縮之后的大小與數(shù)據(jù)壓縮之前的大小之比。利用本文中所述的一階差分編碼和整數(shù)字節(jié)熵編碼,表1 給出了3 組實(shí)測(cè)地震數(shù)據(jù)的壓縮結(jié)果。

每一組地震數(shù)據(jù)均由2 336 個(gè)傳感器進(jìn)行12 288 次采樣得到。每次壓縮1 個(gè)傳感器64 次采樣得到的地震數(shù)據(jù),壓縮前數(shù)據(jù)長(zhǎng)度為64×3=192 字節(jié)??倝嚎s次數(shù)為2 336×12 288/64=448 512 次。剔除掉全零數(shù)據(jù)(采集系統(tǒng)未開始工作),需要壓縮的次數(shù)記作總幀數(shù)。使用本文中所述的壓縮算法壓縮這些數(shù)據(jù),記錄這些數(shù)據(jù)在壓縮之后的總長(zhǎng)度(記作總字節(jié)數(shù))。壓縮后的平均長(zhǎng)度=總字節(jié)數(shù)/總幀數(shù)。壓縮率=平均長(zhǎng)度/192。3 組地震數(shù)據(jù)的平均壓縮率=(101+105+105)/3/192=54%。

4.2 資源占用

數(shù)據(jù)壓縮在傳輸節(jié)點(diǎn)中的FPGA 上進(jìn)行,相應(yīng)FPGA 的型號(hào)是Altera 公司的Cyclone V 5CEBA7F23C7,壓縮模塊占用的資源如圖9 所示。壓縮模塊需要的邏輯資源為54 個(gè)ALMs,不到總量的千分之一。

數(shù)據(jù)解壓在船上數(shù)據(jù)處理機(jī)箱中的FPGA 上進(jìn)行,F(xiàn)PGA 的型號(hào)為Xilinx 公司的Kintex-7 xc7k325tffg900-2,解壓模塊占用的資源如表2 所示。解壓模塊需要的邏輯資源為79 個(gè)LUT,不到總量的萬(wàn)分之五。

由此可見,不管是壓縮模塊,還是解壓模塊,占用FPGA 的資源都可以忽略不計(jì)。

表1 壓縮率測(cè)試結(jié)果Table 1 Test result of compression ratio

圖9 壓縮模塊占用資源Fig.9 Utilization of compression module

表2 解壓模塊占用資源Table 2 Utilization of decompression module

4.3 仿真結(jié)果

圖10 是壓縮模塊的仿真結(jié)果。在圖10 中,采集的24 位數(shù)據(jù)依次是{580,600,630,900,-900(}3 字節(jié)帶符號(hào)整數(shù)),壓縮后的數(shù)據(jù)依次是{82,44,14,1E,81,0E,E0,F(xiàn)F,F(xiàn)8,F(xiàn)8(}十六進(jìn)制)。可以發(fā)現(xiàn),相鄰兩個(gè)數(shù)據(jù)之間的差值越小,則數(shù)據(jù)壓縮之后的長(zhǎng)度也會(huì)越小。同時(shí),由于壓縮一個(gè)數(shù)據(jù)需要多個(gè)時(shí)鐘周期(1~4 個(gè)),因此輸入的數(shù)據(jù)之間應(yīng)該間隔若干個(gè)時(shí)鐘周期。

圖11 是解壓模塊的仿真結(jié)果,直接利用壓縮模塊的仿真結(jié)果當(dāng)作解壓模塊的輸入,輸入數(shù)據(jù)依此為{82,44,14,1E,81,0E,E0,F(xiàn)F,F(xiàn)8,F(xiàn)8(}十六進(jìn)制),輸出的數(shù)據(jù)是{580,600,630,900,-900(}3 字節(jié)帶符號(hào)整數(shù))。可以看出,解壓得到的數(shù)據(jù)正是壓縮之前的數(shù)據(jù)。

圖10 壓縮模塊仿真結(jié)果Fig.10 Simulation result of compression module

圖11 解壓模塊仿真結(jié)果Fig.11 Simulation result of decompression module

5 結(jié)束語(yǔ)

海洋地震勘探方法是目前海洋油氣勘探的主要方法,更深層和更精確的海洋勘探需要更長(zhǎng)的勘探拖纜,這將導(dǎo)致系統(tǒng)的功耗和傳輸速率大幅度增加。本文提出了一種可以提高傳輸效率的24位地震數(shù)據(jù)流無(wú)損壓縮算法,可以大幅度降低采集系統(tǒng)需要的傳輸速率,同時(shí)略微降低采集系統(tǒng)的功耗。地震數(shù)據(jù)的壓縮率平均可達(dá)54%,數(shù)據(jù)壓縮算法很容易用FPGA 實(shí)現(xiàn),占用FPGA 的邏輯資源極少,無(wú)須占用或只需占用較少的存儲(chǔ)資源,數(shù)據(jù)壓縮可在幾個(gè)時(shí)鐘周期之內(nèi)完成。簡(jiǎn)而言之,本文所述的壓縮算法可以只花費(fèi)極少的代價(jià)就將地震數(shù)據(jù)采集系統(tǒng)需要傳輸?shù)牡卣饠?shù)據(jù)量減少一半左右。

猜你喜歡
拖纜壓縮算法字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
拖纜引繩的設(shè)計(jì)改進(jìn)
基于參數(shù)識(shí)別的軌道電路監(jiān)測(cè)數(shù)據(jù)壓縮算法研究
拖纜對(duì)水下航行器的操縱性能影響
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
潛水器水下拖帶航行運(yùn)動(dòng)響應(yīng)數(shù)值計(jì)算與性能分析
船海工程(2018年5期)2018-11-01 09:15:16
簡(jiǎn)談MC7字節(jié)碼
更正聲明
PMU數(shù)據(jù)預(yù)處理及壓縮算法
海洋平臺(tái)工作船深水大型拖纜機(jī)選型分析
船海工程(2014年4期)2014-06-27 01:02:50
巩义市| 泽州县| 上犹县| 南城县| 临潭县| 肇州县| 平阳县| 永清县| 宾川县| 揭西县| 夏津县| 高清| 远安县| 旬邑县| 仁化县| 太保市| 利辛县| 芒康县| 莎车县| 于都县| 石狮市| 友谊县| 通榆县| 绥宁县| 达日县| 墨脱县| 永寿县| 团风县| 吴桥县| 内江市| 舒城县| 鄯善县| 西和县| 黔西县| 泌阳县| 肃宁县| 五家渠市| 龙南县| 九江县| 德格县| 凌云县|