|
|
| <!--插入廣告JS代碼--> |
引言 在以DSP為核心的視頻處理系統(tǒng)中,視頻采集的方法通常可以分為兩大類(lèi):自動(dòng)的視頻采集和基于DSP的視頻采集。前者通常采用CPLD/FPGA控制視頻解碼芯片,通過(guò)FIFO或者雙口RAM向DSP傳送數(shù)據(jù),特點(diǎn)是數(shù)據(jù)采集模塊獨(dú)立運(yùn)行,占用DSP資源少,但實(shí)現(xiàn)相對(duì)復(fù)雜,成本偏高;后者通常由DSP控制視頻解碼芯片并同步各種時(shí)序,將視頻數(shù)據(jù)讀入。其特點(diǎn)是實(shí)現(xiàn)相對(duì)簡(jiǎn)單,成本有所降低,但對(duì)視頻解碼芯片的控制較為復(fù)雜,占用DSP處理時(shí)間。
如果通過(guò)適當(dāng)?shù)倪壿嬰娐纷寯?shù)字圖像傳感器芯片直接接入DSP,則可省去視頻控制解碼芯片、CPLD/FPGA、FIFO或雙口RAM,在不增加DSP軟件開(kāi)銷(xiāo)的情況下,大大降低系統(tǒng)的復(fù)雜程度和成本,縮短開(kāi)發(fā)周期。
硬件系統(tǒng)設(shè)計(jì)
系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)框圖如圖1所示。DSP采用TI公司發(fā)布的C6000系列高速浮點(diǎn)型信號(hào)處理器TMS320C6713,其峰值處理速度達(dá)1350MFLOPS(百萬(wàn)次浮點(diǎn)每秒)。其外部存儲(chǔ)器接口EMIF(External Memory Interface)包括4個(gè)CE空間,其中CE0被配置為16位同步空間,接SDRAM;CE1為16位異步空間,接Flash;CE2為16位異步空間,經(jīng)過(guò)地址譯碼和總線緩沖將數(shù)字圖像傳感器OV7620接入;CE3為8位異步空間,經(jīng)過(guò)數(shù)據(jù)鎖存和總線隔離將LCD顯示模塊接入。
圖1 DSP視頻采集處理系統(tǒng)總體結(jié)構(gòu)框圖
OV7620的配置和硬件連接
OV7620是OmniVision公司生產(chǎn)的CMOS彩色/黑白圖像傳感器,在本系統(tǒng)中被配置為16位逐行掃描QVGA方式,RGB原始數(shù)據(jù)輸出,分辨率為320×240,SCCB總線,內(nèi)部默認(rèn)的行曝光方式;同時(shí)使能HREF信號(hào)對(duì)PCLK進(jìn)行門(mén)控,即只有當(dāng)HREF有效時(shí)像素時(shí)鐘信號(hào)才被輸出到PCLK引腳上,否則該引腳保持無(wú)效。這樣EDMA可以始終處在使能狀態(tài),從而簡(jiǎn)化采集過(guò)程。

圖2 OV7620與DSP的硬件連接框圖
OV7620與DSP的硬件連接框圖如圖2所示。在對(duì)OV7620復(fù)位結(jié)束后,DSP通過(guò)GPIO模擬SCCB總線完成對(duì)OV7620
內(nèi)部功能寄存器的配置,之后數(shù)幀內(nèi)圖像數(shù)據(jù)和同步信號(hào)將逐漸穩(wěn)定。Y通道和U/V通道在分別經(jīng)過(guò)74HC244總線緩沖器之后接入EMIF低16位數(shù)據(jù)總線。CE2與地址線EA20、EA21經(jīng)過(guò)譯碼產(chǎn)生2片74HC244的選通信號(hào),此時(shí)OV7620的讀地址為0xA0000000。
EDMA數(shù)據(jù)采集
在16位逐行掃描方式中,圖像的每行RGB原始數(shù)據(jù)均被OV7620先后輸出兩次,因此,只須讀取其偶數(shù)次HREF信號(hào)對(duì)應(yīng)的數(shù)據(jù)即可獲得整個(gè)圖像信息。這樣可以減少圖像采集所占用的存儲(chǔ)空間和總線資源。
OV7620同步和控制信號(hào)與GPIO的對(duì)應(yīng)關(guān)系如表1所列。
表1 OV7620同步和控制信號(hào)與GPIO的對(duì)應(yīng)關(guān)系

