為了能夠?qū)崟r(shí)地采集、處理、顯示視頻,設(shè)計(jì)并實(shí)現(xiàn)了一種基于雙PowerPC硬核架構(gòu)的實(shí)時(shí)視頻處理平臺(tái);用硬件實(shí)現(xiàn)視頻的預(yù)處理算法,并以用戶IP核的形式添加到硬件系統(tǒng)中,上層的視頻處理軟件程序則直接從存儲(chǔ)器中調(diào)用預(yù)處理后的圖像數(shù)據(jù);重點(diǎn)介紹了在FPGA上構(gòu)建雙PowerPC硬核架構(gòu)的硬件系統(tǒng);采用乒乓控制算法緩存一行圖像數(shù)據(jù);用DMA的方式將圖像數(shù)據(jù)保存在存儲(chǔ)器中;以邊緣檢測(cè)作為視頻預(yù)處理算法的一個(gè)實(shí)例,在平臺(tái)上實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果表明,用本平臺(tái)實(shí)現(xiàn)僅需40ms;本平臺(tái)能夠?qū)崟r(shí)處理視頻,具有較高的實(shí)用價(jià)值。
?。啊∫?/h2>
目前,視頻處理平臺(tái)大多使用DSP芯片進(jìn)行圖像處理。實(shí)時(shí)視頻處理對(duì)系統(tǒng)性能提出了極高的要求,幾乎最簡(jiǎn)單的功能也超出了單個(gè)通用DSP芯片的處理能力。一旦達(dá)到極限,通常只有增加額外的DSP芯片。2010年郭春輝提出一種基于多條帶、多DSP的并行視頻處理系統(tǒng)[1]。這種采用多處理器并行處理的方法雖然提高了處理速度,但增加了系統(tǒng)開(kāi)發(fā)的復(fù)雜度,例如任務(wù)的合理分配,多處理器之間的通信、互斥等。當(dāng)然,也增加了系統(tǒng)的功耗。DSP在性能方面的局限導(dǎo)致開(kāi)發(fā)更為專用的芯片,如多媒體處理器,來(lái)克服這些問(wèn)題。然而,事實(shí)證明這些器件除了在范圍極窄的一些應(yīng)用中,都有不靈活的缺點(diǎn),同時(shí)還存在性能瓶頸?;谔幚砥鞯姆桨?,其局限在高分辨率視頻處理系統(tǒng),如HDTV和醫(yī)療圖像系統(tǒng)中特別明顯?;旧希@種方案受限于多少個(gè)周期可以完成一次加法和乘法運(yùn)算。
采用FPGA進(jìn)行視頻處理使設(shè)計(jì)人員可以利用并行處理技術(shù)實(shí)現(xiàn)視頻信號(hào)處理算法。設(shè)計(jì)人員還可以在設(shè)計(jì)面積和速度之間進(jìn)行折衷,并且可以用比DSP低得多的時(shí)鐘頻率完成給定的功能。更重要的是它的靈活性,能滿足固件升級(jí)及以后多媒體標(biāo)準(zhǔn)改進(jìn)的要求。因此,本文提出一種基于FPGA 可重構(gòu)的軟硬件協(xié)同設(shè)計(jì)的實(shí)時(shí)視頻處理平臺(tái)。平臺(tái)使用常規(guī)的FPGA開(kāi)發(fā)工具,提供一個(gè)適應(yīng)強(qiáng)、模塊化的架構(gòu),同時(shí)滿足高性能、低功耗的要求。
?。薄】傮w設(shè)計(jì)
視頻是一種連續(xù)變化的圖像信息。一般地,視頻處理大致可以分為底層處理(即預(yù)處理)和上層處理:底層處理的數(shù)據(jù)量大,算法實(shí)現(xiàn)比較簡(jiǎn)單,且存在較大的并行性;上層處理的算法復(fù)雜,而數(shù)據(jù)量小。對(duì)于視頻處理的實(shí)現(xiàn)手段,在視頻的預(yù)處理階段,采用軟件實(shí)現(xiàn)是一個(gè)很耗時(shí)的過(guò)程,但采用硬件實(shí)現(xiàn)就可以對(duì)大量的視頻數(shù)據(jù)進(jìn)行并行處理,能夠極大地提高視頻處理的速度;而在視頻上層處理階段,采用軟件實(shí)現(xiàn)則具有較高的性價(jià)比。
例如,Visicom公司發(fā)現(xiàn)對(duì)于中值濾波,DSP需要67個(gè)周期完成該算法。采用FPGA只需要運(yùn)行在25MHz的時(shí)鐘頻率,因?yàn)椋疲校牵量刹⑿袑?shí)現(xiàn)該功能。而DSP要達(dá)到同樣的性能則需要運(yùn)行在超過(guò)1.5GHz的時(shí)鐘頻率。在這一特定的應(yīng)用中,FPGA的方案比一個(gè)100MHz時(shí)鐘頻率的DSP的要強(qiáng)大約17倍[2]。
范圍廣泛的實(shí)時(shí)圖像和視頻預(yù)處理功能都適合采用FPGA硬件實(shí)現(xiàn),它們包括實(shí)時(shí):邊緣檢測(cè)、縮放、色彩和色差校正、陰影增強(qiáng)、圖像放置、直方圖功能、銳化、中值過(guò)濾、模糊分析等。
本設(shè)計(jì)的實(shí)時(shí)視頻處理平臺(tái)采用Xilinx公司大學(xué)計(jì)劃XUP?。郑椋颍簦澹桑伞。校颍?開(kāi)發(fā)板。它包括一個(gè)Virtex-II?。校颍?XC2VP30FPGA,其內(nèi)部有30816個(gè)邏輯單元,136個(gè)18位乘法器,2448kB塊RAM,兩個(gè)PowerPC 405處理器。還包括一根DDR?。樱模遥粒汀。模桑停?插槽,可以支持高達(dá)2Gbytes的RAM,若干擴(kuò)展接口和一個(gè)XSGA視頻接口。外接一塊視頻解碼板(支持ITU-R BT.656視頻標(biāo)準(zhǔn)),該開(kāi)發(fā)板就能完成視頻的采集、處理和顯示。實(shí)時(shí)視頻處理平臺(tái)總體框圖如圖1所示。

