劉 彪,白衛(wèi)偉,鐘 韋
(北京交通大學 電氣工程學院,北京 100044)
基于三級隊列緩存的FlexRay網(wǎng)絡(luò)監(jiān)控平臺
劉 彪,白衛(wèi)偉,鐘 韋
(北京交通大學 電氣工程學院,北京 100044)
FlexRay以其實時性、靈活性、高帶寬的優(yōu)勢,被稱為“下一代車載網(wǎng)絡(luò)”;然而其協(xié)議相對復雜,網(wǎng)絡(luò)組網(wǎng)調(diào)試過程較困難;目前的輔助調(diào)試工具如CANoe不能進一步分析網(wǎng)絡(luò)性能,在應(yīng)用上具有局限性;針對上述問題,提出了一種同時對多個數(shù)據(jù)采集與存儲的解決方案,并以FPGA為核心設(shè)計了FlexRay網(wǎng)絡(luò)監(jiān)控平臺,利用SPI和USB總線設(shè)計了通信協(xié)議,在數(shù)據(jù)緩存方面設(shè)計了三級隊列緩存方案;該平臺實現(xiàn)了通信數(shù)據(jù)監(jiān)測功能,可以獲取結(jié)點CPU中寄存器狀態(tài)、記錄數(shù)據(jù)幀到達時間,進而分析網(wǎng)絡(luò)運行及故障狀態(tài),同時解決了大量數(shù)據(jù)緩存溢出的問題;經(jīng)過測試表明:系統(tǒng)能夠穩(wěn)定運行,適用于快速、優(yōu)化地設(shè)計FlexRay網(wǎng)絡(luò)。
FlexRay;測試平臺;FPGA;三級緩存
FlexRay具有10 MHz帶寬、雙通道冗余、消息發(fā)送時間的確定性等優(yōu)點[1-4],更適用于日益復雜的車載主干網(wǎng)絡(luò)以及對實時性要求嚴苛的線控系統(tǒng)[5]。然而FlexRay協(xié)議較復雜,需要完成四類參數(shù)——全局參數(shù)、節(jié)點參數(shù)、物理層參數(shù)與輔助參數(shù)共計超過70個參數(shù)的配置[6],同時由于啟動和同步過程的特殊性,在開發(fā)初期的結(jié)點組網(wǎng)調(diào)試過程中很不方便。
目前國外的一些商業(yè)化的輔助調(diào)試工具,比如Vector公司的CANoe.FlexRay環(huán)境及配套采集結(jié)點VN7600,可以協(xié)助完成組網(wǎng),但作為集成產(chǎn)品只能獲取通信數(shù)據(jù),不能進行進一步的網(wǎng)絡(luò)性能分析,無法獲取網(wǎng)絡(luò)運行狀態(tài)參數(shù),在通信故障情況下無法獲得運行參數(shù),也無法解決FlexRay網(wǎng)絡(luò)數(shù)據(jù)大量緩存的問題,在應(yīng)用上還有一定的局限性。
本文提出了一種同時采集多個數(shù)據(jù)采集與存儲的解決方案,并基于此方案設(shè)計了FlexRay網(wǎng)絡(luò)監(jiān)控平臺,此平臺除了可以監(jiān)測通信數(shù)據(jù)以外,還可以獲取網(wǎng)絡(luò)運行及故障狀態(tài)并且解決了大量數(shù)據(jù)緩存溢出的問題,能夠幫助工程師更快速、更優(yōu)化地設(shè)計FlexRay網(wǎng)絡(luò),同時成本相對于CANoe大大降低。
FlexRay是由BWM和Daimler Chrysler等公司形成的FlexRay聯(lián)盟(FlexRay Consortium)為了滿足未來汽車的通信需求而共同開發(fā)的車載網(wǎng)絡(luò)協(xié)議。FlexRay是一個高速、容錯的車輛總線系統(tǒng),核心概念是時間觸發(fā)的網(wǎng)絡(luò)通信協(xié)議,更加關(guān)注汽車行業(yè)的一些核心需求,比如數(shù)據(jù)傳輸率,數(shù)據(jù)通信的靈活性,更全面的拓撲選擇等。FlexRay電氣物理層為一個發(fā)送與一個或多個接收通信模塊提供了一種差分電壓連接(即總線),差分電壓通過測量兩個表示為BP(總線正)和BM(總線負)的信號線得到[7]。相較傳統(tǒng)的車用總線,F(xiàn)1exRay在很多方面都有突出的表現(xiàn),其優(yōu)點如下:
1)傳輸速率高:F1exRay有兩條分離的通信信道,相比于CAN總線1 Mbps的傳輸速率,F(xiàn)1exRay信道的數(shù)據(jù)最高傳輸速率為10 Mbps,雙通道運行時,數(shù)據(jù)的傳輸速率可以達到20 Mbps。
2)預(yù)知消息的到達時間:根據(jù)F1exRay總線的通信機制,消息是在不斷循環(huán)的周期中進行發(fā)送的。各類消息在通信周期中所占的位置己事先設(shè)定,所以各類消息的接收節(jié)點可以提前知道消息到達的時間。
3)可靠性高:F1exRay有通信冗余能力,采用分布的時鐘同步機制,實時糾正相位合速率偏差,提供了多個等級的容錯功能;并且可以采用雙通道冗余通信。
4)靈活性強:F1exRay可以實現(xiàn)同步和異步的數(shù)據(jù)傳輸,也可進行網(wǎng)絡(luò)進度的檢測;FlexRay可以實現(xiàn)總線、星型和混合拓撲網(wǎng)絡(luò)結(jié)構(gòu)的靈活配置,通過采用一種或結(jié)合兩種或兩種以上的拓撲結(jié)構(gòu)來進行分布式系統(tǒng)的配置;FlexRay媒體訪問機制靈活,靜態(tài)段采用基于時間觸發(fā)的媒體訪問機制,保證了數(shù)據(jù)通信的可預(yù)測性和時鐘同步,動態(tài)段采用基于事件觸發(fā)的媒體訪問機制,更有利于不同帶寬消息的傳輸,可以有效提高帶寬利用率。
依據(jù)FlexRay總線的特點,該監(jiān)控平臺需要實現(xiàn)如下功能:能夠接收多路FlexRay結(jié)點中CPU的數(shù)據(jù)幀;能夠查看CPU的寄存器;能夠接收錯誤類消息;能夠獲取數(shù)據(jù)幀到達時間,數(shù)據(jù)收集器能夠?qū)?shù)據(jù)發(fā)送至上位機進行存儲、分析。
本監(jiān)控平臺的總體方案包括由3個FlexRay結(jié)點組成的通信網(wǎng)絡(luò);基于FPGA進行搭建的用于對通信網(wǎng)絡(luò)進行數(shù)據(jù)采集的數(shù)據(jù)收集器以及上位機。3個FlexRay節(jié)點之間通過FlexRay總線進行數(shù)據(jù)通信,F(xiàn)lexRay節(jié)點和FPGA通過SPI總線連接,F(xiàn)PGA和上位機之間通過USB總線進行數(shù)據(jù)交互[8]。該監(jiān)控平臺采用的總體方案如圖1所示。

