周建瓊,李謙
(中海油田服務股份有限公司油田技術研究院,北京 101149)
隨著測井行業的不斷發展,成像類儀器信號采集數據量大,且信號節點數量多,節點之間數據交互和協同工作頻繁且復雜,對儀器內部總線提出了更高的要求。根據485 總線電氣標準特點,能夠實現40 m 范圍內10 Mbps 的數據傳輸速率,然而485 總線均為單主從結構[1],不能滿足成像儀器內部各個節點實時發送采集數據以及節點之間快速協同工作和連貫反應的要求[2]。該文通過對485 接口硬件的優化,總線數據收發邏輯的改進以及定義全新的總線數據幀格式,設計一種多主從模式的高速儀器內部總線,滿足成像類儀器內部總線的特殊需求[3-4]。
多主從模式的高速儀器內部總線,要滿足儀器設計中各個節點協同工作且快速反應的要求,需要允許每個節點都可以主動發送數據,且各個節點發送時機不受限制,則必須通過總線進行協調[5],以保證數據不錯亂。該文引入地址信息、總線偵聽和總線仲裁的設計思路[6-7],每個節點都定義唯一的地址信息,多個節點發送時,通過發送地址信息自動進行仲裁,這樣就可以實現總線數據不錯亂,而且一個節點發完,別的節點可以偵聽到總線空閑,省去了主機的詢問,提高了總線利用率,增強了總線節點響應的快速性和連貫性[8]。多主從模式總線設計主要包含四部分內容:接口硬件、總線數據幀格式、總線數據收發邏輯和地址信息分配。
該文設計的總線以雙絞線為介質,遵從ANSI TIA/EIA-485-A 和ISO-8482:1993 標準,實現標準的485 總線電氣特性,數據發送邏輯方面完全參照數據幀格式以bit 為單位連續發送[9]。接口硬件主要包含485 接口驅動芯片和接口邏輯控制芯片,在器件選型上著重考慮芯片的功耗和耐溫等性能指標,選擇TI 的SN65HVD11D 芯片。總線接口采用平衡驅動器和差分接收器的組合,抗共模干能力增強,抗噪聲干擾性好[10-11],接口控制邏輯芯片采用FPGA來實現,選擇ACTEL 公司的A3P250VQG100 芯片作為接口邏輯控制芯片。其電路的參考設計如圖1所示。

圖1 總線驅動電路參考設計
電阻R1為通道匹配120 Ω電阻,該電阻只存在于總線兩端的節點上;電阻R4和R5用于保護儀器內部總線通道,當該節點的硬件出現故障時不會使整個總線的通信受到影響,電阻R2和電阻R3保證總線在默認情況下保持一個確定的電平。
數據通信中,在10 Mbps 的傳輸速率下,數據傳輸邏輯按照幀結構以bit 為單位連續發送,為了保證數據傳輸的可靠性,降低數據出錯率,在總線控制邏輯中加入了8b/10b 編解碼功能[12-13]。總線上的數據傳輸均以幀為單位,所有的類型的數據均需要嚴格按照幀結構組幀[14]。該文設計的數據幀格式,可以協助完成總線仲裁和競爭,其具體組成結構如圖2所示。

圖2 數據幀結構
總線數據幀長度不固定,但是為了確保單個節點不長時間占據總線,一幀最大可傳輸的數據長度最多為255 Bytes 數據,可傳輸的數據長度不足255 Bytes 數據時,只需要傳輸有效數據,每一幀的有效數據長度由該幀的數據長度字段指示。幀格式包含兩層,數據層和編碼層。數據層主要包含幀目標段、幀標識段、幀長度段、幀數據段和幀校驗段,編碼層對數據層以8 bit 為單位進行8b/10b 編碼,然后添加幀頭、幀地址段和幀尾組成完整的數據幀格式。幀格式中各個字段的功能如下:
1)幀頭——低電平信號,默認高電平,高低跳變沿標識數據幀開始;
2)幀地址段——儀器信號采集節點自身地址信息,作為總線競爭優先級判斷條件,借助地址段實現總線仲裁的功能;
3)幀目標段——總線數據發送目標節點地址信息,作為節點是否接收數據判斷條件;
4)幀標識段——幀內數據類型和數據幀狀態信息,包含單包、多包數據標識,首包、中間包、末包數據標識,重傳幀標識,重傳次數統計標識等;
5)幀長度段——幀內數據層有效數據長度,以字節為單位;
6)幀數據段——信號采集單元的數據體;
7)幀校驗段——幀數據層有效數據體的CRC 校驗,輔助判斷數據是否正常接收;
8)幀尾——采用8b/10b 編碼中的K28.1 字符即“1001111100”,該字符在編碼規則中具有唯一性,可有效避免假幀結束[15-16]。
總線一次完整的數據幀傳輸格式圖3 所示。

