用Spartan-3A DSP器件實現汽車應用中的塊匹配
汽車工程師采用多種智能技術幫助人們安全駕駛汽車。汽車系統(tǒng)中的主要技術包括雷達、超聲和攝像/視覺感測。這些技術統(tǒng)稱駕駛員輔助 (DA) 系統(tǒng),用于在惡劣條件和危險路況下協(xié)助安全駕駛。
本文引用地址:http://m.butianyuan.cn/article/196660.htm第一代攝像 DA 系統(tǒng)目前可見于各種生產用車型。這類系統(tǒng)大多為駕駛員提供車輛周邊環(huán)境的視頻圖像。最常見的是泊車/倒車輔助系統(tǒng),這種系統(tǒng)用后視攝像頭拍攝本車后面的景物,并且在無線電/導航系統(tǒng)的屏幕上或者在儀表板中的小型顯示器上顯示圖像。
第二代攝像系統(tǒng)正處于開發(fā)測試階段,目前使用有限。第二代系統(tǒng)并非僅為駕駛員提供圖像,而是運用圖像處理與解析從視頻流中提取信息,并且對車輛環(huán)境進行表征和評估。必要時駕駛員會收到相應警示。
隨著工程師們獲取車輛環(huán)境表征方面的實際經驗,未來的 DA 技術會更復雜,將為消費者提供更強大的實用工具并且增強其他汽車子系統(tǒng)的性能。圖 1 概括了目前和未來的多種 DA 功能。
高級處理要求
DA 系統(tǒng)的處理要求可能超過目前汽車級串行 DSP 處理器的能力。另外,為了提高消費價值,在一套視覺傳感器上捆綁多種 DA 功能的需求日益高漲。
例如,前瞻視覺模塊可能需要同時支持車道偏離警示、智能大燈控制和標志識別功能,而所有這些都需要不同的處理算法。因此,對于用 FPGA 通過原始圖像數據處理、配置靈活性和器件可縮放性來提供系統(tǒng)價值,DA 市場提供了實實在在的機會。
視覺 DA 系統(tǒng)的圖像處理與解析功能可以包括空間/時間濾波、鏡頭失真校正、圖像清晰化、對比度增強、邊沿檢測、圖像匹配、物體識別和物體跟蹤,在某些情況下還包括圖形疊加。尤其值得關注的是一種支持運動估計或立體視差計算的圖像匹配功能。
為了說明 FPGA 處理的性能價值,我們來考慮這樣一個視覺系統(tǒng):以 30 Hz 幀速率 (fps) 生成視頻的寬幅 VGA 分辨率成像器件(752×480 像素),而且需要估計幀間物體運動(或流動)。有一種算法(也適用于立體視差計算)是將圖像劃分為若干個塊(如大小為 4×4 像素),然后判斷第一幀中各圖像塊對第二幀中指定搜索區(qū)(如 20×20 像素)內某位置的匹配條件。
一種常用的匹配條件是用算子 SAD(絕對差和)求出第一幀圖像中的 4×4 塊與第二幀圖像上搜索區(qū)內的像素之間的像素灰度最小絕對誤差 (MAE)。
我們的 4×4 塊匹配示例需要 250 MMAE/s(每秒百萬次 MAE 計算)以上的性能,因為 (752 像素)×(480 行)×(20 ×20 像素搜索區(qū))×(30 fps)/(4×4 像素塊大小) = 270,720,000 MAE/s。MAE 表示 4×4 像素塊的最終匹配誤差,而 SAD 是指根據四個獨立元素對進行計算得到的絕對差和。所以,每 MAE 需要四次 SAD 運算。
處理選項
由汽車設計工程師決定的處理選項包括超長指令字 (VLIW) DSP-CPU 和 FPGA。FPGA 的處理能力遠遠高于任何現有的 VLIW DSP-CPU。這是由于 FPGA 的架構:大量并行功能單元(包括可編程 MAC)使 FPGA 的性能比任何 DSP 都高出 10-30 倍(具體性能取決于所實現的應用),即使 FPGA 的時鐘頻率比 DSP-CPU 的時鐘頻率低得多。我們使用塊匹配運算示例,是要證明 Xilinx® FPGA 的性能比任何 VLIW DSP-CPU 處理器都高。
VLIW DSP-CPU 處理器中的 SAD 和 MAE 計算
在一個 32 位架構的單指令多數據 (SIMD) DSP-CPU 中可實現四個 8 位像素視頻數據單元的 SAD 運算,因此,僅在一個周期內即可有效執(zhí)行相當于 11 條基本指令的運算,如圖2 所示。
圖2
例如,Nexperia PNX1500 媒體處理器配有 32 位 TriMedia VLIW-CPU,對于具有二周期延遲的 8 位像素,可以在一個時鐘周期內執(zhí)行兩條四路 SAD 指令。算上超長指令字,就是每時鐘周期最多五條基本 RISC/SIMD 指令,其中只有兩條可以是 SAD 指令(在 TriMedia 數據手冊中稱為“8meii”)。
所以,對 4×4 大小的塊進行 MAE 計算需要五個時鐘周期,如表 1 所示:兩個周期用于兩條四路 SAD 指令的流水線處理(周期 1 用于 sad1/sad2,周期 2 用于 sad3/sad4);三個周期用于部分結果的累加(周期3、4 和 5)。因此,如果只處理一個塊,則一個 300 MHz 的 Nexperia PNX1500 處理器的處理能力最高可達 60 MMAE/s。
如果每次處理一個以上 4×4 塊,最高性能可略有提高。例如,可以在七個周期內計算兩個并行 4×4 塊的 MAE,這時性能可達 85.71 MMAE/s;而處理三個塊需要九個周期,即性能為 100 MMAE/s。
可并行處理的最大塊數分別受限于任意長指令字中允許的 SIMD SAD 運算次數、VLIW-CPU 的通用寄存器數和優(yōu)化編譯器的調度算法。如果繼續(xù)增加塊數,整體性能會趨于飽和,因此我們考慮并行處理的 MAE 不超過三個。
德州儀器 (TI) 的 TMSD320DM6437 數字媒體處理器每周期有一條由八次基本 RISC 運算組成的長指令,分別通過兩條數據通路,各通路每周期有四個時隙。其 VLIW-CPU 每周期最多可執(zhí)行兩條 SAD 指令(在 TI DM6437 數據手冊中稱為“subabs4”),各指令有一個周期的延遲。但是,要累加部分結果,就必須使用常數 0x01010101 執(zhí)行具有三周期延遲的 SIMD MAC 運算(稱為“dotpsu4”)。
所以,600 MHz 的 TI DM6437 DSP-CPU 可以用七個周期計算一個 MAE(如表 2 所示),因此對于 4 x 4 像素塊的最高性能為 85.71 MMAE/s。如果并行處理兩個塊,就需要九個周期,性能為 133.33 MMAE/s;而三個塊需要 11 個周期,性能為 163.64 MMAE/s,這仍然低于我們的 250 MSAD/s 要求。
VLIW DSP-CPU 性能不足
至此,我們一直假定每像素 8 位,這很適合 32 位架構的 DSP-CPU 處理器。然而,新型 CMOS 圖像傳感器的分辨率范圍較高,即每像素 12 到 14 位。對于這些數據類型,32 位架構的傳統(tǒng)四路 8 位子字 SIMD 不夠有效,必須換用雙路 16 位半字 SIMD,其中的子字并行度僅為二。因此,由于計算一個 MAE 需要較多時鐘周期,最高性能大幅度下降。
表3 所示為在 TI VLIW DSP-CPU 上使用 16 位子字指令計算 SAD 時可能的偽匯編代碼,假定延遲正確且函數發(fā)射時隙允許執(zhí)行這種指令。因此,一個 4×4 的塊需要八個周期,而并行處理兩個和三個塊分別需要 10 個和 12 個周期。這時,相應的最高性能分別為 75 MMAE/s、120 MMAE/s 和 150 MMAE/s。這些數字都比使用 8 位子字指令得到的數字小。
Spartan-3A DSP FPGA 的 SAD 和 MAE 性能
為了填補 Spartan™-3 和 Virtex™-4 器件之間的處理性能空白,Xilinx 推出了 Spartan 3A-DSP 1800A 和 3400A FPGA。這些器件采納了 Virtex-4 器件中的 DSP48 Slice 的修改版。另外,3A-DSP 器件包括大量片上存儲器(Block RAM)。這兩方面增強加上針對大量應用制訂的價位使 3A-DSP 器件非常適合汽車視覺 DA 系統(tǒng)。
圖 3 所示為 Spartan-3A DSP 1800 (XC3SD1800A-4FG676) 器件上的四路 12 位像素的 SAD 計算方案。此實現是使用 System Generator for DSP 設計流程(Xilinx 提供的 Simulink 工具中的數位和周期都精確的可綜合庫)完成的。所需資源數量是 121 個 Slice(236 個 LUT 和 140 個觸發(fā)器)。將此結構復制四次并且加上部分結果,即得到整個 4×4 塊的計算方案,該方案需要 508 個 Slice(990 個觸發(fā)器和 606 個 LUT),具有一個周期吞吐量(這意味著可從任意時鐘周期開始計算新的 MAE)和七個周期延遲。
如果使用 150 MHz 時鐘頻率(該器件最高時鐘頻率為 250 MHz),只需要兩個并行結構(約占器件面積的 6%)即可達到 300 MMAE/s 的性能,從而滿足示例應用的 250 MMAE/s 性能要求。這樣可以節(jié)省大量資源用來實現其他圖像處理功能、數據路由管道、存儲器接口控制器以及一個用于串行處理和外部通信的 32 位 MicroBlaze™ 嵌入式處理器。
作為參考,仍然用 150 MHz 頻率,Spartan 3A-DSP 1800A 器件僅使用整個 FPGA 器件的 70% 即可并行處理多達 23 個塊(70%×16,640 Slice/508 Slice/塊 = 23 塊)。與此對應的最高性能是 3,529 MMAE/s,這至少要比 600 MHz 的 TI DSP-CPU 的最高性能高 25 倍。
結論
我們以汽車視覺應用為例說明了如何利用中型低成本 Xilinx FPGA 的可編程并行處理能力提供超過 VLIW DSP-CPU 的處理性能。表 4 列出了我們的分析結果。
請注意,對于 12 位像素數據的 4 x 4 塊的 MAE 計算,Spartan-3A DSP 的性能僅以四分之一時鐘速度即可達到 TI TMS320DM6437 的兩倍。另外,FPGA 的資源占用率僅為 6%,因此可以在同一器件上實現其他圖像處理功能(必要時可采納并行處理)。
另一方面,VLIW DSP-CPU 在 SAD 計算期間被完全占用,消耗串行處理器長指令的可用時隙,因此很少有機會同時執(zhí)行其他功能。
我們對于 FPGA 的估算時鐘頻率相當保守(以 150 MHz 對 250 MHz),對于運動估算的搜索區(qū)也是如此(搜索區(qū)越大,需要計算的 MAE 的數量就越多)。例如,30×30 的搜索區(qū)需要 609 MMAE/s 的性能(遠遠超過 VLIW DSP-CPU 的能力),然而卻僅占用 1800A 器件上 Slice 的 12%。
最后,我們在實現 MAE 時根本未使用 DSP48 MAC 單元:據我們估計,如果用四個 DSP48 單元取代由 100 個 Slice 組成的加法器樹,則一個 12 位輸入數據 MAE 的 4×4 塊會占用 400 個 Slice(782 個觸發(fā)器和 400 個 LUT)和四個 DSP48。
因此,Spartan-3A DSP 1800A 器件非常適合需要極高處理性能、靈活性和可縮放性的視覺應用,如未來型汽車駕駛員輔助系統(tǒng)中的視覺應用。
評論