運(yùn)用FPGA進(jìn)行控制平面/數(shù)據(jù)平面視頻處理
采用C-to-FPGA工具實現(xiàn)軟硬件協(xié)同設(shè)計
C-to-FPGA編譯器可以讓開發(fā)人員使用新的開發(fā)工具集和新技術(shù)解決軟件/硬件開發(fā)問題。開發(fā)人員可以先在軟件中進(jìn)行算法編碼。經(jīng)驗告訴我們,在軟件中開發(fā)算法較在硬件中開發(fā)算法的效率更高。具體原因如下:首先,諸如C語言能夠讓編程人員在高級軟件語言的層面上開發(fā)算法,而這是使用Verilog或者VHDL硬件描述語言所不能達(dá)到的;其次,與同類的硬件開發(fā)工具相比,針對C語言的調(diào)試和測試工具運(yùn)行速度更快、效率更高,通常也更易于使用。相當(dāng)于硬件算法,C語言算法可以在目標(biāo)處理器上全速運(yùn)行,而硬件算法需要先在仿真程序上完成測試和調(diào)拭;最后,C語言開發(fā)工具較同類硬件開發(fā)工具的成本要低得多。因此,工程人員一般傾向于在C語言或者類似的高級語言中開發(fā)算法。
一旦使用C語言這樣的軟件語言完成對某個算法的驗證,設(shè)計人員必須測量其性能,并確定該算法是否能夠完全在嵌入式處理器或是完全在硬件上運(yùn)行、或者硬軟件混合協(xié)處理實施方案是否為最佳選擇。在這種判斷過程中可以采用性能分析工具。如果代碼必須被轉(zhuǎn)到硬件上,則設(shè)計人員必須手工轉(zhuǎn)換算法,或者使用C-to-FPGA工具。
C-to-FPGA工具可以讓開發(fā)人員迅速把算法轉(zhuǎn)換成HDL代碼,優(yōu)化生成的硬件處理器,并執(zhí)行假設(shè)場景平衡性能和FPGA資源。該工具還能夠讓軟件工程師使用FPGA內(nèi)部的高性能數(shù)據(jù)處理邏輯,從而變身為硬件工程師。
使用Linux把處理器連接到FPGA
與FPGA制造商合作的Linux供應(yīng)商已經(jīng)開發(fā)完成了可讓處理器與FPGA通信并對其進(jìn)行控制的驅(qū)動程序。首先,您必須針對該I/O器件配置Linux。配置步驟由兩個步驟組成。首先,把定制的驅(qū)動程序加載到Linux內(nèi)核中:
隨后,將驅(qū)動程序注冊到特定的器件號碼(比如253):
通信是通過開啟該I/O器件、然后對該器件進(jìn)行讀寫而完成的,示例代碼段如下所示:
FPGA的優(yōu)勢
信號處理器系統(tǒng)的數(shù)據(jù)帶寬要求往往會超過通用處理器能經(jīng)濟(jì)地獲得的水平。在這種情況下,設(shè)計人員一般會把他們的數(shù)據(jù)處理系統(tǒng)劃分為兩個處理功能:使用通用處理器進(jìn)行控制處理,另外使用諸如FPGA等硬件加速器進(jìn)行數(shù)據(jù)處理。這樣就構(gòu)成了一個控制平面/數(shù)據(jù)平面處理系統(tǒng)。
FPGA非常適用于同時實施控制平面和數(shù)據(jù)平面功能。一個FPGA可以包含一個或者多個像MicroBlaze這樣軟處理器,和/或像PowerPC這樣的硬處理器。將它們集成到FPGA中可以實現(xiàn)控制平面處理器和數(shù)據(jù)平面處理系統(tǒng)之間的低時延、高帶寬通信。
借助向?qū)Ш皖A(yù)先構(gòu)建的參考設(shè)計,針對嵌入式和數(shù)據(jù)處理功能的系統(tǒng)編譯簡單明了。通過把在C語言中構(gòu)建的算法原型轉(zhuǎn)換到高性能硬件處理單元,C-to-FPGA工具有助于優(yōu)化這一進(jìn)程。最后,可以利用現(xiàn)在可用的Linux驅(qū)動程序方便地完成處理器和FPGA信號處理流水線之間的通信及控制編碼。
我們的案例研究是一個典型的應(yīng)用示例。在這個例子中,通過低成本通用處理器處理HD視頻流是不合實際的,但是可以通過FPGA內(nèi)部的信號處理流水線輕松加以解決。處理器隨即被釋放出來用于提供用戶界面、網(wǎng)絡(luò)和系統(tǒng)管理功能,并同時監(jiān)測和控制信號處理流水線。
評論