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