【導讀】ADAS是一項為確保道路安全而設計的創(chuàng)新技術。這項系統(tǒng)性能對未來的標準商用貨架發(fā)起了挑戰(zhàn),而FPGA則可以助力ADAS的設計。本文主要解析的是使用FPGA實現ADAS設計的功能安全要求。
基于雷達和攝像機的應用現在也被用于安全駕駛領域。最初,自適應巡航控制和道路偏離報警等這些高級輔助駕駛系統(tǒng)(ADAS)只是一些非常便利的特性。而現在,它們在車輛控制上扮演了更積極主動的角色,支持實現道路輔助保持(LKA)等功能。以前的高性能CPU被認為是最適合這些應用的器件,但是綜合考慮計算性能和低功耗之后,促使工程師轉而采用FPGA器件。
ADAS需要滿足特殊的功能安全要求。2011年,載重3.5噸以下客車的ISO26262標準發(fā)布,其目的是降低系統(tǒng)出現故障后造成危險狀態(tài)的風險。這一標準要求采用嚴密的設計過程,在應用執(zhí)行過程中探測隨機硬件故障,以減少系統(tǒng)性故障。
應用開發(fā)人員定義了專門的安全目標,針對每一目標分配了相應的汽車安全完整性等級(ASIL)。對于應用中最高級別的ASIL,通常定義了每一組件從開發(fā)直至工作到壽命終了時應滿足的要求。圖1顯示了從客戶需求角度看,ADAS應符合的ASIL目前的范圍。
圖1.ADAS ASIL市場需求(注:Range of Market Requirements for ADAS Applicatios:針對ADAS應用的市場要求范圍)
ASIL-B是市場上的最低級別,而某些應用則要求采用ASIL-D以支持某些功能。越來越多的ASIL有更嚴格的要求。在某些具體實現中,組件的通用ASIL或者條目(系統(tǒng))等級都會帶來不必要的復雜度,影響了開發(fā)成本和進度。分析系統(tǒng)概念,得出安全概念和要求后,還可以把應用分成幾種不同的步驟,這就具有不同的ASIL,更容易實現,而且實現的效率更高。
例如,前端攝像機應用使用了ADAS中常見的一個圖像傳感器。圖2顯示了系統(tǒng)的高級結構圖。
圖2.高級單前端攝像機ADAS
一個圖像傳感器連接至圖像處理器,例如可以是Altera Cyclone V SoC。信號處理鏈和數據流被分成四個部分。首先,通過把圖像變換成更實用的表現形式,在像素級上進行底層處理。然后,對行圖像或者塊圖像進行中間級處理,使用相應的算法,提取出邊沿等特征。下一步,進行高級處理,提取出每一幀的數據,探測目標并分類。然后,系統(tǒng)會跟蹤目標,如果需要采取措施,則與剎車或者轉向電子控制單元(ECU)進行通信。
在FPGA上,底層和中間級處理能被非常高效地實現,但是,用戶也可以在Cyclone V SoC硬核處理器系統(tǒng)(HPS)的Cortex-A9處理器等CPU上實現某些中間級處理。高級處理主要是控制代碼,可以映射到HPS中的一個或者兩個Cortex-A9上。處理鏈的最后一步是目標跟蹤和決策,可以在外部微控制器上完成這一步。
在整個處理過程中,每一步將輸入數據進行簡化得到更有意義的數據,數據減少意味著提高了安全臨界。因此,底層實現可以分成質量管理(QM)或者底層ASIL (例如,ASIL-A)。原因是一個像素期間出現的故障對后續(xù)算法性能的影響很小,可以忽略。在這個例子中,假設中間級處理符合ASIL-A或者ASIL-B,識別目標并進行分類的高級處理功能應符合ASIL-B。對目標進行分類后,生成目標表,將之提供給微控制器,進行目標跟蹤和決策。這是信號鏈最關鍵的部分,Altera認為它應該符合ASIL-D,這對汽車的行為有直接影響。
[page]
在這類應用中,最好對數據流進行更全面的分析,每一級的安全臨界定義對整個系統(tǒng)的性能會產生直接影響。對前面計算級有太高的安全要求會導致難以滿足系統(tǒng)性能目標,而且對系統(tǒng)整體安全的影響很小。但是,處理鏈底層也會出現故障,對系統(tǒng)安全功能產生較大的影響。例如,底層處理功能的永久故障會導致高層數據永久損害,但是,合理性檢查很容易探測到這類故障,對系統(tǒng)性能的影響相對較小。
圖3.單前端攝像機系統(tǒng)實例
圖3顯示了單前端攝像機系統(tǒng)實例的高級結構圖。由一個外部電源管理電路為Cyclone V SoC提供電源。當供電電壓不在額定工作范圍內時,單獨的電壓監(jiān)控功能會產生復位。外部非易失存儲器連接至四路串行外設(quad SPI)模組,系統(tǒng)啟動過程中裝入應用程序,配置FPGA時會使用這些模組。執(zhí)行應用程序代碼,存儲數據和圖像幀時,Altera使用DDR存儲器。通過SPI連接外部微控制器,進行目標探測和最終決策,通過CAN接口與汽車底盤的其他部分進行通信。
圖4.Cyclone V SoC模組視圖
應用中所使用的圖像處理器模組如圖4所示。視頻端口接收來自圖像傳感器的數據,將其傳送至圖像預處理模塊。這一模塊展示了底層圖像處理。在這個例子中,數據通過圖像預處理模塊后,通過FPGA至HPS (F2H)橋接被寫入到DDR存儲器中,也可以傳送至下一級,實現的效率更高。第二級是中間級處理,由各種圖像處理模塊來完成。通過HPS至FPGA (H2F)橋接讀出以前存儲在DDR存儲器中的數據,再次將其寫入到DDR存儲器中。在這個例子中,由HPS完成高級處理。
現在,讓我們了解一下用于探測設計中不同區(qū)域是否有故障的診斷功能。文中所討論的一些診斷功能能夠探測到永久故障,而有的只能探測到瞬時故障,也有的能夠探測各種故障。瞬時故障是一種出現后又消失的故障。對于這一分析,Altera應考慮實現某些功能時存儲器中出現的故障,以及實現功能時邏輯中可能出現的故障。
在應用軟件使用圖像傳感器之前,應對其進行配置,在應用程序執(zhí)行過程中不斷修改配置以適應不同的光照條件。圖像傳感器對于應用操作非常關鍵,因此,建議在容錯時間間隔(FTTI)期間對其配置至少進行一次檢查。這并不一定能夠覆蓋傳感器的所有可能的故障,但是,可以管理好配置寄存器組。
汽車中使用的某些傳感器支持用戶在每一圖像幀的輔助掃描線中傳送某些配置寄存器數據。通過這一功能,用戶可以檢查每一幀的傳感器設置,不需要通過I2C接口來讀取寄存器。傳送幀數據時就可以在FPGA中實現這種檢查,而不需要在CPU上花費財力。
通過底層圖像處理時,一個像素的變化不太可能對實際應用的行為產生很大的影響,因此,在很多情況下,可以忽略這類故障。但是,會導致幀丟失或者整個幀被損壞的故障是必須被檢查到的。
大部分圖像傳感器含有傳送定義好的測試幀的功能,不需要傳送正常的圖像數據。定義好輸入數據后,也就定義了圖像處理模塊的輸出數據。然后進行后續(xù)測試。例如,通過對輸出數據進行循環(huán)冗余校驗(CRC),找到系統(tǒng)中出現的任何永久故障。這種測試覆蓋了整個數據通路中的永久故障。
另外,還應該探測到FPGA中一個模塊向另一個模塊傳輸數據時數據的變化。前面提到的測試碼型或者測試幀方法涵蓋了大部分永久故障,但是,探測不到瞬時故障。而各種傳輸或者信息冗余技術能夠探測到這類故障。
中間層圖像處理實現了邊沿或者角探測算法,還可以應用特征提取算法。因此,只查看圖像中關注的特征,減少了生成數據。數據減少后,由于故障會導致后續(xù)處理步驟中丟失目標,因此,丟失特征的風險增大了。
高級圖像處理階段包括目標探測和目標分類。從軟件術語的角度來講,這一級主要是控制代碼,因此,非常適合在CPU上運行。HPS采用了幾種硬件功能(例如,ECC、MMU、看門狗),在HPS中進行故障診斷。
功能安全重要的另一面是確保減少系統(tǒng)性故障。這通過使用可靠的開發(fā)過程和工具來實現。ISO26262標準詳細規(guī)定了功能安全的管理要求,例如,對安全生命周期和支持過程中不同的行為進行一致性測量,類似配置和修改管理。如果所使用的工具有可能造成應用故障,那么就應該分析這些工具,進行測量以減小故障發(fā)生的概率。
ADAS是確保越來越擁擠的道路更加安全的下一波創(chuàng)新。這些系統(tǒng)的性能需求給現有以及未來的標準商用貨架(COTS)產品帶來了挑戰(zhàn),而可編程FPGA在這方面有很大的優(yōu)勢。實現專用診斷能夠擴大系統(tǒng)的診斷覆蓋。很多COTS產品在設計時并沒有體現功能安全,而通過使用具有功能安全的平臺和開發(fā)環(huán)境,與擅長功能安全的合作伙伴合作,這些都有利于系統(tǒng)的整體實現。
相關閱讀:
基于FPGA的等效時間采樣原理的實現
博客精品:FPGA系統(tǒng)構成及器件互聯
網友教你設計FPGA的通用數控分頻器