周建瓊,李謙
(中海油田服務(wù)股份有限公司油田技術(shù)研究院,北京 101149)
隨著測井行業(yè)的不斷發(fā)展,成像類儀器信號采集數(shù)據(jù)量大,且信號節(jié)點數(shù)量多,節(jié)點之間數(shù)據(jù)交互和協(xié)同工作頻繁且復(fù)雜,對儀器內(nèi)部總線提出了更高的要求。根據(jù)485 總線電氣標(biāo)準(zhǔn)特點,能夠?qū)崿F(xiàn)40 m 范圍內(nèi)10 Mbps 的數(shù)據(jù)傳輸速率,然而485 總線均為單主從結(jié)構(gòu)[1],不能滿足成像儀器內(nèi)部各個節(jié)點實時發(fā)送采集數(shù)據(jù)以及節(jié)點之間快速協(xié)同工作和連貫反應(yīng)的要求[2]。該文通過對485 接口硬件的優(yōu)化,總線數(shù)據(jù)收發(fā)邏輯的改進(jìn)以及定義全新的總線數(shù)據(jù)幀格式,設(shè)計一種多主從模式的高速儀器內(nèi)部總線,滿足成像類儀器內(nèi)部總線的特殊需求[3-4]。
多主從模式的高速儀器內(nèi)部總線,要滿足儀器設(shè)計中各個節(jié)點協(xié)同工作且快速反應(yīng)的要求,需要允許每個節(jié)點都可以主動發(fā)送數(shù)據(jù),且各個節(jié)點發(fā)送時機(jī)不受限制,則必須通過總線進(jìn)行協(xié)調(diào)[5],以保證數(shù)據(jù)不錯亂。該文引入地址信息、總線偵聽和總線仲裁的設(shè)計思路[6-7],每個節(jié)點都定義唯一的地址信息,多個節(jié)點發(fā)送時,通過發(fā)送地址信息自動進(jìn)行仲裁,這樣就可以實現(xiàn)總線數(shù)據(jù)不錯亂,而且一個節(jié)點發(fā)完,別的節(jié)點可以偵聽到總線空閑,省去了主機(jī)的詢問,提高了總線利用率,增強(qiáng)了總線節(jié)點響應(yīng)的快速性和連貫性[8]。多主從模式總線設(shè)計主要包含四部分內(nèi)容:接口硬件、總線數(shù)據(jù)幀格式、總線數(shù)據(jù)收發(fā)邏輯和地址信息分配。
該文設(shè)計的總線以雙絞線為介質(zhì),遵從ANSI TIA/EIA-485-A 和ISO-8482:1993 標(biāo)準(zhǔn),實現(xiàn)標(biāo)準(zhǔn)的485 總線電氣特性,數(shù)據(jù)發(fā)送邏輯方面完全參照數(shù)據(jù)幀格式以bit 為單位連續(xù)發(fā)送[9]。接口硬件主要包含485 接口驅(qū)動芯片和接口邏輯控制芯片,在器件選型上著重考慮芯片的功耗和耐溫等性能指標(biāo),選擇TI 的SN65HVD11D 芯片。總線接口采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強(qiáng),抗噪聲干擾性好[10-11],接口控制邏輯芯片采用FPGA來實現(xiàn),選擇ACTEL 公司的A3P250VQG100 芯片作為接口邏輯控制芯片。其電路的參考設(shè)計如圖1所示。
圖1 總線驅(qū)動電路參考設(shè)計
電阻R1為通道匹配120 Ω電阻,該電阻只存在于總線兩端的節(jié)點上;電阻R4和R5用于保護(hù)儀器內(nèi)部總線通道,當(dāng)該節(jié)點的硬件出現(xiàn)故障時不會使整個總線的通信受到影響,電阻R2和電阻R3保證總線在默認(rèn)情況下保持一個確定的電平。
數(shù)據(jù)通信中,在10 Mbps 的傳輸速率下,數(shù)據(jù)傳輸邏輯按照幀結(jié)構(gòu)以bit 為單位連續(xù)發(fā)送,為了保證數(shù)據(jù)傳輸?shù)目煽啃?,降低?shù)據(jù)出錯率,在總線控制邏輯中加入了8b/10b 編解碼功能[12-13]??偩€上的數(shù)據(jù)傳輸均以幀為單位,所有的類型的數(shù)據(jù)均需要嚴(yán)格按照幀結(jié)構(gòu)組幀[14]。該文設(shè)計的數(shù)據(jù)幀格式,可以協(xié)助完成總線仲裁和競爭,其具體組成結(jié)構(gòu)如圖2所示。
圖2 數(shù)據(jù)幀結(jié)構(gòu)
總線數(shù)據(jù)幀長度不固定,但是為了確保單個節(jié)點不長時間占據(jù)總線,一幀最大可傳輸?shù)臄?shù)據(jù)長度最多為255 Bytes 數(shù)據(jù),可傳輸?shù)臄?shù)據(jù)長度不足255 Bytes 數(shù)據(jù)時,只需要傳輸有效數(shù)據(jù),每一幀的有效數(shù)據(jù)長度由該幀的數(shù)據(jù)長度字段指示。幀格式包含兩層,數(shù)據(jù)層和編碼層。數(shù)據(jù)層主要包含幀目標(biāo)段、幀標(biāo)識段、幀長度段、幀數(shù)據(jù)段和幀校驗段,編碼層對數(shù)據(jù)層以8 bit 為單位進(jìn)行8b/10b 編碼,然后添加幀頭、幀地址段和幀尾組成完整的數(shù)據(jù)幀格式。幀格式中各個字段的功能如下:
1)幀頭——低電平信號,默認(rèn)高電平,高低跳變沿標(biāo)識數(shù)據(jù)幀開始;
2)幀地址段——儀器信號采集節(jié)點自身地址信息,作為總線競爭優(yōu)先級判斷條件,借助地址段實現(xiàn)總線仲裁的功能;
3)幀目標(biāo)段——總線數(shù)據(jù)發(fā)送目標(biāo)節(jié)點地址信息,作為節(jié)點是否接收數(shù)據(jù)判斷條件;
4)幀標(biāo)識段——幀內(nèi)數(shù)據(jù)類型和數(shù)據(jù)幀狀態(tài)信息,包含單包、多包數(shù)據(jù)標(biāo)識,首包、中間包、末包數(shù)據(jù)標(biāo)識,重傳幀標(biāo)識,重傳次數(shù)統(tǒng)計標(biāo)識等;
5)幀長度段——幀內(nèi)數(shù)據(jù)層有效數(shù)據(jù)長度,以字節(jié)為單位;
6)幀數(shù)據(jù)段——信號采集單元的數(shù)據(jù)體;
7)幀校驗段——幀數(shù)據(jù)層有效數(shù)據(jù)體的CRC 校驗,輔助判斷數(shù)據(jù)是否正常接收;
8)幀尾——采用8b/10b 編碼中的K28.1 字符即“1001111100”,該字符在編碼規(guī)則中具有唯一性,可有效避免假幀結(jié)束[15-16]。
總線一次完整的數(shù)據(jù)幀傳輸格式圖3 所示。
圖3 總線一次完整的數(shù)據(jù)幀傳輸格式
在發(fā)送節(jié)點發(fā)完當(dāng)前幀的數(shù)據(jù)后,必須收到接收節(jié)點一個確認(rèn)信號后,才確定該幀數(shù)據(jù)已經(jīng)發(fā)送正確,接收節(jié)點每接收到一幀數(shù)據(jù)后產(chǎn)生一個確認(rèn)信號。確認(rèn)信號需要迅速響應(yīng),該文設(shè)計總線確認(rèn)信號產(chǎn)生時間在接收完當(dāng)前幀的幀尾后10 個bit 傳輸時間內(nèi)產(chǎn)生,確認(rèn)信號同樣為K28.1 字符。
對于發(fā)送節(jié)點,每當(dāng)發(fā)送端發(fā)送完一幀數(shù)據(jù)據(jù)后立即關(guān)閉發(fā)送端,釋放總線,在接下來的20 個bit傳輸時間內(nèi),當(dāng)成功接收到K28.1 字符表示該幀數(shù)據(jù)已經(jīng)成功發(fā)送,未接收到則表示發(fā)送失敗,該幀數(shù)據(jù)需要重發(fā)。接收到確認(rèn)信號幀之后,完整的一簇數(shù)據(jù)幀傳輸格式才結(jié)束。
每個節(jié)點接收到確認(rèn)信號后要至少延遲20 個bit 傳輸時間再發(fā)送下一幀數(shù)據(jù)??偩€空閑的判斷條件也是連續(xù)20 個bit 傳輸時間的高電平信號。從而保證各個節(jié)點公平的占用總線,且能夠按照預(yù)先設(shè)定的優(yōu)先級進(jìn)行連貫工作。
總線數(shù)據(jù)收發(fā)邏輯在接口硬件邏輯芯片F(xiàn)PGA中實現(xiàn),通過總線收發(fā)邏輯的設(shè)計和總線節(jié)點地址信息的固化,完成總線偵聽和總線仲裁功能,實現(xiàn)多主從模式??偩€數(shù)接收流程起始于監(jiān)測到總線幀頭,即高低跳變沿。開始接收10 位幀地址段和10 位幀目標(biāo)段。接收節(jié)點可以與幀目標(biāo)段直接對比,判斷是否為發(fā)往該節(jié)點數(shù)據(jù),如果不一致,則重新返回到空閑監(jiān)測;如果一致,則接收所有數(shù)據(jù),將接收到的幀進(jìn)行8b/10b 解碼,CRC 校驗通過后發(fā)送確認(rèn)幀,并存儲處理數(shù)據(jù),CRC 校驗失敗則返回到空閑監(jiān)測;空閑檢測環(huán)節(jié)需要監(jiān)測到總線空閑才返回數(shù)據(jù)接收起始位置,數(shù)據(jù)接收邏輯流程如圖4 所示。
總線數(shù)據(jù)發(fā)送起始于信號采集單元,受控于總線狀態(tài),數(shù)據(jù)發(fā)送邏輯流程如圖5 所示。
多主從總線不可避免存在節(jié)點競爭現(xiàn)象,硬件接口和邏輯設(shè)計中增加了FIFO 緩存區(qū)域,作為總線發(fā)送的緩沖,可以保證節(jié)點數(shù)據(jù)的連續(xù)性。發(fā)送時首先判斷FIFO 緩存是否滿,如果緩存已滿,則等待,如果未滿,則取出數(shù)據(jù)完成組幀,交給數(shù)據(jù)控制邏輯。數(shù)據(jù)控制邏輯負(fù)責(zé)數(shù)據(jù)流控制,根據(jù)該節(jié)點數(shù)據(jù)發(fā)送狀態(tài)和總線空閑狀態(tài),判斷是否發(fā)送數(shù)據(jù),如果總線空閑,則開始幀目標(biāo)段8b/10b 編碼,發(fā)送幀頭和固化于接口硬件的10 位幀地址段開始競爭總線。根據(jù)總線特點,所有節(jié)點均可以接收到總線數(shù)據(jù),該節(jié)點也可以接收到幀地址段,與該節(jié)點固化地址段對比,如果一致,則競爭總線成功,如果不一致,則總線被其他節(jié)點競爭到。總線競爭成功后開始發(fā)送數(shù)據(jù)幀,然后等待返回確認(rèn),如果返回確認(rèn)幀,則延時后準(zhǔn)備下一幀數(shù)據(jù)發(fā)送;如果沒有收到確認(rèn)幀,則重復(fù)發(fā)送本幀數(shù)據(jù),連續(xù)發(fā)送3 次不成功,則放棄此幀數(shù)據(jù)。如果總線競爭失敗,繼續(xù)監(jiān)測總線,當(dāng)總線空閑時再次競爭總線使用權(quán)。
圖4 總線數(shù)據(jù)接收邏輯圖
總線節(jié)點地址信息將8 位地址以8b/10b 編碼后規(guī)則進(jìn)行地址填充,固化到接口硬件FPGA 中,每個地址均具有唯一性,其在接收邏輯中作為節(jié)點是否接收總線數(shù)據(jù)的判斷依據(jù),在發(fā)送邏輯中作為總線競爭的工具。通過硬件接口設(shè)計電平特性,可以實現(xiàn)10 位地址信息數(shù)值越小優(yōu)先級越高。
為了驗證總線多主從工作模式,設(shè)計制作了5 塊接口電路板,5 個電路均連接在總線上,每個節(jié)點分配了不同地址,為方便測試每塊電路板通過串口連接一個上位機(jī),同時上位機(jī)4 連接2 個接口電路,用于測試總線數(shù)據(jù)發(fā)送邏輯的競爭機(jī)制,如圖6 所示。測試過程中,在上位機(jī)中輸入目標(biāo)節(jié)點地址和任意字長的數(shù)據(jù),即可將數(shù)據(jù)發(fā)送到目標(biāo)節(jié)點,且在目標(biāo)上位機(jī)中顯示。實驗證明,該設(shè)計總線可以實現(xiàn)每個節(jié)點都作為主節(jié)點發(fā)起數(shù)據(jù)傳輸,且按照地址設(shè)置優(yōu)先級競爭發(fā)送數(shù)據(jù)的多主從模式,數(shù)據(jù)傳輸效率高,總線節(jié)點響應(yīng)快速、連貫。
圖6 測試示意圖
該文設(shè)計的多主從工作模式其特點在于多個節(jié)點可以自主發(fā)送數(shù)據(jù)給任意一個節(jié)點,這種總線可以實現(xiàn)儀器內(nèi)部各個節(jié)點之間按照預(yù)先設(shè)計的流程協(xié)同合作,讓各個信號采集單元的采集工作更加靈活,相互之間的配合更加自由,并且可以通過主控節(jié)點的調(diào)度隨時改變工作模式,且能夠達(dá)到10 Mbps 的傳輸速率,完全滿足成像類儀器內(nèi)部信號采集單元之間總線通信和協(xié)同工作的要求。