謝 超,門百永,幺永超,盧俊強(qiáng),王邦偉,劉先平
(1.中國石油大學(xué)(北京) 油氣資源與探測國家重點實驗室, 北京 102249;2.中國石油大學(xué)(北京)地球物理學(xué)院,北京 102249;3.南方科技大學(xué) 地球與空間科學(xué)系,廣東 深圳 518055; 4.中國石油集團(tuán)測井有限公司 西南分公司,重慶 400021;5.中國石油測井有限公司 天津分公司,天津 300280)
隨著勘探開發(fā)的不斷深入,遠(yuǎn)離井壁周圍空間的探測成為迫切需要的勘探技術(shù)[1-3],中國石油大學(xué)(北京)與中國石油集團(tuán)合作研制的基于相控陣技術(shù)[4-6]的遠(yuǎn)探測方位反射聲波成像測井儀(BAR)[7-8]成功實現(xiàn)了帶方位分辨能力的遠(yuǎn)離井壁地質(zhì)空間的探測。為實現(xiàn)方位分辨能力,BAR采用了陣列化的探測器結(jié)構(gòu)(傳感器數(shù)量達(dá)80個);為實現(xiàn)遠(yuǎn)距離探測,BAR每個傳感器數(shù)據(jù)采樣深度可達(dá)8 k,因此,每個深度點總數(shù)據(jù)量可達(dá)1.2 MB。而現(xiàn)今成熟的電纜測井遙傳系統(tǒng)最高通訊速度不超過1 Mbps[9-10]。
為解決遙傳通訊速度低的瓶頸,BAR采用了“井下存儲,抽樣上傳”的工作方式,即所有測井?dāng)?shù)據(jù)均存儲于井下大容量存儲器內(nèi),僅抽樣部分關(guān)鍵數(shù)據(jù)上傳到地面[11]。在BAR儀器上提到井口后,需要在現(xiàn)場快速讀取測井?dāng)?shù)據(jù),通過回放分析軟件快速驗證測井施工質(zhì)量是否合格。常規(guī)的測井地面系統(tǒng)不具備專用高速數(shù)據(jù)讀取接口,因此,需要開發(fā)專用的數(shù)據(jù)讀取接口,以實現(xiàn)BAR數(shù)據(jù)的現(xiàn)場快速讀取和回放分析。另外,數(shù)據(jù)讀取接口應(yīng)具備獨立供電能力,可以實現(xiàn)井下數(shù)據(jù)存儲電路的供電。
本文設(shè)計了一種基于USB總線的遠(yuǎn)探測方位反射聲波成像測井儀數(shù)據(jù)讀取接口,實現(xiàn)了在井場對BAR主控短節(jié)內(nèi)的數(shù)據(jù)存儲電路供電和測井?dāng)?shù)據(jù)的快速讀取與回放、以及測井質(zhì)量的檢驗。
BAR測井儀的主控短節(jié)內(nèi)的數(shù)據(jù)存儲模塊的供電為9~15 V,常溫下功耗不超過2 W,數(shù)據(jù)存儲模塊物理讀取速度不高于10 MB/s,經(jīng)過本地文件系統(tǒng)處理后,數(shù)據(jù)輸出速度約為8 MB/s。本設(shè)計中選用USB2.0接口,即可以滿足通訊要求,也可以為接口電路供電。接口電路與井下儀器數(shù)據(jù)存儲模塊的物理連接距離為3~5 m,且二者通過31芯測井連接器相連,引線資源有限;另外,井場環(huán)境還存在各種強(qiáng)電干擾。因此,接口電路與井下儀器數(shù)據(jù)存儲模塊的通訊選用多點低電壓差分信號(M-LVDS)來構(gòu)建高速串行總線[12-13]。
數(shù)據(jù)讀取接口整體結(jié)構(gòu)如圖1所示。數(shù)據(jù)讀取接口主要由運行于上位機(jī)的控制軟件和接口電路兩部分組成。其中,硬件接口電路實現(xiàn)BAR數(shù)據(jù)存儲模塊數(shù)據(jù)輸出接口和計算機(jī)接口的轉(zhuǎn)換。控制軟件實現(xiàn)數(shù)據(jù)讀取過程的控制、數(shù)據(jù)存儲、數(shù)據(jù)解編和數(shù)據(jù)回放。上位機(jī)通過USB總線控制數(shù)據(jù)讀取接口板,數(shù)據(jù)讀取接口電路根據(jù)上位機(jī)命令通過基于M-LVDS的高速串行總線讀取井下數(shù)據(jù)。
數(shù)據(jù)讀取接口電路主要由鋰電池、電源管理電路、電流檢測電路、USB總線控制器、FPGA和高速總線驅(qū)動器等組成,其結(jié)構(gòu)如圖2所示。其中,電源管理電路實現(xiàn)將USB供電轉(zhuǎn)換為數(shù)據(jù)讀取接口電路內(nèi)各電路所需要的低壓電平,如3.3 V、1.2 V等。另外,電源管理電路將鋰電池的輸出升壓轉(zhuǎn)換為15 V輸出,給BAR主控短節(jié)內(nèi)的數(shù)據(jù)存儲模塊供電。電流檢測電路用于精確檢測數(shù)據(jù)存儲模塊的供電電流。根據(jù)數(shù)據(jù)存儲模塊的供電電流可以對存儲模塊的故障進(jìn)行初步判斷。
USB控制器實現(xiàn)數(shù)據(jù)讀取接口電路和主機(jī)間的通訊,本設(shè)計中選用FTDI公司的FT232H[14],該芯片以內(nèi)部固件實現(xiàn)了整個USB協(xié)議,最高通訊速度可以達(dá)到40 MB/s。本設(shè)計中將FT232H配置成USB轉(zhuǎn)異步并行FIFO模式,在此模式下,F(xiàn)T232H內(nèi)置一個雙向FIFO接口,通過讀寫標(biāo)志信號和讀寫使能信號與FPGA進(jìn)行通訊。
為了保證數(shù)據(jù)讀取接口電路通訊的高效,前端控制器采用FPGA芯片作為主控制芯片。本設(shè)計中FPGA實現(xiàn)數(shù)據(jù)編碼、解碼、校驗、數(shù)據(jù)緩存、高速串行總線控制等。與微處理器MCU中指令順序執(zhí)行所不同的是,F(xiàn)PGA中大量的門陣列可以實現(xiàn)復(fù)雜的并行邏輯控制功能,可以以流水線的方式實現(xiàn)數(shù)據(jù)的編碼、校驗和緩存等,提高總線響應(yīng)的時效。以FPGA為控制核心也便于升級和擴(kuò)展。
高速總線驅(qū)動器實現(xiàn)TTL電平和M-LVDS電平的轉(zhuǎn)換。
井下儀器與數(shù)據(jù)讀取電路的通訊和數(shù)據(jù)讀取電路與上位機(jī)的通訊均采用相同的幀格式,具體格式如圖3所示。一個完整的通訊幀包括幀頭、幀類型、幀內(nèi)容和校驗碼。根據(jù)傳輸數(shù)據(jù)長度的不同將通訊幀分為兩類,一種是短幀,總長度規(guī)定為16字節(jié),用于傳輸命令和井下儀器供電電流值等;一種是長幀,總長度固定為2 048字節(jié),僅用于傳輸井下儀器上傳數(shù)據(jù)。
數(shù)據(jù)讀取接口電路的軟件是運行在FPGA內(nèi)的邏輯電路,采用VHDL語言進(jìn)行設(shè)計,圖4為控制邏輯結(jié)構(gòu)框圖。FPGA內(nèi)的邏輯電路主要由USB并行接口、命令解析、下傳命令集、8B/10B編碼、串行發(fā)送器、總線驅(qū)動控制器、串行接收器、10B/8B解碼、數(shù)據(jù)校驗、數(shù)據(jù)緩存、上傳命令集、供電管理、電流采集控制、電流緩存器等邏輯功能模塊組成。
USB并行接口模塊由USB數(shù)據(jù)讀取功能模塊和USB數(shù)據(jù)寫入功能模塊組成,其中USB數(shù)據(jù)讀取功能模塊是根據(jù)FT232H的接收數(shù)據(jù)指示信號RXF,讀取上位機(jī)發(fā)送到FT23H內(nèi)部FIFO中的下傳數(shù)據(jù),而后發(fā)送該數(shù)據(jù)到命令解析功能模塊。USB數(shù)據(jù)寫入功能模塊是跟據(jù)FT232H發(fā)送指示信號TXF,在狀態(tài)控制器的控制下,將選擇緩存數(shù)據(jù)或電流測量值或命令集內(nèi)的數(shù)據(jù)發(fā)送到FT232H中的發(fā)送FIFO中。
命令解析模塊的功能是根據(jù)接收命令的內(nèi)容產(chǎn)生相應(yīng)的控制指示信號,用于驅(qū)動狀態(tài)控制器狀態(tài)的轉(zhuǎn)換,并將需要下傳的命令寫入到下傳命令集中。
下傳命令集為數(shù)據(jù)讀取接口電路下發(fā)到井下儀器主控短節(jié)的命令集合,其包括兩部分,一部分是與井下儀器通訊的握手命令,如下傳數(shù)據(jù)請求命令、下傳數(shù)據(jù)重發(fā)命令等,該類命令以ROM形式固化在FPGA內(nèi);另一部分是由數(shù)據(jù)讀取接口電路轉(zhuǎn)發(fā)給井下儀器的上位機(jī)命令,緩存在FPGA內(nèi)的雙口RAM中。
數(shù)據(jù)讀取接口電路與井下儀器主控短節(jié)通過差分串行總線通訊,為提高數(shù)據(jù)傳輸?shù)目煽啃裕唛g的通訊采用了8B/10B編碼方法。8B/10B編碼方法是通過冗余的2 bits實現(xiàn)傳輸?shù)臄?shù)據(jù)流中‘0’和‘1’的數(shù)量均等。該編碼方法保證數(shù)據(jù)流中有足夠的電平轉(zhuǎn)換,既可以實時校正串行接收電路的時鐘漂移,又可以保證直流平衡,從而保證數(shù)據(jù)傳輸?shù)母呖煽啃浴A硗?,額外的冗余編碼還可以用于數(shù)據(jù)錯誤識別,提高傳輸?shù)男r災(zāi)芰?。FPGA是基于查找表結(jié)構(gòu),且有大量的內(nèi)部存儲空間,因此,本設(shè)計中8B/10B編碼和10B/8B解碼模塊均采用查表法實現(xiàn),在串行發(fā)送和接收時同步實現(xiàn)編碼和解碼,提高傳輸效率。
數(shù)據(jù)解析及校驗?zāi)K是根據(jù)數(shù)據(jù)傳輸協(xié)議的約定解析命令及校驗接收到數(shù)據(jù)的正確性,并將命令類型及校驗結(jié)果通知狀態(tài)控制器。本設(shè)計中采用CRC-7校驗,校驗碼采用查表方式獲得,可以在一個時鐘周期內(nèi)得到校驗碼,從而可以與串行接收器及數(shù)據(jù)緩存器同步工作,同步實現(xiàn)數(shù)據(jù)的接收、校驗和緩存。
數(shù)據(jù)緩存模塊主要用于緩存井下儀器上傳數(shù)據(jù)和電流采集數(shù)據(jù),該數(shù)據(jù)緩存基于FPGA內(nèi)的SRAM實現(xiàn),分為3個雙端口SRAM區(qū)。其中電流采集數(shù)據(jù)緩存區(qū)占用一個SRAM區(qū),采用循環(huán)寫入模式。井下儀器上傳數(shù)據(jù)緩存區(qū)占用為兩個SRAM區(qū),采用乒乓結(jié)構(gòu)。
上傳命令集為數(shù)據(jù)讀取電路發(fā)送到上位機(jī)的命令的集合,該命令集以ROM形式固化在FPGA內(nèi)。
狀態(tài)控制器是數(shù)據(jù)讀取接口電路的核心,其根據(jù)上位機(jī)的下發(fā)命令、井下儀器上傳數(shù)據(jù)狀態(tài)和數(shù)據(jù)讀取接口電路的狀態(tài),產(chǎn)生相應(yīng)的控制信號,實現(xiàn)命令下發(fā)及命令和數(shù)據(jù)上傳的功能。狀態(tài)控制器主要由下傳控制狀態(tài)機(jī)和上傳控制狀態(tài)機(jī)組成。下傳控制狀態(tài)機(jī)主要包括供電設(shè)置態(tài)、下傳命令態(tài)和設(shè)置上傳命令態(tài),具體轉(zhuǎn)換關(guān)系如圖5(a)所示,其中,設(shè)置上傳命令狀態(tài)的作用是產(chǎn)生驅(qū)動上傳控制狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的控制信號。上傳控制狀態(tài)機(jī)主要狀態(tài)有上傳電流值態(tài)、上傳命令態(tài)和上傳數(shù)據(jù)態(tài),具體轉(zhuǎn)換關(guān)系如圖5(b)所示,其中,上傳數(shù)據(jù)態(tài)包含等待子狀態(tài),僅當(dāng)數(shù)據(jù)傳輸完成后退出上傳數(shù)據(jù)態(tài)。
基于硬件描述語言設(shè)計的控制邏輯實現(xiàn)了上位機(jī)命令的解析、命令編碼下傳、上傳數(shù)據(jù)同步接收、同步解碼和校驗等,純硬件邏輯使各部分同步協(xié)調(diào)工作,可以實現(xiàn)高效的數(shù)據(jù)傳輸。圖6為下傳命令和上傳數(shù)據(jù)的仿真波形圖。圖中,數(shù)據(jù)讀取電路在接收到上傳數(shù)據(jù)后的5個時鐘周期內(nèi)開始發(fā)送下傳命令,可以看出純邏輯電路響應(yīng)高效迅速。
上位機(jī)軟件的功能是通過下發(fā)命令控制數(shù)據(jù)讀取接口電路讀取井下儀器的測井?dāng)?shù)據(jù)、存儲和回放測井?dāng)?shù)據(jù)并將測井?dāng)?shù)據(jù)轉(zhuǎn)換為測井評價軟件能識別的標(biāo)準(zhǔn)格式文件。
上位機(jī)軟件基于Visual Studio 2005實現(xiàn),其組成結(jié)構(gòu)如圖7所示。控制軟件主要由數(shù)據(jù)讀取、電流監(jiān)控、數(shù)據(jù)存儲、文件轉(zhuǎn)換和回放顯示等功能模塊組成,以上功能模塊均在獨立的線程中實現(xiàn)。
數(shù)據(jù)讀取線程的主要功能是通過調(diào)用D2XX驅(qū)動程序控制數(shù)據(jù)讀取電路與井下儀器數(shù)據(jù)存儲模塊進(jìn)行通訊,實現(xiàn)井下儀器數(shù)據(jù)的連續(xù)讀取,并將接收到的數(shù)據(jù)發(fā)送給數(shù)據(jù)存儲線程。另外,數(shù)據(jù)讀取線程還負(fù)責(zé)控制清空井下儀器數(shù)據(jù)存儲模塊。
數(shù)據(jù)存儲線程主要負(fù)責(zé)井下上傳數(shù)據(jù)的重整、錯誤校正和存儲。井下上傳數(shù)據(jù)包括井下儀器工作狀態(tài)信息和原始波形數(shù)據(jù)。數(shù)據(jù)存儲線程將上傳數(shù)據(jù)存儲為原始數(shù)據(jù)文件,同時提取儀器工作狀態(tài)信息并以文本格式存儲到一個獨立的狀態(tài)文件,將聲波波形數(shù)據(jù)以二進(jìn)制格式存儲到另一個獨立的測井?dāng)?shù)據(jù)文件。
文件轉(zhuǎn)換線程主要實現(xiàn)聲波測井?dāng)?shù)據(jù)的增益還原、深度還原和標(biāo)準(zhǔn)格式的轉(zhuǎn)換,以提供符合各測井解釋平臺格式要求的測井?dāng)?shù)據(jù)文件。由于測井?dāng)?shù)據(jù)文件較大,普通的IO文件操作方式效率較低下,本設(shè)計中采用了內(nèi)存映射文件方式實現(xiàn)測井?dāng)?shù)據(jù)文件的讀取和標(biāo)準(zhǔn)格式文件的寫入。
電流監(jiān)控線程是在數(shù)據(jù)讀取過程中定時讀取和記錄井下儀器數(shù)據(jù)存儲模塊的供電電流。通過井下儀器數(shù)據(jù)存儲模塊供電電流的異常,可以初步預(yù)測井下儀器數(shù)據(jù)存儲模塊失效概率,并為數(shù)據(jù)存儲模塊的失效分析提供支撐。
所研制的遠(yuǎn)探測聲波測井儀數(shù)據(jù)讀取接口已成功應(yīng)用測井現(xiàn)場,累計完成8口井的現(xiàn)場數(shù)據(jù)讀取。在BAR測井儀的井下工作結(jié)束后,儀器上提到井口,利用該數(shù)據(jù)讀取接口將測井?dāng)?shù)據(jù)快速讀取到計算機(jī)中。自定義高速串行總線(M-LVDS總線)實現(xiàn)數(shù)據(jù)讀取接口與測井儀主控短節(jié)的通信,原始測井?dāng)?shù)據(jù)以80 Mbps的速率傳輸?shù)紽PGA中進(jìn)行通訊協(xié)議的解編和校驗。校驗成功的數(shù)據(jù)由USB總線上傳到測井計算機(jī)中,由上位機(jī)軟件進(jìn)行回放。
圖8為原始數(shù)據(jù)傳輸過程中高速串行總線波形圖,圖中通道1為數(shù)據(jù)讀取接口電路總線驅(qū)動的發(fā)送使能信號,通道3為M-LVDS+,通道2為M-LVDS-。從圖中可以看出,差分總線速率為80 Mbps。在接收到上傳數(shù)據(jù)后,數(shù)據(jù)讀取接口電路延時350 ns左右即啟動命令下傳??梢钥闯?,基于硬件邏輯的并行化協(xié)議管理方法保證了高速串行總線上下行的快速切換,也保證串行總線的高速率。
新疆塔里木油田某口井的測井?dāng)?shù)據(jù)為720 MB,讀取時間為101 s,則平均讀取速度達(dá)到了57 Mbps,略低于理論數(shù)據(jù)讀取速率。經(jīng)觀測發(fā)現(xiàn),在某些時候井下數(shù)據(jù)存儲模塊在接收到數(shù)據(jù)請求命令后的響應(yīng)存在不定延時。這主要是因為井下數(shù)據(jù)存儲模塊在讀取數(shù)據(jù)過程中首先進(jìn)行分塊校驗,如果出現(xiàn)錯誤則需要根據(jù)冗余信息校正錯誤,因此出現(xiàn)響應(yīng)延時,降低了整體數(shù)據(jù)讀取速度。
圖9為測井現(xiàn)場井口數(shù)據(jù)回放界面圖。該次施工測井井段為3 808.82~3 556.32 m,波形數(shù)據(jù)質(zhì)量良好。
本文設(shè)計了一種基于USB總線和高速串行總線的測井?dāng)?shù)據(jù)讀取接口。本設(shè)計采用FPGA作為控制核心,基于硬件描述語言設(shè)計的控制邏輯實現(xiàn)了上位機(jī)命令的解析、命令編碼下傳、上傳數(shù)據(jù)同步接收、同步解碼和校驗等,純硬件邏輯使各部分同步協(xié)調(diào)工作,實現(xiàn)了高效的數(shù)據(jù)傳輸。經(jīng)測試,該數(shù)據(jù)讀取接口的平均數(shù)據(jù)讀取速率達(dá)57 Mbps,實現(xiàn)了測井?dāng)?shù)據(jù)的現(xiàn)場快速讀取和回放,保證了測井?dāng)?shù)據(jù)檢驗的時效及測井施工的效率。