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