圖1 FlexRay網(wǎng)絡(luò)監(jiān)控平臺總體設(shè)計方案
該監(jiān)控平臺采用的FPGA是基于Altera公司的EP4CE10F17C8芯片。USB接口是基于Cypress的CY7C68031A芯片,該芯片支持高速USB2.0協(xié)議。該監(jiān)控平臺需要為FlexRay結(jié)點中的CPU嵌入一段數(shù)據(jù)打包及一段用于SPI數(shù)據(jù)通信的程序,為了提高兼容性,采用通用IO模擬SPI接口。
如圖2所示,該平臺中涉及到FlexRay結(jié)點CPU、FPGA(Field-Programmable Gate Arrary現(xiàn)場可編程器件)[9]和上位機的數(shù)據(jù)交互以及SPI總線和USB總線通信。數(shù)據(jù)通信協(xié)議設(shè)計為4層,如圖2所示。SPI字節(jié)流用于完成CPU和FPGA之間一個字節(jié)的發(fā)送,SPI幀用于CPU和FPGA之間一幀數(shù)據(jù)的傳輸,USB幀用于FPGA和上位機之間的數(shù)據(jù)傳輸。其中單片機到電腦的數(shù)據(jù)傳輸過程為,單片機將應(yīng)用層數(shù)據(jù)打包成SPI幀,SPI幀之后被拆解成單個的字節(jié)流發(fā)送至FPGA,F(xiàn)PGA將字節(jié)流組成SPI幀,之后FPGA將SPI幀打包成為USB幀發(fā)送至PC,F(xiàn)PGA和PC之間的底層通信由Cypress的USB控制器完成。最后PC應(yīng)用層拆解USB幀,再拆解SPI幀即可得到FlexRay結(jié)點CPU的應(yīng)用數(shù)據(jù)。PC和FPGA之間的通信方式為PC上位機將數(shù)據(jù)打包成USB幀發(fā)送至FPGA,F(xiàn)PGA拆解USB幀即可得到數(shù)據(jù)。

