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