本系統(tǒng)采用EDMA的第12個(gè)通道(EDMA12)進(jìn)行圖像數(shù)據(jù)采集。該通道被配置為16位一維傳輸方式,中斷禁止,PCLK的上升沿觸發(fā)EDMA12搬移一個(gè)16位數(shù)據(jù)存入到SDRAM中,每次EDMA任務(wù)搬移一個(gè)HREF(320個(gè)16位)的圖像數(shù)據(jù)。幀同步信號(hào)VSYNC上升沿觸發(fā)DSP中斷,對(duì)EDMA通道進(jìn)行初始化,使能水平參考信號(hào)HREF中斷并關(guān)閉EDMA通道(放棄第1個(gè)HREF的數(shù)據(jù)),開(kāi)始一幀的數(shù)據(jù)傳輸。HREF下降沿觸發(fā)DSP產(chǎn)生中斷,標(biāo)志OV7620一次HREF數(shù)據(jù)輸出的結(jié)束。如果接下來(lái)一次HREF數(shù)據(jù)需要被讀入,則中斷服務(wù)程序會(huì)對(duì)EDMA12參數(shù)進(jìn)行修正,使能EDMA12通道,開(kāi)始下一行數(shù)據(jù)的傳輸;否則,就禁止EDMA12,放棄下一次HREF數(shù)據(jù)。每接收1幀圖像數(shù)據(jù)共產(chǎn)生240次HREF中斷和120次EDMA數(shù)據(jù)傳輸。以下是OV7620數(shù)據(jù)采集的部分源代碼: interruptvoidINT6_EXT6(void){
/*VSYNCGPIO6幀同步中斷*/
EDMA_OpenCha(PCLK_EDMA_CHANL);
/*打開(kāi)EDMA通道,準(zhǔn)備OV7620數(shù)據(jù)搬移*/
EER=~(1< /*關(guān)EDMA使能,放棄第1個(gè)HREF的數(shù)據(jù)*/
ICR="HREF"_INT_CHANL;
/*清HREF(GPIO7)INT7中斷標(biāo)志*/
IER|=HREF_INT_CHANL;
/*使能HREF(GPIO7)INT7中斷*/
}
interruptvoidINT7_EXT7(void){
/*HREFGPIO7水平參考中斷*/
if(!HREF_Data_Switch){
HREF_Data_Switch=TRUE;
/*接下來(lái)的HREF數(shù)據(jù)有效*/
(*(EDMA_PARAM_POINTER+PCLK_EDMA_
CHANL)).CNT=IMAGESIZE_WIDTH;
/*修正EDMA傳輸參數(shù)計(jì)數(shù)值*/
ECR|=1< /*清上周期遺留的PCLK觸發(fā)事件*/
EER|=1< /*使能EDMA,開(kāi)始讀下一行數(shù)據(jù)*/
}
else{
HREF_Data_Switch=FALSE;
/*接下來(lái)的HREF數(shù)據(jù)無(wú)效*/
EER&=~(1< /*禁止EDMA,接下來(lái)HREF數(shù)據(jù)不讀*/
}
}
LCD模塊的驅(qū)動(dòng)
采用液晶顯示模塊可以使圖像處理結(jié)果實(shí)時(shí)顯示出來(lái),方便調(diào)試和演示,成本也較低。本系統(tǒng)選用北京寧和電子科技發(fā)展有限公司開(kāi)發(fā)的NHC_34彩色液晶顯示控制模塊。該模塊支持256色彩色顯示,每個(gè)像素點(diǎn)用1個(gè)字節(jié)表示,分辨率為320×234;支持標(biāo)準(zhǔn)Intel8位異步總線時(shí)序,有2頁(yè)顯示緩存,可任意設(shè)定顯示頁(yè)和操作頁(yè)。
LCD模塊讀寫(xiě)周期最短為350ns,而DSP外部總線接口時(shí)鐘頻率一般在100MHz以上,即小于10ns。通過(guò)配置EMIFCE3空間控制寄存器CECTL3(地址為0x01800014),可以將CE3空間的讀寫(xiě)周期延長(zhǎng),與LCD模塊無(wú)縫連接。但這樣液晶模塊的讀寫(xiě)操作會(huì)過(guò)長(zhǎng)地占用系統(tǒng)總線,降低對(duì)其他存儲(chǔ)空間(尤其是對(duì)SDRAM)的訪問(wèn)效率,進(jìn)而影響系統(tǒng)的整體速度。
本系統(tǒng)采用了數(shù)據(jù)鎖存和總線緩沖的方法,通過(guò)377鎖存器模擬低速總線控制信號(hào)時(shí)序,利用244數(shù)據(jù)緩沖器對(duì)低速總線數(shù)據(jù)進(jìn)行隔離。圖3給出了DSP與LCD模塊硬件連接圖。系統(tǒng)有2片74HC377(簡(jiǎn)稱(chēng)為“377”),一片用來(lái)鎖存模擬LCD模塊的讀寫(xiě)控制信號(hào)(控制377),另一片用來(lái)鎖存寫(xiě)入數(shù)據(jù)(數(shù)據(jù)377),由異步寫(xiě)使能控制線AWE作為377的觸發(fā)沿輸入;CE3和EA20、EA21經(jīng)過(guò)譯碼產(chǎn)生2個(gè)377的使能信號(hào),DSP寫(xiě)數(shù)據(jù)377的地址為0xB0000000,寫(xiě)控制377的地址為0xB0040000。數(shù)據(jù)377的輸出經(jīng)一片總線緩沖器HC244(寫(xiě)出244,HC244簡(jiǎn)稱(chēng)為“244”)連接到LCD模塊總線上,該244輸出使能信號(hào)來(lái)自控制377。另有一片HC244(讀入244)用來(lái)將LCD模塊總線接到DSP低8位總線上,其輸出使能信號(hào)同樣由CE3和EA20、EA21經(jīng)過(guò)譯碼產(chǎn)生,地址為0xB0080000,是DSP對(duì)LCD模塊的讀地址。

圖3 LCD模塊與DSP的硬件連接
DSP根據(jù)LCD模塊總線時(shí)序,通過(guò)定時(shí)器延時(shí)中斷來(lái)間隔地寫(xiě)入數(shù)據(jù)到控制377,以模擬相應(yīng)低速總線的控制信號(hào),并適時(shí)從讀入244讀取數(shù)據(jù)(讀周期),或者寫(xiě)入數(shù)據(jù)到數(shù)據(jù)377(寫(xiě)周期),就可以完成對(duì)LCD模塊的讀/寫(xiě)操作。LCD寫(xiě)周期驅(qū)動(dòng)例程如下(該程序通過(guò)延時(shí)來(lái)控制時(shí)間間隔):
#defineSET_CS_LCD() ctrl377valu|=0X01;ctrl377reg=ctrl377valu
/*向液晶模塊寫(xiě)入數(shù)據(jù)子程序。subaddress:0~3為A1、A0的值;writevalu:待寫(xiě)入LCD的數(shù)據(jù)*/
voidWrite2LCD(unsignedcharsubaddress,unsignedchar
writevalu){
ctrl377valu|=subaddress<<3;
ctrl377valu&=(subaddress<<3)|0XE7;
/*根據(jù)A0、A1的值更新ctrl377valu的對(duì)應(yīng)位*/
ctrl377valu&=~0x23;/*使能CS、WR和LCD_wren*/
ctrl377reg=ctrl377valu;
/*輸出控制數(shù)據(jù)到377控制鎖存器*/
LCD_wr_ reg="writevalu";
/*輸出待寫(xiě)數(shù)據(jù)到377數(shù)據(jù)鎖存器*/
DELAY(WR_LCD_DELAYTIME310);
/*延時(shí)T420ns×6=120ns*/
SET_WR_LCD();
/*置位WR信號(hào),上升沿將數(shù)據(jù)寫(xiě)入LCD*/
& DELAY(WR_LCD_DELAYTIME); /*延時(shí)20ns*/
SET_CS_LCD();
/*置位CS,使地址信號(hào)無(wú)效*/
DELAY(WR_LCD_DELAYTIME35);/*延時(shí)100ns*/
SET_WREN_LCD();
/*寫(xiě)出244輸出禁止,數(shù)據(jù)無(wú)效*/
DELAY(WR_LCD_DELAYTIME32);
/*延時(shí)40ns,周期結(jié)束*/
}
軟件系統(tǒng)設(shè)計(jì)
軟件系統(tǒng)流程如圖4所示。DSP在復(fù)位完成之后首先進(jìn)行系統(tǒng)的初始化,配置鎖相環(huán)、EMIF和GPIO,并硬件復(fù)位OV7620,通過(guò)GPIO模擬SCCB總線配置其內(nèi)部功能寄存器,之后對(duì)LCD模塊清屏。當(dāng)EDMA沒(méi)有被使能時(shí),OV7620的同步信號(hào)仍能被EDMA事件寄存器捕獲并保持,所以把EDMA的初始化放在OV7620和LCD模塊的初始化之后,并在使能之前清事件標(biāo)志。在中斷被使能之后,OV7620的幀同步信號(hào)會(huì)觸發(fā)系統(tǒng)中斷,開(kāi)始進(jìn)行數(shù)據(jù)的循環(huán)采集,并在每幀數(shù)據(jù)采集完成之后置位相應(yīng)標(biāo)志,通知主程序進(jìn)行處理。主程序在接到通知后對(duì)OV7620的原始數(shù)據(jù)進(jìn)行插值和平滑,生成待處理的RGB24位色圖像數(shù)據(jù)。圖像處理和運(yùn)算的結(jié)果被送到LCD模塊進(jìn)行動(dòng)態(tài)顯示,LCD的顯示任務(wù)主要由中斷服務(wù)程序完成,而此時(shí)主程序已開(kāi)始等待和處理下一幀圖像。

圖4 DSP視頻采集系統(tǒng)軟件流程
結(jié)論
本系統(tǒng)通過(guò)總線隔離和地址譯碼,只使用簡(jiǎn)單的邏輯芯片將OV7620接入DSP,并充分發(fā)揮EDMA獨(dú)立傳送的特點(diǎn),僅占用DSP少量的軟件開(kāi)銷(xiāo)和總線資源,就完成圖像數(shù)據(jù)的采集。與采用視頻接口芯片、外圍FIFO和CPLD/FPGA等方案相比,很大程度上降低了系統(tǒng)成本,縮短了開(kāi)發(fā)周期,而對(duì)系統(tǒng)總線的占用卻并沒(méi)有增加。利用數(shù)據(jù)鎖存和總線緩沖實(shí)現(xiàn)了對(duì)LCD模塊異步低速總線的接入;利用EDMA進(jìn)行總線模擬,進(jìn)一步降低DSP對(duì)LCD模塊讀/寫(xiě)的參與,減少系統(tǒng)中斷次數(shù),優(yōu)化系統(tǒng)性能,能夠?qū)D像處理的結(jié)果實(shí)時(shí)和直觀地顯示出來(lái)。
與其他DSP嵌入式系統(tǒng)相比,本系統(tǒng)具有處理速度快、接口簡(jiǎn)單、成本低、能實(shí)時(shí)顯示的特點(diǎn),適用于視覺(jué)導(dǎo)航、視頻實(shí)時(shí)處理等要求高速處理圖像的場(chǎng)合,以及有實(shí)時(shí)演示要求的場(chǎng)合。