通過(guò)FPGA設計安全的高級輔助駕駛系統

圖4顯示了單前端攝像機應用中的圖像處理器模塊。由于具體實(shí)現各不相同,因此,并沒(méi)有詳細介紹FPGA的具體執行過(guò)程,但是對于在更高抽象級別上介紹不同分析步驟這樣的目的來(lái)說(shuō)已經(jīng)足夠了。
圖像傳感器配置
假設由HPS系統對傳感器進(jìn)行配置。圖5顯示了圖像傳感器配置涉及的模塊。一個(gè)或者兩個(gè)Cortex—A9CPU執行代碼,數據通過(guò)I2C模塊從DDR存儲器傳送至傳感器。DDR存儲器和L2高速緩存的單錯誤糾正雙錯誤探測(SECDED)糾錯碼(ECC)功能保護相關(guān)的存儲器。奇偶校驗功能保護CPU的L1高速緩存。這包括TAGRAM,以及全局歷史緩沖和分支預測單元的分支目標訪(fǎng)問(wèn)高速緩存。傳感器配置相關(guān)的邏輯(CPU、L3互聯(lián)、I2C等等)只能使用一次,沒(méi)有特殊的診斷。要探測可能出現的故障時(shí),可以采用寫(xiě)入和回讀方法。例如,CPU0向傳感器寫(xiě)入配置數據,CPU1將其回讀。后續進(jìn)行寫(xiě)入數據和回讀數據對比,能夠探測到寫(xiě)會(huì )話(huà)過(guò)程中引入故障。一個(gè)CPU寫(xiě)數據,另一個(gè)CPU讀回數據,這樣做的優(yōu)點(diǎn)是能夠探測到其中一個(gè)CPU中的永久故障。只有一個(gè)CPU用于寫(xiě)讀會(huì )話(huà)時(shí),可以采用各種軟件來(lái)探測永久故障。但是,由于需要對CPU內部功能進(jìn)行詳細的分析,增加了軟件的復雜度,因此,這實(shí)現起來(lái)難度很大。

汽車(chē)中使用的某些傳感器支持在每一圖像幀的輔助掃描線(xiàn)中傳送某些配置寄存器數據。通過(guò)這一功能,可以檢查每一幀的傳感器設置,不需要通過(guò)I2C接口來(lái)讀取寄存器。不需要CPU開(kāi)銷(xiāo),傳送幀數據時(shí)就可以在FPGA中實(shí)現這種檢查。
上面所有的配置寄存器測試的優(yōu)點(diǎn)是,不僅覆蓋了Cyclone V SoC故障,而且還有傳感器外部接口或者傳感器內部帶來(lái)的故障。某些應用會(huì )使用更復雜的處理器體系結構,在總線(xiàn)上進(jìn)行內部診斷。但是內置診斷機制不一定覆蓋I2C模塊中的故障和外部故障,仍然需要考慮這些故障,采用與前面討論的相似的機制。在這一場(chǎng)景中,增加的處理器診斷功能帶來(lái)的優(yōu)勢有限。
底層圖像處理
圖6顯示了圖像處理級涉及到的模塊。在很多情況下,圖像傳感器通過(guò)并行視頻接口連接至圖像處理器。對于Cyclone V SoC應用,可以例化Altcra視頻和圖像處理套裝的視頻端口,用于接收來(lái)自傳感器的數據。然后,將這些數據傳送至圖像預處理模塊。數據處理完成后,被寫(xiě)入到DDR存儲器中。

大部分圖像傳感器含有傳送定義好的測試幀的功能,不需要傳送正常的圖像數據。定義好輸入數據后,也就定義了圖像處理模塊的輸出數據。然后進(jìn)行后續測試。例如,通過(guò)對輸出數據進(jìn)行循環(huán)冗余校驗(CRC),找到系統中出現的任何永久故障。這種測試覆蓋了整個(gè)數據通路中的永久故障。它支持對外部連接問(wèn)題進(jìn)行測試,測試視頻端口和圖像處理模塊中的問(wèn)題,以及DDR存儲器數據傳輸過(guò)程中出現的問(wèn)題。檢查永久故障的另一方法是在FPGA架構中實(shí)現測試碼型發(fā)生器,可以將其復用到視頻端口的輸入通路上。定義好的測試碼型覆蓋了整個(gè)通路中的很多故障。
某些圖像傳感器還具有在每一幀中傳送幀計數器等其他功能。這一功能有助于探測幀間隙,或者像素時(shí)鐘、幀同步問(wèn)題等。除此之外,視頻端口實(shí)現了每一行像素數以及行數計數器功能。如果計數器與設置好的數值不一致,則產(chǎn)生一個(gè)中斷。這也可以用于探測像素時(shí)鐘,以及垂直和水平同步問(wèn)題。
還應該探測到FPGA中一個(gè)模塊傳輸數據時(shí)數據的變化。前面提到的測試碼型或者測試幀方法涵蓋了大部分永久故障,但是,探測不到瞬時(shí)故障。實(shí)現各種圖像流水線(xiàn)時(shí),會(huì )出現瞬時(shí)故障。使用Altera Avalon流協(xié)議在模塊之間傳輸數據時(shí),可能會(huì )例化兩個(gè)不同的接口,保證瞬時(shí)故障對兩個(gè)通路中的數據傳輸有不同的影響。不同圖像流水實(shí)例見(jiàn)圖7。

在很多設計中,也需要使用存儲器緩沖來(lái)臨時(shí)存儲數據。對于這種情況,也可以例化奇偶校驗或者SECDEDECC,這是因為FPGA架構中的用戶(hù)存儲器已經(jīng)為具體實(shí)現提供了所需的奇偶校驗位。
數據最終被寫(xiě)入到DDR存儲器之后,在傳輸時(shí),應隨時(shí)計算數據的校驗和??梢葬槍γ恳粠蛘邘械拿恳恍衼?lái)完成這一工作。在大部分情況下,由于后面的中間級處理可以按行或者模塊來(lái)讀取數據,很容易檢查這些數據,因此,可以按行來(lái)進(jìn)行這一工作。Altera提供了CRC引擎,可以在用戶(hù)設計的不同部分來(lái)例化它,產(chǎn)生流數據CRC校驗和。在牛成的數據上附加校驗和也能夠覆蓋F2H橋接和DDR控制器中可能出現的故障。然后由SECDED ECC以及校驗和來(lái)保護DDR中的數據。需要考慮的另一種故障是數據地址可能會(huì )改變。為避免覆寫(xiě)其他關(guān)鍵的應用數據,DDR存儲器控制器實(shí)現了存儲器保護功能,可以定義20種不同的存儲器區,它們有不同的訪(fǎng)問(wèn)權限,而主機可以訪(fǎng)問(wèn)某些特定的區域。
中間級圖像處理
只查看圖像中關(guān)注的特征,減少了生成數據。數據減少后,由于故障會(huì )導致后續處理步驟中丟失目標,因此,丟失特征的風(fēng)險增大了,也增大了應用程序出現錯誤的風(fēng)險。圖8顯示了中間級圖像處理涉及的模塊。

需要讀回前面圖像預處理級產(chǎn)生的數據以及存儲在外部DDR存儲器中的數據,以便進(jìn)行各種圖像處理。由于前面的數據附加了CRC校驗和,因此,可以再次對其進(jìn)行檢查,查看數據存儲在外部存儲器期間是否被修改,或者傳送至FPGA時(shí)是否被修改。
評論