基于FPGA的高速多路視頻數(shù)據(jù)采集系統(tǒng)
摘要:針對同時處理高速多路視頻數(shù)據(jù)的需求,以NiosIl軟核CPU為核心,通過在FPGA上構(gòu)建可編程片上系統(tǒng)(System On Programmable Chip,SOPC),利用SOPC系統(tǒng)自定義外設(shè)接口,配合DMA技術(shù),完成對A/D轉(zhuǎn)換后的多路視頻數(shù)據(jù)的同時解碼采集。視頻解碼模塊采用滑動窗法快速檢測定時基準(zhǔn)信號。FPGA可重構(gòu)的特性可以使系統(tǒng)根據(jù)實際應(yīng)用需要在原方案基礎(chǔ)上擴(kuò)展、裁減功能模塊,并根據(jù)資源情況重構(gòu)系統(tǒng),達(dá)到資源與效率的最優(yōu)匹配。
關(guān)鍵詞:FPGA;Nios;IP核;多路數(shù)據(jù)采集;視頻解碼
引言
數(shù)字圖像處理技術(shù)廣泛地應(yīng)用在信息處理領(lǐng)域,如何高效、靈活地將現(xiàn)實世界圖像數(shù)字化是信息處理的關(guān)鍵技術(shù)之一。本文基于FPGA技術(shù)設(shè)計了一個高速多路視頻數(shù)據(jù)采集系統(tǒng)?;贏ltera Cyclone II芯片,構(gòu)建一個集成NiosII軟核處理器、存儲器、I/O接口、自定義外設(shè)的可編程片上系統(tǒng)系統(tǒng)(System On Programmable Chip,SOPC)。利用FPGA高速并行處理能力,可同時對多路視頻數(shù)據(jù)進(jìn)行視頻解碼,大大提高系統(tǒng)數(shù)據(jù)采集前端的處理能力。
SOPC系統(tǒng)是可編程片上系統(tǒng),由單個芯片完成整個系統(tǒng)的主要邏輯功能,同時具有靈活的可重構(gòu)特性。可根據(jù)實際應(yīng)用中的不同需求裁剪、擴(kuò)充、升級系統(tǒng),并且軟硬件系統(tǒng)均可編程。NiosII軟核CPU的外設(shè)可由設(shè)計者自由配置,具有靈活且運行速度快的特點。
1 系統(tǒng)功能及特點
1.1 功能描述
本文所提出的系統(tǒng)以Altera公司CycloneII系列的EP2C70為核心,通過外接擴(kuò)展板接入視頻信號,可同時采集處理2~6路視頻數(shù)據(jù),將視頻數(shù)據(jù)解碼后提取出圖像區(qū)域的RAW DATA。SOPC系統(tǒng)通過自定義FIFO接口緩存數(shù)據(jù),利用DMA技術(shù)將視頻數(shù)據(jù)搬移至存儲區(qū)域,供后續(xù)程序調(diào)用。
1.2 系統(tǒng)特點
本系統(tǒng)主要具有以下特點:
①采用硬件描述語言編寫的視頻解碼模塊可以高效地完成視頻編解碼工作,如果接入的視頻信號編碼格式不同,可以靈活重構(gòu)每路視頻的解碼模塊,而不需要修改硬件設(shè)計。
②NiosII軟核CPU可以靈活地進(jìn)行任務(wù)調(diào)度,配合Nios IDE軟件編程環(huán)境,可以方便的對視頻A/D采集芯片進(jìn)行I2C總線配置。
③自定義FIFO接口緩存視頻數(shù)據(jù),保證數(shù)據(jù)連貫性和準(zhǔn)確性,F(xiàn)IFO的緩沖區(qū)的長度和數(shù)據(jù)寬度均可以定制,針對每一路視頻數(shù)據(jù)格式配置不同的FIFO緩沖區(qū)。
④采用DMA技術(shù)完成采集數(shù)據(jù)從SOPC外設(shè)到內(nèi)存的搬移,減輕CPU的負(fù)擔(dān)。
2 實現(xiàn)原理及系統(tǒng)結(jié)構(gòu)
2.1 系統(tǒng)總體框架
整個系統(tǒng)主要分為SOPC系統(tǒng)、多路視頻解碼模塊、視頻A/D芯片絹、SDRAM存儲器幾大模塊。SOPC系統(tǒng)和多路視頻解碼模塊均由FPGA可編程邏輯資源實現(xiàn)。SOPC系統(tǒng)通過自定義FIFO(Custom FIFO)緩沖來自多路視頻解碼模塊(Multi-channel Video Decoder Module)的數(shù)據(jù),DMA完成數(shù)據(jù)從Custom FIFO到SDRAM的搬移工作,NiosII CPU通過Avalon總線對視頻A/D采集芯片、自定義FIFO接口模塊以及DMA控制器進(jìn)行配置。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
SOPC系統(tǒng)以NiosII處理器為核心,通過AvaIon總線作為控制信號和數(shù)據(jù)傳輸中樞,NiosII軟核CPU及各類外設(shè)均掛載在Avalon總線上,本文SOPC系統(tǒng)中包括NiosII處理器、SSRAM、片上內(nèi)存、JTAG控制接口、I2C總線控制接口、自定義FIFO接口、2個SDRAM控制器、DMA等。
2.2 視頻解碼模塊設(shè)計
視頻采集擴(kuò)展板以TVP5150低功耗視頻A/D芯片為核心,采集模擬攝像頭信號,經(jīng)A/D采樣后量化編碼成8位ITU-RBT.656視頻編碼格式輸出,輸出圖像分辨率為720x 480,像素時鐘為27 MHz。
視頻解碼模塊具有兩個功能:
①根據(jù)ITU-RBT.656并行接口規(guī)則,將TVP5150芯片輸出的數(shù)據(jù)流轉(zhuǎn)換成YUV422的圖像RAW DATA。
②對視頻分辨率進(jìn)行調(diào)整,調(diào)整為640×480的分辨率,當(dāng)數(shù)據(jù)為有效區(qū)域像素時發(fā)出數(shù)據(jù)有效信號,即對自定義FIFO的寫請求信號。
ITU-RBT.656協(xié)議中規(guī)定的信號中主要有3類:有效視頻區(qū)域數(shù)據(jù)信號、視頻定時基準(zhǔn)信號、輔助信號。視頻解碼模塊第一部分任務(wù)關(guān)鍵是如何快速檢測ITU-RBT.656視頻數(shù)據(jù)流中視頻定時基準(zhǔn)信號SAV/EAV。定時基準(zhǔn)信號由4個字節(jié)的序列組成,其格式為FF0000XY,前3個字節(jié)FF0000為標(biāo)志序列,最后一個字節(jié)XY表示該定時基準(zhǔn)信號前后的數(shù)據(jù)行位于整個數(shù)據(jù)幀的位置及該定時基準(zhǔn)信號類型。最后一字節(jié)XY每一位的含義如表1所列。
F、V、H是標(biāo)志位,取值可為0或1。F位標(biāo)識圖像數(shù)據(jù)是奇場數(shù)據(jù)還是偶場數(shù)據(jù),V位標(biāo)識當(dāng)前數(shù)據(jù)是否為有效數(shù)據(jù),H位標(biāo)識該定時基準(zhǔn)信號為SAV還是EAV。F、V、H標(biāo)志位的取值與含義如表2所列。其中低四位P3~P0是由高4位經(jīng)異或運算獲得,用于F,V和H值校驗和糾錯碼。 P3~P0的定義為:P3=VH,P2=FH,P1=FV,P0=FVH。
傳統(tǒng)序列檢測通常使用狀態(tài)機來實現(xiàn)。本設(shè)計創(chuàng)新的使用滑動窗法來快速檢測定時基準(zhǔn)信號,這種設(shè)計程序結(jié)構(gòu)清晰,在很大程度上減少了代碼量。根據(jù)ITU-RBT.656協(xié)議中定時基準(zhǔn)信號的定義,聲明變量SAV=(Window==24’hFF0000)&(iData[4]==1’b0)。其中Window聲明24位寄存器,iData[7:0]是8位輸入信號,這里只取第4位。滑動窗更新時每次左移8位,低8位用輸入信號補齊。
解碼模塊的第二個功能在調(diào)整分辨率的時候引入Skip信號,當(dāng)Skip信號有效時,該像素點數(shù)據(jù)跳過。本設(shè)計通過除法器控制Skip信號,將行像素計算器的輸出值作為除法器的分子,分母為9,skip信號由除法器余數(shù)控制,當(dāng)余數(shù)為0時Skip信號有效。采用這種方案將行像素點由720轉(zhuǎn)換為640。
2.3 SOPC自定義FIFO接口
由于視頻輸入部分工作在27 MHz的時鐘頻率下,而NiosII軟核CPU為了獲取較高的系統(tǒng)處理能力,整個SOPC系統(tǒng)工作在100 MHz的時鐘頻率下。數(shù)據(jù)從外部進(jìn)入SOPC系統(tǒng)的過程中由于時鐘的不匹配,極易造成數(shù)據(jù)重復(fù)或丟失,而異步FIFO正是解決這個問題的關(guān)鍵。采用異步FI FO作為數(shù)據(jù)緩沖接口,低速時鐘域接收來自視頻解碼模塊的Raw Data圖像數(shù)據(jù),完成寫FIFO操作;高速時鐘域響應(yīng)DMA控制器的讀請求,由DMA控制器完成讀FIFO操作。
多路視頻數(shù)據(jù)存儲接口模塊通過SOPC的自定義外設(shè)實現(xiàn),本設(shè)計針對多路視頻數(shù)據(jù)采集,可根據(jù)每路視頻數(shù)據(jù)的不同格式單獨為每路視頻數(shù)據(jù)定制存儲接口。這種設(shè)計一方面降低了系統(tǒng)硬件結(jié)構(gòu)的復(fù)雜度,另一方面保證每路數(shù)據(jù)獨立并行傳輸,提高數(shù)據(jù)采集的效率。自定義外設(shè)接口遵循Avalon總線協(xié)議,根據(jù)發(fā)起數(shù)據(jù)操作的方式不同,分為Master和Slave兩種,本系統(tǒng)的多路數(shù)據(jù)存儲接口模塊采用Salve模式。
自定義存儲接口模塊以FIFO IP Core為核心,通過與Avalon總線協(xié)議匹配,接收NiosII處理器的控制信號。該模塊利用QuartusII中Mega Wizard Plug-In Manager實例化FIFO IP Core,根據(jù)數(shù)據(jù)格式和系統(tǒng)資源綜合考慮,F(xiàn)IFO的數(shù)據(jù)寬度為8位,F(xiàn)IFO深度為1024。在這里保留FI FO IP Core的讀時鐘信號readclk、讀請求信號readrequest、8位讀取數(shù)據(jù)接口q[7:0]、8位寫入數(shù)據(jù)接口 data[7:0]、寫時鐘信號writec lk、寫請求信號writerequest以及FIFO空狀態(tài)信號rdempty。實例化后的FIFO模塊如圖2所示。
在SOPC自定義器件的配置過程中,根據(jù)我們所要實現(xiàn)的功能,F(xiàn)IFO的寫入端應(yīng)為SOPC系統(tǒng)的對外接口,F(xiàn)IFO的讀取端應(yīng)與Avalon總線掛接,并能被DMA控制模塊讀取。圖3為實例化后FIFO模塊作為自定義外設(shè)引入SOPC系統(tǒng)時的接口配置。
2.4 DMA控制器模塊
DMA控制器負(fù)責(zé)將自定義FIFO接口中的數(shù)據(jù)搬移至存儲區(qū)域,每路視頻數(shù)據(jù)源對應(yīng)一個FIFO接口,每個FIFO接口配有一個DMA通道,各路視頻數(shù)據(jù)的解碼、存儲互不影響。SOPC系統(tǒng)所支持的DMA控制器IP Core傳輸模式有3種:
①存儲器到存儲器模式。這種情況下需要同時打開發(fā)送通道和接收通道,而且源地址和目標(biāo)地址都是自增。
②存儲器到外設(shè)模式。這種情況下只要打開發(fā)送通道,而且源地址自增,目標(biāo)地址固定。
③外設(shè)到存儲器模式。這種情況下只要打開接收通道,而且源地址固定,目標(biāo)地址自增。
本系統(tǒng)設(shè)計中,DMA控制器工作任務(wù)是將自定義外設(shè)存儲接口的數(shù)據(jù)搬移至SDRAM內(nèi)存中,所以采用第3種DMA控制器工作模式,即從外設(shè)到存儲器模式。這種工作模式下,源地址是自定義外設(shè)的地址,是一個固定地址。而目標(biāo)地址是SDRAM存儲器地址,需要地址自增,在數(shù)據(jù)傳輸過程中,由DMA控制器自動完成目標(biāo)地址自增操作。SOPC系統(tǒng)中的DMA控制器IP Core配置中的DMA寄存器的寬度大小,決定了一次DMA傳輸所能傳輸?shù)臄?shù)據(jù)量大小。本設(shè)計所需搬移的數(shù)據(jù)量為一幀圖像大小。
2.5 存儲空間設(shè)計
本系統(tǒng)方案中根據(jù)開發(fā)板的資源,將多路采集的視頻數(shù)據(jù)分別存儲在兩塊SDRAM中,SOPC系統(tǒng)中兩塊SDRAM的基地址分別為SDRAM_0_BASE與SDRAM_1_BASE。一塊SDRAM中存儲的每路視頻數(shù)據(jù)間隔RAM_PROTECT_SPACE的地址空間,DATA_SPACE定義了每路視頻數(shù)據(jù)存儲在SDRAM中的預(yù)留空間大小。由此可得第n路視頻數(shù)據(jù)在SDRAM中的存儲空間的地址。
起始地址:DATA_n_START_Addr=BASE_ADDRESS+RAM_PROTECT_SPACE。
結(jié)束地址:DATA_n_END_Addr=DATA_n_START_addr+DATA_SPACE。
3 系統(tǒng)軟件設(shè)計
本方案軟件部分主要為TVP5150芯片初始化、DMA控制器的配置等。軟件結(jié)構(gòu)流程如圖4所示。
4 實驗結(jié)果
為檢驗高速多路視頻數(shù)據(jù)采集系統(tǒng)的圖像采集效果,系統(tǒng)外接4路攝像頭同時采集圖像數(shù)據(jù),在實際視頻數(shù)據(jù)采集過程中,多路視頻圖像顯示連貫流暢。將存儲在SDRAM中的圖像數(shù)據(jù)讀取后,通過后期融合算法,融合成環(huán)境平面圖像,實際多路圖像采集融合效果如圖5所示。
結(jié)語
本文基于FPGA設(shè)計了一種高速多路視頻數(shù)據(jù)采集系統(tǒng),該系統(tǒng)通過外接視頻擴(kuò)展板連接多個視頻攝像頭,通過在FPGA內(nèi)部構(gòu)建視頻解碼模塊,能夠?qū)γ柯芬曨l數(shù)據(jù)并行解碼,提高要求實時性的多路數(shù)據(jù)采集的效率,并可在不更改硬件設(shè)計的前提下對編碼格式的數(shù)據(jù)采用不同的解碼模塊。SOPC系統(tǒng)的自定義FIFO接口能夠高速緩存視頻數(shù)據(jù)。通過DMA IP Core的使用,可減少Niosll軟核CPU讀取低速I/O接口數(shù)據(jù)所占用的時鐘周期,提高整個系統(tǒng)的工作效率。