基于FPGA的汽車(chē)ECU設計
圖3 在FPGA中部署的汽車(chē)ECU方框圖
FPGA方法能夠實(shí)現與多處理器平臺相媲美的系統性能,且和單核處理器一樣簡(jiǎn)單易用,這主要歸功于采用了可與主機處理器并行處理的功能強大的、自動(dòng)化定制協(xié)處理器。
這種方法能夠實(shí)現與多處理器平臺相媲美的系統性能,而且就軟件開(kāi)發(fā)和維護而言,和單核處理器一樣簡(jiǎn)單易行。通過(guò)使用專(zhuān)用硬件構建可與主機處理器并行處理的功能更強大的自動(dòng)化定制協(xié)處理器,就可實(shí)現這種最佳平衡。
從概念上來(lái)說(shuō),可以通過(guò)將這些系統架構用RTE接口劃分為頂層和底層兩個(gè)彼此獨立的主要層次來(lái)要簡(jiǎn)化設計。頂層相當于A(yíng)UTOSAR的應用層,由負責管理車(chē)輛中最終用戶(hù)功能的軟件組件構成。而底層則由硬件和基礎軟件乃至RTE鏈路構成。應用層從數值上來(lái)說(shuō),可代表約90%的車(chē)載高級功能,而且所有RTE以上的源代碼都可重復利用。
同時(shí),底層包含能夠賦予頂層靈活性和多用性的全部功能。底層可完成特定硬件平臺上所有可重用功能的定制化。這樣,頂層從本質(zhì)上說(shuō)是通過(guò)以有限狀態(tài)機(FSM)形態(tài)實(shí)現的算法來(lái)實(shí)現對某些車(chē)輛負載、傳感器和制動(dòng)器的控制的一套軟件功能。這些算法由CPU循環(huán)執行,并在操作系統控制的軟件任務(wù)中調度。
底層還負責實(shí)現CPU連接的所有標準外設的驅動(dòng)程序,例如A/D轉換器、PWM控制器、定時(shí)器或者存儲器控制器,從而讓頂層的抽象具備可行性。底層負責管理那些需要得到實(shí)時(shí)響應的事件。在這方面可編程邏輯能夠起到一定的作用。其構想為:讓主機CPU將應用當作一個(gè)簡(jiǎn)單的免受通常硬件造成的外部事件影響的軟件功能序列來(lái)處理,但要定期讀或寫(xiě)RTE信號,讓FSM進(jìn)行相應的調整。底層對硬件事件進(jìn)行隱藏與管理,然后在RTE中對其進(jìn)行預處理并更新特定信號,或作為結果,根據自身具體任務(wù)安排實(shí)時(shí)地執行特定的行動(dòng)。
將定制硬件控制器連接至系統CPU可以最大限度地降低對共享資源的需求,只要這些控制器能夠自動(dòng)運行。從操作系統的角度來(lái)看,這樣做有助于降低系統的復雜性(避免仲裁、時(shí)延、重試機制等)。
采用專(zhuān)用硬件的另一項優(yōu)勢在于可以更簡(jiǎn)便地實(shí)現——般在軟件中通過(guò)多線(xiàn)程才能實(shí)現的某些功能,因為硬件較軟件內在更具并行性。另外,這種靈活的硬件能夠采用并行和流水線(xiàn)硬件設計,將算法計算強度高的部分進(jìn)行硬連接,而不是采用馮.諾伊曼(Von Neumann)計算機所采用的序列軟件方法,從而減少執行時(shí)間。
用戶(hù)可以將在MCU和BSW層中綜合的外設和硬件協(xié)處理器設置成高智能化水平,以釋放CPU時(shí)間,從而簡(jiǎn)化車(chē)載ECU的軟件。
隨著(zhù)ECU平臺日趨復雜化,系統所需的I/O線(xiàn)路數也在不斷增加。在這方面FPGA較微控制器有明顯的優(yōu)勢,因為FPGA一般能夠提供多得多的用戶(hù)引腳數。這一點(diǎn)一般與基于MCU的ECU有關(guān),因為這種ECU需要采用執行并—串數據轉換的外部芯片(比如數字移位寄存器或模擬多路復用器)來(lái)擴展ECU的輸入和輸出。采用FPGA可以繞開(kāi)這些外部組件,進(jìn)而縮減材料清單成本以及電子開(kāi)發(fā)板的PCB尺寸。
先進(jìn)的FPGA器件已經(jīng)集成有模數轉換器。這個(gè)特性對汽車(chē)設計意義重大,因為許多ECU使用模擬信號(比如電池電壓)來(lái)實(shí)現所需的部分功能。在可編程邏輯器件中集成模數轉換器為FPGA開(kāi)辟了新的應用領(lǐng)域。
與MCU類(lèi)似,FPGA也提供遠程更新功能。但在這里需要提醒的是,下載到FPGA巾的位流不僅涉及到軟件代碼,而且與硬件電路也息息相關(guān)。這意味著(zhù)就算產(chǎn)品已經(jīng)進(jìn)入量產(chǎn)階段,仍然可以通過(guò)系統更新或升級來(lái)修改硬件設計。汽車(chē)產(chǎn)業(yè)非常欣賞這種靈活性,因為它能夠在產(chǎn)品發(fā)布后修改缺陷(軟/硬件均可)。
在任何嵌入有符合ISO 26262安全相關(guān)要求的功能的ECU中,涉及該實(shí)現方案的軟硬件必須根據其分類(lèi)滿(mǎn)足一定程度的保護要求。從軟件的角度講,它必須體現出抗干擾能力,即運行在ECU中的非安全相關(guān)代碼一定不能危及同一ECU中安全相關(guān)類(lèi)的代碼的運行。這種隔離是保證安全相關(guān)功能與非安全相關(guān)功能在同一處理器上正確并行運行所必須的。一般來(lái)說(shuō),在可編程邏輯中管理這些指標比在MCU中具有更大的靈活性。
對于面向功能安全的存儲器保護策略,有必要確保只能授權的安全軟件組件有權對特定安全相關(guān)信號進(jìn)行寫(xiě)入存取。在MCU器件環(huán)境中,存儲器分區提供了一種故障約束機制,能夠將軟件應用彼此分離,避免其間發(fā)生數據錯誤??删幊踢壿嫼苡锌赡軐?shí)現一種更有效的自我保護機制??删幊踢壿嬁梢酝ㄟ^(guò)專(zhuān)用的單個(gè)雙端口存儲器來(lái)管理與安全信號相關(guān)的RTE緩存,這樣數據從寫(xiě)端口寫(xiě)入,從讀端口讀取。采用這種方法,可以采用專(zhuān)用的硬件控制器給寫(xiě)入或讀取這些來(lái)自軟件側的信號設置不同的約束條件。這種方法也可以采用寄存器業(yè)實(shí)現。
能夠在ECU系統中導入定制硬件解決方案是FPGA的一大優(yōu)勢,特別是對安全相關(guān)的功能而言。具體而言,對I/O引腳和GPIO控制器,在安全功能中涉及的引腳布局可以組合成定制的I/O端口,僅供ECU中的安全組件訪(fǎng)問(wèn),與器件的其余引腳分離。這是將系統的安全相關(guān)引腳與非安全相關(guān)引腳分開(kāi)的理想辦法,從設計上避免了干擾的發(fā)生。任何對非安全引腳的訪(fǎng)問(wèn)都不會(huì )破壞安全引腳的狀態(tài),因為安全引腳只受安全相關(guān)代碼的管理。這種構思的具體描述見(jiàn)圖4。
圖4 軟/硬件聯(lián)合設計的安全架構,可將安全相關(guān)端口和非安全相關(guān)端口隔離開(kāi)來(lái),以保證無(wú)干擾
另外,還能夠根據應用或處理該應用的軟件組件的需求定制每個(gè)GPIO端口的大小,從而避免將GPIO端口轉換為不同應用共享的物理資源,如MCU端口的情況。用這種方法,FPGA中每一個(gè)由不同軟件組件(比如車(chē)窗升降器、雨刷、外后視鏡等)管理的應用都能夠將自己特定的端㈠映射到系統存儲映射中特定的寄存器。這在MCU平臺上無(wú)法做到,因為MCU的端門(mén)有固定尺寸(一般為8、16或32位寬)且按字長(cháng)尋址,而非按位尋址。因此在采用MCU的情況下,這種控制寄存器在程序執行的時(shí)候變成了有多個(gè)SWC訪(fǎng)問(wèn)的共享資源。
我們可以把用于GPIO控制器的策略擴展用于其它標準外設。這樣AUTOSAR借助SWC概念在頂層提倡的功能分區和隔離思路也可以在可編程硬件的幫助下推廣運用到較低層的資源上。這種技術(shù)如果采用基于標準MCU器件的靜態(tài)硬件解決方案是無(wú)法實(shí)現的。
我們上文介紹的用于MCU標準外設的隔離策略也可以用于安全功能的各個(gè)通道或數據路徑。這一特性尤其適用于按ISO 26262標準的ASIL分級組織的精細分類(lèi)安全目標(見(jiàn)側邊欄)。此項功能可用于將各個(gè)通道或者數據路徑分解成較低ASIL級別的冗余分區,這樣每一個(gè)通道或路徑都以冗余方式運行,后續根據各自的新級別予以實(shí)現。這種基于冗余的安全策略是選擇可編程邏輯的又一理由,因為可編程邏輯能夠在同一器件中多次例化多個(gè)相同、獨立的處理引擎。另外,滿(mǎn)足某個(gè)ASIL級別的要求用架構方法(硬件)往往比用抽象軟件能夠更輕松明晰地證明,特別是像抗干擾這樣的功能。C編程語(yǔ)言中的棧溢出或是數據指針處理不當可能會(huì )給系統帶來(lái)出乎意料的安全性問(wèn)題。
這種基于冗余的安全策略是選擇可編程邏輯的又一理由,因為可編程邏輯能夠在同一器件中多次例化多個(gè)相同、獨立的處理引擎。
可編程邏輯的靈活性及其對功能安全的適用性還帶來(lái)另一項設計優(yōu)勢,就是可以采用三模冗余(TMR)策略。這是航空航天應用中用于緩解單粒子翻轉(SEU)風(fēng)險的常見(jiàn)方法。這種緩解方案由三個(gè)相同邏輯電路構成,并行執行相同的任務(wù),對應的輸出由一個(gè)多數表決電路進(jìn)行比較。采用硬件實(shí)現這種策略效率很高。
評論