趙辰陽 王立德 簡 捷 李召召
(北京交通大學電氣工程學院, 100044, 北京//第一作者,碩士研究生)
隨著車載智能設備和工業(yè)控制網(wǎng)絡應用的擴展,列車通信網(wǎng)絡(TCN)傳輸?shù)臄?shù)據(jù)類型和數(shù)據(jù)量在不斷增大,傳統(tǒng)現(xiàn)場總線技術已經(jīng)難以滿足列車通信網(wǎng)絡不斷提高的帶寬需求。與此同時,列車的智能化程度越來越高,TCN的作用已經(jīng)不只是簡單的數(shù)據(jù)傳輸,還需要實現(xiàn)更多的功能,比如數(shù)據(jù)分類傳輸、網(wǎng)絡故障診斷、優(yōu)先級調度等。目前的現(xiàn)場總線技術已經(jīng)成為限制TCN發(fā)展的瓶頸,隨著以太網(wǎng)在工業(yè)領域的普及以及不斷完善,基于以太網(wǎng)的TCN逐漸成為了研究的熱點。
雖然工業(yè)以太網(wǎng)技術作為IEC 61375標準的新成員,已逐漸成為下一代TCN的潮流,但是工業(yè)以太網(wǎng)尚有一個重要的問題有待解決:工業(yè)以太網(wǎng)通信速率不高、帶寬小,不能高速傳輸過程數(shù)據(jù)和消息數(shù)據(jù)。
已有學者嘗試解決上述問題。文獻[1]將列車實時數(shù)據(jù)協(xié)議(TRDP)應用到列車控制管理系統(tǒng)中,通過使用新型TRDP,來提高TCN的通信速率,解決以太網(wǎng)通信速率低的問題;文獻[2]通過引入時分復用機制,提出了一種新的以太網(wǎng)列車的通信速率改進方法;文獻[3]提出了一種新型的基于以太網(wǎng)的TCN系統(tǒng),從控制策略入手進一步改進以太網(wǎng)列車速率低的問題。本文在已有研究的基礎上,首先從總線接口入手,提出了一種片間總線通信協(xié)議,將片間總線通信速率提升至百兆左右;然后通過信號完整性分析,在硬件上,從反射問題入手,大大降低高速數(shù)據(jù)傳輸下信號波形發(fā)生畸變的概率,保證高速數(shù)據(jù)傳輸?shù)目尚行?;最后提升TRDP傳輸過程數(shù)據(jù)與消息數(shù)據(jù)的性能。
本文提出的片間總線主要用在以FPGA(現(xiàn)場可編程門陣列)為主導的大批量、高速率數(shù)據(jù)的傳輸應用。
該片間總線所采用的是一種READY-V ALID握手通信機制。FPGA與ARM(高級RISC(精簡指令集計算機)微處理器)進行數(shù)據(jù)通信之前,先根據(jù)操作對各所用到的數(shù)據(jù)、地址通道進行握手。主要操作包括FPGA接收到ARM的 READY 信號后,將數(shù)據(jù)與 VALID 信號同時發(fā)送給 ARM,這是一種典型的握手機制,如圖1所示。
注:ACLK為片間總線時鐘信號
本文設計的片間總線包含4組通道:讀寫地址通道、讀寫數(shù)據(jù)通道,以及相應的寫應答通道和系統(tǒng)通道:
(1) 讀地址通道:主要包含 ARVALID、ARADDR、ARREADY等信號。
(2) 寫地址通道:主要包含 AWVALID、AWADDR、AWREADY信號。
(3) 讀數(shù)據(jù)通道:包含 RVALID、RDATA、RREADY、RRESP 信號。
(4) 寫數(shù)據(jù)通道:包含 WVALID、WDATA、WSTRB、WREADY 信號。
(5) 寫應答通道:包含 BVALID、BRESP、BREADY 信號。
(6) 系統(tǒng)通道:包含 ACLK、ARESETN 信號。
其中,ARESETN為復位信號,低電平有效;READY與VALID是對應的通道握手信號;BRESP 與 RRESP 分別為寫回應信號和讀回應信號。其讀寫操作順序如圖2所示。
讀操作順序為主節(jié)點與從節(jié)點進行讀地址通道握手并傳輸?shù)刂穬?nèi)容,然后在讀數(shù)據(jù)通道握手并傳輸所讀內(nèi)容以及讀取操作的回應,時鐘上升沿有效;寫操作順序為主節(jié)點與從節(jié)點進行寫地址通道握手并傳輸?shù)刂穬?nèi)容,然后在寫數(shù)據(jù)通道握手并傳輸所讀內(nèi)容,最后再寫回對應通道,并傳輸寫回應數(shù)據(jù),時鐘上升沿有效。
本文有限狀態(tài)機(FSM)的設計采用的是一種時序電路設計常用的設計方式,尤其適合設計數(shù)字系統(tǒng)的控制模塊。FSM具有速度快、結構簡單、可靠性高等優(yōu)點。片間總線主要通過FSM對片間總線從進行相關的數(shù)據(jù)及地址訪問。其讀寫狀態(tài)的狀態(tài)轉移圖如圖3所示。
圖3 讀寫狀態(tài)的狀態(tài)轉移圖
圖3所示的狀態(tài)轉移圖一共設置了8個狀態(tài),分別是復位(RESET)、讀寫初始化(RD_IDLE、WR_IDLE)、讀寫地址等待(RA_WAIT、WA_WAIT)、讀寫地址就緒(RA_START、WA_START)、讀寫數(shù)據(jù)等待(RD_WAIT、WD_WAIT)、讀寫數(shù)據(jù)進行(RD_PROC、WD_PROC)、寫完成等待(WR_WAIT)及讀寫完成(RD_DONE、WR_DONE)。FSM按照此狀態(tài)轉移圖過程對片間總線從寫數(shù)據(jù),實現(xiàn)FPGA到ARM端的數(shù)據(jù)傳輸。ARM到FPGA數(shù)據(jù)傳輸?shù)倪^程與寫流程相似。
本文設計的片間總線協(xié)議基于BURST(突發(fā))模式,主機只給出突發(fā)傳輸?shù)牡谝粋€字節(jié)的地址。從機必須計算突發(fā)傳輸后續(xù)的地址,同時突發(fā)模式傳輸不能跨4 KB邊界。其時序圖如圖4所示。
圖4 突發(fā)模式時序圖
在相應的箭頭所指示的位置進行地址和數(shù)據(jù)的寫入。其中讀寫地址使能、讀寫數(shù)據(jù)使能均在時鐘上升沿有效,數(shù)據(jù)傳輸在WLAST(寫完成信號)使能后完成,整個突發(fā)模式過程結束。對突發(fā)模式后續(xù)地址計算的參數(shù)如表1所示。
表1 突發(fā)模式計算相關參數(shù)
則有如下計算公式:
Start_Address=ADDR
Number_Bytes=2STZE
Aligned_Address=(INT(Start_Address/Number_Bytes))·Number_Bytes
Address_1=Start_Address
Address_N=Aligned_Address+(N-1)·Number_Bytes
已知ADDR = 0X0,SIZE=1,可計算出相應的Address_N =2 (N-1),以及每一次突發(fā)模式傳輸?shù)牡刂菲?,并可以確認各個BURST讀寫的偏移地址從而完成整個突發(fā)模式的讀寫。
由于有突發(fā)模式邏輯以及有限狀態(tài)機的支持,每次傳輸?shù)臄?shù)據(jù)字節(jié)可以大大增多。由于每次傳輸?shù)臄?shù)據(jù)量呈指數(shù)增長,傳輸速率大大提高。
網(wǎng)卡設計有高速DDR(雙倍速率)通路,且片間總線的通信速率在百兆左右,因此需要解決信號反射的問題,以保證片間總線高速通信的可靠性。
信號的反射一般以過沖以及振鈴的形式表現(xiàn)出來,其存在會大大影響通信的信號質量,嚴重時,可能會導致信號無法傳輸。信號的反射和互連線的阻抗密切相關,反射的本質就是互連線中的阻抗發(fā)生了變化。只要互連線中存在阻抗不連續(xù)的點,該處就會發(fā)生反射。由于任何接收器都會有一定的輸入電容,焊盤、封裝等都會引入一定量的寄生電容。輸入電容或者寄生電容就是容性阻抗不連續(xù)點,其到達接收器的時候就會產(chǎn)生相應的反射現(xiàn)象。不僅如此,容性負載還表現(xiàn)在類似于容性結構的負載,如芯片引腳較寬的焊盤、低速信號的過孔等都可以看做容性負載。例如本次設計的DDR電路,其采用的是樁線很短的菊花鏈拓撲結構,鏈路中的每一個接收器都相當于一個容性負載。其等效電路如圖5所示。
注:R——電阻;C——電容
該類的容性負載位于傳輸線中間,設計該網(wǎng)卡的傳輸線阻抗Z0都是50 Ω,因此信號到達電容時就相當于通過一個25 Ω電阻進行充電。設入射電壓最大值為U,則C兩端的電壓為:
(1)
式中:
t——信號到達電容的時間。
流過電容的電流IC為:
(2)
電容的阻抗Ze為:
(3)
本文τ取0.2 ns。當t為1 ns時,信號到達電容并開始對電容充電。當τ為0.2 ns時,電容電壓上升到632 mV,該值是其終端電壓的63.2%。
由于信號傳播到電容時,感受到的阻抗是電容阻抗和后面一段傳輸線阻抗的并聯(lián),并聯(lián)阻抗ZP為:
(4)
反射系數(shù)γ為:
(5)
如果設上升時間tr=0,則2 ns后容性負載的反射信號返回到發(fā)送端,反射、入射信號疊加口波形電壓下降到0;之后,信號的電壓按照指數(shù)的規(guī)律不斷增加,上升時間由τ決定。
接收端容性不連續(xù)會使得高低電平疊加一定的噪聲,信號到達接收端后由于接收端的高阻抗而發(fā)生反射,反射信號幅度與入射信號相同。反射信號到達中間電容時又會發(fā)生反射,電壓為負。信號就這樣在容性阻抗不連續(xù)點和其他阻抗不連續(xù)點之間不斷疊加,會產(chǎn)生很大的噪聲。
實際電路中不存在理想的傳輸線,也不可能完全匹配,因此信號反射是必然存在的。設計的關鍵在于如何把互連鏈路中的各個部件阻抗差距盡量縮小,從而減小反射信號幅度,避免多級反射對信號質量造成致命影響。實際電路中,在單端信號以及差分信號中做相應的阻抗匹配,例如單端信號按照50 Ω的阻抗匹配,差分信號按照100 Ω的阻抗匹配,從而使反射系數(shù)或者負載反射系數(shù)為0,以此來減弱或者消除信號的反射問題。同時,在實際電路中,1個驅動源驅動2個DDR芯片,且其拓撲結構采用的是菊花鏈拓撲,因此可采用串行端接的方式,在傳輸線源加33 Ω的端接電阻來抑制反射的增大。
TRDP規(guī)定了TCN過程數(shù)據(jù)和消息數(shù)據(jù)在TCN中的通信流程。如圖6所示,以標準以太網(wǎng)協(xié)議棧為基礎,在傳輸層與應用層之間增加了TRDP層,能夠為TCN中任意兩個設備之間的過程數(shù)據(jù)和消息數(shù)據(jù)通信提供有安全性保障的端到端數(shù)據(jù)傳輸。與此同時,TRDP兼容標準以太網(wǎng)協(xié)議棧。
注:TCP——傳輸控制協(xié)議;UDP——用戶數(shù)據(jù)包協(xié)議
TRDP由過程數(shù)據(jù)PD接口、消息數(shù)據(jù)MD接口、精簡TRDP、虛擬操作系統(tǒng)VOS(軟交換)和實用程序等構成。過程數(shù)據(jù)接口處理TCN上的過程數(shù)據(jù),消息數(shù)據(jù)接口處理TCN上的消息數(shù)據(jù)。其中高級PD/MD接口包括調度、線程,以及過程數(shù)據(jù)和消息數(shù)據(jù)的觸發(fā)等功能。實用程序部分包括數(shù)據(jù)的編組/解組、TRDP XML配置文件的讀取、IP/URI地址轉化、安全數(shù)據(jù)的傳輸,以及列車拓撲信息的訪問等功能。VOS提供了與不同操作系統(tǒng)的接口,上層的應用程序通過調用不同的接口實現(xiàn)不同操作系統(tǒng)下的通信功能。
TRDP規(guī)定了過程數(shù)據(jù)和消息數(shù)據(jù)的幀格式、通信流程,并提供了相應的接口函數(shù)。本文以過程數(shù)據(jù)為例,對數(shù)據(jù)傳輸模式進行分析。
過程數(shù)據(jù)的通信包括推模式和拉模式,其中主要的通信角色包括發(fā)布者Publisher、請求者Requester和訂閱者Subscriber。
推模式是源端口按照固定的周期定時向訂閱者宿端口發(fā)送過程數(shù)據(jù),源端口作為發(fā)送數(shù)據(jù)的發(fā)布者,宿端口作為接收數(shù)據(jù)的訂閱者,其通信方式如圖7所示。
圖7 推模式(一對多)通信方式
拉模式的工作模式為:由宿端口 sink 作為請求者并向作為廣播者的源端口發(fā)送請求消息,源端口收到來自宿端口的請求回復消息之后,立即將待發(fā)送的數(shù)據(jù)回復給宿端口,此時宿端口作為訂閱者,其通信方式如圖8所示。
圖8 拉模式(多對多)通信方式
Publisher作為數(shù)據(jù)的發(fā)送方,在推模式下循環(huán)發(fā)送過程數(shù)據(jù)PD,以及在拉模式下發(fā)送回復信息。同時在推模式下源端口按照固定周期定時向宿端口發(fā)送過程數(shù)據(jù)。Subscriber在拉模式和推模式中均為數(shù)據(jù)的訂閱者。
本文設計的以太網(wǎng)卡硬件上使用賽靈思公司提供的ZYNQ系列芯片,型號為 XC7Z020-2CLG400I。該類型芯片采用FPGA+ARM架構,搭載雙核Cortex-A9應用處理器AMBA,互連內(nèi)部存儲器、外部存儲器接口以及外設[4-5]。其中,ARM系統(tǒng)及外設主要有:片上只讀內(nèi)存(Read-Only Memory,ROM)、256 kB片內(nèi)隨機存儲內(nèi)存(Random Access Memory,RAM)、2個千兆網(wǎng)卡以及片內(nèi)ARM與FPGA之間的高帶寬連接。FPGA部分主要有:邏輯單元85 000個、查找表53 200個、觸發(fā)器106 400個以及JTAG(一種國際標準測試協(xié)議)調試接口1個。軟件采用linux 3.82操作系統(tǒng),TRDP功能用C語言編程實現(xiàn)。
ZYNQ(可擴展處理平臺)下TRDP程序的編譯需要遵循以下步驟:
(1) 編寫測試程序,進行通信模式、通信量的配置。
(2) 編寫Makefile(文件編寫),定義編譯規(guī)則。
(3) 配置環(huán)境變量并設置編譯鏈。
本次測試是在2個嵌入式終端設備之間,進行一對一、點對點的 TRDP 過程數(shù)據(jù)通信測試。2個設備節(jié)點分別生成 28 個源端口,以及28個宿端口。本次測試中,數(shù)據(jù)幀內(nèi)容包括本地IP、目的IP、數(shù)據(jù)發(fā)送周期以及數(shù)據(jù)長度,不同的端口通信周期設定為100 ms;數(shù)據(jù)長度設定為1 432 bit。
通過在TRDP以太網(wǎng)卡中產(chǎn)生相應的過程數(shù)據(jù),將其存入DDR內(nèi)存中的相應地址位置,同時在電腦終端顯示器上顯示過程數(shù)據(jù)發(fā)送的信息。利用邏輯分析儀,可以看到片間總線通過讀取DDR內(nèi)存,將ARM中的過程數(shù)據(jù)傳入到FPGA,通過對比發(fā)送的過程數(shù)據(jù),可以確認過程數(shù)據(jù)包發(fā)送的7C7C7C7C7C…在Chipscope(一款在線調試軟件)上抓取出來,如圖9所示。
圖9 過程數(shù)據(jù)波形圖
Wireshark是一個網(wǎng)絡封包分析軟件。Wireshark的功能是擷取網(wǎng)絡封包,并盡可能顯示出最為詳細的網(wǎng)絡封包資料。
以測試時100 ms下傳輸1 432 bit數(shù)據(jù)為例,單包數(shù)據(jù)傳輸速率設為13.98 kbit/s;通過Wireshark抓包軟件進行統(tǒng)計分析,可以得出在傳輸過程數(shù)據(jù)時數(shù)據(jù)包的接收速率近似為6 590個/s。這樣通過計算以太網(wǎng)每秒傳輸?shù)陌鼣?shù)乘以單包傳輸?shù)腷it數(shù),最終就得出通信速率為94.36 Mbit/s。由于MVB(多功能車輛總線)、WTB(絞線式列車總線)、ARCNET(一種令牌總線網(wǎng)絡)等其他鐵路通信網(wǎng)絡速率均不高于10 Mbit/s,通過對比明顯看出基于TRDP下的數(shù)據(jù)通信速率遠遠高過MVB、WTB、ARCNET等鐵路通信網(wǎng)絡的的最高通信速率。
該測試狀態(tài)為網(wǎng)絡空閑時的狀態(tài)。但以太網(wǎng)網(wǎng)速受多種情況的影響[6-8],比如:①測試時使用的TCP通信協(xié)議,容易出現(xiàn)數(shù)據(jù)延遲、數(shù)據(jù)錯位以及數(shù)據(jù)丟失的問題;②網(wǎng)絡質量差會導致設備之間延遲過高,通信不穩(wěn)定。所以,其網(wǎng)建不能完全達到100 Mbit/s,但是也基本可滿足列車通信速率的要求。
本文結合FPGA與ARM,設計了符合鐵路通信標準的基于TRDP的以太網(wǎng)卡。通過提出一種片間總線技術,從軟件和硬件的角度入手,解決了以太網(wǎng)數(shù)據(jù)傳輸速率低的問題,有效保障了列車數(shù)據(jù)高速通信,為工業(yè)以太網(wǎng)應用于TCN又向前邁進一步。