王 健
(上海地鐵電子科技有限公司 上海 200237)
MVB(多功能車輛總線)作為列車通信網絡(TCN)的一部分,負責一個車廂內設備或者一個固定的車輛組內設備的數據通信。具有實時性強、可靠性高、傳輸數據快和傳輸距離遠等優點,目前在高鐵和地鐵中的應用非常廣泛[1]。
為了實現對多功能列車總線的狀態監測、故障診斷和一致性測試,以及在車載設備的研發和調試過程中,模擬多功能列車總線的數據傳輸過程,設計了一套系統,主要實現了以下功能:(1)MVB仿真發送功能;(2)總線波形實時采集功能;(3)數據分析功能;(4)Linux系統下Python控制程序設計。
在MVB數據通信中,具有以下特征:通信傳送方式采用主從幀應答,幀發送方式采用周期性廣播,幀標識符具有幀頭和幀尾標識以識別幀的開始和結束,幀編碼采用曼徹斯特編碼,數據傳輸速率為1.5Mbit/s。為了仿真MVB總線通信,需要仿真主站發送主幀數據,仿真從站發送從幀數據,仿真接收主幀數據和從幀數據。通過對MVB通信總線波形的實時采集,并進行邏輯分析,分析網絡中的幀數據、幀響應時間、撞幀、丟幀、位錯誤及網絡干擾等,從而可以實現對網絡通信質量的判斷和網絡設備的一致性測試[2]。在該設計中,利用通用邏輯芯片FPGA實現MVB仿真和波形采集功能;在嵌入式Linux系統下,利用Python編程實現整體控制和數據分析;FPGA和嵌入式系統通過USB實現數據交互,系統結構如圖1所示。

圖1 系統結構
設計中,仿真功能和采集功能采用Altera公司的FPGA芯片實現;USB模塊采用CY7C68013A控制芯片,實現USB2.0/3.0轉并行總線的功能;嵌入式Linux系統采用beagleboard-black控制板,該控制板為ARM CortexTM-A8內核,利用其擴展的USB接口,對MVB仿真與采集板進行數據交互和控制;嵌入式Linux系統對外的USB和Internet接口,可實現數據的遠程傳輸及上位機軟件的控制。
仿真功能依托FPGA芯片,實現的邏輯功能包括:幀數據的發送、端口地址的設置、所發送的主幀數據和從幀數據設置、總線數據接收與端口地址比較和發送狀態的反饋。仿真功能結構如圖2所示。

圖2 仿真功能結構
其中,接收模塊和發送模塊采用VerilogHDL語言設計。仿真發送的主幀和從幀數據以及狀態反饋數據,均存儲在各自的FIFO存儲器內(FPGA內部)。所設置的端口地址,存儲在RAM存儲器內(FPGA內部)。
仿真功能工作方法如下:(1)接收模塊實時檢測MVB總線信號,當檢測到數據幀起始信號時,向發送模塊反饋總線忙,檢測到數據幀結束信號后,向發送模塊反饋總線空閑;(2)接收模塊接收到MVB總線主幀數據時,將接收到的數據與所設置的端口地址進行比較,比較相同時,觸發發送模塊發送從幀數據;(3)在總線空閑時,發送模塊不斷檢測主幀數據FIFO,當有要發送的主幀數據存在時,發送模塊發送主幀數據,發送結束后,向狀態反饋FIFO寫入主幀發送成功的狀態;(4)在發送模塊接收到觸發發送從幀信號時,讀取從幀數據FIFO,若存在從幀數據,發送模塊發送該從幀數據,發送結束后,向狀態反饋FIFO寫入從幀發送成功的狀態。
接收模塊需要檢測MVB總線上的幀起始位、幀結束位和主幀數據,MVB總線數據格式為:起始位+幀頭序列+幀數據(包括校驗)+結束位,總線傳輸速率為1.5 Mbit/s,每一位的數據寬度為667 ns,采用曼徹斯特編碼方式[3]。
該設計中,MVB網絡信號的邏輯采樣頻率設置為24 MHz,即一位MVB數據寬度為16個周期。將邏輯信號電平及其寬度所占周期數,作為8位分析數據元,數據的最高位為邏輯信號的電平,低7位表示為信號寬度的周期數,將編碼信號轉換為分析數據元。采用有限狀態機方式實現接收模塊的功能,其狀態轉移如圖3所示。