圖2 通信協(xié)議架構(gòu)圖
SPI幀分為3種:寄存器數(shù)據(jù)觀測格式、不帶時間戳和帶時間戳的FlexRay通信數(shù)據(jù)觀測格式,如表1、表2、表3所示。

表1 寄存器數(shù)據(jù)觀測格式

表2 不帶時間戳的FlexRay通信數(shù)據(jù)觀測格式

表3 帶時間戳的FlexRay通信數(shù)據(jù)觀測格式
帶時間戳的SPI幀記錄數(shù)據(jù)到達FPGA的時間,可以一次發(fā)送多幀F(xiàn)lexRay幀數(shù)據(jù),不帶時間戳的SPI幀不記錄幀到達FPGA的時間,只能一次發(fā)送一條FlexRay幀數(shù)據(jù)。
在FlexRay結(jié)點CPU中嵌入SPI幀發(fā)送程序,首先按照上述表中數(shù)據(jù)格式生成SPI幀,采用了隊列形式實現(xiàn)多幀的存儲,包含隊列創(chuàng)建、1幀數(shù)據(jù)壓入隊列、3種幀格式的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建和將1個隊列中存儲的1幀數(shù)據(jù)發(fā)送。
USB幀數(shù)據(jù)用于FPGA和上位機之間的通信,本文設(shè)計3中USB幀格式,如表4~6所示。

表4 數(shù)據(jù)內(nèi)容格式

表5 控制命令格式

表6 錯誤命令格式
本監(jiān)控平臺采用了Altera的FPGA,其內(nèi)部集成的SPI IP核模塊和定時器模塊一般是作為主機設(shè)計的,本平臺需要將FPGA作為從機設(shè)計,所以SPI模塊和定時器模塊的程序都是通過Verilog HDL語言進行描述;另外Altera的FPGA內(nèi)部嵌入了Nios II處理器,該處理器是用HDL語言進行描述之后映射到FPGA的通用邏輯單元中。
利用FPGA中的Nios II處理器完成控制功能。由于需要與多個FlexRay結(jié)點連接,F(xiàn)PGA在存儲SPI幀數(shù)據(jù)時采用隊列形式,本文共設(shè)計了三級隊列緩存,以4個FlexRay結(jié)點為例的隊列緩存如圖3所示,其中Queue2_1表示第2號結(jié)點的一級緩存。一級緩存用于收集離散的字節(jié),二級緩存用于存儲一個SPI模塊的幀數(shù)據(jù),三級緩存用于向USB輸出數(shù)據(jù)。

圖3 SPI幀數(shù)據(jù)三級緩存
Nios II CPU使用Nios II 11.1 Software Build Tools軟件開發(fā),使用c語言進行編程。Nios II 程序開發(fā)軟件開發(fā)環(huán)境和JAVA編程語言的開發(fā)環(huán)境類似,都是基于Eclipse IDE制作的。其重要部分分為初始化程序,SPI握手程序,CRC校驗程序,SPI組幀程序,數(shù)據(jù)管理程序,USB幀封裝程序,隊列模塊程序。二級緩存數(shù)據(jù)管理和將三級緩存中的SPI幀封裝成USB幀的程序?qū)崿F(xiàn)均在Nios II軟核中實現(xiàn)。
二級緩存數(shù)據(jù)管理的流程如圖4所示。