視頻采集部分包括行解碼、4:2:2轉(zhuǎn)4:4:4、行緩存和緩存控制邏輯模塊、分配器、選擇器模塊等。測(cè)試部分包括YCbCr轉(zhuǎn)RGB、視頻時(shí)序信號(hào)發(fā)生模塊等。這兩部分是Xilinx公司提供的驗(yàn)證設(shè)計(jì),故本文只對(duì)其做簡(jiǎn)單介紹。預(yù)處理部分包括視頻預(yù)處理邏輯模塊,下文將重點(diǎn)介紹該模塊。這三部分構(gòu)成用戶邏輯。用戶邏輯和PLB?。桑薪涌跇?gòu)成一個(gè)完整的基于PLB總線的用戶IP核,可以方便地將其添加到視頻處理平臺(tái)的硬件系統(tǒng)中。
對(duì)于視頻信號(hào)源,可以是有線電視、DVD、VCR、CCD等。在對(duì)模擬視頻信號(hào)進(jìn)行數(shù)字化處理時(shí),先通過(guò)視頻解碼板把它轉(zhuǎn)換成符合ITU-R BT.656標(biāo)準(zhǔn)的數(shù)字視頻流。在FPGA芯片內(nèi),對(duì)該數(shù)字視頻流進(jìn)行采集及預(yù)處理。經(jīng)處理后的視頻流,一方面通過(guò)YCbCr轉(zhuǎn)RGB模塊、行緩存、及視頻DAC轉(zhuǎn)換成RGB信號(hào),供顯示器顯示,作為測(cè)試用;另一方面,該視頻流還以DMA 的方式通過(guò)PLB總線保存到片外的DDR SDRAM 中。這樣,在PowerPC處理器上運(yùn)行的應(yīng)用程序就可以直接從DDR?。樱模遥粒?中調(diào)用已經(jīng)過(guò)視頻預(yù)處理模塊處理的視頻數(shù)據(jù),完成上層的視頻處理算法。
?。保薄‰pPowerPC硬核結(jié)構(gòu)
?。桑拢汀。校铮鳎澹颍校谩。矗埃堤幚砥骱耸牵常参坏模遥桑樱谩。茫校?硬核,它嵌入到FPGA內(nèi)用于實(shí)現(xiàn)高性能嵌入式應(yīng)用。它包括標(biāo)量5級(jí)流水線、獨(dú)立指令和數(shù)據(jù)緩存、1 個(gè)JTAG 端口、跡線FIFO (trace?。疲桑疲希⒍鄠€(gè)定時(shí)器和1個(gè)內(nèi)存管理單元。它最高可以工作在300MHz頻率下,具有600+DMIPS的運(yùn)行速度。
使用Xilinx公司提供的嵌入式開(kāi)發(fā)套件EDK,在FPGA上構(gòu)建視頻處理平臺(tái)的硬件系統(tǒng),包括雙PowePC處理器、PLB總線、DDR?。樱模遥粒?存儲(chǔ)器、互斥體、郵箱、用戶IP核(包括視頻預(yù)處理邏輯模塊)和其它外設(shè)。
實(shí)現(xiàn)PowerPC雙核架構(gòu)的難點(diǎn)是數(shù)據(jù)的并行處理和共享存儲(chǔ)器的訪問(wèn)競(jìng)爭(zhēng)。因此,在硬件系統(tǒng)中添加互斥體,它包括數(shù)量可配置的互斥信號(hào)量,每個(gè)互斥信號(hào)量包括一個(gè)32bit用戶配置寄存器(存儲(chǔ)專用數(shù)據(jù)),用來(lái)解決多核環(huán)境下訪問(wèn)共享存儲(chǔ)器。在多核環(huán)境下,一個(gè)處理器可以用郵箱與另一個(gè)處理器通信,這樣就能實(shí)現(xiàn)視頻處理算法的并行執(zhí)行。
?。保病⌒薪獯a模塊
經(jīng)視頻解碼板轉(zhuǎn)換后的數(shù)字視頻流,符合ITU-RBT.656標(biāo)準(zhǔn),通過(guò)9根信號(hào)線(1根27MHz時(shí)鐘線LLC_CLOCK和8根YCbCr視頻數(shù)據(jù)線)接入FPGA。行解碼模塊完成從數(shù)字視頻流中提取所需的視頻信息,包括場(chǎng)標(biāo)識(shí)位F (處于奇場(chǎng)或偶場(chǎng))、場(chǎng)狀態(tài)標(biāo)識(shí)位V(處于場(chǎng)正程階段或場(chǎng)消隱階段)、行狀態(tài)標(biāo)識(shí)位H (有效視頻起始信號(hào)或有效視頻結(jié)束信號(hào)),以及YCbCr視頻數(shù)據(jù)。視頻數(shù)據(jù)是以27M 字/秒的速率傳輸?shù)?,其順序是:Cb0,Y0,Cr0,Y1,Cb2,Y2,Cr2,…?其中,Cb0,Y0,Cr0這3個(gè)字指的是同一像素的亮度和色差信號(hào)采樣,后面的Y1對(duì)應(yīng)于下一個(gè)像素的亮度采樣。
1.3?。矗海玻海厕D(zhuǎn)4:4:4模塊
為了數(shù)據(jù)傳輸和存儲(chǔ)的需要,ITU-R?。拢裕叮担稑?biāo)準(zhǔn)采用YCbCr4:2:2采樣格式,就是每采樣4個(gè)亮度信號(hào),只采樣2對(duì)色差信號(hào),因此在對(duì)視頻數(shù)據(jù)進(jìn)行處理之前,必須重建YCbCr4:2:2采樣中丟失的Cb、Cr色差信號(hào)。在該模塊中,采用復(fù)制前一像素的Cb、Cr色差信號(hào)的方法,把YCbCr4:2:2采樣格式的視頻流轉(zhuǎn)換成YCbCr4:4:4采樣格式的視頻流。因此,模塊輸出的數(shù)字視頻流的頻率為輸入Y信號(hào)的頻率,即像素時(shí)鐘頻率,等于13.5MHz。
?。保础∫曨l預(yù)處理邏輯模塊
邊緣檢測(cè)是圖像處理中的重要內(nèi)容。邊緣在邊界檢測(cè)、圖像分割、模式識(shí)別、機(jī)器視覺(jué)等中有很重要的作用。因此,本設(shè)計(jì)以邊緣檢測(cè)作為視頻預(yù)處理算法的一個(gè)實(shí)例。在邊緣檢測(cè)算法中,采用LOG算子,它通過(guò)求二階導(dǎo)數(shù)中的零交叉點(diǎn)來(lái)檢測(cè)邊緣,檢測(cè)出的邊緣寬度較細(xì),有利于邊緣的精確定位。LOG算子使用的5×5模板為:

