國內(nèi)外車載網(wǎng)絡(luò)技術(shù)的發(fā)展是隨著現(xiàn)場總線網(wǎng)絡(luò)技術(shù)的發(fā)展而發(fā)展起來的,先后產(chǎn)生了RS485、Lonworks、WorldFIP等多種總線網(wǎng)絡(luò)形式。1999年,國際電工委員會(huì)(IEC)頒布了IEC-61375標(biāo)準(zhǔn),該標(biāo)準(zhǔn)中將車載網(wǎng)絡(luò)分為兩級(jí)總線的層次結(jié)構(gòu),即用于連接各節(jié)可動(dòng)態(tài)編組的車輛間的絞線式列車總線WTB(Wire Train Bus)和用于連接車輛(或固定編組的車輛單元)內(nèi)部各種設(shè)備的多功能車輛總線MVB(Multifunction Vehicle Bus),它們之間的列車總線節(jié)點(diǎn)起著網(wǎng)關(guān)的作用,其中MVB網(wǎng)絡(luò)由于較低的要求和其易用性高的特點(diǎn),在實(shí)際中運(yùn)用很廣泛。本文通過深入研究幾種列車通信網(wǎng)絡(luò)產(chǎn)品底層協(xié)議,特別是TCN的底層協(xié)議及關(guān)鍵技術(shù),基于SOPC的設(shè)計(jì)思想,設(shè)計(jì)出符合IEC-61375標(biāo)準(zhǔn)的MVB總線訪問IP(Intellectual Property)內(nèi)核和網(wǎng)卡。
系統(tǒng)體系結(jié)構(gòu)
本設(shè)計(jì)正是基于SOPC的思想,開發(fā)實(shí)現(xiàn)自主知識(shí)產(chǎn)權(quán)的MVB收發(fā)控制器IP核,借助于QuartersII開發(fā)工具,集成至Altera FPGA器件內(nèi)部,構(gòu)建SOC片上系統(tǒng)實(shí)現(xiàn)MVB網(wǎng)卡基本功能,相比傳統(tǒng)國外的MVB網(wǎng)卡,大大簡化了系統(tǒng)的結(jié)構(gòu),降低了開發(fā)難度。
傳統(tǒng)MVB網(wǎng)卡的硬件結(jié)構(gòu)比較復(fù)雜,設(shè)計(jì)實(shí)現(xiàn)上有較大的難度。如圖1所示,是Duagon公司的一款典型的MVB網(wǎng)卡d113的硬件結(jié)構(gòu)。其硬件主要有以下幾個(gè)部分構(gòu)成:中央控制器采用高性能的32位ARM處理器,存儲(chǔ)系統(tǒng)由非易失性程序存儲(chǔ)器(ROM)Flash,以及數(shù)據(jù)存儲(chǔ)器RAM組成,可編程器件上實(shí)現(xiàn)MVB收發(fā)器以及外部PC/104總線接口。
圖1 d113硬件框圖
本設(shè)計(jì)在一片F(xiàn)PGA上,采用SOPC技術(shù)實(shí)現(xiàn)的MVB網(wǎng)卡:由Altera公司提供的32位高性能軟核處理器NiosII取代ARM處理器,ROM,RAM及Traffic Memory均可以在FPGA片內(nèi)由SOPC Builder工具實(shí)現(xiàn),再集成MVB總線訪問IP核便可以構(gòu)成MVB網(wǎng)卡,實(shí)現(xiàn)了真正的片上系統(tǒng)。其硬件框圖如圖2所示。
圖2 網(wǎng)卡結(jié)構(gòu)框圖
總線訪問IP核的實(shí)現(xiàn)
總線訪問IP核是實(shí)現(xiàn)WTB和MVB的總線訪問處理器(BAP)的核心內(nèi)容。由此IP核結(jié)合物理層的總線收發(fā)器完成總線訪問。總線訪問IP核可分為物理層、數(shù)據(jù)鏈路層與應(yīng)用層的接口三大部分。1)在物理層實(shí)現(xiàn)基帶曼徹斯特Biphase-L編解碼,介質(zhì)冗余處理,介質(zhì)安裝單元接口;用于輸入解碼的數(shù)字鎖相環(huán)的設(shè)計(jì)。2)鏈路層包括尋址方式,F(xiàn)-code(功能代碼)的生成,主從設(shè)備幀內(nèi)容的填充,介質(zhì)訪問控制(MAC)等。3)與應(yīng)用層的接口通常采用共享存儲(chǔ)器的方法,需要完成端口的定義與維護(hù),通信存儲(chǔ)器的控制等。其邏輯框圖如圖3。
圖3 網(wǎng)卡結(jié)構(gòu)框圖
MVB幀結(jié)構(gòu)
在MVB中有兩種幀格式,一種是只能由總線主設(shè)備發(fā)送的主設(shè)備幀,簡稱主幀,一種是為響應(yīng)主幀而由從設(shè)備發(fā)送的從設(shè)備幀,簡稱從幀。一個(gè)幀以9位定界符開始,主設(shè)備幀分界符和從設(shè)備幀分界符對防止同步失敗是不相同的。
MVB編碼器
MVB總線數(shù)據(jù)以幀為基本單位,數(shù)據(jù)幀采用了曼徹斯特碼傳輸,編碼和解碼器不只是進(jìn)行曼徹斯特編解碼,幀頭幀尾的特殊編解碼也需要在這里進(jìn)行,采用傳統(tǒng)的曼徹斯特編解碼器將無法完成此項(xiàng)工作。在本設(shè)計(jì)中,采用了結(jié)合收發(fā)器的狀態(tài)機(jī)具體狀態(tài)進(jìn)行編解碼的設(shè)計(jì)方法解決這一問題。MVB幀發(fā)送器通過控制邏輯模塊調(diào)用曼徹斯特編碼與CRC校驗(yàn)?zāi)K、通信存儲(chǔ)單元模塊完成緩沖區(qū)數(shù)據(jù)的發(fā)送。
MVB幀接收器
接收器實(shí)現(xiàn)的關(guān)鍵是有效數(shù)據(jù)幀的識(shí)別,實(shí)現(xiàn)思路類似于發(fā)送器,根據(jù)編碼校驗(yàn)可以實(shí)現(xiàn)。另一個(gè)問題是與總線的接口方式,該設(shè)計(jì)采用了8位并行數(shù)據(jù)寬度輸出,加序號(hào)標(biāo)識(shí)的方法可以接收任意給定長度的有效數(shù)據(jù)。
數(shù)據(jù)校驗(yàn)
幀數(shù)據(jù)用一個(gè)或更多的8位校驗(yàn)序列來保護(hù),數(shù)據(jù)的內(nèi)容應(yīng)處理成64位的代碼字(對小一些的數(shù)據(jù)用16或32位),不包括起始分界符和終止分界符。這個(gè)代碼字和隨后的校驗(yàn)序列應(yīng)作為最高有效的數(shù)據(jù)位首先發(fā)送。
校驗(yàn)序列按被其保護(hù)的16,32或64位數(shù)據(jù)的循環(huán)冗余校驗(yàn)(CRC)計(jì)算。校驗(yàn)序列按多項(xiàng)式計(jì)算,7位運(yùn)算結(jié)果用一個(gè)偶校驗(yàn)位進(jìn)行擴(kuò)展。所有的8位數(shù)據(jù)取反發(fā)送。
通信存儲(chǔ)單元模塊
通信存儲(chǔ)器(Traffic Store)作為MVB標(biāo)準(zhǔn)中的一個(gè)重要實(shí)現(xiàn)手段,是MVB接口網(wǎng)卡中的重要組成部分。通信存儲(chǔ)器容量的大小依據(jù)具體應(yīng)用而定。在MVB網(wǎng)絡(luò)中通常所需要的通信存儲(chǔ)器容量為32或64個(gè)端口即可,每個(gè)端口需要占用的空間最大為256位,這樣通信存儲(chǔ)器所需要的空間為8kbits或16kbits。開辟FPGA中的DRAM作為通信存儲(chǔ)單元,完成數(shù)據(jù)交互功能。用來存儲(chǔ)經(jīng)由MVB總線傳輸?shù)臄?shù)據(jù),是控制邏輯模塊與編碼校驗(yàn)單元之間的共享單元。控制邏輯模塊依據(jù)通信存儲(chǔ)模塊端口地址的起始地址,以及其數(shù)據(jù)長度,來讀取相應(yīng)的過程數(shù)據(jù)和消息數(shù)據(jù)等。
Avolon總線接口設(shè)計(jì)
MVB總線處理IP核與NiosII的接口設(shè)計(jì)的實(shí)現(xiàn)是通過Traffic Store(共享RAM)來實(shí)現(xiàn)的。使用Quarters?、蛑械腗egaWizard?plug-in Manager工具來產(chǎn)生一個(gè)雙口RAM模塊,其設(shè)置如表1所示。
該通信存儲(chǔ)器與Nios II處理器通過Avalon總線接口。
SOPC片上系統(tǒng)MVB網(wǎng)卡的實(shí)現(xiàn)
總線訪問IP核與Nios II的系統(tǒng)集成
利用Quarters II的SOPC Builder工具我們集成了NiosII軟核處理器、4k的片內(nèi)RAM、MVB總線訪問IP核(包括編碼器和解碼器)以及LCD控制模塊,構(gòu)成了一個(gè)能實(shí)現(xiàn)MVB一類網(wǎng)卡功能的片上系統(tǒng)。
軟件設(shè)計(jì)
基于以上所述的SOPC系統(tǒng),我們設(shè)計(jì)了一個(gè)基本的MVB節(jié)點(diǎn)以實(shí)現(xiàn)過程數(shù)據(jù)傳輸。本節(jié)點(diǎn)將0x14地址設(shè)置為源端口,當(dāng)主幀輪詢0x14地址時(shí),本節(jié)點(diǎn)將此端口里的數(shù)據(jù)打包成從幀發(fā)送到總線上面,以刷新0x14地址的宿端口。
altera_avalon_mvb.h的設(shè)計(jì),包括總線訪問IP核寄存器讀寫的宏定義。
#define IORD_ALTERA_AVALON_MVB_SENDREG(base) IORD(base,0)
#define IOWR_ALTERA_AVALON_MVB_SENDREG(base,data) IOWR(base,0,data)
在主函數(shù)里置MVB總線接收允許位,循環(huán)等待接收MVB主控制器發(fā)過來的主幀。節(jié)點(diǎn)在接收到主幀之后,程序進(jìn)入中斷處理程序。在中斷程序里提取接收到的主幀里的端口地址,并與自身預(yù)設(shè)的端口地址碼進(jìn)行比較,如果地址碼相符,則節(jié)點(diǎn)將本端口的數(shù)據(jù)通過MVB發(fā)送器發(fā)到總線上,實(shí)現(xiàn)端口數(shù)據(jù)刷新操作。
仿真及實(shí)現(xiàn)
仿真波形
在本實(shí)驗(yàn)中,對實(shí)驗(yàn)室設(shè)計(jì)的MVB板卡進(jìn)行了功能仿真和FPGA驗(yàn)證,通過對過程數(shù)據(jù)的發(fā)送與接收驗(yàn)證了所搭建的MVB系統(tǒng)。
實(shí)測波形
在編好程序后,再編譯一遍QuartersII工程文件,將得到的.pof文件下載至FPGA內(nèi),上電后用示波器測輸出管腳,便可觀察到MVB幀波形。對照IEC-61375協(xié)議標(biāo)準(zhǔn),可以判斷出該波形為符合標(biāo)準(zhǔn)的正確波形,并且源端口節(jié)點(diǎn)上收到了正確的數(shù)據(jù),從而證明該過程數(shù)據(jù)端口的成功刷新。
結(jié)語
目前國內(nèi)的列車網(wǎng)絡(luò)及控制技術(shù)是在技術(shù)引進(jìn)的基礎(chǔ)上發(fā)展起來的,國外廠商只愿提供產(chǎn)品而不轉(zhuǎn)讓關(guān)鍵技術(shù)。由于難以單獨(dú)購買網(wǎng)絡(luò)專用芯片等種種原因,目前仍是直接采用國外產(chǎn)品,或用國外(設(shè)計(jì))的網(wǎng)卡(萬元以上的高價(jià))等進(jìn)行系統(tǒng)集成,以此構(gòu)成列車通信網(wǎng)絡(luò)(即國產(chǎn)化)。本論文圍繞MVB總線底層協(xié)議展開研究,基于SOPC設(shè)計(jì)思想,對利用FPGA實(shí)現(xiàn)IEC61375協(xié)議進(jìn)行了嘗試,初步完成了MVB網(wǎng)絡(luò)I類板卡的設(shè)計(jì)。目前,對該網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)方面還僅限于初期階段,只實(shí)現(xiàn)了MVB總線基本的過程數(shù)據(jù)的收發(fā)。該系統(tǒng)的后續(xù)還需加入消息監(jiān)督數(shù)據(jù)等的通信。在實(shí)際的節(jié)點(diǎn)應(yīng)用中,也可能出現(xiàn)各種各樣的問題需要加以改進(jìn)。
參考文獻(xiàn):
1.IEC61375-1-1999,Part 1:“Train Communication Network”
2.zur Bonsen,The Multifunction Vehicle Bus(MVB),FactoryCommunication Systems,1995
3.Jaime Jiménez,osé L.Martin,Carlos Cuadrado, Jagoba Arias and Jesús Lázaro,“A Top-down Design for the Train Communication Network”,2003 IEEE
4.Alberto Chavarría,Joseba López de Arroyabe,Aitzol Zuloaga,"Slave node architecture for train communications networks",2000IEEE
5.張大波、王建,《MVB總線實(shí)時(shí)協(xié)議實(shí)現(xiàn)及其實(shí)驗(yàn)研究》
6.侯寧,丁榮軍,王永翔,王立德,《MVB網(wǎng)卡的幀收發(fā)器設(shè)計(jì)》