為了能夠?qū)崟r地采集、處理、顯示視頻,設(shè)計并實現(xiàn)了一種基于雙PowerPC硬核架構(gòu)的實時視頻處理平臺;用硬件實現(xiàn)視頻的預(yù)處理算法,并以用戶IP核的形式添加到硬件系統(tǒng)中,上層的視頻處理軟件程序則直接從存儲器中調(diào)用預(yù)處理后的圖像數(shù)據(jù);重點介紹了在FPGA上構(gòu)建雙PowerPC硬核架構(gòu)的硬件系統(tǒng);采用乒乓控制算法緩存一行圖像數(shù)據(jù);用DMA的方式將圖像數(shù)據(jù)保存在存儲器中;以邊緣檢測作為視頻預(yù)處理算法的一個實例,在平臺上實現(xiàn),實驗結(jié)果表明,用本平臺實現(xiàn)僅需40ms;本平臺能夠?qū)崟r處理視頻,具有較高的實用價值。
?。啊∫?/h2>
目前,視頻處理平臺大多使用DSP芯片進行圖像處理。實時視頻處理對系統(tǒng)性能提出了極高的要求,幾乎最簡單的功能也超出了單個通用DSP芯片的處理能力。一旦達到極限,通常只有增加額外的DSP芯片。2010年郭春輝提出一種基于多條帶、多DSP的并行視頻處理系統(tǒng)[1]。這種采用多處理器并行處理的方法雖然提高了處理速度,但增加了系統(tǒng)開發(fā)的復雜度,例如任務(wù)的合理分配,多處理器之間的通信、互斥等。當然,也增加了系統(tǒng)的功耗。DSP在性能方面的局限導致開發(fā)更為專用的芯片,如多媒體處理器,來克服這些問題。然而,事實證明這些器件除了在范圍極窄的一些應(yīng)用中,都有不靈活的缺點,同時還存在性能瓶頸。基于處理器的方案,其局限在高分辨率視頻處理系統(tǒng),如HDTV和醫(yī)療圖像系統(tǒng)中特別明顯。基本上,這種方案受限于多少個周期可以完成一次加法和乘法運算。
采用FPGA進行視頻處理使設(shè)計人員可以利用并行處理技術(shù)實現(xiàn)視頻信號處理算法。設(shè)計人員還可以在設(shè)計面積和速度之間進行折衷,并且可以用比DSP低得多的時鐘頻率完成給定的功能。更重要的是它的靈活性,能滿足固件升級及以后多媒體標準改進的要求。因此,本文提出一種基于FPGA 可重構(gòu)的軟硬件協(xié)同設(shè)計的實時視頻處理平臺。平臺使用常規(guī)的FPGA開發(fā)工具,提供一個適應(yīng)強、模塊化的架構(gòu),同時滿足高性能、低功耗的要求。
1 總體設(shè)計
視頻是一種連續(xù)變化的圖像信息。一般地,視頻處理大致可以分為底層處理(即預(yù)處理)和上層處理:底層處理的數(shù)據(jù)量大,算法實現(xiàn)比較簡單,且存在較大的并行性;上層處理的算法復雜,而數(shù)據(jù)量小。對于視頻處理的實現(xiàn)手段,在視頻的預(yù)處理階段,采用軟件實現(xiàn)是一個很耗時的過程,但采用硬件實現(xiàn)就可以對大量的視頻數(shù)據(jù)進行并行處理,能夠極大地提高視頻處理的速度;而在視頻上層處理階段,采用軟件實現(xiàn)則具有較高的性價比。
例如,Visicom公司發(fā)現(xiàn)對于中值濾波,DSP需要67個周期完成該算法。采用FPGA只需要運行在25MHz的時鐘頻率,因為FPGA可并行實現(xiàn)該功能。而DSP要達到同樣的性能則需要運行在超過1.5GHz的時鐘頻率。在這一特定的應(yīng)用中,FPGA的方案比一個100MHz時鐘頻率的DSP的要強大約17倍[2]。
范圍廣泛的實時圖像和視頻預(yù)處理功能都適合采用FPGA硬件實現(xiàn),它們包括實時:邊緣檢測、縮放、色彩和色差校正、陰影增強、圖像放置、直方圖功能、銳化、中值過濾、模糊分析等。
本設(shè)計的實時視頻處理平臺采用Xilinx公司大學計劃XUP?。郑椋颍簦澹桑伞。校颍?開發(fā)板。它包括一個Virtex-II?。校颍?XC2VP30FPGA,其內(nèi)部有30816個邏輯單元,136個18位乘法器,2448kB塊RAM,兩個PowerPC?。矗埃堤幚砥鳌_€包括一根DDR?。樱模遥粒汀。模桑停?插槽,可以支持高達2Gbytes的RAM,若干擴展接口和一個XSGA視頻接口。外接一塊視頻解碼板(支持ITU-R BT.656視頻標準),該開發(fā)板就能完成視頻的采集、處理和顯示。實時視頻處理平臺總體框圖如圖1所示。
視頻采集部分包括行解碼、4:2:2轉(zhuǎn)4:4:4、行緩存和緩存控制邏輯模塊、分配器、選擇器模塊等。測試部分包括YCbCr轉(zhuǎn)RGB、視頻時序信號發(fā)生模塊等。這兩部分是Xilinx公司提供的驗證設(shè)計,故本文只對其做簡單介紹。預(yù)處理部分包括視頻預(yù)處理邏輯模塊,下文將重點介紹該模塊。這三部分構(gòu)成用戶邏輯。用戶邏輯和PLB?。桑薪涌跇?gòu)成一個完整的基于PLB總線的用戶IP核,可以方便地將其添加到視頻處理平臺的硬件系統(tǒng)中。
對于視頻信號源,可以是有線電視、DVD、VCR、CCD等。在對模擬視頻信號進行數(shù)字化處理時,先通過視頻解碼板把它轉(zhuǎn)換成符合ITU-R?。拢裕叮担稑藴实臄?shù)字視頻流。在FPGA芯片內(nèi),對該數(shù)字視頻流進行采集及預(yù)處理。經(jīng)處理后的視頻流,一方面通過YCbCr轉(zhuǎn)RGB模塊、行緩存、及視頻DAC轉(zhuǎn)換成RGB信號,供顯示器顯示,作為測試用;另一方面,該視頻流還以DMA 的方式通過PLB總線保存到片外的DDR?。樱模遥粒?中。這樣,在PowerPC處理器上運行的應(yīng)用程序就可以直接從DDR?。樱模遥粒?中調(diào)用已經(jīng)過視頻預(yù)處理模塊處理的視頻數(shù)據(jù),完成上層的視頻處理算法。
?。保薄‰pPowerPC硬核結(jié)構(gòu)
?。桑拢汀。校铮鳎澹颍校谩。矗埃堤幚砥骱耸牵常参坏模遥桑樱谩。茫校?硬核,它嵌入到FPGA內(nèi)用于實現(xiàn)高性能嵌入式應(yīng)用。它包括標量5級流水線、獨立指令和數(shù)據(jù)緩存、1 個JTAG 端口、跡線FIFO (trace?。疲桑疲希⒍鄠€定時器和1個內(nèi)存管理單元。它最高可以工作在300MHz頻率下,具有600+DMIPS的運行速度。
使用Xilinx公司提供的嵌入式開發(fā)套件EDK,在FPGA上構(gòu)建視頻處理平臺的硬件系統(tǒng),包括雙PowePC處理器、PLB總線、DDR SDRAM 存儲器、互斥體、郵箱、用戶IP核(包括視頻預(yù)處理邏輯模塊)和其它外設(shè)。
實現(xiàn)PowerPC雙核架構(gòu)的難點是數(shù)據(jù)的并行處理和共享存儲器的訪問競爭。因此,在硬件系統(tǒng)中添加互斥體,它包括數(shù)量可配置的互斥信號量,每個互斥信號量包括一個32bit用戶配置寄存器(存儲專用數(shù)據(jù)),用來解決多核環(huán)境下訪問共享存儲器。在多核環(huán)境下,一個處理器可以用郵箱與另一個處理器通信,這樣就能實現(xiàn)視頻處理算法的并行執(zhí)行。
?。保病⌒薪獯a模塊
經(jīng)視頻解碼板轉(zhuǎn)換后的數(shù)字視頻流,符合ITU-RBT.656標準,通過9根信號線(1根27MHz時鐘線LLC_CLOCK和8根YCbCr視頻數(shù)據(jù)線)接入FPGA。行解碼模塊完成從數(shù)字視頻流中提取所需的視頻信息,包括場標識位F (處于奇場或偶場)、場狀態(tài)標識位V(處于場正程階段或場消隱階段)、行狀態(tài)標識位H (有效視頻起始信號或有效視頻結(jié)束信號),以及YCbCr視頻數(shù)據(jù)。視頻數(shù)據(jù)是以27M 字/秒的速率傳輸?shù)?,其順序是:Cb0,Y0,Cr0,Y1,Cb2,Y2,Cr2,…?其中,Cb0,Y0,Cr0這3個字指的是同一像素的亮度和色差信號采樣,后面的Y1對應(yīng)于下一個像素的亮度采樣。
?。保场。矗海玻海厕D(zhuǎn)4:4:4模塊
為了數(shù)據(jù)傳輸和存儲的需要,ITU-R?。拢裕叮担稑藴什捎茫伲茫猓茫颍矗海玻海膊蓸痈袷?,就是每采樣4個亮度信號,只采樣2對色差信號,因此在對視頻數(shù)據(jù)進行處理之前,必須重建YCbCr4:2:2采樣中丟失的Cb、Cr色差信號。在該模塊中,采用復制前一像素的Cb、Cr色差信號的方法,把YCbCr4:2:2采樣格式的視頻流轉(zhuǎn)換成YCbCr4:4:4采樣格式的視頻流。因此,模塊輸出的數(shù)字視頻流的頻率為輸入Y信號的頻率,即像素時鐘頻率,等于13.5MHz。
1.4 視頻預(yù)處理邏輯模塊
邊緣檢測是圖像處理中的重要內(nèi)容。邊緣在邊界檢測、圖像分割、模式識別、機器視覺等中有很重要的作用。因此,本設(shè)計以邊緣檢測作為視頻預(yù)處理算法的一個實例。在邊緣檢測算法中,采用LOG算子,它通過求二階導數(shù)中的零交叉點來檢測邊緣,檢測出的邊緣寬度較細,有利于邊緣的精確定位。LOG算子使用的5×5模板為:
當然,工程師可以根據(jù)不同的需要,在該模塊中用硬件邏輯實現(xiàn)不同的視頻預(yù)處理算法,例如:縮放、色彩和色差校正、中值過濾等。
?。保怠。伲茫猓茫蜣D(zhuǎn)RGB模塊
YCbCr和RGB是視頻圖像中常用的兩種色彩空間,用YCbCr色彩空間表示顏色易于實現(xiàn)壓縮和方便傳輸,但現(xiàn)有顯示設(shè)備大多采用RGB信號驅(qū)動,因此,對于視頻的顯示,需要將YCbCr信號轉(zhuǎn)換為RGB信號。YCbCr轉(zhuǎn)RGB的公式:
式中,Y、Cb、Cr 信號值的范圍是16~235,均為8比特。考慮到兼容性,在設(shè)計中,Y、Cb、Cr 信號均采用10比特位。結(jié)合FPGA器件的特點,及在用硬件邏輯實現(xiàn)浮點運算時,滿足精度和浮點的要求,將以上公式改為:
在RGB信號輸出時,取其高8位即可。對于公式中的運算“1/256”,在代碼設(shè)計時采用截數(shù)的方法實現(xiàn)。
?。保丁⌒芯彺?/p>
本設(shè)計采集的視頻分辨率為720×576,采用24位色(R、G、B各為8位),因此保存一幀圖像需要720×576×24=9.4921875Mbit的存儲空間??梢?,一幀圖像數(shù)據(jù)所需的存儲空間是比較大的,不適合直接保存在FPGA 片內(nèi)的塊RAM中。有幾種方案可以選擇,一是采用雙口RAM 作為幀緩存,但這種容量的雙口RAM 芯片較貴,勢必增加成本;二是采用兩片DDR?。樱模遥粒停ㄟ^乒乓控制算法構(gòu)成雙端口的幀緩存,這種方法需另外制板,增加了設(shè)計的復雜度;三是在FPGA片內(nèi)構(gòu)建兩個行緩存,并采用乒乓控制算法,每次只存儲一行視頻數(shù)據(jù),然后通過DMA的方式把576行視頻數(shù)據(jù)逐一存儲到DDR?。樱模遥粒?中。這樣,僅需兩行視頻數(shù)據(jù)的存儲空間,即720×2×24=33.75kbit,大幅減少系統(tǒng)對存儲資源的需求,一方面節(jié)約了成本,另一方面也充分利用FPGA 片內(nèi)的塊RAM。圖2顯示了采用乒乓控制算法控制兩個行緩存讀寫視頻數(shù)據(jù)的過程。
對于分辨率為720×576的視頻圖像,第0行視頻數(shù)據(jù)首先寫入行緩存0,此時,行緩存0處于寫狀態(tài),行緩存1處于讀狀態(tài)。當向行緩存0寫完第0行最后一個像素時,產(chǎn)生Ho_444信號。行緩存0隨之變?yōu)樽x狀態(tài),行緩存1變?yōu)閷憼顟B(tài)。接著,第1行視頻數(shù)據(jù)開始寫入行緩存1,同時,DAC從行緩存0讀出第0行視頻數(shù)據(jù)。當向行緩存1寫完第1行最后一個像素時,再次產(chǎn)生Ho_444信號。行緩存0隨之變?yōu)閷憼顟B(tài),行緩存1變?yōu)樽x狀態(tài)。然后,第2行視頻數(shù)據(jù)開始寫入行緩存0,DAC同時從行緩存1讀出第1行視頻數(shù)據(jù)。如此循環(huán)反復。因此,從整個控制模塊兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流是連續(xù)不斷的,沒有任何停頓,完成數(shù)據(jù)的無縫緩沖與處理[3]。
?。保贰。校蹋隆。桑薪涌?/p>
?。校蹋隆。桑薪涌谟糜谠冢校蹋驴偩€及用戶IP核之間提供一個快速實現(xiàn)且高度適應(yīng)的接口。通過使用VHDL?。纾澹睿澹颍椋悖笳Z句,根據(jù)用戶需求提供多樣的服務(wù)及可選的特性。在本設(shè)計中,選擇了中斷、軟件訪問寄存器和DMA等特性。
視頻數(shù)據(jù)自動寫入行緩存,當寫完一行視頻數(shù)據(jù)后,由用戶邏輯產(chǎn)生中斷信號,同時視頻數(shù)據(jù)寫入另一個行緩存,接著CPU響應(yīng)中斷,并在中斷服務(wù)程序中配置DMA 寄存器,如源地址、目的地址、傳輸長度等參數(shù),接著啟動DMA。然后,DMA申請得到PLB總線控制權(quán),自動從行緩存中讀出視頻數(shù)據(jù),并通過PLB總線存儲到DDR SDRAM,這樣循環(huán)反復,就在DDR SDRAM 中得到一幀完整的經(jīng)過預(yù)處理后的視頻數(shù)據(jù)。這樣,在PowerPC處理器上運行的上層視頻處理程序就可以直接從DDR?。樱模遥粒?中調(diào)用這些數(shù)據(jù)。
2 實驗結(jié)果
通過示波器測量輸出的像素時鐘信號(PIXEL_CLOCK信號,該信號連接到視頻DAC),得到頻率瞬態(tài)值為27.03MHz,根據(jù)ITU-R?。拢裕叮担?標準,1 行視頻流包括1728個字,一幀圖像包含兩場,共625行,則輸出一幀圖像所需時間為
,即FPGA對一幀圖像進行邊緣檢測的時間。注意到本設(shè)計所用的模擬攝像頭為PAL制式,也是40ms/幀圖像,所以,證明本設(shè)計實現(xiàn)了實時處理視頻。另外,視頻信號的測量必須注意終端匹配的問題[4]。
3 結(jié)論
本文提出一種高性能的實時視頻處理平臺,并在Virtex-II?。校颍铩。兀茫玻郑校常埃疲校牵辽蠈崿F(xiàn)。相對于別的以硬件邏輯的形式實現(xiàn)圖像處理算法[5-6],該平臺采用雙PowerPC硬核架構(gòu),以用戶IP核的形式,為工程師在片上系統(tǒng)中實現(xiàn)各種視頻處理算法提供了最大的靈活性。實驗結(jié)果證明該平臺能夠?qū)崟r處理視頻,具有較高的實用價值,將廣泛應(yīng)用于消費類電子、視頻監(jiān)控、遠程醫(yī)療和視頻會議等領(lǐng)域。
評論