許磊, 顧慶水, 歐莽平, 郭明亮
(1.中海油田服務(wù)股份有限公司, 河北 三河 065201; 2.電子科技大學(xué)電子工程學(xué)院, 四川 成都 611731)
測井系統(tǒng)數(shù)據(jù)傳輸一般分2個部分:電纜上的數(shù)據(jù)傳輸和井下儀器總線的數(shù)據(jù)傳輸。電纜上的數(shù)據(jù)傳輸速度已達1 Mbit/s以上[1],當(dāng)前使用的井下儀器總線主要有貝克休斯公司的1553B、斯倫貝謝公司的DTB、中國公司CAN及以太網(wǎng)總線等。其中1553B速率230 kbit/s,DTB速率100 kbit/s,CAN總線最大傳輸速率僅為1 Mbit/s且受限于40 m的傳輸距離[23],這些總線的實際有效數(shù)據(jù)傳輸速率遠(yuǎn)遠(yuǎn)低于1 Mbit/s。以太網(wǎng)總線應(yīng)用于測井系統(tǒng)中,而且傳輸速率夠快,但可用的網(wǎng)絡(luò)芯片溫度性能太差,勉強在175 ℃的測井溫度下使用[4],離200 ℃以上的高溫要求相差甚遠(yuǎn)。本文研制成功基于8b/10b編解碼技術(shù)的10 Mbit/s高速儀器總線[15],總線通過8b/10b編解碼技術(shù)以及位同步技術(shù),結(jié)合沖突檢測和重傳機制,保證了高速數(shù)據(jù)傳輸?shù)姆€(wěn)定和可靠,傳輸距離可達100 m,耐溫高于200 ℃。
8b/10b編碼由IBM公司提出,在傳輸數(shù)據(jù)流中“1”和“0”的個數(shù)基本相當(dāng),連續(xù)的“1”或“0”不超過5個,極大地保證了傳輸信號的直流平衡,編碼后的串行數(shù)據(jù)流包含同步時鐘信息,接收端易于實現(xiàn)時鐘恢復(fù),傳輸效率和可靠性較高,在高速串行總線中應(yīng)用廣泛[6]。
8b/10b基本編碼規(guī)則是將輸入的8 bit數(shù)據(jù)(8b)按照編碼規(guī)則映射為10 bit數(shù)據(jù)(10b)。編碼過程中,先將輸入數(shù)據(jù)分解成2組數(shù)據(jù),一組擁有低5 bit數(shù)據(jù)(5b),一組擁有高3 bit數(shù)據(jù)(3b),2組數(shù)據(jù)分別進行5b/6b編碼和3b/4b編碼,再將編碼后的4 bit數(shù)據(jù)(4b)和6 bit的數(shù)據(jù)(6b)合并為10 bit數(shù)據(jù)(10b),完成編碼。
8b/10b編碼數(shù)據(jù)可統(tǒng)一表示為DX.Y或KX.Y,其中D表示其為數(shù)據(jù)代碼,K表示其為控制代碼,X表示輸入的原始數(shù)據(jù)低5 bit的EDCBA,Y表示輸入數(shù)據(jù)的高3 bit的HGF[6-8]。
對于8b數(shù)據(jù),它的數(shù)據(jù)位順序為HGFEDCBA,即H為最高位,A為最低位,EDCBA經(jīng)過5b/6b編碼為abcdei,HGF經(jīng)過3b/4b編碼為fghj,傳送10b編碼的順序為abcdeifghj,5b/6b編碼和3b/4b編碼通過查詢5b/6b和3b/4b編碼表的方式進行編碼。
為保證傳輸?shù)闹绷髌胶?引入Running Disparity(RD)標(biāo)志,在進行5b/6b和3b/4b編碼的時候可根據(jù)當(dāng)前的RD值(RD-或RD+)去查表,得到相應(yīng)的編碼。RD初始化值為RD-,第1組編碼完成后產(chǎn)生新的RD,然后根據(jù)新的RD進行第2組編碼,以此類推,直至編碼完成。
8b/10b編解碼器采用verilog HDL語言進行設(shè)計,在Actel的A3P060芯片上實現(xiàn)。
圖1 8b/10b編碼模塊實現(xiàn)流程圖
8b/10b編碼模塊實現(xiàn)流程見圖1。8b/10b編碼模塊將輸入的8 bit數(shù)據(jù)拆分為低5 bit和高3 bit,分別存入5 bit寄存器和3 bit寄存器中,先對低5 bit數(shù)據(jù)進行5b/6b編碼,再對高3 bit數(shù)據(jù)進行3b/4b編碼,將2部分編碼數(shù)據(jù)組合存入10 bit的寄存器中,完成8 bit數(shù)據(jù)編碼。
8b/10b解碼模塊實現(xiàn)方法同編碼模塊類似,將接收的10 bit數(shù)據(jù)分成低6 bit和高4 bit,存入2個寄存器中,分別進行5b/6b解碼和3b/4b解碼,再組合成8 bit的數(shù)據(jù)輸出,完成8b/10b解碼。5b/6b解碼和3b/4b解碼同樣利用查表實現(xiàn)。8b/10b解碼模塊實現(xiàn)流程見圖2。
圖2 8b/10b解碼模塊實現(xiàn)流程圖
控制器利用高頻時鐘對經(jīng)過跨時鐘域處理的總線信號進行采樣,通過異或邏輯判斷總線信號跳變沿,并從總線信號跳變沿開始利用4 bit的計數(shù)器進行計數(shù),在每個碼元的中間進行采樣??刂破髅看螜z測到總線信號跳變沿時都將計數(shù)器清零,進行一次重同步以確保采樣信號的準(zhǔn)確性,工作流程見圖3。
圖3 位同步時鐘恢復(fù)流程圖
總線物理層數(shù)據(jù)傳輸速率為10 Mbit/s,即時鐘頻率為10 MHz,;進行位同步時鐘恢復(fù)的檢測時鐘頻率為100 MHz,電平同步器亦采用100 MHz的時鐘進行處理。
搭建10 Mnps儀器總線測試平臺共有4個模擬儀器節(jié)點,所有模擬儀器節(jié)點通過差分總線掛接到高速總線上,每個節(jié)點板載FPGA實現(xiàn)8b/10b編解碼器。4個模擬儀器節(jié)點硬件一致,Node1為主控,控制其余3個節(jié)點的數(shù)據(jù)發(fā)送和接收,進行解碼以及錯誤診斷后,統(tǒng)計數(shù)據(jù)傳輸錯誤等信息,通過SCI接口發(fā)送到地面PC軟件進行統(tǒng)計信息及狀態(tài)顯示,同時,地面PC軟件可控制各儀器節(jié)點數(shù)據(jù)發(fā)送的啟停及發(fā)送數(shù)據(jù)量,以此模擬實際測井過程。模擬節(jié)點硬件功能見圖4。
圖4 模擬節(jié)點硬件功能示意圖
核心編解碼及控制部分在FPGA內(nèi)部實現(xiàn),硬件設(shè)計采用Actel的A3P060實現(xiàn)。DSP選用TI的TMS320F28335-HT,實現(xiàn)測試數(shù)據(jù)的收發(fā)控制和信息處理等,該芯片具備耐高溫特性,滿足測井系統(tǒng)對高溫環(huán)境的要求。
DSP與FPGA芯片通過多通道緩沖串行口(Multichannel Buffered Serial Port,McBSP)進行數(shù)據(jù)通信,該串口通訊速率由用戶決定,板載傳輸速率大于10 Mbit/s。
地面PC軟件基于美國國家儀器(NI)公司的LabWindows/CVI環(huán)境開發(fā)設(shè)計??刂婆c顯示軟件在測試過程中可打開或關(guān)閉任意一節(jié)點,可控制模擬節(jié)點發(fā)送數(shù)據(jù)量,可將主控節(jié)點數(shù)據(jù)接收統(tǒng)計信息(接收幀數(shù)、錯誤幀數(shù)等)直觀顯示在界面上。
3.2.1 總線幀格式
總線幀分?jǐn)?shù)據(jù)幀和確認(rèn)幀(應(yīng)答幀)。數(shù)據(jù)幀由10 bit幀頭、8 bit標(biāo)識符、8 bit控制位、8 bit有效數(shù)據(jù)長度、2 040 bit數(shù)據(jù)、16 bit的CRC校驗值、10 bit幀尾構(gòu)成。數(shù)據(jù)幀除幀頭和幀尾,其他部分進行8b/10b編碼,在物理層傳輸?shù)恼麄€數(shù)據(jù)幀長度為2 620 bit[1]。幀頭采用8b/10b編碼中的K28.5字符,幀尾采用8b/10b編碼中的K28.1字符,這2個字符在8b/10b編碼中具有唯一性,可有效避免假幀同步。標(biāo)識符為儀器地址,控制位用于標(biāo)識數(shù)據(jù)幀狀態(tài)等信息,數(shù)據(jù)長度標(biāo)識后面的有效用戶數(shù)據(jù)長度??偩€數(shù)據(jù)幀長度固定,一幀最大可傳輸?shù)臄?shù)據(jù)長度為255B數(shù)據(jù),當(dāng)要傳的數(shù)據(jù)超過255B后,分成若干幀進行傳輸;當(dāng)可傳輸?shù)臄?shù)據(jù)長度不足255B數(shù)據(jù)時,有效數(shù)據(jù)先傳,剩余字節(jié)補零,該幀的有效數(shù)據(jù)長度由該幀的數(shù)據(jù)長度字段指示。
確認(rèn)幀由接收端產(chǎn)生,接收端每正確接收到一幀數(shù)據(jù)后產(chǎn)生1個確認(rèn)信號。確認(rèn)信號的產(chǎn)生時間在接收完當(dāng)前幀的幀尾后10個位元時間內(nèi)產(chǎn)生。
確認(rèn)幀由幀頭和儀器標(biāo)識符組成。幀頭為8b/10b編碼中的K28.7字符。儀器標(biāo)識符8 bit,通過8b/10b編碼后進行傳輸,整個確認(rèn)幀總長度20 bit。
3.2.2 優(yōu)先級機制與節(jié)點標(biāo)識
總線節(jié)點優(yōu)先級機制采用基于幀間間隔的優(yōu)先級機制,不同的儀器節(jié)點根據(jù)各自的特征被分配不同的幀間間隔值,值越小,優(yōu)先級越大。幀間間隔是指該支儀器需要通過總線發(fā)送數(shù)據(jù)時刻開始,當(dāng)檢測到總線空閑后,不能立即發(fā)送數(shù)據(jù),還必須等到滿足幀間間隔所需要的時間后才可發(fā)送該幀數(shù)據(jù)。
每個儀器節(jié)點分配1個儀器地址(占8 bit),從節(jié)點發(fā)送的數(shù)據(jù)幀頭部帶有本身儀器地址,主控節(jié)點以此來識別具體是哪個儀器節(jié)點的數(shù)據(jù)。同時,儀器地址跟儀器節(jié)點幀間間隔關(guān)聯(lián),以此通過儀器地址決定儀器優(yōu)先級。
3.2.3 沖突檢測與數(shù)據(jù)重傳
總線的沖突檢測機制采用基于幀間隔優(yōu)先級的CSMA/CA機制,處理方法如下。
(1) 儀器節(jié)點一直檢測總線數(shù)據(jù),如果連續(xù)10個位元為高電平,則將總線狀態(tài)設(shè)置為空閑狀態(tài),檢測到低電平,則空閑狀態(tài)無效;總線速率為10 Mbit/s,因此每個位元周期為100 ns。
(2) 儀器節(jié)點檢測到總線空閑后,繼續(xù)檢測總線數(shù)據(jù),當(dāng)總線空閑時間滿足該儀器節(jié)點的數(shù)據(jù)幀幀間間隔時,將總線狀態(tài)設(shè)置為長空閑狀態(tài)。
(3) 當(dāng)某個儀器節(jié)點有一幀數(shù)據(jù)需要發(fā)送時,首先檢測總線數(shù)據(jù),查看總線是否空閑,若空閑同時總線狀態(tài)處于長空閑狀態(tài),則立即發(fā)送數(shù)據(jù);
雖然設(shè)計了優(yōu)先級機制和沖突檢測機制,在實際應(yīng)用中,由于總線支線長度不同、阻抗變化等因素不可避免造成時間延遲,還會存在數(shù)據(jù)沖突的可能。為此設(shè)計了沖突以及數(shù)據(jù)幀錯誤的重傳機制。
發(fā)送端發(fā)送數(shù)據(jù)前進行沖突檢測,檢測到數(shù)據(jù)幀沖突后,啟動數(shù)據(jù)重傳機制。數(shù)據(jù)重傳前繼續(xù)檢測總線狀態(tài),每個節(jié)點的幀間間隔不同,再次發(fā)生沖突的概率微乎其微,而且發(fā)送端設(shè)計多于10次的重傳次數(shù),完全可以解決數(shù)據(jù)沖突問題。
主控節(jié)點接收到從幾點數(shù)據(jù)幀后會啟動錯誤檢測,主要檢測錯誤類型:幀頭幀尾檢測、CRC校驗檢測、標(biāo)識符檢測、8b/10b碼流是否符合編碼要求檢測、數(shù)據(jù)幀總位寬是否符合幀格式要求檢測等。
若主控節(jié)點接收到的數(shù)據(jù)有錯,則不發(fā)送確認(rèn)信號。此時若發(fā)送端檢測到該次數(shù)據(jù)幀發(fā)送完后40個位元內(nèi)無確認(rèn)信號,則認(rèn)為數(shù)據(jù)發(fā)送出錯,發(fā)送端啟動重傳機制,保證數(shù)據(jù)的正確傳輸。
測試在實驗室搭建的100 m雙絞線傳輸介質(zhì)上進行,共進行多次長時間數(shù)據(jù)測試,結(jié)果見表1。
表1 總線測試結(jié)果
測試結(jié)果說明
(1) HSC-TOOL1~HSC-TOOL3為高速總線模擬節(jié)點,可設(shè)置數(shù)據(jù)發(fā)送幀長,統(tǒng)計接收的幀數(shù)和錯誤幀數(shù),每幀數(shù)據(jù)長度255 B。
(2) LSC-TOOL為一組1 Mbit/s總線,也是1組雙絞線,3個節(jié)點HSIB混繞一起,人為引入干擾,進行HSIB通道的電磁抗干擾測試。
(3) 測試時長24 h 21 min,共傳輸267 337 500幀數(shù)據(jù)(每幀255 B),未產(chǎn)生錯誤幀。
主控節(jié)點控制2個儀器節(jié)點同時發(fā)送數(shù)據(jù),進行沖突的檢測和數(shù)據(jù)重傳測試。經(jīng)過長時間測試,示波器捕獲到?jīng)_突的發(fā)生。
通過示波器捕獲的波形圖可以看出,D1和D2通道的2個儀器節(jié)點在某一時刻產(chǎn)生沖突,沖突后D2通道的儀器節(jié)點具有高優(yōu)先級,立刻進行數(shù)據(jù)重傳,D0通道(主控節(jié)點)正確接收,D2通道的儀器節(jié)點發(fā)送完畢后,D1通道儀器節(jié)點啟動數(shù)據(jù)發(fā)送。后續(xù)傳輸過程中未發(fā)生沖突,沖突避免機制效果良好。
HSIB模塊在200 ℃高溫環(huán)境下進行了高溫性能測試,整個升溫過程中,HSIB模塊的+3.3 V電流基本保持不變,僅在200 ℃高溫后有幾mA的增加;+1.5 V電流基本隨溫度升高而升高。
在202 ℃高溫下,持續(xù)測試了近7 h,+3.3 V和+1.5 V的電流基本沒有發(fā)生變化,+3.3 V電流為57 mA,+1.5 V電流為35 mA,總功耗約為240 mW。
(1) 通過測井儀器總線平臺的測試,8b/10b編解碼器模塊完全可以實現(xiàn)在100 m雙絞總線上的穩(wěn)定可靠的高速數(shù)據(jù)傳輸;高溫試驗證明,HSIB模塊滿足200 ℃測井環(huán)境的高溫要求。
(2) 8b/10b編解碼器不僅可以應(yīng)用在井下儀器總線中,還可以應(yīng)用在井下單支儀器內(nèi)部,比如儀器內(nèi)部探頭與控制器之間的大數(shù)據(jù)量高速傳輸、傳感器陣列的高速數(shù)據(jù)傳輸總線等方面。
(3) 本文設(shè)計的編解碼器已經(jīng)成功應(yīng)用到測井系統(tǒng)的井下儀器總線中。測井儀器對高溫的要求越來越高(耐溫200 ℃以上),在成熟傳輸總線或受限于溫度、或受限于傳輸速率的情況下,本文設(shè)計的8b/10b編解碼器是一種優(yōu)異的高溫和大數(shù)據(jù)量高速傳輸解決方案。
參考文獻:
[1] 顧慶水, 歐莽平, 張菊茜, 等. 井下測井儀器數(shù)據(jù)總線的研究與設(shè)計 [J]. 測井技術(shù), 2015, 39(1): 90-93.
[2] 唐麗麗, 黃向東, 何剛. CAN總線在成像測井系統(tǒng)中的應(yīng)用 [J]. 測井技術(shù), 2004, 28(2): 164-166.
[3] 于海生. CAN總線工業(yè)測控網(wǎng)絡(luò)系統(tǒng)的設(shè)計與實現(xiàn) [J]. 儀器儀表學(xué)報, 2001, 22(1): 17-18.
[4] 陳文軒, 岳宏圖, 陳文, 等. 網(wǎng)絡(luò)化井下儀器數(shù)據(jù)總線研究 [J]. 測井技術(shù), 2011, 35(6): 572-575.
[5] 耿立忠, 王鵬, 馬騁, 等. RS485高速數(shù)據(jù)傳輸協(xié)議的設(shè)計與實現(xiàn) [J]. 清華大學(xué)學(xué)報: 自然科學(xué)版, 2008, 48(8): 1311-1314.
[6] Widmer A X, Franaszek P A. A DC Balance, Partitioned-block, 8b/10b Transmission Code [J]. IBM Journal of Research and Development, 1983, 23(5): 441-443.
[7] 李宥謀. 8b/10b編碼器的設(shè)計與實現(xiàn) [J]. 電視技術(shù), 2005(6): 26-30.
[8] 葉雷, 朱紅. 8b/10b編解碼器的IP核設(shè)計 [J]. 電子設(shè)計工程, 2005(11): 19-22.