李 謙 周建瓊 張菊茜 顧慶水 陳 偉
(1.中海油田服務(wù)有限公司油田事業(yè)部,河北 三河065201;2.電子科技大學(xué),四川 成都611731)
在測井行業(yè)中,井下儀器工作環(huán)境較為惡劣,高溫、高壓和振動等外界因素均對儀器的設(shè)計提出了很高的技術(shù)和工程要求,同時井況的不確定性,對測井儀器的尺寸也有嚴格的要求,導(dǎo)致測井儀器設(shè)計的集成度都較高,一根儀器一般需要采集多個或者多種信號,各個信號節(jié)點之間相對獨立,同時連接在一根總線上,通過一個統(tǒng)一的控制單元,控制各個節(jié)點的信號采集和數(shù)據(jù)傳輸操作,多采用主從模式的485總線或者1 Mbit/s的CAN總線實現(xiàn)。隨著行業(yè)的進步和科技的發(fā)展,能夠提供井周圖像的成像類儀器受到了業(yè)界的普遍歡迎,然而由于成像類儀器信號采集數(shù)據(jù)量大,且節(jié)點數(shù)量多,傳統(tǒng)總線以主控制單元為發(fā)起點的主從模式和1 Mbit/s的傳輸速率已經(jīng)不能滿足儀器設(shè)計的要求,急需一種效率更高、速率更快、更加穩(wěn)定的工作模式應(yīng)用于測井儀器的內(nèi)部總線中[1]。本文設(shè)計的總線節(jié)點以FPGA和485總線接口為基礎(chǔ),利用485總線的電氣標準,通過借鑒總線競爭和偵聽技術(shù),并融入8b/10b編碼技術(shù),可以實現(xiàn)40 m短距離內(nèi)10 Mbit/s速率的可靠數(shù)據(jù)傳輸,針對測井儀器信號節(jié)點數(shù)據(jù)特點,通過對節(jié)點優(yōu)先級和數(shù)據(jù)幀進行優(yōu)化設(shè)計,實現(xiàn)各個節(jié)點均具備自動采集、自動發(fā)送數(shù)據(jù)的“多主從模式”,使得各個節(jié)點更加獨立,儀器設(shè)計更加靈活,從而更好地滿足成像類儀器的設(shè)計要求。
本文設(shè)計總線節(jié)點的主要功能是接收總線上的數(shù)據(jù)并轉(zhuǎn)發(fā)給節(jié)點處理模塊,同時,將節(jié)點處理模塊的數(shù)據(jù)發(fā)送到總線上,實現(xiàn)各個節(jié)點自行運行和數(shù)據(jù)傳輸?shù)摹岸嘀鲝墓ぷ髂J健保瑫r采用高速傳輸,提高數(shù)據(jù)傳輸效率,從而實現(xiàn)測井儀器對地層信息的快速采集、匯總和處理[2]。本文設(shè)計的智能節(jié)點包括三部分內(nèi)容:核心處理單元、總線接口單元和數(shù)據(jù)接口單元。核心處理單元以FPGA為硬件平臺,完成地址設(shè)定、數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換、8b/10b編解碼技術(shù)和總線空閑偵聽等功能;總線接口單元,由FPGA內(nèi)部接口控制模塊和485總線接口芯片實現(xiàn);數(shù)據(jù)接口單元由FPGA內(nèi)部數(shù)據(jù)邏輯接口控制模塊和數(shù)據(jù)接口連線實現(xiàn)。根據(jù)儀器內(nèi)部總線長度較短的特點,一般不超過40 m,采用485總線接口實現(xiàn)儀器內(nèi)部總線高速數(shù)據(jù)傳輸速率的要求,傳輸速率可達10 Mbit/s,并通過FPGA中的邏輯控制,實現(xiàn)“自動工作模式”,同時,保障數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性。
總體架構(gòu)中的硬件設(shè)計方案,不僅要完成穩(wěn)定的實時性傳輸,還應(yīng)考慮到測井作業(yè)的惡劣環(huán)境對系統(tǒng)的影響。所以,在器件選型上著重考慮所有芯片的功耗和耐溫等性能指標?;谝陨峡紤],經(jīng)過反復(fù)對比,本文選用ACTEL公司的A3P系列作為核心處理單元FPGA芯片,由于硬件核心的內(nèi)部邏輯較為復(fù)雜,同時還要兼顧存儲空間和芯片尺寸,選擇A3P250VQG100芯片;總線驅(qū)動芯片方面選擇TI的SN65HVD11D芯片;數(shù)據(jù)接口單元亦通過FPGA的IO口實現(xiàn),預(yù)留20個IO口引腳,可以滿足現(xiàn)代設(shè)計流行的并行端口和高速串行端口等多種接口的需求。上述芯片在耐溫方面均滿足工業(yè)級以上設(shè)計要求[3]。硬件整體結(jié)構(gòu)如圖1所示。
圖1 硬件整體結(jié)構(gòu)
總線接口單元通過驅(qū)動電路實現(xiàn)485總線的電氣特性,其接口信號電平較低,不易損壞接口電路的芯片,且傳輸速率可以高達10 Mbit/s,總線接口采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,抗噪聲干擾性好。本設(shè)計中選擇的SN65HVD11D芯片能夠?qū)崿F(xiàn)標準的485總線驅(qū)動,其電路的參考設(shè)計如圖2所示。
圖2 總線驅(qū)動電路參考設(shè)計
電阻R1為HSC通道匹配電阻,由于通信載體是雙絞線,其特性阻抗一般約為120Ω,電阻R1可以有效減少線路上傳輸信號的反射,該電阻只存在于總線兩端的節(jié)點上;電阻R4和R5用于保護儀器內(nèi)部總線通道,當本節(jié)點的硬件出現(xiàn)故障不會使整個總線的通信受到影響,電阻R2和電阻R3保證總線在默認情況下保持一個確定的電平。驅(qū)動接口芯片SN65HVD11D的引腳1、2、3和4直接連接至FPGA的I/O引腳上,數(shù)據(jù)的收發(fā)均由FPGA來實現(xiàn)。
作為本文設(shè)計核心的A3P250VQG100T芯片,為現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物[4]。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。在耐溫方面能夠滿足工業(yè)級設(shè)計的要求[5]。本設(shè)計節(jié)點中除總線接口單元的485總線驅(qū)動芯片外,其他功能均在FPGA中實現(xiàn),結(jié)構(gòu)簡單,可靠耐用。硬件設(shè)計方案的實現(xiàn),是10M的高速總線通訊的基礎(chǔ)。
本文設(shè)計中,接口控制、邏輯模塊、通信算法均和編解碼模塊均在FPGA中軟件代碼實現(xiàn),其內(nèi)部實現(xiàn)方案如圖3所示。本設(shè)計中節(jié)點模塊與信號采集單元接口為McBSP全雙工高速串口,和一根BUSY信號線,用于信號采集單元數(shù)據(jù)發(fā)送的數(shù)據(jù)流控制,McBSP接口傳輸速率也設(shè)為10 Mbit/s。8b/10b編解碼技術(shù)的應(yīng)用主要為提升總線高速率傳輸可靠性,降低總線通信誤碼率。
圖3 FPGA內(nèi)部實現(xiàn)方案
FPGA工作主頻為100 MHz,由外部輸入時鐘經(jīng)過FPGA內(nèi)部的PLL產(chǎn)生。內(nèi)部主要包含總線與信號采集單元的數(shù)據(jù)發(fā)送和接收兩個功能,以及總線多主型工作模式的實現(xiàn)邏輯。
該功能通過總線驅(qū)動器控制模塊、幀檢測模塊、總線接收模塊、8B/10B解碼模塊、數(shù)據(jù)幀解析模塊和McBSP控制邏輯模塊來實現(xiàn)。各個模塊功能介紹和詳細數(shù)據(jù)流程描述如下:
(1)總線驅(qū)動器控制模塊,實現(xiàn)總線接口驅(qū)動芯片的控制邏輯功能;
(2)幀檢測模塊,接收并解析總線數(shù)據(jù)幀起始信息,實現(xiàn)檢測總線數(shù)據(jù)是否對該節(jié)點有效的判斷功能;
(3)總線接收模塊,接收并解析總線數(shù)據(jù)幀數(shù)據(jù)信息,將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)輸出;
(4)8b/10b解碼模塊,實現(xiàn)8b/10b解碼功能,10位并行數(shù)據(jù)轉(zhuǎn)為8位并行數(shù)據(jù)輸出;
(5)數(shù)據(jù)幀解析模塊,緩存整幀數(shù)據(jù),從數(shù)據(jù)幀中取出有效數(shù)據(jù)信息,經(jīng)過校驗后輸出;
(6)McBSP控制邏輯模塊,實現(xiàn)McBSP接口的數(shù)據(jù)流和邏輯控制;
總線驅(qū)動控制模塊檢測到差分信號跳變,并產(chǎn)生單端信號跳變傳遞給幀檢測模塊和總線接收模塊,幀檢測模塊解析數(shù)據(jù)并比對地址信息,如果地址不一致則返回檢測狀態(tài),如果地址一致,則告知總線接收模塊開始接收數(shù)據(jù),串行數(shù)據(jù)轉(zhuǎn)換為10位并行數(shù)據(jù),經(jīng)過8b/10b解碼模塊后轉(zhuǎn)換為8位并行數(shù)據(jù),在數(shù)據(jù)幀解析模塊中緩存整幀數(shù)據(jù),通過解析和校驗后,將有效數(shù)據(jù)通過McBSP控制邏輯模塊發(fā)送到信號采集單元的McBSP接口接收端[6]。
該功能通過McBSP控制邏輯模塊、數(shù)據(jù)幀組幀模塊、幀檢測模塊、總線空閑監(jiān)測模塊、數(shù)據(jù)控制模塊、8B/10B編碼模塊、總線發(fā)送模塊和總線驅(qū)動器控制模塊來實現(xiàn)。
(1)McBSP控制邏輯模塊,實現(xiàn)McBSP接口的數(shù)據(jù)流和邏輯控制,內(nèi)部采用FIFO作為兩個端口數(shù)據(jù)的緩沖;
(2)數(shù)據(jù)幀組幀模塊,緩存有效數(shù)據(jù),產(chǎn)生CRC校驗碼,按幀結(jié)構(gòu)要求組成數(shù)據(jù)幀;
(3)總線空閑監(jiān)測模塊,監(jiān)測總線狀態(tài)是否空閑,控制busy信號;
(4)數(shù)據(jù)控制模塊,控制發(fā)送數(shù)據(jù)流,添加數(shù)據(jù)幀中標識位信息;
(5)8b/10b編碼模塊,編碼是將一組連續(xù)的8位數(shù)據(jù)分解成兩組數(shù)據(jù),一組3位,一組5位,經(jīng)過編碼后分別成為一組4位的代碼和一組6位的代碼,從而組成一組10位的數(shù)據(jù)發(fā)送出去[7];
(6)總線發(fā)送模塊,將并行數(shù)據(jù)轉(zhuǎn)換為滿足總線電氣要求的串行數(shù)據(jù);
(7)總線驅(qū)動器控制模塊,實現(xiàn)總線接口驅(qū)動芯片的控制邏輯功能;
信號單元將采集的信號數(shù)據(jù)發(fā)送到McBSP接口,F(xiàn)PGA中McBSP接口模塊對串行數(shù)據(jù)進行解析緩存并發(fā)出通知,數(shù)據(jù)幀組幀模塊接收到通知后,通過8位并口從McBSP模塊依次取出固定長度數(shù)據(jù)后進行CRC校驗形成校驗碼,并按照幀結(jié)構(gòu)的要求組合成標準數(shù)據(jù)幀,組幀完成后通知數(shù)據(jù)控制模塊,該模塊讀取總線空閑監(jiān)測模塊的狀態(tài),如果busy,則暫不讀取數(shù)據(jù),同時,通過McBSP模塊通知信號采集單元暫停發(fā)送數(shù)據(jù),如果空閑,則依次讀取數(shù)據(jù),并將地址信息填充到數(shù)據(jù)幀標識位,然后8位并行輸出給8B/10B編碼模塊,編碼完成后10位并行輸出到總線發(fā)送模塊,轉(zhuǎn)換為串行數(shù)據(jù)單端信號輸出到總線驅(qū)動器控制模塊,最終產(chǎn)生差分信號通過接口芯片發(fā)送到總線上。
多主從工作模式總線,重點是在發(fā)送端需要競爭總線,取得發(fā)送數(shù)據(jù)的權(quán)利,在接收端需要迅速檢測數(shù)據(jù)是否為該節(jié)點有效數(shù)據(jù)。本文設(shè)計總線節(jié)點主要靠幀檢測模塊、總線空閑監(jiān)測模塊、本節(jié)點地址、目標節(jié)點地址,以及硬件設(shè)計的配合來實現(xiàn)。任意總線節(jié)點在發(fā)送數(shù)據(jù)之前,首先發(fā)送自身地址,通過自身地址的優(yōu)先級來競爭總線使用權(quán),然后發(fā)送目標地址,通知目標節(jié)點準備接收數(shù)據(jù)。
總線空閑監(jiān)測模塊,用于監(jiān)測總線狀態(tài),默認處于監(jiān)聽模式,使用100 MHz對總線的接收信號進行采樣。根據(jù)硬件設(shè)計特點,總線空閑的狀態(tài)下總線驅(qū)動控制模塊輸出的單端信號均為高電平,如果總線空閑狀態(tài)下監(jiān)測到高低邊沿,總線空閑檢測模塊將該邊沿作為數(shù)據(jù)起始使能信號,標識總線有數(shù)據(jù)傳輸,busy信號置位,告知節(jié)點總線被占用。接收到幀檢測模塊發(fā)出的數(shù)據(jù)幀結(jié)束信號,開啟計數(shù)器,如果連續(xù)監(jiān)測到一定時間的高電平,意味著該幀數(shù)據(jù)發(fā)送完成,節(jié)點busy信號歸零,各個節(jié)點可以從新開啟競爭總線。節(jié)點發(fā)送完整個一幀數(shù)據(jù)需延遲一段時間后繼續(xù)發(fā)送下一幀數(shù)據(jù),設(shè)定數(shù)據(jù)幀發(fā)送間隔,是為其他節(jié)點提供發(fā)送數(shù)據(jù)的機會,保證總線的公平使用。等待時間的長短,由總線是否需要接收節(jié)點反饋,以及反饋信息的長短等總線協(xié)議要求而定,可以根據(jù)總線應(yīng)用層的實際需要在FPGA內(nèi)調(diào)整。
幀檢測模塊,用于判斷總線數(shù)據(jù)是否為該節(jié)點有效數(shù)據(jù),以及該節(jié)點是否競爭到了總線使用權(quán)。幀檢測模塊中被寫入8b/10b編碼后的節(jié)點地址信息,收到總線數(shù)據(jù)后,與幀標識位中目標地址段進行比對,如果一致,則總線數(shù)據(jù)為該節(jié)點有效數(shù)據(jù),開始接收總線數(shù)據(jù),如果不一致,則返回檢測狀態(tài),從而實現(xiàn)節(jié)點接收有效數(shù)據(jù)功能;節(jié)點發(fā)送數(shù)據(jù)幀的時候,根據(jù)硬件設(shè)計特點,該節(jié)點同時也可以收到數(shù)據(jù)幀,此時幀檢測模塊比對幀標識位中最前段的本地地址信息,如果與自身地址信息一致,則該節(jié)點成功競爭到總線,并強行控制busy信號清零,可以繼續(xù)發(fā)送數(shù)據(jù),反之,則意味著總線被其他節(jié)點競爭到,數(shù)據(jù)發(fā)送控制權(quán)交還給總線空閑監(jiān)控模塊的busy信號,從而實現(xiàn)總線競爭功能。
為了保障總線安全,專門設(shè)計了幀檢測錯誤計數(shù)模塊,記錄幀檢測模塊檢測數(shù)據(jù)幀結(jié)束信息段連續(xù)錯誤的次數(shù),如果連續(xù)多次發(fā)現(xiàn)檢測到數(shù)據(jù)幀,但是沒有正確檢測到幀結(jié)束信息段,認為該節(jié)點異常,將該節(jié)點所有功能關(guān)閉,脫離總線。正常情況下幀檢測模塊正確接收到結(jié)束段,并通知總線空閑監(jiān)控模塊開始計數(shù),用于判斷總線空閑。
軟件設(shè)計方案的實現(xiàn),是本設(shè)計節(jié)點完成多主從模式總線通訊的基礎(chǔ)。
本文設(shè)計節(jié)點主要具備兩個特點,10 Mbit/s的高速總線通信速率和多主從工作模式。
為了驗證10 Mbit/s高速總線通訊速率和可靠性,以及驗證多主從工作模式,設(shè)計制作了3個節(jié)點電路板,三塊電路均連接在總線上,每個節(jié)點分配了不同地址,為方便測試,信號單元接口端均設(shè)計為標準串口,每個節(jié)點連接一個上位機,在上位機中輸入目標節(jié)點地址和255個字長的數(shù)據(jù),即可將數(shù)據(jù)發(fā)送到目標節(jié)點,且在目標節(jié)點上位機中顯示,發(fā)送數(shù)據(jù)位固定數(shù)據(jù),目標節(jié)點中對此數(shù)據(jù)進行檢驗,從而驗證數(shù)據(jù)準確性,同時,用示波器檢測總線信號頻率,確定數(shù)據(jù)傳輸速率,見圖4。實驗證明,按照上述測試方式,驗證了數(shù)據(jù)傳輸速率為10 Mbit/s,數(shù)據(jù)準確可靠,且每個節(jié)點均可以發(fā)送數(shù)據(jù)到任意其他節(jié)點。
圖4 主從工作模式測試
測試節(jié)點競爭機制,由于串口速率過慢,只采用2個節(jié)點競爭的方式,防止節(jié)點個數(shù)過多,所有節(jié)點數(shù)據(jù)阻塞在接收節(jié)點對上位機的串口模塊中。實驗中將兩個節(jié)點的串口連接到同一個上位機上,當上位機發(fā)送數(shù)的時候,使得兩個節(jié)點同時向第三個節(jié)點發(fā)送數(shù)據(jù),見圖5。此時,發(fā)現(xiàn)第三個節(jié)點的上位機首先接收到地址設(shè)置優(yōu)先級高的節(jié)點的數(shù)據(jù),緊接著接收到另外一個節(jié)點數(shù)據(jù),證明節(jié)點競爭機制正常運作。
圖5 競爭模式測試
多主從工作模式的特點在于多個節(jié)點可以自主發(fā)送數(shù)據(jù)給總線上任意一個節(jié)點,這種工作模式可以實現(xiàn)儀器內(nèi)部各個節(jié)點之間按照預(yù)先設(shè)計的流程協(xié)同合作,讓各個信號采集單元的采集工作更加靈活,相互之間的配合更加自由,并且可以通過主控節(jié)點的調(diào)度,隨時改變工作模式。本文設(shè)計節(jié)點應(yīng)用于儀器內(nèi)部總線,協(xié)助實現(xiàn)總線多從工作模式,且能夠達到10 Mbit/s的傳輸速率,完全滿足成像類儀器內(nèi)部信號采集單元之間總線通訊和協(xié)同工作的要求。該節(jié)點電路已經(jīng)在多種成像類儀器中使用,效果良好。