(中海油田服務(wù)股份有限公司物探事業(yè)部 天津 300450)
·開發(fā)設(shè)計(jì)·
乒乓緩存在地震采集系統(tǒng)中的應(yīng)用*
邱永成
(中海油田服務(wù)股份有限公司物探事業(yè)部 天津 300450)
由于數(shù)據(jù)處理系統(tǒng)的吞吐量和響應(yīng)時(shí)間的限制,地震數(shù)據(jù)采集無法進(jìn)行連續(xù)響炮,兩炮之間必須要有一定的時(shí)間間隔,即死時(shí)間。為了消除死時(shí)間,設(shè)計(jì)并實(shí)現(xiàn)了一種地震數(shù)據(jù)的乒乓緩存機(jī)制,在乒乓緩存的同時(shí)進(jìn)行了地震數(shù)據(jù)的時(shí)序道序轉(zhuǎn)換。詳細(xì)介紹了乒乓緩存控制器的硬件和FPGA設(shè)計(jì)方法。硬件上實(shí)現(xiàn)乒乓緩存機(jī)制和時(shí)序道序轉(zhuǎn)換能夠消除地震采集系統(tǒng)的死時(shí)間,降低上位機(jī)軟件的開發(fā)難度,提高采集儀器的穩(wěn)定性和實(shí)時(shí)性。
地震數(shù)據(jù)采集;乒乓緩存;時(shí)序轉(zhuǎn)道序;FPGA
隨著海上石油勘探技術(shù)的不斷深入,面對(duì)越來越復(fù)雜的勘探目標(biāo),常規(guī)的地震勘探技術(shù)已無法滿足新的勘探需求,高精度高密度地震勘探技術(shù)[1,2]應(yīng)運(yùn)而生,其分辨率和精確度都得到了大大的提高。海亮系統(tǒng)是由中海油田服務(wù)股份有限公司自主研發(fā)的海上高精度拖纜地震數(shù)據(jù)采集系統(tǒng),該系統(tǒng)采用了24位模數(shù)轉(zhuǎn)換和高速數(shù)據(jù)實(shí)時(shí)傳輸技術(shù),能實(shí)現(xiàn)4條拖纜的地震數(shù)據(jù)實(shí)時(shí)采集和記錄。
本文研究的內(nèi)容為海亮系統(tǒng)的船載接口電路對(duì)接收的地震數(shù)據(jù)進(jìn)行處理的過程中為保證數(shù)據(jù)采集的連續(xù)性所采用的數(shù)據(jù)緩存技術(shù)和時(shí)序轉(zhuǎn)道序技術(shù)。在地震數(shù)據(jù)采集過程中,數(shù)據(jù)是連續(xù)上傳,由于數(shù)據(jù)處理系統(tǒng)的吞吐量和響應(yīng)時(shí)間限制,導(dǎo)致了兩炮地震數(shù)據(jù)之間需要有一定的時(shí)間間隔(即死時(shí)間),為了降低和消除死時(shí)間,引入了乒乓緩存技術(shù)。緩存技術(shù)[3]是分布式計(jì)算環(huán)境中的重要技術(shù),它可以改善系統(tǒng)的整體性能(如吞吐量、響應(yīng)時(shí)間等),在高速數(shù)據(jù)采集系統(tǒng)中通常在存儲(chǔ)設(shè)備的前端加一級(jí)緩存,可以使低速存儲(chǔ)設(shè)備無丟失地記錄高速數(shù)據(jù);乒乓緩存是一種重要的數(shù)據(jù)緩存技術(shù),它通過建立兩個(gè)緩沖區(qū),一個(gè)緩沖區(qū)進(jìn)行讀,另一個(gè)緩沖區(qū)進(jìn)行寫,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)讀寫能力,達(dá)到數(shù)據(jù)無縫操作,從而消除數(shù)據(jù)處理死時(shí)間。時(shí)序轉(zhuǎn)道序技術(shù)是地震數(shù)據(jù)采集系統(tǒng)中特有的技術(shù),在采集過程中為了保證數(shù)據(jù)實(shí)時(shí)性,地震數(shù)據(jù)是按照采集的時(shí)間順序上傳的,而在地震數(shù)據(jù)顯示、存儲(chǔ)和記錄過程中需要按照采集通道的順序進(jìn)行,因此需要把時(shí)序的數(shù)據(jù)轉(zhuǎn)換成道序的數(shù)據(jù),也就是需要進(jìn)行時(shí)序道序轉(zhuǎn)換;在傳統(tǒng)的地震采集系統(tǒng)中,時(shí)序道序轉(zhuǎn)換是在上位機(jī)軟件上實(shí)現(xiàn)的,轉(zhuǎn)換過程會(huì)占用大量的內(nèi)存和CPU資源,本文的時(shí)序道序轉(zhuǎn)換通過FPGA和DDR2芯片在硬件上實(shí)現(xiàn),這樣可以提高轉(zhuǎn)換速度降低上位機(jī)軟件的開發(fā)難度。
海上地震數(shù)據(jù)正常采集、傳輸、處理和記錄流程如圖1所示。水下拖纜的所有采集板在同一時(shí)刻采集地震數(shù)據(jù),進(jìn)行數(shù)據(jù)拼接后送給本級(jí)的傳輸板,傳輸板把采集板的地震數(shù)據(jù)進(jìn)行組幀后通過逐級(jí)上傳的方式實(shí)時(shí)發(fā)送給船載接口電路,船載接口電路把所有采集板的地震數(shù)據(jù)進(jìn)行緩存、振子抽取、時(shí)序轉(zhuǎn)道序等處理后通過網(wǎng)絡(luò)接口發(fā)送給上位機(jī),上位機(jī)負(fù)責(zé)地震數(shù)據(jù)的顯示和記錄。
圖1 海上地震數(shù)據(jù)采集流程圖
水下拖纜采集到的地震數(shù)據(jù)通過高速傳輸方式實(shí)時(shí)上傳到船載接口電路,由于船載接口電路需要存儲(chǔ)完一炮的數(shù)據(jù)量后再發(fā)送給上位機(jī),因此為了保證地震數(shù)據(jù)接收和緩存的穩(wěn)定性,設(shè)計(jì)采用了乒乓緩存。乒乓緩存需要使用兩套存儲(chǔ)器,在設(shè)計(jì)中每套存儲(chǔ)器使用4片MT47H32M16CC實(shí)現(xiàn)64位數(shù)據(jù)寬度的256 MB存儲(chǔ)空間,兩套存儲(chǔ)器共使用8片。
每套存儲(chǔ)器使用單獨(dú)總線與FPGA相連,總線信號(hào)見表1。MT47H32M16CC有3根BANK選擇線,16根地址線。BANK線實(shí)際使用了兩根,多出的BA2是為了將來接128 MB芯片預(yù)留;地址線使用了13根,A13~A15是為256 MB和512 MB芯片預(yù)留,4片MT47H32M16CC的地址線復(fù)用,通過片選信號(hào)實(shí)現(xiàn)芯片之間的尋址;四片MT47H32M16CC的16根數(shù)據(jù)總線獨(dú)立接到FPGA,實(shí)現(xiàn)64位的數(shù)據(jù)總線。
在設(shè)計(jì)中使用母板終端匹配的方式,需要Vtt電源,在此使用1片PTH05060YAH為兩套存儲(chǔ)器產(chǎn)生相應(yīng)的Vtt,該器件可提供10 A的電流驅(qū)動(dòng)能力。MT47H32M16CC芯片的時(shí)鐘由FPGA提供,該時(shí)鐘的起源為一個(gè)外接66 MHz晶振,晶振產(chǎn)生的66 MHz時(shí)鐘進(jìn)入FPGA后,由FPGA內(nèi)部鎖相環(huán)倍頻為133 MHz,供FPGA的DDR2接口及外部DDR2芯片(MT47H32M16CC)使用。
表1 乒乓緩存總線信號(hào)
乒乓操作是一種用于數(shù)據(jù)流控制的處理技術(shù),其操作流程框圖如圖2所示。輸入的數(shù)據(jù)經(jīng)過選擇單元后,分別進(jìn)入緩沖模塊1和緩沖模塊2。當(dāng)數(shù)據(jù)寫入緩沖模塊1的時(shí)候,數(shù)據(jù)處理單元從緩沖模塊2讀取數(shù)據(jù)進(jìn)行處理;當(dāng)數(shù)據(jù)寫入緩沖模塊2的時(shí)候,數(shù)據(jù)處理單元從緩沖模塊1讀取數(shù)據(jù)進(jìn)行處理。這樣做的目的是給數(shù)據(jù)處理單元贏得更多的處理時(shí)間,避免因?yàn)閿?shù)據(jù)處理時(shí)無法持續(xù)接收而丟失有效數(shù)據(jù)。
圖2 乒乓操作流程框圖
在這里數(shù)據(jù)緩沖模塊采用兩組256 MB的DDRII內(nèi)存(DDRII_A、DDRII_B)來緩存數(shù)據(jù),并在FPGA中利用IP_CORE生成DDRII的接口模塊,在生成IP_CORE的時(shí)候,各個(gè)參數(shù)的配置說明如下:
Clock_speed:100 MHz
Data_bus_width:64 bit
Number of chip select:1
Number of chip select per DIMM:1
Number of clock pairs from FPGA to memory:4
Row address bit:13
Column address bit:10
Bank address bit:2
Precharge address bit:10
DQ bit per DQS pin:8
同時(shí)選上‘Memory Device DLL enable’和‘enable DQS mode’,其他的使用默認(rèn)值就可以;
在管腳約束一欄,在DDRII_A中使用的是‘bottom’,順序?yàn)椤?’、‘2’、‘1’、‘0’、‘--’、‘7’、‘6’、‘5’、‘4’;在DDRII_B中使用的是‘top’,順序?yàn)椤?’、‘2’、‘1’、‘0’、‘--’、‘7’、‘6’、‘5’、‘4’。
注意,生成IP后,需要查看頂層文件是否被改寫,如果被改寫(改寫成IP自動(dòng)生成的測(cè)試模塊),則需要換回原來的頂層文件。
在FPGA中只需控制DDRII的接口模塊的寫入和讀出數(shù)據(jù)即可完成乒乓緩存。
接口模塊的讀寫時(shí)序如圖3所示。
圖3 DDR2接口IP的讀寫時(shí)序圖
由于DDRII內(nèi)存的數(shù)據(jù)位寬為64位,且DDRII接口IP的Burst長(zhǎng)度為2,因此每個(gè)地址對(duì)應(yīng)的為2個(gè)64位×2(DDRII為上升沿和下降沿采數(shù)據(jù),因此在FPGA接口出來的數(shù)據(jù)位寬為64位×2=128位)位寬的數(shù)據(jù)。由圖3中可以看出,在寫的過程中地址和數(shù)據(jù)不是同時(shí)輸出至DDRII-IP的Local總線端的,而是先輸入地址,然后由DDRII接口模塊的Local_wdata_req來取數(shù)據(jù),于是利用FIFO緩存數(shù)據(jù)和地址,是地址和數(shù)據(jù)在FIFO的輸入側(cè)同時(shí)輸入,而輸出側(cè)則按照DDRII-IP的時(shí)序進(jìn)行。同時(shí),通過一個(gè)狀態(tài)機(jī)控制數(shù)據(jù)從FIFO讀出到DDRII接口;每一個(gè)地址對(duì)應(yīng)2個(gè)128位的數(shù)據(jù),因此只需要控制地址FIFO中地址的數(shù)據(jù)量就可以控制存入DDRII接口的數(shù)據(jù)量而無需通過數(shù)據(jù)FIFO的empty信號(hào)來控制(DDRII接口的ddr2_local_wdata_req信號(hào)與FIFO接口的讀信號(hào)相連即可)。還有,由于DDRII接口及FIFO會(huì)帶來一定的數(shù)據(jù)延遲,在一炮數(shù)據(jù)準(zhǔn)備好后,如果立刻讀出DDRII中的數(shù)據(jù),數(shù)據(jù)可能會(huì)發(fā)生沖突,因此,在數(shù)據(jù)FIFO的輸出端等待ping_pang這個(gè)信號(hào)。如果ping_pang信號(hào)出現(xiàn)說明數(shù)據(jù)已經(jīng)全部被存入DDRII存儲(chǔ)器,可以從DDRII中讀出數(shù)據(jù)了。這時(shí),置位finish_writing信號(hào),通知數(shù)據(jù)讀取模塊讀出存儲(chǔ)器中的數(shù)據(jù),finish_writing在finish_reading信號(hào)到來歸零。
乒乓控制信號(hào)ping_pang=1時(shí)數(shù)據(jù)存入DDRII_A,ping_pang=0時(shí)數(shù)據(jù)存入DDRII_B,每炮數(shù)據(jù)完成時(shí)ping_pang信號(hào)取反一次。數(shù)據(jù)存儲(chǔ)是利用address、data_out_en以及data_mask信號(hào)對(duì)寫入數(shù)據(jù)data_out進(jìn)行控制。由于DDRII-IP接口的數(shù)據(jù)位寬為128位且Burst(突發(fā)讀寫)長(zhǎng)度為2,因此一個(gè)地址對(duì)應(yīng)的數(shù)據(jù)位寬為256位,且地址跳躍增加(每次加2)。我們采用10個(gè)傳感器數(shù)據(jù)拼成一個(gè)240位的數(shù)據(jù)的方式,其他16位數(shù)據(jù)為有效標(biāo)志,只有在有效標(biāo)志位為高時(shí),對(duì)應(yīng)的24位數(shù)據(jù)才是有效的,否則無效。這樣一個(gè)地址就對(duì)應(yīng)了一個(gè)256位的數(shù)據(jù)了。采用有效位的方法可以提高系統(tǒng)的穩(wěn)定性,防止如果系統(tǒng)的傳感器數(shù)量不是10的整數(shù)倍時(shí)系統(tǒng)工作異常的情況。當(dāng)?shù)谝粋€(gè)數(shù)據(jù)傳入時(shí),拼接計(jì)數(shù)器加1,控制著每10個(gè)數(shù)據(jù)拼接成一個(gè)240位的數(shù)據(jù)。由于每次數(shù)據(jù)只有其中的24位改變,所以使用data_mask信號(hào)來選擇其中需要改變的24位。
拼接計(jì)數(shù)器功能如圖4所示。
圖4 拼接計(jì)數(shù)器功能圖
當(dāng)?shù)诙€(gè)傳感器(第二道)的數(shù)據(jù)傳入時(shí),數(shù)據(jù)需要存入的地址應(yīng)該是第一道數(shù)據(jù)的地址加上(采樣率×記錄的時(shí)間長(zhǎng)度/10),此時(shí),需要將道數(shù)計(jì)數(shù)器加1,然后等到最后道數(shù)計(jì)數(shù)器達(dá)到(本次采樣的道數(shù)值-1)時(shí),下次計(jì)數(shù)將返回0。N道地址 = 0道地址+N×(采樣率×記錄的時(shí)間長(zhǎng)度)/10。
道數(shù)計(jì)數(shù)器的功能如下:
當(dāng)每道的10個(gè)數(shù)據(jù)記錄完成后,一個(gè)256位長(zhǎng)的數(shù)據(jù)地址用完,此時(shí)需要將每道的地址加2,在下一個(gè)256位的地址空間進(jìn)行記錄,因此需要一個(gè)跳轉(zhuǎn)計(jì)數(shù)器,而跳轉(zhuǎn)計(jì)數(shù)器的最大值為:采樣率×記錄的時(shí)間長(zhǎng)度/10-1。
當(dāng)一炮數(shù)據(jù)寫完后,置位finish_writing信號(hào)通知數(shù)據(jù)讀取模塊讀出存儲(chǔ)器中的數(shù)據(jù),并把接收到的數(shù)據(jù)按照同樣的方法寫入另外一個(gè)存儲(chǔ)器;而數(shù)據(jù)讀取模塊讀取完一次數(shù)據(jù)后置位finish_reading信號(hào)清除finishi_writing信號(hào),表示這個(gè)存儲(chǔ)器可以進(jìn)行下一次寫入了,如此循環(huán)即可實(shí)現(xiàn)數(shù)據(jù)的乒乓緩存功能。
水下拖纜給船載接口電路的數(shù)據(jù)是按照時(shí)間先后順序來傳輸?shù)?,而上位機(jī)顯示記錄時(shí)需要把數(shù)據(jù)按照檢波器的順序進(jìn)行存儲(chǔ),因此需要將數(shù)據(jù)進(jìn)行時(shí)序與道序的變換。在傳輸時(shí),由水下拖纜輸入的數(shù)據(jù)的速率較慢(約11.25 Mb/s),而將數(shù)據(jù)從存儲(chǔ)器DMA至上位機(jī)的時(shí)候速度較快(約400 Mb/s),因此選擇在乒乓緩存過程中做時(shí)序與道序的轉(zhuǎn)換,即水下拖纜傳入的數(shù)據(jù)在存入DDRII時(shí)不是連續(xù)地址存儲(chǔ),而是根據(jù)道序計(jì)算存儲(chǔ)地址進(jìn)行存儲(chǔ),從DDRII讀出數(shù)據(jù)時(shí)按照連續(xù)地址讀出,因此從DDRII讀出的數(shù)據(jù)即為經(jīng)過時(shí)序轉(zhuǎn)道序的數(shù)據(jù)。
首先將緩存空間劃分成N×M的陣列,其中N表示每個(gè)通道一炮采集點(diǎn)數(shù),M表示一條纜上的總通道數(shù),第一個(gè)通道(CH1)的第一個(gè)采樣點(diǎn)數(shù)據(jù)存入地址0,第N個(gè)采樣點(diǎn)存入地址N-1;CH2的第一個(gè)采樣點(diǎn)數(shù)據(jù)存入地址N,第N個(gè)采樣點(diǎn)存入地址2N-1;CHM的第一個(gè)采樣點(diǎn)數(shù)據(jù)存入(M-1)×N,第N個(gè)采樣點(diǎn)存入地址M×N-1。時(shí)序轉(zhuǎn)道序數(shù)據(jù)結(jié)構(gòu)如圖5所示。即第i個(gè)通道的第p個(gè)采樣點(diǎn)的數(shù)據(jù)會(huì)保存在地址(i-1)×N+p-1上?;谶@種數(shù)據(jù)存儲(chǔ)的機(jī)制,當(dāng)數(shù)據(jù)進(jìn)行寫入操作時(shí),地址是不連續(xù)的,使得存儲(chǔ)效率降低;當(dāng)數(shù)據(jù)進(jìn)行讀操作時(shí),地址是連續(xù)的,因此讀取效率高、速度快。這正好與水下拖纜傳入數(shù)據(jù)慢而數(shù)據(jù)DMA到上位機(jī)速度快的事實(shí)相匹配,因此能夠在FPGA邏輯內(nèi)部很容易地實(shí)現(xiàn)時(shí)序與道序的轉(zhuǎn)換。
圖5 時(shí)序轉(zhuǎn)道序數(shù)據(jù)結(jié)構(gòu)圖
在實(shí)驗(yàn)室對(duì)乒乓緩存及時(shí)序轉(zhuǎn)道序進(jìn)行了測(cè)試,測(cè)試炮間隔與記錄長(zhǎng)度相差小于0.1 s時(shí)連續(xù)運(yùn)行大于1 000炮,其乒乓緩存及時(shí)序轉(zhuǎn)道序未出現(xiàn)錯(cuò)誤。
乒乓緩存和時(shí)序轉(zhuǎn)道序應(yīng)用于船載接口電路中,在經(jīng)過長(zhǎng)期的實(shí)驗(yàn)室內(nèi)部測(cè)試和調(diào)試等過程后,在物探船上進(jìn)行了多次實(shí)際的海上試驗(yàn)和地震勘探采集作業(yè)。其中2015年在南海海域進(jìn)行了二維采集作業(yè),作業(yè)記錄長(zhǎng)度12 s,采樣率1 ms,實(shí)際炮間隔最小達(dá)到了12.5 s,作業(yè)過程中最長(zhǎng)測(cè)線連續(xù)工作大于500炮。上位機(jī)接收到的地震數(shù)據(jù)未出現(xiàn)錯(cuò)誤,并且解決了炮間隔與記錄長(zhǎng)度相差小于1 s時(shí)數(shù)據(jù)錯(cuò)亂的問題。這充分驗(yàn)證和證明了乒乓緩存和時(shí)序轉(zhuǎn)道序在地震數(shù)據(jù)采集中的有效性和實(shí)用性,有效地避免了兩炮地震數(shù)據(jù)采集之間的死區(qū),高效地完成了實(shí)時(shí)地震數(shù)據(jù)的處理和傳輸。
用硬件和FPGA邏輯實(shí)現(xiàn)了乒乓緩存控制器的設(shè)計(jì),并在此方法中結(jié)合了地震數(shù)據(jù)處理中的時(shí)序轉(zhuǎn)道序技術(shù),從而實(shí)現(xiàn)水下地震數(shù)據(jù)流的無縫緩沖和實(shí)時(shí)傳輸。實(shí)踐證明,乒乓操作可有效地避免兩炮地震數(shù)據(jù)采集之間的死區(qū),高效地完成實(shí)時(shí)地震數(shù)據(jù)的處理和傳輸。在硬件上實(shí)現(xiàn)乒乓緩存機(jī)制和時(shí)序道序的轉(zhuǎn)換,能夠降低上位機(jī)軟件的開發(fā)難度,減小地震采集系統(tǒng)的死時(shí)間,提高采集儀器的穩(wěn)定性和實(shí)時(shí)性。
[1] 朱 明.淺談高精度地震勘探技術(shù)發(fā)展 [J].科技創(chuàng)新與應(yīng)用,2017,36(11):127-127.
[2] 孫龍德,撒利明,董世泰.中國(guó)未來油氣新領(lǐng)域與物探技術(shù)對(duì)策[J].石油地球物理物探,2013,48(2):317-234.
[3] 顧榮慶,楊開杰,徐汀榮.分布式數(shù)據(jù)緩存技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件, 2011, 28(6):202-204.
ApplicationofPing-pangCacheinSeismicAcquisitionSystem
QIUYongcheng
(GeophysicalDepartment,ChinaOffshoreOilfieldServicesCo.Ltd. ,Tianjin300450,China)
Due to the throughput and response time limitation of the data processing system, the airguns can not be fired continuously without time interval between two shot (i.e. dead time). In order to eliminate the dead time, a ping-pang cache mechanism of seismic data is designed and implemented. The timing sequence of seismic data is converted into channel sequence in the process of data storage. The hardware design of the ping-pang cache controller and the code based on FPGA are introduced. With the ping-pang cache and the conversion of seismic data on hardware, it can eliminate the dead time in the seismic acquisition system, and reduce the difficulty of software development in PC, also can improve the stability and real-time performance of the acquisition instrument.
seismic data acquisition; ping-pang cache; time-channel sequence conversion; FPGA
國(guó)家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)(2012AA09A211)
邱永成,男, 1980年生,工程師, 2006年畢業(yè)于電子科技大學(xué)光學(xué)工程專業(yè),現(xiàn)從事地震勘探裝備研發(fā)工作。E-mail:qycct@163.com
TP274+.2
A
2096-0077(2017)06-0019-04
10.19459/j.cnki.61-1500/te.2017.06.005
2017-02-10
高紅霞)