圖4 二級緩存數(shù)據(jù)管理流程圖
二級緩存向第三級緩存輸出時采用依次從每個二級緩存中取一幀數(shù)據(jù)到第三級緩存中,如果數(shù)據(jù)幀有錯誤則將對應(yīng)的SPI模塊錯誤標志位置1,并且將SPI幀轉(zhuǎn)換USB幀。錯誤處理函數(shù)會將對應(yīng)的SPI模塊的二級緩存清零,直到第三級的緩存等于400字節(jié)或者第三級緩存加上一幀的數(shù)據(jù)大于400字節(jié)。
圖5是將三級緩存中的SPI幀數(shù)據(jù)封裝成USB數(shù)據(jù)幀的流程圖。

圖5 SPI幀封裝成USB幀的流程圖
其中q1和q2是兩個隊列,q1中存儲了SPI幀數(shù)據(jù),q2中存儲了USB幀數(shù)據(jù)流,q1是二級緩存,q2是三級緩存。
當上位機發(fā)起USB請求時,Nios II處理器會進入USB中斷程序,將 USB幀數(shù)據(jù)從三級緩存的數(shù)據(jù)塊轉(zhuǎn)成無符號整型數(shù)據(jù)存入到無符號整型的數(shù)據(jù)塊中。USB的中斷程序的流程如圖6所示,起始第三級緩存存入數(shù)據(jù)塊即為將字節(jié)流轉(zhuǎn)換為128個無符號整型的數(shù)據(jù)塊。

圖6 USB中斷流程圖
該測試平臺PC端軟件的功能有采集USB數(shù)據(jù)、USB界面交互、對數(shù)據(jù)進行解碼、將數(shù)據(jù)存入數(shù)據(jù)庫、靜態(tài)段時槽規(guī)劃、數(shù)據(jù)顯示以及軟件測試等。限于篇幅,此處不再介紹。
針對一個3結(jié)點的FlexRay網(wǎng)絡(luò)進行了測試。
首先對FPGA中SPI利用Modelsim[10]進行時序仿真,如圖7所示。Cs端口為外部使能功能,Clk為時鐘輸入,SI為數(shù)據(jù)輸入端口,SO為數(shù)據(jù)輸出端口。Indata是16位內(nèi)部數(shù)據(jù)輸入端口,InterCs是內(nèi)部使能端口,OutEven是數(shù)據(jù)輸出通知端口,DataOut是16bits數(shù)據(jù)輸出端口。
實際測試中,SPI時鐘頻率設(shè)定為500 kHz,利用邏輯分析儀采集到的SPI時序信號如圖8所示。通道0中采集的信號為主機MISO管腳,通道1中采集的信號為主機的SCK管腳,通道2采集的為主機的片選信號,通道3采集的是主機的MOSI管腳。

圖7 SPI模塊仿真時序圖

圖8 SPI時序信號
在FPGA中的數(shù)據(jù)需要使用,NIOS II Sofware Build Tools軟件查看其中的數(shù)據(jù),如圖9所示,隊列FlexRay_node2_queue2接入接收到了來自節(jié)點1的數(shù)據(jù),該數(shù)據(jù)為寄存器數(shù)據(jù)。

圖9 FPGA中隊列中的數(shù)據(jù)
將FPGA數(shù)據(jù)采集器通過USB接口與上位機進行連接,通信網(wǎng)絡(luò)中的數(shù)據(jù)就能通過查詢數(shù)據(jù)界面進行顯示,并轉(zhuǎn)存到數(shù)據(jù)庫中,USB通訊程序查詢數(shù)據(jù)界面如圖10所示。
從上位機數(shù)據(jù)庫中可以查詢FlexRay通信數(shù)據(jù),查詢結(jié)果如圖11所示。

圖10 USB通訊程序查詢數(shù)據(jù)

