通過FPGA設計安全的高級輔助駕駛系統(tǒng)
圖4顯示了單前端攝像機應用中的圖像處理器模塊。由于具體實現(xiàn)各不相同,因此,并沒有詳細介紹FPGA的具體執(zhí)行過程,但是對于在更高抽象級別上介紹不同分析步驟這樣的目的來說已經(jīng)足夠了。
圖像傳感器配置
假設由HPS系統(tǒng)對傳感器進行配置。圖5顯示了圖像傳感器配置涉及的模塊。一個或者兩個Cortex—A9CPU執(zhí)行代碼,數(shù)據(jù)通過I2C模塊從DDR存儲器傳送至傳感器。DDR存儲器和L2高速緩存的單錯誤糾正雙錯誤探測(SECDED)糾錯碼(ECC)功能保護相關的存儲器。奇偶校驗功能保護CPU的L1高速緩存。這包括TAGRAM,以及全局歷史緩沖和分支預測單元的分支目標訪問高速緩存。傳感器配置相關的邏輯(CPU、L3互聯(lián)、I2C等等)只能使用一次,沒有特殊的診斷。要探測可能出現(xiàn)的故障時,可以采用寫入和回讀方法。例如,CPU0向傳感器寫入配置數(shù)據(jù),CPU1將其回讀。后續(xù)進行寫入數(shù)據(jù)和回讀數(shù)據(jù)對比,能夠探測到寫會話過程中引入故障。一個CPU寫數(shù)據(jù),另一個CPU讀回數(shù)據(jù),這樣做的優(yōu)點是能夠探測到其中一個CPU中的永久故障。只有一個CPU用于寫讀會話時,可以采用各種軟件來探測永久故障。但是,由于需要對CPU內部功能進行詳細的分析,增加了軟件的復雜度,因此,這實現(xiàn)起來難度很大。
汽車中使用的某些傳感器支持在每一圖像幀的輔助掃描線中傳送某些配置寄存器數(shù)據(jù)。通過這一功能,可以檢查每一幀的傳感器設置,不需要通過I2C接口來讀取寄存器。不需要CPU開銷,傳送幀數(shù)據(jù)時就可以在FPGA中實現(xiàn)這種檢查。
上面所有的配置寄存器測試的優(yōu)點是,不僅覆蓋了Cyclone V SoC故障,而且還有傳感器外部接口或者傳感器內部帶來的故障。某些應用會使用更復雜的處理器體系結構,在總線上進行內部診斷。但是內置診斷機制不一定覆蓋I2C模塊中的故障和外部故障,仍然需要考慮這些故障,采用與前面討論的相似的機制。在這一場景中,增加的處理器診斷功能帶來的優(yōu)勢有限。
底層圖像處理
圖6顯示了圖像處理級涉及到的模塊。在很多情況下,圖像傳感器通過并行視頻接口連接至圖像處理器。對于Cyclone V SoC應用,可以例化Altcra視頻和圖像處理套裝的視頻端口,用于接收來自傳感器的數(shù)據(jù)。然后,將這些數(shù)據(jù)傳送至圖像預處理模塊。數(shù)據(jù)處理完成后,被寫入到DDR存儲器中。
大部分圖像傳感器含有傳送定義好的測試幀的功能,不需要傳送正常的圖像數(shù)據(jù)。定義好輸入數(shù)據(jù)后,也就定義了圖像處理模塊的輸出數(shù)據(jù)。然后進行后續(xù)測試。例如,通過對輸出數(shù)據(jù)進行循環(huán)冗余校驗(CRC),找到系統(tǒng)中出現(xiàn)的任何永久故障。這種測試覆蓋了整個數(shù)據(jù)通路中的永久故障。它支持對外部連接問題進行測試,測試視頻端口和圖像處理模塊中的問題,以及DDR存儲器數(shù)據(jù)傳輸過程中出現(xiàn)的問題。檢查永久故障的另一方法是在FPGA架構中實現(xiàn)測試碼型發(fā)生器,可以將其復用到視頻端口的輸入通路上。定義好的測試碼型覆蓋了整個通路中的很多故障。
某些圖像傳感器還具有在每一幀中傳送幀計數(shù)器等其他功能。這一功能有助于探測幀間隙,或者像素時鐘、幀同步問題等。除此之外,視頻端口實現(xiàn)了每一行像素數(shù)以及行數(shù)計數(shù)器功能。如果計數(shù)器與設置好的數(shù)值不一致,則產(chǎn)生一個中斷。這也可以用于探測像素時鐘,以及垂直和水平同步問題。
還應該探測到FPGA中一個模塊傳輸數(shù)據(jù)時數(shù)據(jù)的變化。前面提到的測試碼型或者測試幀方法涵蓋了大部分永久故障,但是,探測不到瞬時故障。實現(xiàn)各種圖像流水線時,會出現(xiàn)瞬時故障。使用Altera Avalon流協(xié)議在模塊之間傳輸數(shù)據(jù)時,可能會例化兩個不同的接口,保證瞬時故障對兩個通路中的數(shù)據(jù)傳輸有不同的影響。不同圖像流水實例見圖7。
在很多設計中,也需要使用存儲器緩沖來臨時存儲數(shù)據(jù)。對于這種情況,也可以例化奇偶校驗或者SECDEDECC,這是因為FPGA架構中的用戶存儲器已經(jīng)為具體實現(xiàn)提供了所需的奇偶校驗位。
數(shù)據(jù)最終被寫入到DDR存儲器之后,在傳輸時,應隨時計算數(shù)據(jù)的校驗和??梢葬槍γ恳粠蛘邘械拿恳恍衼硗瓿蛇@一工作。在大部分情況下,由于后面的中間級處理可以按行或者模塊來讀取數(shù)據(jù),很容易檢查這些數(shù)據(jù),因此,可以按行來進行這一工作。Altera提供了CRC引擎,可以在用戶設計的不同部分來例化它,產(chǎn)生流數(shù)據(jù)CRC校驗和。在牛成的數(shù)據(jù)上附加校驗和也能夠覆蓋F2H橋接和DDR控制器中可能出現(xiàn)的故障。然后由SECDED ECC以及校驗和來保護DDR中的數(shù)據(jù)。需要考慮的另一種故障是數(shù)據(jù)地址可能會改變。為避免覆寫其他關鍵的應用數(shù)據(jù),DDR存儲器控制器實現(xiàn)了存儲器保護功能,可以定義20種不同的存儲器區(qū),它們有不同的訪問權限,而主機可以訪問某些特定的區(qū)域。
中間級圖像處理
只查看圖像中關注的特征,減少了生成數(shù)據(jù)。數(shù)據(jù)減少后,由于故障會導致后續(xù)處理步驟中丟失目標,因此,丟失特征的風險增大了,也增大了應用程序出現(xiàn)錯誤的風險。圖8顯示了中間級圖像處理涉及的模塊。
需要讀回前面圖像預處理級產(chǎn)生的數(shù)據(jù)以及存儲在外部DDR存儲器中的數(shù)據(jù),以便進行各種圖像處理。由于前面的數(shù)據(jù)附加了CRC校驗和,因此,可以再次對其進行檢查,查看數(shù)據(jù)存儲在外部存儲器期間是否被修改,或者傳送至FPGA時是否被修改。
評論