為提高集成架構(gòu)中車電總線通信速率,結(jié)合綜合化處理系統(tǒng)項目要求,采用雙總線結(jié)合的方式,利用CAN總線和FlexRay總線實現(xiàn)功能及搭配上的互補(bǔ),提出一種基于現(xiàn)場可編程門陣列(FPGA)的總線接口單元設(shè)計方案。通過FPGA完成CAN總線控制器、FlexRay總線控制器、RapidIO總線接口等模塊功能,實現(xiàn)高速接口的控制和擴(kuò)展,并使模塊接口具備可配置能力。測試結(jié)果表明,CAN接口及FlexRay接口在指定的波特率下均工作正常,滿足項目要求的各項性能指標(biāo)。
1 概述
CAN總線是一種有效地支持分布式控制或者實時控制的串行通信網(wǎng)絡(luò),具有多主機(jī)、高性能以及高可靠性。然而隨著汽車電子技術(shù)的發(fā)展,早期的CAN總線已經(jīng)不能很好地解決眾多電子設(shè)備之間的實時通信問題。由FlexRay聯(lián)盟制定的FlexRay協(xié)議標(biāo)準(zhǔn)成為一種理想的解決方案。FlexRay通訊協(xié)議運(yùn)用于可靠的車內(nèi)網(wǎng)絡(luò)中,是一種具備故障容錯的高速汽車總線系統(tǒng)。作為一種靈活的車載網(wǎng)絡(luò)系統(tǒng),F(xiàn)lexRay具有高速、可靠及安全的特點(diǎn),它不僅能簡化車載通信系統(tǒng)的架構(gòu),而且有助于汽車電子單元獲得更高的穩(wěn)定性和可靠性。FlexRay在物理上通過2條分開的總線進(jìn)行通信,每一條的數(shù)據(jù)速率是10 Mb/s。CAN網(wǎng)絡(luò)最高性能極限為1Mb/s,而FlexRay總數(shù)據(jù)速率可達(dá)20Mb/s。FlexRay還能夠提供很多網(wǎng)絡(luò)所不具有的可靠性特點(diǎn),尤其是FlexRay具備的冗余通信能力,通過硬件可實現(xiàn)完全復(fù)制網(wǎng)絡(luò)配置,并進(jìn)行進(jìn)度監(jiān)測。CAN總線和FlexRay總線兩者在功能及搭配上可實現(xiàn)互補(bǔ)。FPGA在數(shù)字電路設(shè)計上非常靈活且性能強(qiáng)大,在不改變外圍電路的情況下,可以編寫不同的片內(nèi)電路邏輯,以實現(xiàn)不同功能或進(jìn)行功能擴(kuò)展。
本文提出的車電總線接口單元綜合考慮用戶的具體需求,保留CAN總線作為衛(wèi)星導(dǎo)航設(shè)備接口總線,其余接口總線采用高速的FlexRay總線,既兼容較低速接口的通信速率要求,又滿足高速總線接口的需要,將CAN和FlexRay總線結(jié)合在一起,基于FPGA,使成本與效益最大化。
2 車電總線架構(gòu)
本文綜合化處理系統(tǒng)項目中處理系統(tǒng)采用多處理器結(jié)構(gòu),板間通信數(shù)據(jù)量較大。若采用PCI總線進(jìn)行信號傳輸則由于PCI總線帶寬有限,當(dāng)數(shù)據(jù)量較大時容易形成通信瓶頸,且PCI總線不支持點(diǎn)對點(diǎn)傳輸。若選用以太網(wǎng),則傳輸速率較低,軟件開銷較大,且高帶寬帶來的高成本使它在系統(tǒng)內(nèi)互連時缺乏吸引力。結(jié)合項目采用高速實時總線的具體要求,最終選擇基于VPX架構(gòu)的RapidIO總線進(jìn)行通信傳輸。VPX總線采用高速串行總線技術(shù)替代VME總線的并行總線技術(shù),支持更高的背板帶寬。其交換式結(jié)構(gòu)使得系統(tǒng)整體性能不再受主控板的控制,提高了系統(tǒng)的整體性能。通過串行RapidIO(SRIO)轉(zhuǎn)換,完成了RapidIO-CAN、RapidIO-FlexRay協(xié)議轉(zhuǎn)換功能,實現(xiàn)了車電總線與任務(wù)總線(RapidIO)的無縫連接,進(jìn)而滿足了處理系統(tǒng)項目高速、多處理器、實時的通信傳輸要求。
2.1 CAN技術(shù)
控制器局部網(wǎng)(ControllerAreaNetwork,CAN)屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。CAN的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò)。
(1) CAN的分層結(jié)構(gòu)
CAN遵從OSI模型,按照OSI基準(zhǔn)模型,CAN結(jié)構(gòu)劃分為2層:數(shù)據(jù)鏈路層和物理層,如圖1所示。
圖1 CAN分層結(jié)構(gòu)
按照IEEE802.2和802.3標(biāo)準(zhǔn),數(shù)據(jù)鏈路層又劃分為邏輯鏈路控制和媒體訪問控制;物理層又劃分為物理信令、物理媒體附屬裝置和媒體相關(guān)接口。其中,邏輯鏈路控制子層為數(shù)據(jù)傳遞和遠(yuǎn)程數(shù)據(jù)請求提供服務(wù);訪問媒體控制子層的功能主要是傳送規(guī)則,即控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯誤檢驗、出錯標(biāo)定和故障界定。
(2) CAN總線的主要特點(diǎn)
CAN為多主工作方式,網(wǎng)絡(luò)上的任意節(jié)點(diǎn)在任意時刻都可以主動地向其他節(jié)點(diǎn)發(fā)送信息,不分主從,方式靈活。其采用非破壞性的總線仲裁技術(shù),可以進(jìn)行點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)和全域廣播方式傳遞信息,多點(diǎn)同時發(fā)送信息時,按優(yōu)先級順序通信,節(jié)省總線沖突仲裁時間,避免網(wǎng)絡(luò)癱瘓。報文傳送采用短幀數(shù)據(jù)結(jié)構(gòu),傳輸時間短,抗干擾能力強(qiáng),檢錯效果好。網(wǎng)絡(luò)節(jié)點(diǎn)在錯誤嚴(yán)重的情況下可以自動關(guān)閉輸出功能,脫離網(wǎng)絡(luò),實現(xiàn)了標(biāo)準(zhǔn)化、規(guī)范化。
2.2 FlexRay技術(shù)
(1) FlexRay分層結(jié)構(gòu)
FlexRay的分層結(jié)構(gòu)由物理層、傳輸層、表示層及應(yīng)用層組成。物理層定義了信號的實際傳輸方式,包括在時域上檢測通信控制器故障的功能;傳輸層是FlexRay協(xié)議的核心,它的功能是從表示層獲得節(jié)點(diǎn)要發(fā)送的信息和把網(wǎng)絡(luò)上接收的信息傳送給表示層;表示層完成信息過濾、信息狀態(tài)處理以及通道控制器與主機(jī)的接口;應(yīng)用層由應(yīng)用系統(tǒng)定義。
(2) FlexRay節(jié)點(diǎn)結(jié)構(gòu)
FlexRay節(jié)點(diǎn)的核心是ECU(Electronic Control Unit),是接入車載網(wǎng)絡(luò)中的獨(dú)立完成相應(yīng)功能的控制單元。主要由電源供給系統(tǒng)、主處理器、固化FlexRay通信控制器、可選的總線監(jiān)控器和總線驅(qū)動器組成。主處理器提供和產(chǎn)生數(shù)據(jù),并通過FlexRay通信控制器傳送出去。其中驅(qū)動器和監(jiān)控器的個數(shù)對應(yīng)于通道數(shù),與通信控制器和微處理器相連??偩€驅(qū)動器連接著通信控制器和總線,或是連接總線監(jiān)控器和總線。主處理器把FlexRay控制器分配的時間槽通知給總線監(jiān)視器,然后總線監(jiān)視器就允許FlexRay控制器在這些時間槽中傳輸數(shù)據(jù)。數(shù)據(jù)可以隨時被接收。結(jié)構(gòu)圖如圖2所示。
圖2 FlexRay節(jié)點(diǎn)結(jié)構(gòu)
(3) FlexRay網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
FlexRay的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)主要分為3種:總線式,星型,總線星型混合型。在星型結(jié)構(gòu)中還存在級聯(lián)方式。通常,F(xiàn)lexRay節(jié)點(diǎn)可以支持2個信道,在雙信道系統(tǒng)中,不是所有節(jié)點(diǎn)都必須與2個信道連接。與總線結(jié)構(gòu)相比,星狀結(jié)構(gòu)的優(yōu)勢在于:它在接收器和發(fā)送器之間提供點(diǎn)到點(diǎn)連接。該優(yōu)勢在高傳輸速率和長傳輸線路中尤為明顯。另一個重要優(yōu)勢是錯誤分離功能。雙通道備用星型結(jié)構(gòu)如圖3所示。
圖3 FlexRay網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
(4) FlexRay狀態(tài)
FlexRay的節(jié)點(diǎn)有6個基本的運(yùn)行狀態(tài):
1)配置狀態(tài)(默認(rèn)配置/配置):用于各種初始化設(shè)置,包括通信周期和數(shù)據(jù)速率。
2)就緒狀態(tài):用于進(jìn)行內(nèi)部的通信設(shè)置。
3)喚醒狀態(tài):用于喚醒沒有在通信的節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)的收發(fā)器接受到喚醒特征符后,對主機(jī)處理器和通信控制器進(jìn)行上電,喚醒并激活通信控制器、總線驅(qū)動器和總線監(jiān)控器。
4)啟動狀態(tài):用于啟動時鐘同步,并為通信做準(zhǔn)備。只有將節(jié)點(diǎn)喚醒后,才能啟動節(jié)點(diǎn)工作。系統(tǒng)的啟動由2個邏輯步驟組成,冷啟動節(jié)點(diǎn)啟動和其他非冷啟動節(jié)點(diǎn)通過接受啟動幀與冷啟動節(jié)點(diǎn)整合到一起。
5)正常狀態(tài)(主動/被動):可以進(jìn)行通信的狀態(tài)。
6)中斷狀態(tài):表明通信中斷。
FlexRay狀態(tài)圖如圖4所示。
圖4 FlexRay狀態(tài)
3 車電總線接口單元設(shè)計
3.1 總線接口單元組成
在綜合化處理系統(tǒng)架構(gòu)中,車電總線訪問可簡化為下列部分:主控單元,RapidIO交換單元,總線接口單元和車電總線。主控單元包含處理器和PCIe-SRIO轉(zhuǎn)接橋。處理器將信號發(fā)送至PCIe-SRIO轉(zhuǎn)接橋,數(shù)據(jù)通過SRIO交換,傳輸至總線接口單元,最終實現(xiàn)處理器對車電總線上各傳感器的訪問與控制。車電總線訪問的整體架構(gòu)如圖5所示。
圖5 系統(tǒng)總體架構(gòu)
總線接口單元采用3U、VPX結(jié)構(gòu),板卡主要由XILINX的Virtex6系列FPGA XC6VLX75T完成CAN總線控制器、FlexRay總線控制器、RapidIO總線接口等模塊功能,輔之以CAN和FlexRay總線接口PHY、晶振、電壓轉(zhuǎn)換器等芯片完成總線接口單元設(shè)計。總線接口單元主要完成RapidIO-FlexRay、RapidIO-CAN協(xié)議轉(zhuǎn)換功能,實現(xiàn)了車電總線與任務(wù)總線(RapidIO)的無縫連接。由于該總線接口模塊不含F(xiàn)lexRay總線監(jiān)控功能,若要實現(xiàn)對總線的監(jiān)控,需在節(jié)點(diǎn)上外接監(jiān)控設(shè)備??偩€接口單元功能組成框圖如圖6所示。
圖6 總線接口單元功能組成框圖
3.2 車電總線接口設(shè)計
3.2.1 CAN總線接口設(shè)計
單元模塊通過FPGA輸出四路GPIO信號,GPIO連接電壓轉(zhuǎn)換芯片以完成電平轉(zhuǎn)換,CAN總線信號完成電平轉(zhuǎn)換后連接CAN芯片,從而輸出CAN總線信號與總線接口單元VPX接插件相連,如圖7所示。
圖7 CAN總線接口硬件組成原理
CAN幀時,處理器驅(qū)動在內(nèi)存定義并組織一個下圖結(jié)構(gòu)體,使用RapidIO中NWRITE-R事務(wù),寫入FPGA控制器CAN發(fā)送緩沖區(qū)地址,即刻完成發(fā)送;當(dāng)CAN控制器完成發(fā)送后,將對該處理器產(chǎn)生中斷,告知發(fā)送結(jié)果。
當(dāng)接收CAN幀時,處理器驅(qū)動在內(nèi)存定義一個上圖結(jié)構(gòu)體,并將內(nèi)存地址使用Rapid IO中NWRITE-R事務(wù),寫入FPGA控制器CAN接收緩沖區(qū)地址;當(dāng)CAN控制器接收完一幀后,通過NWRITE-R事務(wù)寫入對該處理器地址空間中并產(chǎn)生中斷,告知發(fā)送結(jié)果。圖8是內(nèi)存數(shù)據(jù)結(jié)構(gòu)。
圖8 CAN內(nèi)存數(shù)據(jù)結(jié)構(gòu)
3.2.2 FlexRay總線接口設(shè)計
單元模塊通過FPGA輸出兩路GPIO信號,GPIO連接電壓轉(zhuǎn)換芯片以完成電平轉(zhuǎn)換,F(xiàn)lexRay總線信號完成電平轉(zhuǎn)換后各輸出兩路連接FlexRay收發(fā)器。由于該XILINX核中只支持FlexRay單信道,因此選擇兩路FlexRay信道形成冗余設(shè)計,2組信道都分為A、B2個通道,滿足FlexRay雙信道的要求。收發(fā)器選用TJA1080,TJA1080收發(fā)器是恩智浦公司出品的一款針對FlexRay的具有高速時間觸發(fā)通訊系統(tǒng)的收發(fā)芯片,也是全球第一款符合FlexRay協(xié)議2.1規(guī)定的FlexRay收發(fā)器,具有高達(dá)10Mb/s的數(shù)據(jù)傳輸速度。每路信號分別通過JTA1080后,最終輸出四路FlexRay信號,并與總線接口單元VPX接插件相連。詳細(xì)結(jié)構(gòu)如圖9所示。
圖9 FlexRay總線接口硬件組成原理
FlexRay每個數(shù)據(jù)的數(shù)據(jù)幀由幀頭、有效數(shù)據(jù)段、幀尾3個部分組成。若為發(fā)送,當(dāng)時間片快到時,鏈表控制器通過RioMaster模塊發(fā)送NREAD事務(wù)包請求數(shù)據(jù),返回的數(shù)據(jù)進(jìn)入SendFIFO,由FlexRayIP讀取。若為接收,當(dāng)時間片到時,鏈表控制器提供接收的基地址,數(shù)據(jù)收到后將存放于RecvFIFO中,結(jié)合接收基地址,通過NWRITE-R寫入遠(yuǎn)端內(nèi)存,之后發(fā)送Doorbell使處理器產(chǎn)生中斷。其內(nèi)存數(shù)據(jù)結(jié)構(gòu)如圖10所示。
圖10 FlexRay內(nèi)存數(shù)據(jù)結(jié)構(gòu)
3.3 FPGA邏輯設(shè)計
本文設(shè)計通過硬件實現(xiàn)CAN總線控制器、FlexRay總線控制器、RapidIO總線接口等模塊功能。采用Virtex6系列FPGAXC6VLX75T完成RapidIO-FlexRay、RapidIO-CAN協(xié)議轉(zhuǎn)換功能。
FPGA單元包含SRIO控制器、microblaze軟核及四路CAN控制器和兩路FlexRay控制器。處理器將信號發(fā)送至PCIe-SRIO轉(zhuǎn)接橋,經(jīng)過橋芯片轉(zhuǎn)換發(fā)送至SRIO交換板。交換板的一端將信號轉(zhuǎn)發(fā)到SRIO控制器上,SRIO核通過PLB總線將控制信號發(fā)送至microblaze軟核,經(jīng)過處理信號通過PLB總線發(fā)送至四路CAN控制器和兩路FlexRay控制器。每路CAN控制器均連接CAN轉(zhuǎn)換器ADM3053,每路FlexRay控制器均連接FlexRay收發(fā)器JTA1080。經(jīng)過轉(zhuǎn)換器最終分別連接至CAN總線和FlexRay總線上。該邏輯設(shè)計的主要特點(diǎn)有3個:
(1)SRIO-PLB橋?qū)崿F(xiàn)了總線接口單元模塊的srio總線接入功能。
(2)CAN和FlexRay總線控制器通過板載收發(fā)器實現(xiàn)了CAN、FlexRay總線的接入功能。
(3)microblaze軟核實現(xiàn)了CAN、FlexRay控制器消息和事件的預(yù)處理,完成了與SRIO總線的互連,并做了任務(wù)遷移,減輕了主控處理器的壓力。
詳細(xì)邏輯結(jié)構(gòu)如圖11所示。
圖11 FPGA模塊內(nèi)部邏輯結(jié)構(gòu)
4 仿真與驗證
4.1 RapidIO仿真與驗證
在Xilinx的ISE14.1開發(fā)環(huán)境下,基于車電總線接口單元模塊對RapidIO接口進(jìn)行了驗證,利用ModelSim對邏輯設(shè)計進(jìn)行仿真,其波形圖如圖12、圖13所示,通過判斷數(shù)據(jù)的一致性可以驗證RapidIO總線接口的正確性和有效性。
圖12 RapidIO數(shù)據(jù)發(fā)送時序圖
圖13 RapidIO數(shù)據(jù)接收時序圖
4.2 FlexRay仿真與驗證
基于車電總線接口單元模塊對FlexRay接口狀態(tài)機(jī)制進(jìn)行了驗證,利用ModelSim對邏輯設(shè)計進(jìn)行仿真,其波形圖如圖14所示。
圖14 FlexRay數(shù)據(jù)收發(fā)時序圖
從仿真波形中可以清楚地看出FlexRay狀態(tài)機(jī)制的變化過程。當(dāng)節(jié)點(diǎn)的收發(fā)器接收到喚醒特征符后,對主機(jī)處理器和通信控制器進(jìn)行上電,喚醒并激活通信控制器、總線驅(qū)動器和總線監(jiān)控器。節(jié)點(diǎn)0被喚醒后,將返回喚醒完成信號,并處于等待啟動狀態(tài)。接著節(jié)點(diǎn)1收到喚醒信號,返回喚醒完成信號,節(jié)點(diǎn)1進(jìn)入啟動狀態(tài),節(jié)點(diǎn)0也進(jìn)入啟動狀態(tài),最終都進(jìn)入主動工作狀態(tài),開始狀態(tài)機(jī)循環(huán),顯示FlexRay總線接口工作正常。
4.3 CAN仿真與驗證
調(diào)用FPGA內(nèi)的CAN核基于車電總線接口單元模塊對FlexRay接口狀態(tài)機(jī)制進(jìn)行驗證,利用ModelSim對邏輯設(shè)計進(jìn)行仿真,結(jié)果如圖15所示。端口1發(fā)送擴(kuò)展幀信號,端口0接收,當(dāng)接收ACK信號時,端口1也接收ACK信號,完成整個擴(kuò)展幀的收發(fā)過程。
圖15 CAN數(shù)據(jù)收發(fā)時序圖
圖15說明了總線接口單元模塊RapidIO接口、FlexRay接口和CAN接口完成仿真測試,工作正常,完成了RapidIO-FlexRay、RapidIO-CAN的協(xié)議轉(zhuǎn)換功能。
5 結(jié)束語
目前,筆者所在團(tuán)隊已成功完成核心處理機(jī)系統(tǒng)正樣樣機(jī)的整體測試及驗證工作。本文設(shè)計在該系統(tǒng)中已經(jīng)通過功能性測試,基于RapidIO的CAN總線控制器在1Mb/s的最大波特率下工作正常,滿足各項功能指標(biāo),基于RapidIO的FlexRay總線控制器在10Mb/s的最大波特率下也滿足各項功能指標(biāo)。下一步的工作將通過專業(yè)的CAN、FlexRay網(wǎng)絡(luò)測試儀器對本文設(shè)計進(jìn)行更全面的性能測試,同時將著重解決FlexRay總線接口的信道冗余問題,通過對FlexRay控制器IP核的升級,使之支持雙信道通信,從而滿足FlexRay真正意義上的雙信道冗余要求。