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