圖11 FlexRay通信數(shù)據(jù)展示界面
圖10和圖11表明,測試平臺能夠正常收集FlexRay節(jié)點的通信數(shù)據(jù),通過對比FlexRay網(wǎng)絡(luò)實際發(fā)送數(shù)據(jù),沒有出現(xiàn)緩存溢出及數(shù)據(jù)丟失情況。
本文利用FPGA及NIOS II開發(fā)技術(shù),設(shè)計了針對FlexRay網(wǎng)絡(luò)的監(jiān)控平臺,結(jié)合SPI和USB總線設(shè)計了四層網(wǎng)絡(luò)通信協(xié)議,設(shè)計了三級緩存來解決大量數(shù)據(jù)溢出的問題。經(jīng)過測試,F(xiàn)PGA中SPI模塊時序運行正常,可以正確接收到FlexRay網(wǎng)絡(luò)結(jié)點CPU的寄存器狀態(tài)以及數(shù)據(jù)到達的時間,在大量數(shù)據(jù)發(fā)送的情況下也沒有出現(xiàn)緩存溢出及數(shù)據(jù)丟失的情況。本文所設(shè)計的監(jiān)控平臺針對FlexRay開發(fā)初期中組網(wǎng)調(diào)試能夠提供較大的便利,從而縮短開發(fā)周期。
[1]陳 龍. 車載FlexRay主干網(wǎng)的構(gòu)建與性能分析[D].哈爾濱:哈爾濱工業(yè)大學,2008.
[2] 包 玥. FlexRay車載網(wǎng)絡(luò)的調(diào)度與控制協(xié)同設(shè)計[D].武漢:武漢理工大學, 2014.
[3] 孫 雨. FlexRay網(wǎng)絡(luò)通信協(xié)議在車載系統(tǒng)中的應(yīng)用與研究[D].長沙:中南大學, 2014.
[4] FlexRay Communications System - Protocol Specification, Version 3.0.1[S]. FlexRay Consortium, Oct. 2010.
[5] Paulitsch, M. Hall, B..FlexRay in aerospace and safety-sensitive systems[J]. IEEE Aerospace and Electronic Systems Magazine, 2008, 23(9):4-13.
[6] 莊江麗. FlexRay總線的組網(wǎng)及其在混合動力客車上的應(yīng)用[D].北京:北京交通大學, 2012.
[7] 苑利維,李治國,朱曉榮. 一種FlexRay總線通訊測試系統(tǒng)設(shè)計[J]. 計算機測量與控制,2016,24(11):20-23.
[8] 楊建軍. CAN總線技術(shù)在汽車中的應(yīng)用[J].上海汽車,2007(6):32-34.
[9] 曹 晶. FPGA在智能交通產(chǎn)品中的應(yīng)用研究[J].電子技術(shù)與軟件工程,2016(6):139.
[10]張桂興,張英敏,張 鵬. 基于IP核與ModelSim的正弦波發(fā)生器仿真平臺建立[J].測控技術(shù),2011,30(1):28-31.
FlexRay Network Monitoring Platform Based on Tri-stage Queue Buffer
Liu Biao, Bai Weiwei, Zhong Wei
(College of Electrical Engineering, Beijing Jiaotong University, Beijing 100044,China)
FlexRay is known as "the next generation of vehicle network" with the advantages of real-time, flexibility and high bandwidth. However, the complex protocol makes it difficult to build and debug the node network. Currently debugging tools can not be used to further analyze the network performance, which is the limitation in application, such as CANoe. In order to solve the problems above, a solution for multiple datas acquisition and storage at the same time is presented,and the FlexRay network monitoring platform is designed with FPGA as the core,where the protocol is based on the SPI and USB bus and tri-stage queue buffer is used for data cache.It realizes the monitoring function of the communication data, obtains the register state of the node CPU, records the arrival time of the frame, and then analyzes the network operation and fault state, and solves the problem of massive data buffer overflow. The result shows that the system can run stably and is suitable for designing FlexRay network quickly and optimally.
FlexRay; test platform; FPGA;tri-stage buffer
2017-02-09;
2017-02-28。
國家自然科學基金(61401017);中央高?;究蒲袠I(yè)務(wù)費(2014JBM112)。
劉 彪(1982-),男,河北保定人,副教授,主要從事智能檢測技術(shù)和現(xiàn)場總線與控制網(wǎng)絡(luò)方向的研究。
1671-4598(2017)08-0139-04
10.16526/j.cnki.11-4762/tp.2017.08.036
TP368
A