什么是控制平面/數(shù)據(jù)平面處理,?為什么您的下一代嵌入式系統(tǒng)可能會需要它,?
在無法用軟件完成所有處理工作的系統(tǒng)中,設計人員可以通過多種途徑來獲得其他性能,。他們可以采用對稱或者非對稱處理配置的多處理器,;使用硬件協(xié)處理器,;或者將數(shù)據(jù)處理任務拆分給一個或多個專用處理單元——就像在控制平面/數(shù)據(jù)平面內(nèi)進行處理一樣。
在這種編程方式下,,數(shù)據(jù)處理被分成兩個不同的平面,。控制平面代表著對性能影響不大的算法元素,,比如管理性任務、用戶界面和操作系統(tǒng)功能,。同時,,數(shù)據(jù)平面代表著數(shù)據(jù)在系統(tǒng)中的流動,例如視頻流或音頻流及其處理。在數(shù)據(jù)平面上,,設計人員采用諸如流水線這樣的技術來增強數(shù)據(jù)吞吐能力,。控制平面/數(shù)據(jù)平面處理的典型應用包括流視頻,、網(wǎng)絡包處理以及高速信號處理,。
讓我們來近距離觀察一個涉及流數(shù)據(jù)實時處理的控制平面/數(shù)據(jù)平面應用。我們將面臨高清視頻流特有模式的識別,。該實要求混合使用高性能數(shù)據(jù)處理和包含嵌入式
720p/60Hz的HD視頻流的像素頻率為74.25MHz,。這就要求222.75MB每秒的處理速率,。假定采用2.5GHz的雙核雙指令處理器來處理該數(shù)據(jù),最佳的指令率為10G指令每秒,。這樣的處理器可針對所處理數(shù)據(jù)的每一字節(jié)執(zhí)行22.4條指令。對某些應用而言這已經(jīng)足夠了,,但22.4 條指令表明所能處理的數(shù)據(jù)非常有限。復雜的視頻處理功能,,比如內(nèi)核卷積(kernelconvolution),、噪音消減和其他過濾功能需要更高的指令執(zhí)行效率。本文的解決方案準備在數(shù)據(jù)平面上創(chuàng)建并行或流水線處理單元,。
HD視頻處理是一種可以把問題劃分為控制平面和數(shù)據(jù)平面予以高效處理的常見的現(xiàn)實應用,。作為一種高度并行處理單元,F(xiàn)PGA在本例中負責視頻處理,,同時由FPGA內(nèi)部的中等性能處理器負責視頻處理流水線,。該處理器可專用于單個應用,也可以運行諸如Linux這樣的操作系統(tǒng),。最終形成的硬軟件混合實施方案可以把處理交付給能夠進行最佳處理的部分,,實現(xiàn)低成本、高性能數(shù)據(jù)處理解決方案,。圖1顯示的是典型的控制平面/數(shù)據(jù)平面系統(tǒng),。
圖1:典型的控制平面/數(shù)據(jù)平面處理系統(tǒng)。
采用FPGA實現(xiàn)計算負載均衡
除了不菲的ASIC,,F(xiàn)PGA是性能最高,、最具經(jīng)濟效益的流數(shù)據(jù)處理單元實施方法。FPGA因其靈活的架構而能讓設計人員實施包含并行和流水線單元的處理系統(tǒng),。這樣設計人員即可優(yōu)化系統(tǒng)的性能和時延,。
設計人員隨后可以將該數(shù)據(jù)平面解決方案應用于外部的分立微處理器以進行控制。在FPGA內(nèi)部加入該處理器能夠帶來多項優(yōu)勢,。內(nèi)部處理器能夠大大減少處理器和數(shù)據(jù)平面單元之間的控制時延,。時延的減少可以釋放出許多處理器周期。外部處理器必須與數(shù)據(jù)平面保持通信。通信通道可以是32位或者更多位數(shù),,并同時需要更多導線用于尋址和控制,。增加的導線可能會要求更強大的處理器和FPGA封裝,從而導致系統(tǒng)成本增加,。而采用PCIExpress(PCIe)能大幅度減少引腳數(shù)量,。遺憾的是,不是所有的處理器和FPGA都支持這種相對新型的接口,,而且即便支持,,PCIe器件的成本也大大高于不采用PCIe的同類器件。
在FPGA內(nèi)部實施控制平面處理器和數(shù)據(jù)平面可以減少器件數(shù)量,、板級空間和功耗,,最終形成一個低成本的解決方案。在FPGA內(nèi)既有諸如
控制平面/數(shù)據(jù)平面系統(tǒng)的實施
某些工具可以簡化基于FPGA的控制平面/數(shù)據(jù)平面系統(tǒng)的實施,。使用向導或者通過調(diào)整現(xiàn)有參考設計來編譯系統(tǒng)是其中兩種常用的方法,。
通過向導FPGA工具可迅速匯編微處理器系統(tǒng)。使用下拉列表或者復選框,,您可以輕松地指定目標部件以及需要的處理器和外設,。同時,可以使用諸如 MATLAB軟件這樣的工具來迅速編譯具有處理器總線接口的信號處理流水線以用于控制,。另外,,還可以使用C-to-HDL工具構建數(shù)字信號流水線,??刂破矫?數(shù)據(jù)平面的連接可以簡單地通過匹配總線接口來完成。圖2顯示的是啟動向導的說明窗口和用向導構建的最終系統(tǒng),。
圖2:向導啟動屏幕截圖和已完成的系統(tǒng),。
第二種方法是調(diào)整現(xiàn)有的參考設計。FPGA參考設計不斷發(fā)展并已成為市場的焦點,。在我們的案例研究中使用的參考設計具有完整的微處理器系統(tǒng),、存儲器、外設和720pHD數(shù)字信號處理流水線,。因此,,該系統(tǒng)相當于一款完整的控制平面/數(shù)據(jù)平面解決方案。在該參考設計中,由處理器控制增益和流水線中的 FIR濾波器,。使用C-to-FPGA工具創(chuàng)建目標探測和高亮顯示模塊,,讓整個系統(tǒng)具備功能所化的時間不到20個小時。
該處理器可以使用板卡支持包(BSP)提供的補充驅動程序來控制數(shù)據(jù)流水線,。目前已有面向Linux的驅動程序,,可以讓處理器直接控制數(shù)據(jù)處理流水線。Linux調(diào)用包括從Linux應用中打開I/O器件,,然后針對該器件進行讀出或者寫入,。
HD視頻識別系統(tǒng)案例研究
目標檢測和識別廣泛應用于監(jiān)控、醫(yī)學成像和工廠自動化等行業(yè),。圖像的分辨率越高,,目標識別的準確度越高。因此,,對HD攝影機和相關的HD視頻流處理功能的需求較為強勁,。我們的案例研究從這個問題(受一部著名的動畫電影啟發(fā))出發(fā):我們能否檢測并高亮顯示720pHD視頻流中的小丑魚?
該設計需要16位色譜,,以便識別小丑魚的條紋圖案,。一旦識別,小丑魚在屏幕上將被移動的聚光燈并高亮顯示,。此外,,聚光燈的大小經(jīng)設計后可以隨匹配的似然性而調(diào)整(實際上,系統(tǒng)降低了聚光燈外的其他區(qū)域的圖像亮度),。聚光燈的尺寸變化和形狀計算以及為在每個像素位置搜索克隆魚所進行的比較,,將需要大量的計算以使其工作于74.25MHz的時鐘周期。顯然,,這樣的處理要求大大超出了一般嵌入式處理器的能力,。
在這種情況下,最好的解決辦法是把流數(shù)據(jù)處理轉移到協(xié)處理器上,。在FPGA內(nèi)部實施協(xié)處理器能夠以最低成本靈活構建能夠滿足性能要求的解決方案,。因此,基于FPGA的控制平面/數(shù)據(jù)平面架構就是最佳的選擇,。FPGA嵌入式處理可以通過總線接口控制負責接收視頻數(shù)據(jù),、探測小丑魚、高亮顯示小丑魚并輸出供顯示之用的視頻數(shù)據(jù)的數(shù)字信號處理流水線,。
因此,,在本目標檢測和高亮顯示案例中,我們選擇50MHz的MicroBlaze嵌入式處理器來管理和控制74.25MHz的數(shù)據(jù)處理流水線,,同時管理用戶界面,。在免除了實際執(zhí)行視頻處理的責任后,,處理器可以處理許多其他的功能,比如托管以太網(wǎng)數(shù)據(jù)通信,、管理圖形用戶界面,、對數(shù)據(jù)處理流水線進行精細控制(例如,逐幀增益控制)等,。
諸如Linux這樣的操作系統(tǒng)是提供多任務功能,、網(wǎng)絡協(xié)議棧和用戶界面語言支持的理想選擇。圖3顯示了所實施系統(tǒng)的方框圖,。該解決方案可以在高數(shù)據(jù)處理帶寬需求和用軟件控制數(shù)據(jù)處理方式之間實現(xiàn)理想的平衡,。
圖3:小丑魚探測器控制平面/數(shù)據(jù)平面系統(tǒng)。
采用C-to-FPGA工具實現(xiàn)軟硬件協(xié)同設計
C-to-FPGA編譯器可以讓開發(fā)人員使用新的開發(fā)工具集和新技術解決軟件/硬件開發(fā)問題,。開發(fā)人員可以先在軟件中進行算法編碼,。經(jīng)驗告訴我們,在軟件中開發(fā)算法較在硬件中開發(fā)算法的效率更高,。具體原因如下:首先,,諸如C語言能夠讓編程人員在高級軟件語言的層面上開發(fā)算法,而這是使用 Verilog或者VHDL硬件描述語言所不能達到的,;其次,,與同類的硬件開發(fā)工具相比,針對C語言的調(diào)試和測試工具運行速度更快,、效率更高,,通常也更易于使用。相當于硬件算法,,C語言算法可以在目標處理器上全速運行,,而硬件算法需要先在仿真程序上完成測試和調(diào)拭;最后,,C語言開發(fā)工具較同類硬件開發(fā)工具的成本要低得多,。因此,工程人員一般傾向于在C語言或者類似的高級語言中開發(fā)算法,。
一旦使用C語言這樣的軟件語言完成對某個算法的驗證,,設計人員必須測量其性能,并確定該算法是否能夠完全在嵌入式處理器或是完全在硬件上運行,、或者硬軟件混合協(xié)處理實施方案是否為最佳選擇,。在這種判斷過程中可以采用性能分析工具,。如果代碼必須被轉到硬件上,,則設計人員必須手工轉換算法,或者使用 C-to-FPGA工具,。
C-to-FPGA工具可以讓開發(fā)人員迅速把算法轉換成HDL代碼,,優(yōu)化生成的硬件處理器,,并執(zhí)行假設場景平衡性能和FPGA資源。該工具還能夠讓軟件工程師使用FPGA內(nèi)部的高性能數(shù)據(jù)處理邏輯,,從而變身為硬件工程師,。
使用Linux把處理器連接到FPGA
與FPGA制造商合作的Linux供應商已經(jīng)開發(fā)完成了可讓處理器與FPGA通信并對其進行控制的驅動程序。首先,,您必須針對該I/O器件配置Linux,。配置步驟由兩個步驟組成。首先,,把定制的驅動程序加載到Linux內(nèi)核中:
隨后,,將驅動程序注冊到特定的器件號碼(比如253):
通信是通過開啟該I/O器件、然后對該器件進行讀寫而完成的,,示例代碼段如下所示:
FPGA的優(yōu)勢
信號處理器系統(tǒng)的數(shù)據(jù)帶寬要求往往會超過通用處理器能經(jīng)濟地獲得的水平,。在這種情況下,設計人員一般會把他們的數(shù)據(jù)處理系統(tǒng)劃分為兩個處理功能:使用通用處理器進行控制處理,,另外使用諸如FPGA等硬件加速器進行數(shù)據(jù)處理,。這樣就構成了一個控制平面/數(shù)據(jù)平面處理系統(tǒng)。
FPGA非常適用于同時實施控制平面和數(shù)據(jù)平面功能,。一個FPGA可以包含一個或者多個像MicroBlaze這樣軟處理器,,和/或像
借助向導和預先構建的參考設計,針對嵌入式和數(shù)據(jù)處理功能的系統(tǒng)編譯簡單明了,。通過把在C語言中構建的算法原型轉換到高性能硬件處理單元,,C- to-FPGA工具有助于優(yōu)化這一進程。最后,,可以利用現(xiàn)在可用的Linux驅動程序方便地完成處理器和FPGA信號處理流水線之間的通信及控制編碼,。
我們的案例研究是一個典型的應用示例。在這個例子中,,通過低成本通用處理器處理HD視頻流是不合實際的,,但是可以通過FPGA內(nèi)部的信號處理流水線輕松加以解決。處理器隨即被釋放出來用于提供用戶界面,、網(wǎng)絡和系統(tǒng)管理功能,,并同時監(jiān)測和控制信號處理流水線。