當(dāng)然,工程師可以根據(jù)不同的需要,在該模塊中用硬件邏輯實(shí)現(xiàn)不同的視頻預(yù)處理算法,例如:縮放、色彩和色差校正、中值過(guò)濾等。
?。保怠。伲茫猓茫蜣D(zhuǎn)RGB模塊
?。伲茫猓茫蚝停遥牵率且曨l圖像中常用的兩種色彩空間,用YCbCr色彩空間表示顏色易于實(shí)現(xiàn)壓縮和方便傳輸,但現(xiàn)有顯示設(shè)備大多采用RGB信號(hào)驅(qū)動(dòng),因此,對(duì)于視頻的顯示,需要將YCbCr信號(hào)轉(zhuǎn)換為RGB信號(hào)。YCbCr轉(zhuǎn)RGB的公式:

式中,Y、Cb、Cr 信號(hào)值的范圍是16~235,均為8比特??紤]到兼容性,在設(shè)計(jì)中,Y、Cb、Cr 信號(hào)均采用10比特位。結(jié)合FPGA器件的特點(diǎn),及在用硬件邏輯實(shí)現(xiàn)浮點(diǎn)運(yùn)算時(shí),滿足精度和浮點(diǎn)的要求,將以上公式改為:

在RGB信號(hào)輸出時(shí),取其高8位即可。對(duì)于公式中的運(yùn)算“1/256”,在代碼設(shè)計(jì)時(shí)采用截?cái)?shù)的方法實(shí)現(xiàn)。
?。保丁⌒芯彺?/p>
本設(shè)計(jì)采集的視頻分辨率為720×576,采用24位色(R、G、B各為8位),因此保存一幀圖像需要720×576×24=9.4921875Mbit的存儲(chǔ)空間??梢?jiàn),一幀圖像數(shù)據(jù)所需的存儲(chǔ)空間是比較大的,不適合直接保存在FPGA 片內(nèi)的塊RAM中。有幾種方案可以選擇,一是采用雙口RAM 作為幀緩存,但這種容量的雙口RAM 芯片較貴,勢(shì)必增加成本;二是采用兩片DDR SDRAM,通過(guò)乒乓控制算法構(gòu)成雙端口的幀緩存,這種方法需另外制板,增加了設(shè)計(jì)的復(fù)雜度;三是在FPGA片內(nèi)構(gòu)建兩個(gè)行緩存,并采用乒乓控制算法,每次只存儲(chǔ)一行視頻數(shù)據(jù),然后通過(guò)DMA的方式把576行視頻數(shù)據(jù)逐一存儲(chǔ)到DDR?。樱模遥粒?中。這樣,僅需兩行視頻數(shù)據(jù)的存儲(chǔ)空間,即720×2×24=33.75kbit,大幅減少系統(tǒng)對(duì)存儲(chǔ)資源的需求,一方面節(jié)約了成本,另一方面也充分利用FPGA 片內(nèi)的塊RAM。圖2顯示了采用乒乓控制算法控制兩個(gè)行緩存讀寫(xiě)視頻數(shù)據(jù)的過(guò)程。

