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