胡遠(yuǎn)朋, 王宏志, 胡黃水
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春 130012)
?
基于FPGA全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核設(shè)計(jì)
胡遠(yuǎn)朋,王宏志*,胡黃水
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春130012)
摘要:采用模塊化的設(shè)計(jì)方法,將從設(shè)備鏈路層IP核分為多個模塊,包括編碼譯碼模塊、幀校驗(yàn)?zāi)K、收發(fā)緩沖器模塊、通信存儲器模塊以及控制單元模塊。使用Altera公司的QuartusⅡ集成開發(fā)環(huán)境,以Verilog HDL作為硬件描述語言,實(shí)現(xiàn)各個模塊的具體功能。使用軟件仿真并在FPGA開發(fā)板上對鏈路層功能進(jìn)行測試。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的IP核滿足國際列車通信網(wǎng)絡(luò)標(biāo)準(zhǔn)IEC-61375。
關(guān)鍵詞:MVB; FPGA; 從設(shè)備; 鏈路層; IP核
0引言
多功能車輛總線(Multifunction Vehicle Bus, MVB)是基于國際列車通信網(wǎng)絡(luò)(Train Communication Network, TCN)標(biāo)準(zhǔn)IEC-61375的核心部分,負(fù)責(zé)車輛內(nèi)設(shè)備的互連,以及在固定編組的列車組中連接各車輛設(shè)備的車輛總線。除了MVB總線外,還有CAN、LonWorks、WorldFIP等其他總線在列車通信網(wǎng)絡(luò)中不同程度的使用,但是與MVB總線相比,它們都不是針對列車通信網(wǎng)絡(luò)研發(fā)出來的。例如:CAN是汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線;LonWorks是指以工廠內(nèi)的測量和控制機(jī)器間的數(shù)字通信為主的網(wǎng)絡(luò)總線;WorldFIP是指以工廠內(nèi)的測量和控制機(jī)器間的數(shù)字通訊為主的網(wǎng)絡(luò)總線。因此,在列車通信網(wǎng)絡(luò)應(yīng)用上,MVB網(wǎng)絡(luò)在可靠性、實(shí)時性、監(jiān)控性等方面具有非常明顯的優(yōu)勢。
MVB網(wǎng)絡(luò)總線的結(jié)構(gòu)必須遵循OSI(開放式系統(tǒng)互聯(lián)參考模型)模式,按照OSI的分層結(jié)構(gòu),該網(wǎng)絡(luò)的鏈路層通過鏈路層接口向上層提供服務(wù)。MVB網(wǎng)絡(luò)從設(shè)備鏈路層的IP核包括編碼譯碼模塊、幀校驗(yàn)?zāi)K、收發(fā)緩沖器模塊、通信存儲器模塊以及控制單元模塊。該網(wǎng)絡(luò)從設(shè)備鏈路層是從MVB網(wǎng)絡(luò)其它層接收數(shù)據(jù),還是發(fā)送數(shù)據(jù),都由控制單元模塊決定。編碼譯碼模塊主要功能是對MVB網(wǎng)絡(luò)鏈路層數(shù)據(jù)進(jìn)行編碼和譯碼。收發(fā)緩沖器模塊的主要功能是在MVB網(wǎng)絡(luò)鏈路層接收數(shù)據(jù)的時候?qū)?shù)據(jù)進(jìn)行暫時的存儲。通信存儲器模塊的主要功能是管理MVB網(wǎng)絡(luò)其它層的數(shù)據(jù)和應(yīng)用處理器的數(shù)據(jù)進(jìn)行交換。設(shè)計(jì)中是利用了Altera公司的Quartus Ⅱ軟件中的IP核對全功能MVB網(wǎng)絡(luò)鏈路層中的各個模塊進(jìn)行設(shè)計(jì),然后利用現(xiàn)場可編程門陣列(FPGA)的設(shè)計(jì)方法去實(shí)現(xiàn)各個模塊的功能。
1MVB網(wǎng)絡(luò)從設(shè)備鏈路層結(jié)構(gòu)簡介
MVB網(wǎng)絡(luò)從設(shè)備鏈路層位于物理層和網(wǎng)絡(luò)層之間,它通過介質(zhì)通道驅(qū)動器與物理層接口,通過實(shí)時協(xié)議與上層接口,如圖1所示。
圖1MVB網(wǎng)絡(luò)從設(shè)備鏈路層結(jié)構(gòu)
通常,有關(guān)全功能MVB鏈路層的設(shè)計(jì)包括一個專用的集成電路(ASIC)或一個可編程邏輯設(shè)備,用來實(shí)現(xiàn)所需的設(shè)備總線接口以及存儲,恢復(fù)當(dāng)前的數(shù)據(jù)到通信存儲器,以及一個功能強(qiáng)大的處理器被用來完成設(shè)備的其它層,在這些設(shè)計(jì)中并沒有清楚地說明設(shè)計(jì)覆蓋了所有的標(biāo)準(zhǔn)規(guī)范。
MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核按結(jié)構(gòu)層次不同分為5個部分:鏈路層接口、上鏈路層、共享內(nèi)存、下鏈路層以及物理層部,MVB網(wǎng)絡(luò)從設(shè)備鏈路層結(jié)構(gòu)如圖2所示。
2IP核設(shè)計(jì)
2.1編碼譯碼模塊
由MVB網(wǎng)絡(luò)協(xié)議規(guī)定,MVB網(wǎng)絡(luò)鏈路層中的數(shù)據(jù)幀能夠被譯碼器識別為有效的數(shù)據(jù)幀結(jié)構(gòu)可以包含:起始分界符、幀數(shù)據(jù)、CRC校驗(yàn)以及結(jié)束分解符。
MVB網(wǎng)絡(luò)信號的傳輸速率由MVB網(wǎng)絡(luò)協(xié)議規(guī)定為1.5 Mbit,利用曼徹斯特進(jìn)行編碼,如圖3所示。
圖2 MVB網(wǎng)絡(luò)從設(shè)備鏈路層結(jié)構(gòu)
圖3 曼徹斯特編碼原理
曼徹斯特碼實(shí)際上就是NRZ(不歸零碼)編碼和時鐘信號的異或。
在MVB網(wǎng)絡(luò)中除了幀頭幀尾,數(shù)據(jù)幀是以曼徹斯特碼進(jìn)行數(shù)據(jù)傳輸?shù)?,信號?”被編為“10”,信號“0”被編為“01”,而信號“NH”被編為“11”,信號“NL”被編為“00”。
編碼器在發(fā)送數(shù)據(jù)幀的時候,按照標(biāo)準(zhǔn)IEC-61375必須先發(fā)送一個起始位為1的邏輯位作為幀的開始。接收的時候,解碼器必須先要確定幀的起始位(即檢測下降沿),并據(jù)此作為啟動同步的判據(jù)。曼徹斯特代碼的仿真波形如圖4所示。
圖4曼徹斯特代碼的仿真波形
2.2幀校驗(yàn)?zāi)K
TCN協(xié)議規(guī)定,傳輸數(shù)據(jù)需要通過校驗(yàn)檢查。在MVB網(wǎng)絡(luò)數(shù)據(jù)傳輸階段,為了防止數(shù)據(jù)的失真,一般采取循環(huán)冗余校驗(yàn)(CRC)的方法,該方法是數(shù)字通信領(lǐng)域里使用最為廣泛的一種差錯校驗(yàn)方法,它的主要特征是信息幀和校驗(yàn)幀的幀長可以是任意長度。其原理是:一個由二進(jìn)制數(shù)據(jù)幀構(gòu)成的數(shù)據(jù)幀可以與一個系數(shù)為‘0’或‘1’的多項(xiàng)式相對應(yīng)。例如:代碼11100101對應(yīng)的多項(xiàng)式是x7+x6+x5+x2+1,而這個多項(xiàng)式x7+x3+1對應(yīng)的代碼為10001001。
MVB網(wǎng)絡(luò)鏈路層從設(shè)備中幀校驗(yàn)序列的生成部分相應(yīng)的串行數(shù)據(jù)和檢驗(yàn)碼,然后利用曼徹斯特模塊進(jìn)行編碼。MVB網(wǎng)絡(luò)鏈路層使用的校驗(yàn)序列是由7位循環(huán)冗余校驗(yàn)碼和1位偶校驗(yàn)擴(kuò)展得到的一個8位校驗(yàn)幀。設(shè)計(jì)中循環(huán)冗余校驗(yàn)的計(jì)算方法是利用串行的方法,其電路結(jié)構(gòu)由一個線性反饋移位寄存器(LFSR)和一些異或單元構(gòu)成,其結(jié)構(gòu)單元如圖5所示。
圖5CRC校驗(yàn)原理圖
2.3收發(fā)緩沖器模塊
發(fā)送緩沖器模塊是臨時存儲鏈路層數(shù)從設(shè)備將要進(jìn)行發(fā)送至MVB網(wǎng)絡(luò)鏈路層里的數(shù)據(jù)。接收緩沖器模塊是臨時存儲曼徹斯特解碼器模塊需要進(jìn)行MVB網(wǎng)絡(luò)上接收的數(shù)據(jù)。
在MVB網(wǎng)絡(luò)鏈路層數(shù)據(jù)發(fā)送過程中,為了提高數(shù)據(jù)的傳輸速率,偶發(fā)的處理大數(shù)據(jù)流。需要設(shè)計(jì)一個將即將發(fā)送的數(shù)據(jù)幀存儲到一個特定的區(qū)域,即發(fā)送緩存區(qū)(發(fā)送緩存器)。該區(qū)域是由一個同步單口的FIFO組成的模塊,該模塊能夠滿足對數(shù)據(jù)總線發(fā)送過來的所有數(shù)據(jù)的一個暫時性的存儲操作,與此同時,該緩存器模塊還能生成讀寫操作信號以及讀寫標(biāo)志位。
在MVB網(wǎng)絡(luò)鏈路層數(shù)據(jù)傳輸過程中,不僅需要發(fā)送緩存器模塊,接收緩存器模塊同樣也是不可少的。該接收緩存器模塊的設(shè)計(jì)原理與發(fā)送緩存器模塊是一樣的,其核心部分同樣也是一個FIFO模塊。該模塊的功能是完成MVB網(wǎng)絡(luò)鏈路層數(shù)據(jù)的緩存,如果MVB網(wǎng)絡(luò)鏈路層傳輸過來的數(shù)據(jù)幀經(jīng)過譯碼器譯碼之后,控制單元模塊通過相應(yīng)的指令來緩存數(shù)據(jù)幀,其仿真波形如圖6所示。
圖6收發(fā)緩沖器模塊仿真波形
2.4通信存儲器模塊
通信存儲器是MVB網(wǎng)絡(luò)鏈路層中的重要組成部分,主要進(jìn)行存儲控制器和MVB網(wǎng)絡(luò)總線通信的數(shù)據(jù)流。所以,在MVB網(wǎng)絡(luò)鏈路層中,各模塊會多次訪問通信存儲器模塊以進(jìn)行數(shù)據(jù)的讀寫行為,這樣通信存儲器模塊在MVB網(wǎng)絡(luò)從設(shè)備鏈路層中是不可或缺、極其重要的。
通信存儲器??旃ぷ鬟^程是:該模塊處于MVB網(wǎng)絡(luò)鏈路層的邏輯控制模塊控制之下,把應(yīng)用處理器的數(shù)據(jù)安幀發(fā)送至MVB網(wǎng)絡(luò)中,并且在MVB網(wǎng)絡(luò)鏈路層的邏輯監(jiān)控模塊的控制之下,還將MVB網(wǎng)絡(luò)鏈路層的數(shù)據(jù)發(fā)送至應(yīng)用處理器。它能夠被總線和應(yīng)用同時訪問。通信存儲器由一組端口組成,端口內(nèi)正好有一幀準(zhǔn)備發(fā)送或接收的過程數(shù)據(jù)。
完成MVB網(wǎng)絡(luò)鏈路層通信存儲器模塊一般有3種設(shè)計(jì)方法:一是用FPGA開發(fā)板自帶的寄存器來實(shí)現(xiàn);二是用Altera公司的FPGA開發(fā)板內(nèi)嵌的IP核RAM模塊來設(shè)計(jì);三是用FPGA開發(fā)板上自帶的外部存儲器,例如用SRAM、EEPROM來實(shí)現(xiàn)。本設(shè)計(jì)最終選用的是Altera公司的FPGA開發(fā)板上自帶的IP核,使用其中的RAM模塊來實(shí)現(xiàn)設(shè)計(jì)中的通信存儲器。選擇該方法的主要原因有以下幾點(diǎn):現(xiàn)在Altera公司生產(chǎn)FPGA開發(fā)板幾乎都帶有內(nèi)存不等的片內(nèi)RAM資源,若使用FPGA開發(fā)板上自帶的外部的存儲器,就需要部分?jǐn)U展電路。因此致使電路結(jié)構(gòu)變得復(fù)雜,從而增加了不穩(wěn)定性,同時也增加了對外部寄存器訪問的延遲。經(jīng)過比較,最后選用FPGA內(nèi)部RAM模塊實(shí)現(xiàn)通信存儲器。
2.5控制單元模塊
控制單元的主要功能是:當(dāng)控制單元接到發(fā)送命令時,就從通信存儲器讀取相應(yīng)的數(shù)據(jù)并且寫入發(fā)送緩存區(qū),同時控制單元開始向編碼器發(fā)送數(shù)據(jù)命令后,編碼器開始編碼,CRC校驗(yàn)?zāi)K產(chǎn)生幀校驗(yàn)碼再加在幀頭幀尾之后發(fā)送至MVB總線。
當(dāng)譯碼器收到一個主幀時,就將該主幀發(fā)送到控制邏輯單元??刂七壿媶卧獮V除起始位,同時讀出邏輯地址位與本設(shè)備的各端口地址屬性進(jìn)行對比,如果一致,則使能相應(yīng)端口有效標(biāo)志位(即主幀有效),并在標(biāo)準(zhǔn)限定的時間內(nèi)按時發(fā)送從幀至編碼器中,并將接收到數(shù)據(jù)寫入通信存儲器單元。通信存儲器單元與編、解碼器之間由控制邏輯單元控制。對于數(shù)據(jù)接收端口,控制邏輯單元先給編碼器發(fā)送編碼命令,編碼器就會加上從幀的幀頭,然后控制邏輯單元將通信存儲器單元中的數(shù)據(jù)按一個字長寬度依次讀取出來發(fā)送給編碼器,經(jīng)過編碼器編碼后,再附加一個7位的CRC校驗(yàn)和一個1位的奇偶校驗(yàn)。對于通信存儲器端口,控制邏輯單元將解碼器解碼后的數(shù)據(jù)讀入,同時寫到臨時緩存單元,每接收一個數(shù)據(jù)幀,即接收一個8位的奇偶校驗(yàn)序列。并將接收的奇偶校驗(yàn)序列與自身生成的奇偶校驗(yàn)序列進(jìn)行對比。如果不相同,則使能“信號錯誤”標(biāo)志位,緩存單元的信息不寫入過程數(shù)據(jù)存儲器單元;如果數(shù)據(jù)沒幀有奇偶檢驗(yàn)錯誤,則按順序?qū)?shù)據(jù)依次寫入過程數(shù)據(jù)存儲單元內(nèi)??刂茊卧ぷ鬟^程如圖7所示。
3系統(tǒng)驗(yàn)證
在Quartus Ⅱ環(huán)境下,采用其內(nèi)置的ModelSim Altera仿真軟件,首先對MVB從設(shè)備鏈路層各個子模塊IP核進(jìn)行功能仿真。之后再將各個子模塊IP核綜合并將其配置到了芯片型號為EP2C70F896C8的FPGA中。在仿真環(huán)境和實(shí)際開發(fā)板都能實(shí)現(xiàn)鏈路層功能。對解碼器接收數(shù)據(jù)進(jìn)行驗(yàn)證,測試用的接收數(shù)據(jù)幀為隨意選擇的16位數(shù)據(jù):0111111011000011,系統(tǒng)在控制單元模塊的控制下幀校驗(yàn)?zāi)K計(jì)算出對應(yīng)的校驗(yàn)碼為11011101,如圖8所示。
圖7控制單元工作過程
圖8 MVB從設(shè)備鏈路層仿真波形圖
在控制單元模塊的控制下,將數(shù)據(jù)按IEC-61375標(biāo)準(zhǔn)的幀格式打包發(fā)送給MVB網(wǎng)絡(luò)從設(shè)備其它層。在整體測試中,由于之前的設(shè)計(jì)在ModelSim下進(jìn)行了全部的仿真模擬,所以測試過程比較順利,并且通過測試,驗(yàn)證了設(shè)計(jì)的正確性。
4結(jié)語
在遵從MVB網(wǎng)絡(luò)協(xié)議的基礎(chǔ)上,利用FPGA開發(fā)板提出了全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核的模塊化的設(shè)計(jì)方法。將全功能MVB網(wǎng)絡(luò)從設(shè)備鏈路層IP核分為:編碼譯碼模塊、幀校驗(yàn)?zāi)K、收發(fā)緩沖器模塊、通信存儲器模塊以及控制單元模塊。這些模塊按照控制單元模塊發(fā)送的指令執(zhí)行相應(yīng)的操作。經(jīng)過對每個模塊進(jìn)行功能仿真和FPGA 驗(yàn)證,充分論證了所設(shè)計(jì)的方案是可行的。所設(shè)計(jì)的IP核滿足國際列車通信網(wǎng)絡(luò)標(biāo)準(zhǔn)IEC-61375中多功能車輛總線MVB網(wǎng)絡(luò)從設(shè)備鏈路層的功能。
參考文獻(xiàn):
[1](美)巴斯,夏宇聞. Verilog HDL入門[M].甘偉,譯.3版.北京:北京航空航天大學(xué)出版社,2008.
[2]周潤景,蘇良碧.基于Quartus Ⅱ的數(shù)字系統(tǒng)Verilog HDL設(shè)計(jì)實(shí)例詳解[M].北京:電子工業(yè)出版社,2012.
[3]劉東華.Altera系列FPGA芯片IP核詳解[M].北京:電子工業(yè)出版社,2014.
[4]于雷.TCN多功能車輛通信總線的FPGA設(shè)計(jì)[D].武漢:中南民族大學(xué),2009.
[5]陳艷子.MVB網(wǎng)絡(luò)接口單元的研究與FPGA實(shí)現(xiàn)[D].長沙:湖南科技大學(xué),2008.
[6]魏耀南.四類設(shè)備網(wǎng)絡(luò)接口設(shè)計(jì)及實(shí)現(xiàn)[D].南昌:華東交通大學(xué),2010.
[7]幸柒榮.基于FPGA的MVB2類設(shè)備控制器設(shè)計(jì)[D].南昌:華東交通大學(xué),2009.
[8]牛濤.基于IEC61375標(biāo)準(zhǔn)的MVB通信控制器的設(shè)計(jì)[D].北京:北京交通大學(xué),2007.
[9]王立德,王永祥.一種MVB接口IP軟核[P].中華人民共和國國家知識產(chǎn)權(quán)局:200910078089.2,2009.
[10]青鋒,朱其新,幸柒榮,等.基于FPGA的MVBC幀收發(fā)器設(shè)計(jì)[J].華東交通大學(xué)學(xué)報,2012,27(6):47-51.
[11]陳特放,淡興文,成庶,等.基于雙FPGA的MVB通用接口研制[J].機(jī)車電傳動,2012(4):1-5.
[12]Jaime, Jiménez, José, et al. Design of a master device for the multifunction vehicle bus[J]. IEEE Transactions on Vehicular Technology,2007,1(6):3695-3707.
[13]Moreno J C, Laloya E J, Navarro J. Line redundancy in MVB-TCN devices:a control unit design[J]. Electrotechnical Conference,2006,25:789-794.
IP core design of slave device link layer in MVB network based on FPGA
HU Yuanpeng,WANG Hongzhi*,HU Huangshui
(School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China)
Abstract:With modular design method, the slave device link layer IP core is divided into several modules which include coding decoding, frame calibration, communication and control. QuartusⅡ and Verilog HDL applied as developing environment to realize the specific function of each module. FPGA development board is designed to test the link layer functions and the experimental result shows that the design of IP core meets international train communication network standard IEC-61375.
Key words:MVB; FPGA; slave device; link layer; IP core.
中圖分類號:U 285
文獻(xiàn)標(biāo)志碼:A
文章編號:1674-1374(2016)01-0020-05
DOI:10.15923/j.cnki.cn22-1382/t.2016.1.05
作者簡介:胡遠(yuǎn)朋(1989-),男,漢族,湖北咸寧人,長春工業(yè)大學(xué)碩士研究生,主要從事軌道列車通信網(wǎng)絡(luò)技術(shù)方向研究,E-mail:huyp@163.com. *通訊作者:王宏志(1961-),男,漢族,黑龍江牡丹江人,長春工業(yè)大學(xué)教授,博士,主要從事數(shù)字信號處理方向研究,E-mail:wanghongzhi@ccut.edu.cn.
基金項(xiàng)目:吉林省工業(yè)和信息化廳省校合作項(xiàng)目([2013]227); 吉林省科技廳科技攻關(guān)計(jì)劃項(xiàng)目(20140204037GX)
收稿日期:2015-09-10