對(duì)于分辨率為720×576的視頻圖像,第0行視頻數(shù)據(jù)首先寫(xiě)入行緩存0,此時(shí),行緩存0處于寫(xiě)狀態(tài),行緩存1處于讀狀態(tài)。當(dāng)向行緩存0寫(xiě)完第0行最后一個(gè)像素時(shí),產(chǎn)生Ho_444信號(hào)。行緩存0隨之變?yōu)樽x狀態(tài),行緩存1變?yōu)閷?xiě)狀態(tài)。接著,第1行視頻數(shù)據(jù)開(kāi)始寫(xiě)入行緩存1,同時(shí),DAC從行緩存0讀出第0行視頻數(shù)據(jù)。當(dāng)向行緩存1寫(xiě)完第1行最后一個(gè)像素時(shí),再次產(chǎn)生Ho_444信號(hào)。行緩存0隨之變?yōu)閷?xiě)狀態(tài),行緩存1變?yōu)樽x狀態(tài)。然后,第2行視頻數(shù)據(jù)開(kāi)始寫(xiě)入行緩存0,DAC同時(shí)從行緩存1讀出第1行視頻數(shù)據(jù)。如此循環(huán)反復(fù)。因此,從整個(gè)控制模塊兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流是連續(xù)不斷的,沒(méi)有任何停頓,完成數(shù)據(jù)的無(wú)縫緩沖與處理[3]。
?。保贰。校蹋隆。桑薪涌?/p>
?。校蹋隆。桑薪涌谟糜谠冢校蹋驴偩€及用戶IP核之間提供一個(gè)快速實(shí)現(xiàn)且高度適應(yīng)的接口。通過(guò)使用VHDL?。纾澹睿澹颍椋悖笳Z(yǔ)句,根據(jù)用戶需求提供多樣的服務(wù)及可選的特性。在本設(shè)計(jì)中,選擇了中斷、軟件訪問(wèn)寄存器和DMA等特性。
視頻數(shù)據(jù)自動(dòng)寫(xiě)入行緩存,當(dāng)寫(xiě)完一行視頻數(shù)據(jù)后,由用戶邏輯產(chǎn)生中斷信號(hào),同時(shí)視頻數(shù)據(jù)寫(xiě)入另一個(gè)行緩存,接著CPU響應(yīng)中斷,并在中斷服務(wù)程序中配置DMA 寄存器,如源地址、目的地址、傳輸長(zhǎng)度等參數(shù),接著啟動(dòng)DMA。然后,DMA申請(qǐng)得到PLB總線控制權(quán),自動(dòng)從行緩存中讀出視頻數(shù)據(jù),并通過(guò)PLB總線存儲(chǔ)到DDR SDRAM,這樣循環(huán)反復(fù),就在DDR?。樱模遥粒?中得到一幀完整的經(jīng)過(guò)預(yù)處理后的視頻數(shù)據(jù)。這樣,在PowerPC處理器上運(yùn)行的上層視頻處理程序就可以直接從DDR?。樱模遥粒?中調(diào)用這些數(shù)據(jù)。
?。病?shí)驗(yàn)結(jié)果
通過(guò)示波器測(cè)量輸出的像素時(shí)鐘信號(hào)(PIXEL_CLOCK信號(hào),該信號(hào)連接到視頻DAC),得到頻率瞬態(tài)值為27.03MHz,根據(jù)ITU-R?。拢裕叮担?標(biāo)準(zhǔn),1 行視頻流包括1728?jìng)€(gè)字,一幀圖像包含兩場(chǎng),共625行,則輸出一幀圖像所需時(shí)間為
,即FPGA對(duì)一幀圖像進(jìn)行邊緣檢測(cè)的時(shí)間。注意到本設(shè)計(jì)所用的模擬攝像頭為PAL制式,也是40ms/幀圖像,所以,證明本設(shè)計(jì)實(shí)現(xiàn)了實(shí)時(shí)處理視頻。另外,視頻信號(hào)的測(cè)量必須注意終端匹配的問(wèn)題[4]。
3 結(jié)論
本文提出一種高性能的實(shí)時(shí)視頻處理平臺(tái),并在Virtex-II?。校颍铩。兀茫玻郑校常埃疲校牵辽蠈?shí)現(xiàn)。相對(duì)于別的以硬件邏輯的形式實(shí)現(xiàn)圖像處理算法[5-6],該平臺(tái)采用雙PowerPC硬核架構(gòu),以用戶IP核的形式,為工程師在片上系統(tǒng)中實(shí)現(xiàn)各種視頻處理算法提供了最大的靈活性。實(shí)驗(yàn)結(jié)果證明該平臺(tái)能夠?qū)崟r(shí)處理視頻,具有較高的實(shí)用價(jià)值,將廣泛應(yīng)用于消費(fèi)類電子、視頻監(jiān)控、遠(yuǎn)程醫(yī)療和視頻會(huì)議等領(lǐng)域。
電子發(fā)燒友App











評(píng)論