丁青鋒,朱其新,幸柒榮,魏耀南
(華東交通大學電氣與電子工程學院,江西南昌330013)
基于分布式控制的MVB是IEC61375-1(1999)TCN(列車通信網(wǎng)絡國際標準)的推薦方案,它與絞線式列車總線(WTB)構成的列車通信總線具有實時性強、可靠性高的特點[1]。而MVBC是實現(xiàn)MVB總線網(wǎng)絡功能的關鍵器件,負責訪問MVB總線并提供與微處理器的通信接口,實現(xiàn)數(shù)據(jù)傳輸[2]。
總線與MVBC之間數(shù)據(jù)通信在MVBC中由幀收發(fā)器來完成,包括編碼/譯碼模塊、CRC校驗模塊以及發(fā)送接收控制模塊等。目前MVB的收發(fā)器采用專用芯片MVBC實現(xiàn),但隨著片上系統(tǒng)技術的發(fā)展,現(xiàn)代電子設計趨向高度集成化,因此類似的接口芯片大都已經(jīng)被ASIC(application specific integrated circuit)的軟核替代[3]。本設計中采用FPGA開發(fā)MVB的幀收發(fā)模塊作為MVB控制器的一個軟核。
MVBC在數(shù)據(jù)鏈路層上處理幀的接收與發(fā)送,依靠物理層發(fā)送和接收具有電氣特征的電信號;同時為網(wǎng)絡層提供過程數(shù)據(jù)、消息數(shù)據(jù)的變量接口,該接口采用通訊存儲器實現(xiàn)。圖1為本項目設計的MVBC內(nèi)部結構框圖,由曼徹斯特編解碼模塊、發(fā)送/接收緩沖器、配置寄存器、通訊存儲器(TM)以及主控制單元等部分組成。
圖1 MVBC結構框圖
MVBC通過物理層提供的雙線冗余連接MVB,接收CPU的訪問控制,從而實現(xiàn)MVB上獲取和發(fā)送設備數(shù)據(jù),同時通過訪問監(jiān)視數(shù)據(jù)實現(xiàn)對MVB的管理。
發(fā)送數(shù)據(jù)時,MCU將幀數(shù)據(jù)從TM讀出并寫到發(fā)送緩沖器中,再由編碼器讀出并完成編碼校驗等功能后發(fā)送到MVB總線上;接收時解碼器完成對輸入幀譯碼并檢驗其有效性,把數(shù)據(jù)存放到相應的通訊存儲器中,從而完成接收數(shù)據(jù)的過程。另外,MVBC可根據(jù)配置實現(xiàn)總線主與總線從的功能,實現(xiàn)數(shù)據(jù)鏈路層以及一部分傳輸層的數(shù)據(jù)處理,并通過通訊存儲器來與上層軟件交互。
MVBC中的幀收發(fā)器主要負責幀的發(fā)送、接收,包括曼徹斯特的編碼、譯碼,CRC的產(chǎn)生與校驗,不同類型幀的構建與識別,以及碼錯的識別和沖突的檢測等。其中曼徹斯特編譯碼以及CRC校驗為主要的算法。
曼徹斯特編碼單元主要是完成主、從幀數(shù)據(jù)的編碼,其結構如圖2所示[9]。
圖2 曼徹斯特編碼原理圖
由數(shù)據(jù)并串轉換單元、CRC生成單元和幀分界符單元經(jīng)多路選擇器產(chǎn)生的串行數(shù)據(jù)與1.5 MHz的16分頻時鐘clk-l6div進行異或,然后在24 MHz的系統(tǒng)時鐘clk的上升沿通過一個一階寄存器后再將已編碼的數(shù)據(jù)輸出。雖然這樣要比串行輸入晚一個時鐘周期,但卻保證了輸出信號的穩(wěn)定。
曼徹斯特編碼[4-5]是在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數(shù)據(jù)信號;從高到低跳變表示“1”,從低到高跳變表示“0”。該碼型具有豐富的定時信息、無直流分量等優(yōu)點,特別適合于多路數(shù)據(jù)的快速切換。圖3是使用QuartusII實現(xiàn)曼徹斯特編碼波形。
圖3 曼徹斯特編碼仿真波形
因幀頭、幀尾不是曼徹斯特編碼,因此傳統(tǒng)的曼徹斯特編譯碼器無法完成此項工作,需要采用結合收發(fā)器狀態(tài)機具體狀態(tài)進行編譯碼的設計方法來解決這一難題[3]。
對于譯碼模塊來說,同步檢測是關鍵。只有檢測到同步信息,才開始譯碼周期。當曼徹斯特譯碼采用FPGA實現(xiàn)時,采用對沿的判斷來實現(xiàn):上升沿為0,下降沿為1。
前面已經(jīng)說明,MVB鏈路層數(shù)據(jù)是以幀為基本單位,一幀數(shù)據(jù)分為幀頭、數(shù)據(jù)和幀尾。幀分為主幀和從幀,幀頭采用不同的編碼,幀尾為0.75 BT+125 ns的低電平,而數(shù)據(jù)采用曼徹斯特編碼。譯碼器檢測線路起始位,判斷幀頭數(shù)據(jù)正確后,對其后的曼徹斯特數(shù)據(jù)進行譯碼,并將其轉換為正常的邏輯數(shù)據(jù),送給控制邏輯。
曼徹斯特編碼輸入后經(jīng)過三級寄存器同步消除亞穩(wěn)態(tài)。如果總線在空閑狀態(tài)之后出現(xiàn)下降沿,則被認為幀的開始位,總線上再出現(xiàn)高電平時使能16位計數(shù)器計數(shù)。如果把曼徹斯特編碼每個bit周期分為16個部分。則在數(shù)據(jù)采樣1處得到的采樣值即為曼徹斯特編碼前的原數(shù)據(jù),數(shù)據(jù)采樣2處用來幀頭幀尾檢測;總線沖突檢測的原則為總線上曼徹斯特編碼的半個bit周期之內(nèi)的電平應一致,前后半個周期電平應相異,否則被認為碼錯。
在TCN協(xié)議中,對數(shù)據(jù)需要進行兩種CRC校驗和奇偶校驗。在國際標準中,根據(jù)生成多項式g(x)的不同,CRC又可分為幾種標準[3]。本文中7位CRC校驗碼的運算公式遵循IEC 60870-5 format class FT2的規(guī)定,按如下的生成多項式計算:g(x)=x7+x6+x5+x2+1,通過數(shù)據(jù)表達式支除生成多項式得到CRC校驗碼。CRC校驗方式分為串行和并行兩種,串行方式簡單但是耗時較長,而并行方式算法復雜但只適合等長信息位校驗。由于MVB中幀數(shù)據(jù)長度是不斷變化的,但幀數(shù)據(jù)長度較短,因此本文采用串行方式。
CRC校驗碼生成電路采用線性反饋移位寄存器來實現(xiàn),也就是通用的CRC串行算法實現(xiàn)電路。如圖4所示。每一個D觸發(fā)器保存一位碼元數(shù)據(jù)[5-6]。
圖4 CRC原理圖
圖4中,寄存器通過異或門連接,當有與門連接時取反;沒有連接時直接將上一個寄存器輸入到下一個寄存器。其中,“門”用來控制信息碼的輸入。門打開時信息碼輸入;當信息碼元全部輸入完畢時,門關閉,禁止任何碼元輸入,此時7個寄存器中所存放的7位碼元就是得到的校驗位。
其次,再對7位CRC校驗碼進行偶校驗。根據(jù)偶校驗原理,偶校驗位a0計算公式如下:a0=a1⊕a2⊕a3⊕a4⊕a5⊕a6⊕a7。其中 a1,—a7為7位的CRC碼。把a0附在CRC后面就是擴展所得的8位校驗序列。
最后,所有8位數(shù)據(jù)取反得最終校驗序列。
總線接口模塊包括發(fā)送模塊和接收模塊
發(fā)送模塊主要在主控單元的控制下完成主、從幀數(shù)據(jù)的曼徹斯特編碼,打包以及相應校驗序列的產(chǎn)生和發(fā)送。發(fā)送模塊由發(fā)送控制單元、幀分界符單元、數(shù)據(jù)并串轉換單元、CRC生成單元、FIFO(first-in firstout)單元、多路選擇器單元和曼徹斯特編碼單元組成。整個模塊是通過狀態(tài)機完成,其內(nèi)部結構圖如圖5所示[9]。
圖5 發(fā)送模塊結構圖
發(fā)送模塊中除上述CRC生成單元、曼徹斯特編碼單元等之外,位控制模塊是整個發(fā)送模塊的核心,在系統(tǒng)復位或者前一幀發(fā)送完畢后將進入IDLE狀態(tài),等待發(fā)送使能信號;然后啟動發(fā)送起始分界符;在發(fā)送完分界符后啟動計數(shù)器開始發(fā)送數(shù)據(jù),每發(fā)送16位數(shù)據(jù),字計數(shù)變量word-counter加1;將校驗序列生成單元計算出的校驗序列發(fā)送到曼徹斯特編碼單元;判斷應發(fā)送的幀數(shù)據(jù)字數(shù)與變量word-counter的值是否相等,相等則進入終止分界符生成狀態(tài),否則繼續(xù)發(fā)送數(shù)據(jù),直到到發(fā)送完數(shù)據(jù)為止。本設計采用有限狀態(tài)機的方式來實現(xiàn)發(fā)送控制單元,其狀態(tài)之間的轉換如圖6所示[10]。
圖6 發(fā)送控制單元狀態(tài)轉換圖
其中HD-Jump,DATA-Jump,CS-Jump,ED-Jump四個狀態(tài)為過渡狀態(tài),IDLE為空閑等待狀態(tài),HD-SEND,DATD-SEND,CS-SEND,ED-SEND四個狀態(tài)分別為起始分界符、數(shù)據(jù)、CRC校驗碼以及結束分界符的發(fā)送狀態(tài)。
MVB總線采用冗余介質,因此MVBC需要冗余的接收模塊來完成幀的接收。接收模塊的功能主要有以下幾個:完成對幀數(shù)據(jù)的其始位判定、數(shù)據(jù)采樣、數(shù)據(jù)譯碼和數(shù)據(jù)移位功能;判斷幀數(shù)據(jù)類型,從幀中提取數(shù)據(jù)并存入接收緩沖器中。接收模塊設計電路如圖7。
圖7 接收模塊結構圖
在接收幀的同時,譯碼器將是否接到幀、何種幀類型、接收是否完成、結果對錯等信息告訴線路控制模塊,該模塊將這些信息與接收緩沖器有效上報至上層模塊進行報文分析??刂颇K從接收狀態(tài)來驗證幀的屬性:幀是否有效、幀類型、幀長度,并從讀出的數(shù)據(jù)來驗證數(shù)據(jù)的正確性[9]。其中接收控制單元是接收模塊的核心,其實現(xiàn)采用有限狀態(tài)機完成,其流程圖如圖8所示[10]。
圖8 接收控制單元狀態(tài)轉換圖
其中HD-REC,DATA-REC,CS-REC,ED-REC分別為起始分界符、校驗位以及結束分界符的接收狀態(tài)。
隨著我國高速鐵路的迅猛發(fā)展,TCN在動車組上已開始逐步得到應用,我國自行研制生產(chǎn)的CRH5的列車網(wǎng)絡控制系統(tǒng)的網(wǎng)絡架構就是采用了TCN標準。TCN網(wǎng)絡的廣泛應用也給了MVBC巨大的市場前景。本文主要介紹MVBC與MVB總線接口部分的幀收發(fā)器中各模塊的算法分析、設計實現(xiàn)。通過對各模塊進行的FPGA驗證,充分論證了該設計方案的可行性。
[1]HUANG ZHIWU,ZHOU SHENG,CUI WEIHUA,et al.,Research and designof protocol analyzer for multifunction vehicle bus[C]//in Proceedings of the 7thWorld Congress on intelligent Control and Automaiton,2008:8358-8361.
[2]黃采倫,樊曉平,陳特放.列車故障在線診斷技術及應用[M].北京:國防工業(yè)出版社,2006:212-229.
[3]侯寧,丁榮軍,王永翔,等.MVB網(wǎng)卡的幀收發(fā)器設計[J].機車電傳動,2006(1):19-22.
[4]蔡穎,諸昌鈐.MVB網(wǎng)絡接口單元的FPGA實現(xiàn)[J].鐵道機車車輛,2005,25(3):26-70.
[5]金素梅,王家禮.基于FPGA的CRC編碼器的實現(xiàn)[J].現(xiàn)代電子技術,2005,(24):18-22.
[6]張樹剛,張遂南,黃士坦.CRC校驗碼并行計算的FPGA實現(xiàn)[J].計算機技術與發(fā)展,2007(2):26-62.
[7]江文丹,董顯,薛紅巖,等.基于VHDL語言的多功能車輛總線編碼器設計與分析[J].鐵路通信信號工程技術,2008(10),9-12.
[8]付林,任志平,劉承杰.基于FPGA技術曼徹斯特編碼器設計[J].現(xiàn)代電子技術,2007(17):55-59.
[9]幸柒榮.基于FPGA的MVB2類設備控制器設計[D].南昌:華東交通大學,2009.
[10]魏耀南.MVB四類設備網(wǎng)絡接口設計及實現(xiàn)[D].南昌:華東交通大學,2010.