圖3 總線一次完整的數據幀傳輸格式
在發送節點發完當前幀的數據后,必須收到接收節點一個確認信號后,才確定該幀數據已經發送正確,接收節點每接收到一幀數據后產生一個確認信號。確認信號需要迅速響應,該文設計總線確認信號產生時間在接收完當前幀的幀尾后10 個bit 傳輸時間內產生,確認信號同樣為K28.1 字符。
對于發送節點,每當發送端發送完一幀數據據后立即關閉發送端,釋放總線,在接下來的20 個bit傳輸時間內,當成功接收到K28.1 字符表示該幀數據已經成功發送,未接收到則表示發送失敗,該幀數據需要重發。接收到確認信號幀之后,完整的一簇數據幀傳輸格式才結束。
每個節點接收到確認信號后要至少延遲20 個bit 傳輸時間再發送下一幀數據。總線空閑的判斷條件也是連續20 個bit 傳輸時間的高電平信號。從而保證各個節點公平的占用總線,且能夠按照預先設定的優先級進行連貫工作。
總線數據收發邏輯在接口硬件邏輯芯片FPGA中實現,通過總線收發邏輯的設計和總線節點地址信息的固化,完成總線偵聽和總線仲裁功能,實現多主從模式。總線數接收流程起始于監測到總線幀頭,即高低跳變沿。開始接收10 位幀地址段和10 位幀目標段。接收節點可以與幀目標段直接對比,判斷是否為發往該節點數據,如果不一致,則重新返回到空閑監測;如果一致,則接收所有數據,將接收到的幀進行8b/10b 解碼,CRC 校驗通過后發送確認幀,并存儲處理數據,CRC 校驗失敗則返回到空閑監測;空閑檢測環節需要監測到總線空閑才返回數據接收起始位置,數據接收邏輯流程如圖4 所示。
總線數據發送起始于信號采集單元,受控于總線狀態,數據發送邏輯流程如圖5 所示。
多主從總線不可避免存在節點競爭現象,硬件接口和邏輯設計中增加了FIFO 緩存區域,作為總線發送的緩沖,可以保證節點數據的連續性。發送時首先判斷FIFO 緩存是否滿,如果緩存已滿,則等待,如果未滿,則取出數據完成組幀,交給數據控制邏輯。數據控制邏輯負責數據流控制,根據該節點數據發送狀態和總線空閑狀態,判斷是否發送數據,如果總線空閑,則開始幀目標段8b/10b 編碼,發送幀頭和固化于接口硬件的10 位幀地址段開始競爭總線。根據總線特點,所有節點均可以接收到總線數據,該節點也可以接收到幀地址段,與該節點固化地址段對比,如果一致,則競爭總線成功,如果不一致,則總線被其他節點競爭到。總線競爭成功后開始發送數據幀,然后等待返回確認,如果返回確認幀,則延時后準備下一幀數據發送;如果沒有收到確認幀,則重復發送本幀數據,連續發送3 次不成功,則放棄此幀數據。如果總線競爭失敗,繼續監測總線,當總線空閑時再次競爭總線使用權。

圖4 總線數據接收邏輯圖
總線節點地址信息將8 位地址以8b/10b 編碼后規則進行地址填充,固化到接口硬件FPGA 中,每個地址均具有唯一性,其在接收邏輯中作為節點是否接收總線數據的判斷依據,在發送邏輯中作為總線競爭的工具。通過硬件接口設計電平特性,可以實現10 位地址信息數值越小優先級越高。
為了驗證總線多主從工作模式,設計制作了5 塊接口電路板,5 個電路均連接在總線上,每個節點分配了不同地址,為方便測試每塊電路板通過串口連接一個上位機,同時上位機4 連接2 個接口電路,用于測試總線數據發送邏輯的競爭機制,如圖6 所示。測試過程中,在上位機中輸入目標節點地址和任意字長的數據,即可將數據發送到目標節點,且在目標上位機中顯示。實驗證明,該設計總線可以實現每個節點都作為主節點發起數據傳輸,且按照地址設置優先級競爭發送數據的多主從模式,數據傳輸效率高,總線節點響應快速、連貫。

圖6 測試示意圖
該文設計的多主從工作模式其特點在于多個節點可以自主發送數據給任意一個節點,這種總線可以實現儀器內部各個節點之間按照預先設計的流程協同合作,讓各個信號采集單元的采集工作更加靈活,相互之間的配合更加自由,并且可以通過主控節點的調度隨時改變工作模式,且能夠達到10 Mbps 的傳輸速率,完全滿足成像類儀器內部信號采集單元之間總線通信和協同工作的要求。