1、引言
實時視頻圖像處理技術(shù)的應(yīng)用十分廣泛,在民用領(lǐng)域有機器人視覺、資源探測和醫(yī)學(xué)圖像分析等;在軍用領(lǐng)域有導(dǎo)彈精確制導(dǎo)、敵方目標(biāo)偵察與跟蹤等。
本設(shè)計中采用了DSP+FPGA的硬件結(jié)構(gòu),DSP采用ADI公司的高性能雙核DSP-BF561作為主處理器,負責(zé)整個算法的調(diào)度和數(shù)據(jù)流的控制,完成圖像數(shù)據(jù)的采集與顯示及核心算法的實現(xiàn);而FPGA作為DSP的協(xié)處理器,依托其高度的并行處理能力,完成圖像預(yù)處理中大量的累乘加運算。DSP的2個內(nèi)核與FPGA通過中斷進行通信響應(yīng),使系統(tǒng)的各處理器并行工作,提高了DSP內(nèi)核及FPGA的利用效率,保證了系統(tǒng)采集與顯示的實時性。
2、系統(tǒng)原理與結(jié)構(gòu)
圖像采集與處理系統(tǒng)主要包括4大模塊:圖像采集模塊、存儲模塊、處理模塊和顯示模塊。圖1所示為DSP+FPGA的圖像采集與處理系統(tǒng)硬件結(jié)構(gòu)框圖。
圖1 圖像采集與處理系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)的前端輸入模塊由CCD攝像頭及視頻解碼器7181B實現(xiàn),視頻解碼器將CCD接收到的模擬視頻信號轉(zhuǎn)換為標(biāo)準(zhǔn)的YUV4∶2∶2數(shù)字視頻格式,圖像大小為720×576。轉(zhuǎn)換后的圖像數(shù)據(jù)通過ADSP-BF561的專用視頻接口PPI0先存儲到RAM中,當(dāng)采集完一幀圖像數(shù)據(jù)時DSP的DMA產(chǎn)生中斷,此時FPGA首先對采集來的圖像數(shù)據(jù)完成圖像的預(yù)處理,然后DSP再將預(yù)處理的數(shù)據(jù)取回完成相應(yīng)圖像處理算法,最后通過PPI1接口由DMA控制器將處理完的視頻數(shù)據(jù)送到視頻編碼器7171,轉(zhuǎn)換成標(biāo)準(zhǔn)的模擬PAL視頻信號到監(jiān)視器上進行顯示。FLASH的作用是存儲系統(tǒng)運行的程序,引導(dǎo)系統(tǒng)的啟動。
針對系統(tǒng)要求,DSP選用AnalogDevices公司的ADSP-BF561處理器,該DSP是專門針對多媒體和通信應(yīng)用方面的一款16位定點DSP,它集成了2個Blackfin處理器內(nèi)核,每個內(nèi)核可實現(xiàn)600MHz持續(xù)工作。
FPGA選用Altera公司的EP2C5,它擁有4608個邏輯單元,13個18×18硬件乘法器,多達142個用戶自定義IO口。
2.1、采集模塊設(shè)計
CCD攝像頭采集來標(biāo)準(zhǔn)的PAL制式模擬視頻,設(shè)計選用ADI的ADV7181B視頻解碼芯片對模擬信號進行A/D轉(zhuǎn)換。ADV7181B是Analog公司的一款應(yīng)用廣泛的視頻解碼芯片。該芯片可以自動檢測輸入的復(fù)合視頻信號,通過I2C總線配置接口,可選擇圖像輸出格式。由于黑白圖像已能夠滿足系統(tǒng)的檢測需要,因此把模擬信號以ITU-R-656格式Y(jié)UV(4∶2∶2)輸出。Y信號是亮度信號,U、V信號是色度信號。這樣就可以直接提取該格式的亮度信號,操作比轉(zhuǎn)換為傳統(tǒng)的RGB格式要簡單得多。
ADV7181B的8根數(shù)據(jù)線與DSP的PPI0口的8根數(shù)據(jù)線相連接,通過DSP的2根可編程標(biāo)志引腳PF來模仿I2C總線,進而對7181B進行相關(guān)配置。從而將采集、量化后的視頻信號傳進DSP緩沖區(qū)中。輸入模塊的硬件連接如圖2所示。
圖2 采集模塊硬件連接
2.2、存儲模塊設(shè)計
由于一幀YUV(4∶2∶2)格式的圖像有720×5762=810KByte,而BF561和FPGA的內(nèi)部存儲空間分別只有328KByte及14KByte,因此,將SDRAM和RAM存儲器分別作為DSP及FPGA的外擴存儲器。這樣輸入的視頻數(shù)據(jù)存到外部擴展存儲器中,可以使系統(tǒng)具有大容量、高吞吐率和高存取速度的特點,實現(xiàn)大數(shù)據(jù)量和實時性的要求。
系統(tǒng)采用2片32MB的HY57V561620CSDRAM,組成32位的數(shù)據(jù)輸入與輸出,通過4根數(shù)據(jù)屏蔽線(SDQM[3∶0]),可以進行8位、16位、32位的數(shù)據(jù)讀寫。選用1片4MByte,32位寬的RAM掛接到FPGA上,其地址線,數(shù)據(jù)線都與SDRAM的分開。其選通信號CS#與讀寫信號WE#、OE#也由FPGA控制。
2.3、處理模塊設(shè)計
DSP與FPGA作為圖像處理模塊的核心,協(xié)同完成圖像的處理任務(wù),DSP作為系統(tǒng)的主控制器,F(xiàn)PGA上電后由DSP來完成配置。DSP和FPGA的功能劃分按照算法流程進行,DSP負責(zé)整個算法的調(diào)度和數(shù)據(jù)流的控制,而FPGA作為DSP的協(xié)處理器。DSP通過AMS3#來片選FPGA,AWE#、AOE#作為讀寫使能,同時DSP的24位地址線(A[25∶2])和32位數(shù)據(jù)線(D[31∶0])都掛接到FPGA上,這樣DSP與FPGA就可以進行數(shù)據(jù)的交換。它們各自在系統(tǒng)中完成的任務(wù)如下:
1)DSP控制數(shù)據(jù)流的流向,通過自己特有的PPI圖像接口完成圖像數(shù)據(jù)的采集與發(fā)送,并完成圖像中目標(biāo)的識別算法;
2)FPGA是DSP的協(xié)處理器,F(xiàn)PGA作為DSP的邏輯擴展,幫助DSP來復(fù)位視頻編解碼器等這些外部設(shè)備;FPGA對采集到RAM中的原始圖像數(shù)據(jù)完成一些數(shù)據(jù)密集,但算法簡單、重復(fù)性高的圖像預(yù)處理功能。再將處理后的數(shù)據(jù)送回到DSP中完成最后的目標(biāo)識別算法。
2.4、顯示模塊設(shè)計
在數(shù)字視頻數(shù)據(jù)處理完成后,選用ADI公司的視頻編碼器7171將數(shù)字信號轉(zhuǎn)換成PAL制式電視信號,用專用的監(jiān)視器將圖像結(jié)果顯示出來。
BF561的PPI1口的8根數(shù)據(jù)線與7171的數(shù)據(jù)線相連,輸出時7171由DSP通過I2C總線配置為輸出PAL制式。
3、系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件設(shè)計主要包括系統(tǒng)的初始化、圖像的采集與顯示2大部分。針對BF561的雙核結(jié)構(gòu),這里DSP的coreA完成系統(tǒng)的初始化以及圖像采集與顯示,coreB完成目標(biāo)識別算法,這樣可以減少雙核的公共變量及數(shù)據(jù)共享,簡化雙核交互的時序控制設(shè)計,使系統(tǒng)更加穩(wěn)定的工作,而FPGA進行圖像的預(yù)處理。
3.1、系統(tǒng)初始化
首先,要對BF561的PLL鎖相環(huán)時鐘、EBIU外部總線接口及中斷向量表進行初始化設(shè)置。外部晶振產(chǎn)生的27MHz時鐘通過PLL的20倍頻使內(nèi)核工作在540MHz的時鐘頻率下;EBIU配置為外部總線接口打開。
EBIU配置好后,對DSP的外設(shè)進行初始化設(shè)置,依次對SDRAM、FPGA等外設(shè)進行初始化。將地址0x2E800000、0x2EF00000映射到FPGA上產(chǎn)生一個8位控制寄存器Reg1和32位控制寄存器Reg2,向寄存器Reg1寫控制字,控制7181、7171硬復(fù)位,并配置PPI口的驅(qū)動時鐘,向寄存器Reg2寫控制字,控制RAM地址總線及數(shù)據(jù)總線與DSP的對接。
3.2、圖像的采集與顯示
系統(tǒng)圖像采集與顯示的軟件流程圖如圖3所示。
圖3 ?圖像采集與顯示流程
系統(tǒng)初始化結(jié)束后,對負責(zé)圖像編解碼的7181B和7171通過I2C總線進行初始化。將7181配置輸出為ITU-R-656模式,7171配置輸出為PAL制式。通過編寫控制字到PPI口的控制寄存器PPIx_CONTROL,相應(yīng)地PPI0口配置為接收ITU-R-656模式,并采用有效場模式,PPI0口僅輸出每場的有效數(shù)據(jù)到DSP中,而把消隱行的數(shù)據(jù)過濾掉,減小圖像數(shù)據(jù)的存儲空間,并節(jié)約內(nèi)核開銷;PPI1口則配置為GP模式,這時需要BF561產(chǎn)生水平同步信號和垂直同步信號配合PPI1口完成數(shù)據(jù)輸出。
BF561的PPI口必須和DMA引擎一起使用。每個PPI_DMA通道可配置為發(fā)送或接收操作,最大的吞吐量是PPIx_CLK16bit/transfer,為了提高效率,這里采用8bit數(shù)據(jù)、PACK_EN=1(使能打包模式)、DMA32=1。即PPI和DMA都以其最大帶寬傳輸數(shù)據(jù)。系統(tǒng)中圖像采集與顯示都通過DMA完成,無需內(nèi)核參與,最大限度地節(jié)約了內(nèi)核開銷,使內(nèi)核集中完成圖像的處理算法任務(wù)。
3.3、圖像數(shù)據(jù)流的存儲與傳輸及其時序設(shè)計
為了提高系統(tǒng)運行效率,發(fā)揮DSP的流水線執(zhí)行及FPGA并行處理的優(yōu)勢,把RAM分為3塊區(qū)域,F(xiàn)rame0和Frame2作為乒乓緩存,輪流作為圖像數(shù)據(jù)緩存的目的地和FPGA處理數(shù)據(jù)的源頭;Frame1存放FPGA預(yù)處理后的結(jié)果。同樣SDRAM開辟3塊區(qū)域,Buffer0、2存放從FPGA搬移的預(yù)處理結(jié)果,Buffer1存放最后結(jié)果。
在FPGA完成預(yù)處理后觸發(fā)DSP中斷,開啟PPI0口,并且DSP總線與RAM再次對接,coreA將預(yù)處理結(jié)果搬移到SDRAM中,同時DMA1_0控制PPI0采集新一幀的圖像數(shù)據(jù)到RAM。此時coreB已完成目標(biāo)識別并將最終結(jié)果存入SDRAM,并中斷coreA,coreA打開PPI1,由DMA1_1控制PPI1完成最終結(jié)果的顯示。圖像的采集與顯示都由DMA控制,不會干預(yù)coreA對預(yù)處理結(jié)果的搬移。而搬移速度要快于采集速度,所以在PPI0采集完新的一幀后,上一幀的預(yù)處理結(jié)果已經(jīng)搬完。DMA1_0產(chǎn)生中斷,PPI0、DSP總線與RAM對接再次關(guān)閉,如此循環(huán)往復(fù)。其實現(xiàn)過程流程圖如圖4所示。
圖4 ?圖像數(shù)據(jù)流處理流程
4、實驗結(jié)果及分析
對25frames/s、16bit、720×576像素的視頻圖像進行顯示速度測試,利用示波器檢測監(jiān)視器上掃描一行圖像的波形如圖5所示。
圖5 顯示一行的波形
分析圖中波形,顯示一行圖像的時間為64μs,一幀完整圖像共有625行,所以顯示一幀圖像所用的時間為40ms。達到了CCD攝像頭25frames/s的刷新速度,實現(xiàn)了系統(tǒng)的實時采集處理。
5、結(jié)論
為實現(xiàn)圖像的實時采集與處理,設(shè)計了一種基于ADSP-BF561+FPGA的圖像采集與處理系統(tǒng)。結(jié)合BF561的PPI視頻接口與其DMA的特點,設(shè)計了圖像采集與顯示算法,充分利用了DSP的流水線執(zhí)行與FPGA及雙核DSP并行處理的優(yōu)勢。通過實驗論證,圖像顯示的刷新時間能夠達到25frame/s,達到了實時性要求。并且該圖像采集與處理系統(tǒng)還具有結(jié)構(gòu)緊湊、功耗低、集成度高、執(zhí)行效率高等優(yōu)點。為整個數(shù)字圖像處理系統(tǒng)的設(shè)計實現(xiàn)奠定了重要的實踐基礎(chǔ)。
評論
查看更多