作者:Frank Noha,Altera工業和汽車業務部 基于雷達(RADAR)和攝影機設計的應用正大舉進駐汽車駕駛安全領域。最初,自適應巡航控制和道路偏離警報等先進駕駛輔助系統(ADAS)只是一些非常便利的功能,而現在,它們在車輛控制上扮演更積極主動的角色,支持實現車道維持輔助(LKA)等功能。以前的高性能中央處理器(CPU)被認為是最適合這些應用的組件,但車廠須要綜合考慮運算性能和低功率消耗,這促使工程師轉向采用現場可編程門陣列(FPGA)組件。 ADAS須要滿足特殊的功能安全要求。在2011年,ISO發布針對載重3.5噸以下客車的ISO26262標準,以降低系統出現故障后造成危險的風險。這個標準要求采用嚴密的設計過程,在應用執行過程中探測隨機硬件故障,以減少系統性故障。 提升ADAS功能安全 FPGA SoC受青睞 應用開發人員定義了專門的安全目標,針對每個目標分配相應的汽車安全完整性等級(ASIL)。對于應用中最高級別的ASIL-D,通常定義了每一個組件從開發直至運作到壽命終了時應滿足的要求。圖1顯示了從客戶需求角度來看,ADAS應符合的ASIL目前的范圍。 圖1 ADAS所需ASIL規范等級 ASIL-B是市場上的最低級別,而某些應用則要求采用ASIL-D,以支持某些功能。越來越多的ADAS應用對ASIL有更嚴格的要求。在某些具體實現中,組件的通用ASIL或者項目(系統)等級都會帶來不必要的復雜度,影響開發成本和進度。分析系統概念,得出安全概念和要求后,還可以把應用分成幾種不同的步驟,具有不同的ASIL,如此一來,系統設計則可更容易實現,而且實現的效率更高。 例如,前方攝影機應用使用ADAS中常見的一個影像傳感器,如圖2顯示的高階結構圖。一個影像傳感器連接至圖像處理器,該處理器可以是Altera Cyclone FPGA系統單芯片(SoC)或其他方案。訊號處理鏈路和數據流被分成四個部分。首先,透過把影像變換成更實用的表現方式,在像素層級上進行底層處理。然后,對影像或者區塊圖像進行中間層級處理,使用相應的算法,提取出邊緣等特征。下一步,則會進行高階處理,提取出每一個圖幀的數據,探測目標并進行分類。然后,系統會追蹤目標,如果需要采取措施,則與煞車或者轉向引擎控制單元(ECU)進行通訊。 圖2 高階單一前方攝影機ADAS 除了能夠在FPGA上非常高效率的實現底層和中間層級處理,用戶也可以在Cyclone V系列FPGA SoC硬式核心處理器系統(HPS)的Cortex-A9等處理核心實現某些中間層級處理。高階處理主要是句柄,可以映像到HPS中的一個或者兩個Cortex-A9上。處理鏈路的最后一步是目標追蹤和判斷,可以在外部微控制器(MCU)上完成這一個步驟。 在整個處理過程中,工程師可將輸入數據進行簡化,以得到更有意義的數據,數據減少意味提高安全臨界值。因此,底層實現可以分成質量管理(QM)或底層ASIL(例如ASIL-A)。會這樣做的原因是因為單一個像素期間出現的故障對后續算法的性能影響很小,因此可以忽略。在這個例子中,假設中間層級處理符合ASIL-A或ASIL-B,識別目標并進行分類的高階處理功能應符合ASIL-B。對目標進行分類后,會產生目標表,并提供給微控制器,進行目標追蹤和判斷。這是訊號鏈路最關鍵的部分,我們認為它應該符合ASIL-D,這對汽車的行為有直接影響。 實現分級安全處理 FPGA兼顧設計可靠度/效率 在這類應用中,最好對數據流進行更全面的分析,每一個層級的安全臨界定義對整個系統的性能會產生直接影響。對前面運算層級有太高的安全要求會導致難以滿足系統性能目標,而且對系統整體安全的影響很小。不過,處理鏈路底層也會出現故障,對系統安全功能產生較大的影響,例如,底層處理功能的永久故障會導致高層上的數據永久損害,透過合理性檢查很容易探測到這類故障,對系統性能的影響相對較小。 圖3顯示單一前方攝像機系統實例的高階結構圖。由一個外部電源管理電路為Cyclone V SoC提供電源,當供電電壓不在額定運作范圍內時,單獨的電壓監控功能會產生重置,外部非揮發性內存連接至四路串行周邊接口(Quad SPI)模塊,系統啟動過程中加載應用程序,配置FPGA時會使用這些模塊。我們使用雙倍數據率(DDR)內存來執行應用程序代碼、儲存數據和影像圖幀,透過SPI連接外部微控制器,進行目標探測和最終判斷,并利用控制器局域網絡(CAN)接口與汽車底盤的其他部分進行通訊。 圖3 單一前方攝影機系統實例 此應用所使用的圖像處理器模塊如圖4所示。視訊端口接收來自影像傳感器的數據,將其傳送至圖像處理模塊,這一個模塊相當于底層圖像處理層級,在這個例子中,數據透過圖像處理模塊后,通過FPGA至HPS(F2H)橋接被寫入到DDR內存中,也可以傳送至下一層級,實現的效率更高。第二級是中間層級處理,由各種圖像處理模塊來完成,透過HPS至FPGA(H2F)橋接讀出以前儲存在DDR內存中的數據,再次將其寫入到DDR內存中。在這個例子中,由HPS完成高階處理層級。 圖4 Cyclone V SoC電路架構圖 發揮可編程效益 FPGA全方位探測系統故障 接下來的段落將說明用于探測設計中,不同區域是否有故障的診斷功能。一些診斷功能能夠探測到永久故障,而有的只能探測到暫時性故障,也有的能探測各種故障。暫時性故障是一種出現后又消失的故障,對于這一類情形,設計人員應考慮實現某些功能時內存中出現的故障,以及實現功能時邏輯中可能出現的故障。 在應用軟件使用影像傳感器之前,工程師應對其進行配置,在應用程序執行過程中不斷修改配置以適應不同的光線條件。影像傳感器對于應用操作非常關鍵,因此,建議在容錯時間間隔(FTTI)期間對其配置至少進行一次檢查,這并不一定能覆蓋傳感器所有可能的故障,但可以管理好配置緩存器組(表1)。 表1 汽車使用的某些傳感器支持在每個圖幀輔助掃描線中,傳送某些配置緩存器數據。透過此功能,用戶可以檢查每一個圖幀的傳感器設置,不須要透過I2C接口來讀取緩存器,也不須要CPU進行運算,傳送圖幀數據時就能在FPGA中實現這種檢查。 透過底層圖像處理,一個像素的變化不太可能對實際應用的行為產生很大的影響,因此在大多數情況下,設計人員可以忽略這類故障,但是仍應檢查會導致圖幀丟失或者整個圖幀被損壞的故障。 大部分影像傳感器含有傳送定義好的測試圖幀的功能,不須要傳送正常的影像數據,定義好輸入數據后,也就定義了圖像處理模塊的輸出數據,接著進行后續測試。例如透過對輸出數據進行循環冗余校驗碼(CRC),可找到系統中出現的任何永久故障,這種測試覆蓋整個數據傳輸鏈路中的永久故障。 此外,工程師還應該探測到FPGA中一個模塊向另一個模塊傳輸數據時數據的變化。前面段落提到的測試樣板或測試圖幀方法涵蓋大部分永久故障,但探測不到暫時性故障,各種傳輸或者信息冗余技術則能夠探測到這類故障。 中間層圖像處理實現了邊緣或角落探測算法,還可以應用特征提取算法,因此,只查看影像中關注的特征,減少產生的數據,數據減少后,故障會導致后續處理步驟中丟失目標,因此,丟失特征的風險就會增大。 高階圖像處理階段包括目標探測和目標分類,從軟件術語的角度來說,這一個層級主要是句柄,因此,非常適合在CPU上運行。HPS采用幾種硬件功能,例如錯誤碼修正(ECC)、內存管理單元(MMU)、看門狗,在HPS中進行故障診斷。 符合ISO26262規范 ADAS確保行車安全 功能安全重要的另一面是確保減少系統性故障,這可透過使用可靠的開發過程和工具來實現。ISO26262標準詳細規定功能安全的管理要求,例如,對安全生命周期和支持過程中不同的行為進行一致性測量,像是配置和修改管理。如果使用工具有可能造成應用故障,就應該分析這些工具,進行測量以減低故障發生的機率。 ADAS是確保越來越擁擠的道路更加安全的下一波創新,這些系統的性能需求給現有和未來的標準商用現貨(COTS)產品帶來挑戰,很多COTS產品在設計時并沒有體現功能安全,而可程序化FPGA在這方面有很大的優勢,實現專用診斷能擴大系統的診斷涵蓋范圍。因此,使用具有功能安全的平臺和開發環境,與擅長功能安全的合作伙伴合作,都有利于系統的整體實現。 |