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