王 雪,申 萍,宋 娟,嚴 翔
(北京交通大學 電氣工程學院,北京100044)
隨著我國高速鐵路的不斷發展,列車控制系統的高安全性和高可靠性已成為軌道交通領域中尤為關鍵的指標。V ME(Versa Module Eur ocar d)總線為一種通用的計算機總線,定義了一個在緊密耦合硬件構架中可進行互聯數據處理、數據存儲和連接外圍控制器件的結構,1987年被批準為國際標準IEEE 1014。其機械結構具有良好的抗震性和抗沖擊能力,國外,尤其是部分歐洲國家已將其成熟地應用于車載安全計算機內,以保證安全性和可靠性,而國內相關研究起步較晚,在此基礎上開發的列車網絡設備產品也相對稀少。
提出一種具有V ME接口的MVB通信板卡設計與實現方案,以解決TCN與車載安全計算機互聯的問題,滿足該類技術產品國產化的迫切需要。利用此板卡可以實現網絡主從設備的數據傳輸、節點組網、接入MVB網絡等功能,也為國內車輛使用MVB技術和開發基于MVB的其他應用提供平臺。
系統整體構架如圖1所示,包括ARM主控制器、V ME總線接口控制器、MVB總線控制器、電源復位和JTAG電路5部分。