圖3 接收模塊狀態轉移
S0:接收數據幀起始位,接收到有效的幀起始位后,狀態轉移至S1,同時總線忙信號有效。接收到有效的幀結束位后,總線空閑信號有效。
S1:接收主幀幀頭序列,接收到有效的主幀幀頭后,狀態轉移至S2,否則,狀態轉移至S0。
S2:接收主幀數據,成功接收主幀數據后,狀態轉移至S3,若出現數據位錯誤或數據校驗錯誤,狀態轉移至S0。
S3:接收幀結束位,接收到有效的幀結束位,狀態轉移至S4,同時總線空閑信號有效,否則,狀態轉移至S4。
S4:比較接收到的主幀數據與設置的端口地址數據,相同則觸發發送從幀數據信號,狀態轉回S0。
發送功能實現的方式如下:將8位數據,從最高位到最低位移位輸出,移位頻率為3 MHz。對待發送的幀數據(字節為單位),進行編碼轉換[4]。采用有限狀態機方式實現發送模塊的功能,其狀態轉移如圖4所示。

圖4 發送模塊狀態轉移
S0:發送模塊在MVB總線空閑時,檢測主幀FIFO,檢測到有效的主幀數據后,狀態轉入S1;在發送從幀信號有效的狀態下,檢測從幀FIFO,檢測到有效的從幀數據后,狀態轉入S3。
S1:讀取主幀FIFO數據并發送,結束后,轉入狀態S2。
S2:向狀態反饋FIFO寫入主幀發送成功的狀態,狀態轉回S0。
S3:讀取從幀FIFO數據并發送,結束后,轉入狀態S4。
S4:向狀態反饋FIFO寫入從幀發送成功的狀態,狀態轉回S0。
采集功能由FPGA芯片實現,對MVB網絡通信波形進行數據采集,采樣頻率為24 MHz,采樣的數據以字節為單位,數據的最高位為邏輯信號的電平,低7位表示為信號寬度的周期數,采集功能結構如圖5所示。

圖5 采集功能結構
采集功能工作方法如下:(1)系統工作頻率為48 MHz,采樣頻率是24 MHz。在每個采樣周期,對MVB網絡波形進行邏輯采樣;(2)當邏輯電平變化時,記錄前一電平狀態及所持續的周期數,形成一個字節的采樣數據。同時清零計數,開始新的計數周期;(3)當電平周期數達到0x7F時,記錄電平狀態及周期數,形成一個字節的采樣數據。同時清零計數,開始新的計數周期;(4)網絡采樣數據按照先入先出的原則,存入數據存儲FIFO。
系統控制是在嵌入式Linux系統中,利用Python語言編程實現。系統控制主要完成的功能如下:仿真設置設備端口地址、仿真設置發送主幀數據、仿真設置發送從幀數據、仿真幀數據發送次數設置、采集網絡數據分析、采集網絡幀數據提取、采集網絡質量分析和系統工作狀態監測[5]。
系統程序通過將仿真設備端口地址數據寫入端口地址RAM,實現設置端口地址功能;通過將仿真發送主幀數據寫入主幀數據FIFO,實現發送主幀功能;通過將仿真發送從幀數據寫入從幀數據FIFO,實現發送從幀功能;通過讀取狀態FIFO數據,實現仿真幀數據發送次數控制[6]。
系統程序通過讀取采集數據存儲FIFO內的波形數據,可分析網絡幀數據、幀響應時間、撞幀、雜波、丟幀、數據位錯誤和幀校驗錯誤等,從而可實現對網絡質量的判斷。數據分析采用有限狀態機方式實現。
采集功能采用Altera公司的FPGA芯片實現,為了驗證該功能,利用QuartusII的仿真軟件,模擬發送主幀數據,觸發發送從幀數據,仿真結果如圖6所示。該結果圖為采集功能所采集到的幀數據波形,第一幀數據為發送的主幀數據;第二幀數據為接收到主幀數據后,觸發發送的從幀數據。

圖6 發送主從幀數據仿真波形
實際調試試驗利用開發的上位機軟件,設置發送主幀數據設備端口號和從幀數據,仿真發送主幀數據,設備端口號與接收到的主幀數據中端口號相同時,觸發發送從幀數據。
利用仿真功能,對上海地鐵4號線VCU控制器進行了離線測試,模擬發送主幀數據功能,對所有地址進行掃描,成功掃描到VCU系統設備地址,并可讀取其設備狀態。
仿真設備通過MVB通信線與VCU設備連接,上位機軟件控制發送主幀數據,同時,記錄通信總線數據。對所有端口地址掃描后,分析系統記錄的總線數據,可得到VCU設備地址及其反饋的狀態數據。
MVB網絡在高鐵和地鐵車輛控制領域應用得非常廣泛,本文所設計的仿真與檢測系統,為MVB網絡調試、網絡設備檢測和維修、網絡設備一致性測試和網絡質量的判斷,提供了一種智能的方法。同時,為網絡協議分析和設備開發提供了手段,也為MVB網絡應用的推廣提供了參考。