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