圖1 系統整體設計方案框圖
為實現MVB與V ME總線的通信,系統選用ARM作為高速中央處理器進行控制,具有集成化、小型化、實時性強、可移植性強、低成本和低功耗的優勢。主控制器選用NXP公司的LPC2478。此款ARM芯片處理器時鐘高達72 MHz,片內SRA M資源達98 kb:4 kb支持高性能CPU通過ARM局部總線訪問,2 kb用于RTC供電以便存儲數據,16 kb作為通用SRA M或用于以太網接口,另16 kb可供GPDMA使用或USB訪問。此外,還設計擴展了64 Mb的SDRA M和Su msung公司的256 Mb的NAND Flash。
片上集成了1 0/1 0 0 M 以太網媒體訪問控制器(MAC)、USB2.0全速Device/Host/OTG控制器、4個UART和1個SPI接口等。CPU外圍還需對這些接口電路進行設計,另外,控制I/O(并行總線、指示燈等)電路及JTAG菊花鏈下載調試電路的設計也必不可少。
V ME總線因其并行性、實時性、高可靠性等特點,在高性能的實時應用領域一直處于主導地位,已經發展到了一個比較完善的階段。國外許多電動車組將其作為車載安全計算機系統的板級總線,并應用于車載網絡設備上。設計并開發MVB通信板上的V ME總線接口,有助于實現與該類引進產品的板級互換。
V ME總線數據傳輸采用32位地址及32位數據非復用結構,支持8位、16位和32位的數據傳輸。異步通信,不需要時鐘同步,利用DTACK*握手信號來控制傳輸過程。按功能分為4類總線:數據傳輸總線、數據傳輸仲裁總線、優先權中斷總線和公用信號線。為完成基本接口功能,對其信號線進行剪裁,保留36根:數據線D[7:0],地址線 A[15:1],數據選通DS0*和DS1*,地址選通AS*,讀/寫信號 WRITE*,傳輸應答DTACK*,長字信號L WORD*,插槽編碼GA[4:0]和GAP*,系統復位SYRST*。其中,依靠主模塊驅動DS0*,DS1*,L WORD*和地址線A01的不同組合,控制數據的傳輸周期類型。
另外,為了提高系統的可靠性和安全性,車載安全計算機系統通常采用雙機熱備、2取2乘2、3取2等冗余結構。IEC 61508標準應用馬爾可夫模型分別對上述結構的可靠度、安全度和可用度進行了計算比較,性能最高的2種結構為3取2和2取2乘2。考慮到系統的復雜度和車內空間限制,本設計采用3取2構架,通信板上與安全計算機互聯一側設計3路V ME總線并行工作:FPGA1、2、3分別完成對應的 V ME_A、VME_B、VME_C 3路背板總線接口邏輯,FPGA4作為3取2表決器對運算結果進行兩兩表決,最終將一致的數據存儲于雙口RA M中,以便主控制器ARM的訪問。當其中一路信號與另外兩路不同時,屏蔽該路,剩余兩路進行2取2表決,使得系統在降級工作的情況下也能保證安全輸出;只有當3路信號互不相同時,系統才判斷錯誤,不進行輸出。任何一條電路或單個元件的故障都不會影響整個系統的正常運行。
V ME國際標準規定,6 U板卡可以設置1或2個VEM總線連接器。該通信板卡設計為雙連接器,采用歐式規范 DIN 41612,P1/J1在上(96針),P2/J2在下(擴展為160針),便于連接不同類型背板機箱。
MVB總線控制器用于實現物理層信號的轉換,執行數據鏈路層的通信規程,由試驗室自主研發的SOPC技術實現。通過單片FPGA將MVB主設備或其他網絡設備發送的數據傳給MVB網絡,或從MVB網絡中接收其他設備發出的數據并送給主設備。數據傳輸主要采用并行總線的接口模式,另外增加了SPI串行總線作為備用的數據訪問方式。并行總線包括16位數據線、16位地址線、讀/寫、使能信號等。
MVB與V ME總線上的數據交換主要是依靠主控制器ARM訪問封裝在各自FPGA中雙口RA M完成的。ARM作為控制核心,決定訪問MVB總線或是V ME總線上的數據,并將數據存儲在SDRA M/FLASH內。
FPGA4內封裝了一個片內RA M,當V ME總線發送數據包時,FPGA1~3對其讀取。定義數據高8位為標志信息,低8位為實際數據,經過接口模塊將其按地址映射于FPGA1~3片內RA M區域中,所得數據再經邏輯變換為串行數據,經過自定義串行總線傳輸至FPGA4的FIFO內。FPGA4對整個數據包3取2判別后,分別提取出相應的地址信息和數據信息。每當堆棧中存滿16位時,FPGA4的FIFO向片內RA M發送數據包,等待ARM來讀取。表決芯片FPGA4與FPGA1~3之間自定義5路雙向的串行總線:1路時鐘(CLK),1路啟動信號(START),3路收發數據(DATA)。實際只采取了1路DATA,即共有3路雙向串行總線工作。
ARM控制器讀取VME數據時,根據地址映射到FPGA4的片內RAM空間,通過8位并行總線從FPGA4片內RAM里獲得。ARM控制器經協議轉換將信號輸出,經過并行總線傳輸給MVB_FPGA,以數據地址總線訪問的方式交換數據。封裝于其中的MVBC將信號經過邏輯變換和驅動電路后傳遞到MVB總線上。
設計中,MVB_FPGA植入試驗室自主開發的MVB IP核,用單片FPGA實現MVB的所有功能,代替現有網卡的MVB芯片,支持過程數據、消息數據、監控數據報文的形成和處理,還可以實現總線管理性能,進而成為MVB設備分類中的4類設備。
通信板與PC機之間的通信,可以分別在ADS1.2開發環境下通過RS232串口、USB2.0接口和以太網接口完成。結合LPC2478 ARM資源,本文主要針對USB接口進行開發。
LPC2478 ARM內部自帶一個USB設備控制器,支持32個固定配置的物理端點(16個邏輯端點),并完全兼容USB2.0全速規范,使USB設備控制器與CPU間的數據交換穩定地達到很高的速度。數據傳輸模式采用從機模式(非DMA模式),由USB設備控制器向主機ARM MCU提交中斷的機制來完成。USB固件總是在等待主機的命令,然后根據命令去執行相應的程序。如果LPC2478 USB發現從USB總線上收到數據,USB設備控制器發生中斷,進入USB中斷服務程序→中斷服務程序讀取數據,并置“端點收到數據標志”位為1,然后退出中斷回到前臺→前臺檢測到“端點收到數據標志”位為1時,針對接收到的數據進行處理;如果有數據需要發送到USB主機,只須將要發送的數據寫入LPC2478 USB發送端點緩沖區中。ARM MCU前臺不斷循環處理相關事情,后臺進行LPC2400 USB中斷服務程序,從而完成與PC機的底層通信。
對于開發者來講,通信是否正常需要通過上位機驗證;對于用戶而言,與系統的交互也是通過上位機實現的。本系統在VC++6.0 MFC環境下對上位機應用程序進行了開發,利用Windows API實現USB接口通信,對接入系統內MVB網絡上的數據進行監控及配置。具體實現以下功能:
(1)實現MVB端口號、功能碼、設備主從,設備狀態等配置信息的下載;
(2)過程數據端口可進行動態配置;
(3)已配置的端口信息可分別進入自動分配模式和手動分配模式;
(4)可對已分配的端口進行數據發送和接收;
(5)可進行消息數據的配置、發送及監視等。
2.3.1 USB驅動
本設計采用了一個基于Windows API函數I/O請求的動態鏈接庫DLL文件,作為應用層與USB驅動程序的接口,在VC++6.0開發環境下,通過調用這個DLL文件實現與USB互通。利用這種方式,使進程可以調用本不屬于其可執行代碼的函數,有助于節省內存和提高數據和資源的共享度,簡化了上位機軟件的管理,同時也減少了開發難度,縮短了開發周期。
該動態鏈接庫為用戶開放了以下幾種的API函數:


2.3.2 MVB配置
對MVB通信板卡的配置都是由上位機軟件實現的。根據MVB通信協議,軟件初始界面設計分為兩個部分,設備配置和端口過程數據配置,如圖2所示。

