王 雪,申 萍,宋 娟,嚴 翔
(北京交通大學 電氣工程學院,北京100044)
隨著我國高速鐵路的不斷發(fā)展,列車控制系統(tǒng)的高安全性和高可靠性已成為軌道交通領(lǐng)域中尤為關(guān)鍵的指標。V ME(Versa Module Eur ocar d)總線為一種通用的計算機總線,定義了一個在緊密耦合硬件構(gòu)架中可進行互聯(lián)數(shù)據(jù)處理、數(shù)據(jù)存儲和連接外圍控制器件的結(jié)構(gòu),1987年被批準為國際標準IEEE 1014。其機械結(jié)構(gòu)具有良好的抗震性和抗沖擊能力,國外,尤其是部分歐洲國家已將其成熟地應用于車載安全計算機內(nèi),以保證安全性和可靠性,而國內(nèi)相關(guān)研究起步較晚,在此基礎(chǔ)上開發(fā)的列車網(wǎng)絡(luò)設(shè)備產(chǎn)品也相對稀少。
提出一種具有V ME接口的MVB通信板卡設(shè)計與實現(xiàn)方案,以解決TCN與車載安全計算機互聯(lián)的問題,滿足該類技術(shù)產(chǎn)品國產(chǎn)化的迫切需要。利用此板卡可以實現(xiàn)網(wǎng)絡(luò)主從設(shè)備的數(shù)據(jù)傳輸、節(jié)點組網(wǎng)、接入MVB網(wǎng)絡(luò)等功能,也為國內(nèi)車輛使用MVB技術(shù)和開發(fā)基于MVB的其他應用提供平臺。
系統(tǒng)整體構(gòu)架如圖1所示,包括ARM主控制器、V ME總線接口控制器、MVB總線控制器、電源復位和JTAG電路5部分。
圖1 系統(tǒng)整體設(shè)計方案框圖
為實現(xiàn)MVB與V ME總線的通信,系統(tǒng)選用ARM作為高速中央處理器進行控制,具有集成化、小型化、實時性強、可移植性強、低成本和低功耗的優(yōu)勢。主控制器選用NXP公司的LPC2478。此款ARM芯片處理器時鐘高達72 MHz,片內(nèi)SRA M資源達98 kb:4 kb支持高性能CPU通過ARM局部總線訪問,2 kb用于RTC供電以便存儲數(shù)據(jù),16 kb作為通用SRA M或用于以太網(wǎng)接口,另16 kb可供GPDMA使用或USB訪問。此外,還設(shè)計擴展了64 Mb的SDRA M和Su msung公司的256 Mb的NAND Flash。
片上集成了1 0/1 0 0 M 以太網(wǎng)媒體訪問控制器(MAC)、USB2.0全速Device/Host/OTG控制器、4個UART和1個SPI接口等。CPU外圍還需對這些接口電路進行設(shè)計,另外,控制I/O(并行總線、指示燈等)電路及JTAG菊花鏈下載調(diào)試電路的設(shè)計也必不可少。
V ME總線因其并行性、實時性、高可靠性等特點,在高性能的實時應用領(lǐng)域一直處于主導地位,已經(jīng)發(fā)展到了一個比較完善的階段。國外許多電動車組將其作為車載安全計算機系統(tǒng)的板級總線,并應用于車載網(wǎng)絡(luò)設(shè)備上。設(shè)計并開發(fā)MVB通信板上的V ME總線接口,有助于實現(xiàn)與該類引進產(chǎn)品的板級互換。
V ME總線數(shù)據(jù)傳輸采用32位地址及32位數(shù)據(jù)非復用結(jié)構(gòu),支持8位、16位和32位的數(shù)據(jù)傳輸。異步通信,不需要時鐘同步,利用DTACK*握手信號來控制傳輸過程。按功能分為4類總線:數(shù)據(jù)傳輸總線、數(shù)據(jù)傳輸仲裁總線、優(yōu)先權(quán)中斷總線和公用信號線。為完成基本接口功能,對其信號線進行剪裁,保留36根:數(shù)據(jù)線D[7:0],地址線 A[15:1],數(shù)據(jù)選通DS0*和DS1*,地址選通AS*,讀/寫信號 WRITE*,傳輸應答DTACK*,長字信號L WORD*,插槽編碼GA[4:0]和GAP*,系統(tǒng)復位SYRST*。其中,依靠主模塊驅(qū)動DS0*,DS1*,L WORD*和地址線A01的不同組合,控制數(shù)據(jù)的傳輸周期類型。
另外,為了提高系統(tǒng)的可靠性和安全性,車載安全計算機系統(tǒng)通常采用雙機熱備、2取2乘2、3取2等冗余結(jié)構(gòu)。IEC 61508標準應用馬爾可夫模型分別對上述結(jié)構(gòu)的可靠度、安全度和可用度進行了計算比較,性能最高的2種結(jié)構(gòu)為3取2和2取2乘2??紤]到系統(tǒng)的復雜度和車內(nèi)空間限制,本設(shè)計采用3取2構(gòu)架,通信板上與安全計算機互聯(lián)一側(cè)設(shè)計3路V ME總線并行工作:FPGA1、2、3分別完成對應的 V ME_A、VME_B、VME_C 3路背板總線接口邏輯,F(xiàn)PGA4作為3取2表決器對運算結(jié)果進行兩兩表決,最終將一致的數(shù)據(jù)存儲于雙口RA M中,以便主控制器ARM的訪問。當其中一路信號與另外兩路不同時,屏蔽該路,剩余兩路進行2取2表決,使得系統(tǒng)在降級工作的情況下也能保證安全輸出;只有當3路信號互不相同時,系統(tǒng)才判斷錯誤,不進行輸出。任何一條電路或單個元件的故障都不會影響整個系統(tǒng)的正常運行。
V ME國際標準規(guī)定,6 U板卡可以設(shè)置1或2個VEM總線連接器。該通信板卡設(shè)計為雙連接器,采用歐式規(guī)范 DIN 41612,P1/J1在上(96針),P2/J2在下(擴展為160針),便于連接不同類型背板機箱。
MVB總線控制器用于實現(xiàn)物理層信號的轉(zhuǎn)換,執(zhí)行數(shù)據(jù)鏈路層的通信規(guī)程,由試驗室自主研發(fā)的SOPC技術(shù)實現(xiàn)。通過單片F(xiàn)PGA將MVB主設(shè)備或其他網(wǎng)絡(luò)設(shè)備發(fā)送的數(shù)據(jù)傳給MVB網(wǎng)絡(luò),或從MVB網(wǎng)絡(luò)中接收其他設(shè)備發(fā)出的數(shù)據(jù)并送給主設(shè)備。數(shù)據(jù)傳輸主要采用并行總線的接口模式,另外增加了SPI串行總線作為備用的數(shù)據(jù)訪問方式。并行總線包括16位數(shù)據(jù)線、16位地址線、讀/寫、使能信號等。
MVB與V ME總線上的數(shù)據(jù)交換主要是依靠主控制器ARM訪問封裝在各自FPGA中雙口RA M完成的。ARM作為控制核心,決定訪問MVB總線或是V ME總線上的數(shù)據(jù),并將數(shù)據(jù)存儲在SDRA M/FLASH內(nèi)。
FPGA4內(nèi)封裝了一個片內(nèi)RA M,當V ME總線發(fā)送數(shù)據(jù)包時,F(xiàn)PGA1~3對其讀取。定義數(shù)據(jù)高8位為標志信息,低8位為實際數(shù)據(jù),經(jīng)過接口模塊將其按地址映射于FPGA1~3片內(nèi)RA M區(qū)域中,所得數(shù)據(jù)再經(jīng)邏輯變換為串行數(shù)據(jù),經(jīng)過自定義串行總線傳輸至FPGA4的FIFO內(nèi)。FPGA4對整個數(shù)據(jù)包3取2判別后,分別提取出相應的地址信息和數(shù)據(jù)信息。每當堆棧中存滿16位時,F(xiàn)PGA4的FIFO向片內(nèi)RA M發(fā)送數(shù)據(jù)包,等待ARM來讀取。表決芯片F(xiàn)PGA4與FPGA1~3之間自定義5路雙向的串行總線:1路時鐘(CLK),1路啟動信號(START),3路收發(fā)數(shù)據(jù)(DATA)。實際只采取了1路DATA,即共有3路雙向串行總線工作。
ARM控制器讀取VME數(shù)據(jù)時,根據(jù)地址映射到FPGA4的片內(nèi)RAM空間,通過8位并行總線從FPGA4片內(nèi)RAM里獲得。ARM控制器經(jīng)協(xié)議轉(zhuǎn)換將信號輸出,經(jīng)過并行總線傳輸給MVB_FPGA,以數(shù)據(jù)地址總線訪問的方式交換數(shù)據(jù)。封裝于其中的MVBC將信號經(jīng)過邏輯變換和驅(qū)動電路后傳遞到MVB總線上。
設(shè)計中,MVB_FPGA植入試驗室自主開發(fā)的MVB IP核,用單片F(xiàn)PGA實現(xiàn)MVB的所有功能,代替現(xiàn)有網(wǎng)卡的MVB芯片,支持過程數(shù)據(jù)、消息數(shù)據(jù)、監(jiān)控數(shù)據(jù)報文的形成和處理,還可以實現(xiàn)總線管理性能,進而成為MVB設(shè)備分類中的4類設(shè)備。
通信板與PC機之間的通信,可以分別在ADS1.2開發(fā)環(huán)境下通過RS232串口、USB2.0接口和以太網(wǎng)接口完成。結(jié)合LPC2478 ARM資源,本文主要針對USB接口進行開發(fā)。
LPC2478 ARM內(nèi)部自帶一個USB設(shè)備控制器,支持32個固定配置的物理端點(16個邏輯端點),并完全兼容USB2.0全速規(guī)范,使USB設(shè)備控制器與CPU間的數(shù)據(jù)交換穩(wěn)定地達到很高的速度。數(shù)據(jù)傳輸模式采用從機模式(非DMA模式),由USB設(shè)備控制器向主機ARM MCU提交中斷的機制來完成。USB固件總是在等待主機的命令,然后根據(jù)命令去執(zhí)行相應的程序。如果LPC2478 USB發(fā)現(xiàn)從USB總線上收到數(shù)據(jù),USB設(shè)備控制器發(fā)生中斷,進入USB中斷服務(wù)程序→中斷服務(wù)程序讀取數(shù)據(jù),并置“端點收到數(shù)據(jù)標志”位為1,然后退出中斷回到前臺→前臺檢測到“端點收到數(shù)據(jù)標志”位為1時,針對接收到的數(shù)據(jù)進行處理;如果有數(shù)據(jù)需要發(fā)送到USB主機,只須將要發(fā)送的數(shù)據(jù)寫入LPC2478 USB發(fā)送端點緩沖區(qū)中。ARM MCU前臺不斷循環(huán)處理相關(guān)事情,后臺進行LPC2400 USB中斷服務(wù)程序,從而完成與PC機的底層通信。
對于開發(fā)者來講,通信是否正常需要通過上位機驗證;對于用戶而言,與系統(tǒng)的交互也是通過上位機實現(xiàn)的。本系統(tǒng)在VC++6.0 MFC環(huán)境下對上位機應用程序進行了開發(fā),利用Windows API實現(xiàn)USB接口通信,對接入系統(tǒng)內(nèi)MVB網(wǎng)絡(luò)上的數(shù)據(jù)進行監(jiān)控及配置。具體實現(xiàn)以下功能:
(1)實現(xiàn)MVB端口號、功能碼、設(shè)備主從,設(shè)備狀態(tài)等配置信息的下載;
(2)過程數(shù)據(jù)端口可進行動態(tài)配置;
(3)已配置的端口信息可分別進入自動分配模式和手動分配模式;
(4)可對已分配的端口進行數(shù)據(jù)發(fā)送和接收;
(5)可進行消息數(shù)據(jù)的配置、發(fā)送及監(jiān)視等。
2.3.1 USB驅(qū)動
本設(shè)計采用了一個基于Windows API函數(shù)I/O請求的動態(tài)鏈接庫DLL文件,作為應用層與USB驅(qū)動程序的接口,在VC++6.0開發(fā)環(huán)境下,通過調(diào)用這個DLL文件實現(xiàn)與USB互通。利用這種方式,使進程可以調(diào)用本不屬于其可執(zhí)行代碼的函數(shù),有助于節(jié)省內(nèi)存和提高數(shù)據(jù)和資源的共享度,簡化了上位機軟件的管理,同時也減少了開發(fā)難度,縮短了開發(fā)周期。
該動態(tài)鏈接庫為用戶開放了以下幾種的API函數(shù):
2.3.2 MVB配置
對MVB通信板卡的配置都是由上位機軟件實現(xiàn)的。根據(jù)MVB通信協(xié)議,軟件初始界面設(shè)計分為兩個部分,設(shè)備配置和端口過程數(shù)據(jù)配置,如圖2所示。
圖2 MVB端口信息配置界面
(1)設(shè)備配置
在【設(shè)備地址】和【設(shè)備狀態(tài)】可分別顯示組合后2字節(jié)的16位數(shù)據(jù)設(shè)備信息。單擊“設(shè)備配置”對設(shè)備進行配置,發(fā)送幀如下:“0xaa,0x55,0x11,Len(數(shù)據(jù)內(nèi)容長度),設(shè)備地址(2 Bytes),設(shè)備狀態(tài)(2 Bytes)”。
配置成功后設(shè)備區(qū)域?qū)⒆優(yōu)椴豢删庉嫚顟B(tài),并將所發(fā)數(shù)據(jù)包通過ARM返回給上位機。若配置失敗可彈出錯誤提示。
(2)端口過程數(shù)據(jù)配置
在端口配置信息列表中,連接了ACCESS數(shù)據(jù)庫,列表可按“端口地址”、“功能碼”和“源/宿端口屬性”的順序逐條顯示保存在數(shù)據(jù)庫中的信息。ACCESS數(shù)據(jù)庫的連接和打開,需要注意在頭文件中定義相關(guān)結(jié)構(gòu)體,然后在初始化MVB配置對話框時實現(xiàn)。
過程數(shù)據(jù)端口配置完畢后,點擊“發(fā)送配置”,則發(fā)送數(shù)據(jù)包格式如下:
“0xaa,0x55,0x22,Len,端口0信息,端口1信息…….端口N-1信息”
每個端口信息組合如表1。
表1 端口信息組合
Addr_0~Addr_11是端口地址;Fcode[0]~Fcode[2]是功能碼設(shè)定,由于此處配置都為過程數(shù)據(jù),所以僅0~4有效;SRC/SINK是端口源/宿標志,1表示是源端口,0表示是宿端口。
2.3.3 數(shù)據(jù)收發(fā)
端口配置完畢后,就可以選擇“進入自動分配”或“進入手動分配”分別進入端口自動分配模式和手動選擇模式。新對話框的彈出需要對其進行定義。
另外,為了方便相關(guān)參數(shù)和函數(shù)在各個對話框中可以共享,引入了全局變量的使用。全局變量的定義必須放在恰當?shù)奈募?。在此實例中,這些全局變量的定義應放在主對話框的實現(xiàn)文件PC_MVBDl g.cpp中,具體的位置應在包含文件和條件編譯之后,且在所有成員函數(shù)之外,這樣才可以在此文件的成員函數(shù)中使用它們。同時,為了使其中一些全局變量可以被子對話框使用,應在相應的子對話框?qū)崿F(xiàn)文件(如data Dl g.cpp)中進行extern變量聲明。
如圖3所示,在自動分配模式界面中,僅支持前10個端口的數(shù)據(jù)收發(fā),將已配置的端口地址逐條顯示出來。功能碼不同,可以發(fā)送和接收的數(shù)據(jù)長度也不同。若為源端口,按鍵顯示“發(fā)送”,根據(jù)提示的數(shù)據(jù)長度填入數(shù)據(jù)后(長度不足的自動添零),點擊此按鈕,該端口的數(shù)據(jù)將會發(fā)送到MVB網(wǎng)絡(luò)上;若為宿端口,按鍵顯示“接收”,直接點擊此按鈕,將會顯示接收到的該端口網(wǎng)絡(luò)數(shù)據(jù)。
手動分配模式支持全部已配置端口的數(shù)據(jù)收發(fā),并含有消息數(shù)據(jù)配置、發(fā)送及監(jiān)視等功能。如圖4所示,進入手動分配界面后,系統(tǒng)會自動將已配置的所有端口按源/宿進行分類。在過程數(shù)據(jù)部分,輸入任意已有的源端口地址或宿端口地址,即可進行數(shù)據(jù)的收發(fā)。
圖3 過程數(shù)據(jù)端口自動分配界面
圖4 過程數(shù)據(jù)端口手動分配界面
不論是自動分配模式還是手動分配模式,如果在設(shè)備運行過程中需要重新對MVB過程數(shù)據(jù)端口進行配置,可使用“MVB板卡復位”按鍵,這樣重配置后的參數(shù)才會生效。
為測試MVB網(wǎng)絡(luò)及上位機的通信情況,進行自組網(wǎng)試驗進行驗證。將設(shè)備A、設(shè)備B和MVB主設(shè)備聯(lián)網(wǎng),如圖5所示。分別通過上位機對設(shè)備A和設(shè)備B進行配置。在端口配置中,兩個設(shè)備要分別含有對應的源端口和宿端口。
圖5 自組網(wǎng)試驗示意圖
如圖6、圖7所示,設(shè)備A用源端口0×10發(fā)送了數(shù)據(jù),設(shè)備B在宿端口0×10接收到了數(shù)據(jù),數(shù)據(jù)一致;設(shè)備B用源端口0×302發(fā)送了數(shù)據(jù),設(shè)備A在宿端口0×302,接收到了數(shù)據(jù),數(shù)據(jù)也一致,說明過程數(shù)據(jù)通信正常。類似的,消息數(shù)據(jù)通信也可以由此驗證。
圖6 設(shè)備A收發(fā)過程數(shù)據(jù)
圖7 設(shè)備B收發(fā)過程數(shù)據(jù)
給出了基于ARM,且具有V ME總線接口的MVB通信板卡的設(shè)計思路與實現(xiàn)方案。重點研究了試驗環(huán)境的開發(fā)過程,以便對MVB通信板卡在安全冗余等方面開展研究。試驗結(jié)果表明,所開發(fā)的上位機環(huán)境能夠很好地對底層MVB網(wǎng)絡(luò)進行配置及數(shù)據(jù)收發(fā),并監(jiān)控車載安全計算機通過V ME總線與MVB網(wǎng)絡(luò)間的通信情況。
[1]IEC 61375-1,Electric rail way equipment Train Bus Part1:Train communication Network[S].
[2]陳 彥.基于VME總線的 MVB通信板的設(shè)計與開發(fā)[D].北京:北京交通大學.2011.
[3]穆云麗.多功能接口MVB網(wǎng)卡在機車狀態(tài)監(jiān)測與故障診斷系統(tǒng)的應用[D].北京:北京交通大學.2009.
[4]孫 鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[5]楊永安,楊 松,孫 麗.基于ARM構(gòu)架的嵌入式USB驅(qū)動的設(shè)計[J].內(nèi)蒙古農(nóng)業(yè)大學學報.2008,29(4):200-202.
[6]宋紅霞,等.列車自動防護系統(tǒng)安全計算機可靠性與安全性分析[J].工業(yè)控制計算機.2008,21(1):13-15.