圖2 MVB端口信息配置界面
(1)設備配置
在【設備地址】和【設備狀態】可分別顯示組合后2字節的16位數據設備信息。單擊“設備配置”對設備進行配置,發送幀如下:“0xaa,0x55,0x11,Len(數據內容長度),設備地址(2 Bytes),設備狀態(2 Bytes)”。
配置成功后設備區域將變為不可編輯狀態,并將所發數據包通過ARM返回給上位機。若配置失敗可彈出錯誤提示。
(2)端口過程數據配置
在端口配置信息列表中,連接了ACCESS數據庫,列表可按“端口地址”、“功能碼”和“源/宿端口屬性”的順序逐條顯示保存在數據庫中的信息。ACCESS數據庫的連接和打開,需要注意在頭文件中定義相關結構體,然后在初始化MVB配置對話框時實現。
過程數據端口配置完畢后,點擊“發送配置”,則發送數據包格式如下:
“0xaa,0x55,0x22,Len,端口0信息,端口1信息…….端口N-1信息”
每個端口信息組合如表1。

表1 端口信息組合
Addr_0~Addr_11是端口地址;Fcode[0]~Fcode[2]是功能碼設定,由于此處配置都為過程數據,所以僅0~4有效;SRC/SINK是端口源/宿標志,1表示是源端口,0表示是宿端口。
2.3.3 數據收發
端口配置完畢后,就可以選擇“進入自動分配”或“進入手動分配”分別進入端口自動分配模式和手動選擇模式。新對話框的彈出需要對其進行定義。
另外,為了方便相關參數和函數在各個對話框中可以共享,引入了全局變量的使用。全局變量的定義必須放在恰當的文件中。在此實例中,這些全局變量的定義應放在主對話框的實現文件PC_MVBDl g.cpp中,具體的位置應在包含文件和條件編譯之后,且在所有成員函數之外,這樣才可以在此文件的成員函數中使用它們。同時,為了使其中一些全局變量可以被子對話框使用,應在相應的子對話框實現文件(如data Dl g.cpp)中進行extern變量聲明。
如圖3所示,在自動分配模式界面中,僅支持前10個端口的數據收發,將已配置的端口地址逐條顯示出來。功能碼不同,可以發送和接收的數據長度也不同。若為源端口,按鍵顯示“發送”,根據提示的數據長度填入數據后(長度不足的自動添零),點擊此按鈕,該端口的數據將會發送到MVB網絡上;若為宿端口,按鍵顯示“接收”,直接點擊此按鈕,將會顯示接收到的該端口網絡數據。
手動分配模式支持全部已配置端口的數據收發,并含有消息數據配置、發送及監視等功能。如圖4所示,進入手動分配界面后,系統會自動將已配置的所有端口按源/宿進行分類。在過程數據部分,輸入任意已有的源端口地址或宿端口地址,即可進行數據的收發。

圖3 過程數據端口自動分配界面

圖4 過程數據端口手動分配界面
不論是自動分配模式還是手動分配模式,如果在設備運行過程中需要重新對MVB過程數據端口進行配置,可使用“MVB板卡復位”按鍵,這樣重配置后的參數才會生效。
為測試MVB網絡及上位機的通信情況,進行自組網試驗進行驗證。將設備A、設備B和MVB主設備聯網,如圖5所示。分別通過上位機對設備A和設備B進行配置。在端口配置中,兩個設備要分別含有對應的源端口和宿端口。

圖5 自組網試驗示意圖
如圖6、圖7所示,設備A用源端口0×10發送了數據,設備B在宿端口0×10接收到了數據,數據一致;設備B用源端口0×302發送了數據,設備A在宿端口0×302,接收到了數據,數據也一致,說明過程數據通信正常。類似的,消息數據通信也可以由此驗證。

圖6 設備A收發過程數據

圖7 設備B收發過程數據
給出了基于ARM,且具有V ME總線接口的MVB通信板卡的設計思路與實現方案。重點研究了試驗環境的開發過程,以便對MVB通信板卡在安全冗余等方面開展研究。試驗結果表明,所開發的上位機環境能夠很好地對底層MVB網絡進行配置及數據收發,并監控車載安全計算機通過V ME總線與MVB網絡間的通信情況。
[1]IEC 61375-1,Electric rail way equipment Train Bus Part1:Train communication Network[S].
[2]陳 彥.基于VME總線的 MVB通信板的設計與開發[D].北京:北京交通大學.2011.
[3]穆云麗.多功能接口MVB網卡在機車狀態監測與故障診斷系統的應用[D].北京:北京交通大學.2009.
[4]孫 鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2006.
[5]楊永安,楊 松,孫 麗.基于ARM構架的嵌入式USB驅動的設計[J].內蒙古農業大學學報.2008,29(4):200-202.
[6]宋紅霞,等.列車自動防護系統安全計算機可靠性與安全性分析[J].工業控制計算機.2008,21(1):13-15.