引言
在以DSP為核心的視頻處理系統(tǒng)中,視頻采集的方法通??梢苑譃閮纱箢悾鹤詣拥囊曨l采集和基于DSP的視頻采集。前者通常采用CPLD/FPGA控制視頻解碼芯片,通過FIFO或者雙口RAM向DSP傳送數(shù)據(jù),特點是數(shù)據(jù)采集模塊獨立運行,占用DSP資源少,但實現(xiàn)相對復(fù)雜,成本偏高;后者通常由DSP控制視頻解碼芯片并同步各種時序,將視頻數(shù)據(jù)讀入。其特點是實現(xiàn)相對簡單,成本有所降低,但對視頻解碼芯片的控制較為復(fù)雜,占用DSP處理時間。
如果通過適當(dāng)?shù)倪壿嬰娐纷寯?shù)字圖像傳感器芯片直接接入DSP,則可省去視頻控制解碼芯片、CPLD/FPGA、FIFO或雙口RAM,在不增加DSP軟件開銷的情況下,大大降低系統(tǒng)的復(fù)雜程度和成本,縮短開發(fā)周期。
硬件系統(tǒng)設(shè)計
系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)結(jié)構(gòu)框圖如圖1所示。DSP采用TI公司發(fā)布的C6000系列高速浮點型信號處理器TMS320C6713,其峰值處理速度達1350MFLOPS(百萬次浮點每秒)。其外部存儲器接口EMIF(External Memory Interface)包括4個CE空間,其中CE0被配置為16位同步空間,接SDRAM;CE1為16位異步空間,接Flash;CE2為16位異步空間,經(jīng)過地址譯碼和總線緩沖將數(shù)字圖像傳感器OV7620接入;CE3為8位異步空間,經(jīng)過數(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)部默認的行曝光方式;同時使能HREF信號對PCLK進行門控,即只有當(dāng)HREF有效時像素時鐘信號才被輸出到PCLK引腳上,否則該引腳保持無效。這樣EDMA可以始終處在使能狀態(tài),從而簡化采集過程。
圖2 OV7620與DSP的硬件連接框圖
OV7620與DSP的硬件連接框圖如圖2所示。在對OV7620復(fù)位結(jié)束后,DSP通過GPIO模擬SCCB總線完成對OV7620內(nèi)部功能寄存器的配置,之后數(shù)幀內(nèi)圖像數(shù)據(jù)和同步信號將逐漸穩(wěn)定。Y通道和U/V通道在分別經(jīng)過74HC244總線緩沖器之后接入EMIF低16位數(shù)據(jù)總線。CE2與地址線EA20、EA21經(jīng)過譯碼產(chǎn)生2片74HC244的選通信號,此時OV7620的讀地址為0xA0000000。
EDMA數(shù)據(jù)采集
在16位逐行掃描方式中,圖像的每行RGB原始數(shù)據(jù)均被OV7620先后輸出兩次,因此,只須讀取其偶數(shù)次HREF信號對應(yīng)的數(shù)據(jù)即可獲得整個圖像信息。這樣可以減少圖像采集所占用的存儲空間和總線資源。
OV7620同步和控制信號與GPIO的對應(yīng)關(guān)系如表1所列。
表1 OV7620同步和控制信號與GPIO的對應(yīng)關(guān)系
本系統(tǒng)采用EDMA的第12個通道(EDMA12)進行圖像數(shù)據(jù)采集。該通道被配置為16位一維傳輸方式,中斷禁止,PCLK的上升沿觸發(fā)EDMA12搬移一個16位數(shù)據(jù)存入到SDRAM中,每次EDMA任務(wù)搬移一個HREF(320個16位)的圖像數(shù)據(jù)。幀同步信號VSYNC上升沿觸發(fā)DSP中斷,對EDMA通道進行初始化,使能水平參考信號HREF中斷并關(guān)閉EDMA通道(放棄第1個HREF的數(shù)據(jù)),開始一幀的數(shù)據(jù)傳輸。HREF下降沿觸發(fā)DSP產(chǎn)生中斷,標志OV7620一次HREF數(shù)據(jù)輸出的結(jié)束。如果接下來一次HREF數(shù)據(jù)需要被讀入,則中斷服務(wù)程序會對EDMA12參數(shù)進行修正,使能EDMA12通道,開始下一行數(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);
/*打開EDMA通道,準備OV7620數(shù)據(jù)搬移*/
EER&=~(1< /*關(guān)EDMA使能,放棄第1個HREF的數(shù)據(jù)*/
ICR=HREF_INT_CHANL;
/*清HREF(GPIO7)INT7中斷標志*/
IER|=HREF_INT_CHANL;
/*使能HREF(GPIO7)INT7中斷*/
}
interruptvoidINT7_EXT7(void){
/*HREFGPIO7水平參考中斷*/
if(!HREF_Data_Switch){
HREF_Data_Switch=TRUE;
/*接下來的HREF數(shù)據(jù)有效*/
(*(EDMA_PARAM_POINTER+PCLK_EDMA_
CHANL)).CNT=IMAGESIZE_WIDTH;
/*修正EDMA傳輸參數(shù)計數(shù)值*/
ECR|=1< /*清上周期遺留的PCLK觸發(fā)事件*/
EER|=1< /*使能EDMA,開始讀下一行數(shù)據(jù)*/
}
else{
HREF_Data_Switch=FALSE;
/*接下來的HREF數(shù)據(jù)無效*/
EER&=~(1< /*禁止EDMA,接下來HREF數(shù)據(jù)不讀*/
}
}
LCD模塊的驅(qū)動
采用液晶顯示模塊可以使圖像處理結(jié)果實時顯示出來,方便調(diào)試和演示,成本也較低。本系統(tǒng)選用北京寧和電子科技發(fā)展有限公司開發(fā)的NHC_34彩色液晶顯示控制模塊。該模塊支持256色彩色顯示,每個像素點用1個字節(jié)表示,分辨率為320×234;支持標準Intel8位異步總線時序,有2頁顯示緩存,可任意設(shè)定顯示頁和操作頁。
LCD模塊讀寫周期最短為350ns,而DSP外部總線接口時鐘頻率一般在100MHz以上,即小于10ns。通過配置EMIFCE3空間控制寄存器CECTL3(地址為0x01800014),可以將CE3空間的讀寫周期延長,與LCD模塊無縫連接。但這樣液晶模塊的讀寫操作會過長地占用系統(tǒng)總線,降低對其他存儲空間(尤其是對SDRAM)的訪問效率,進而影響系統(tǒng)的整體速度。
本系統(tǒng)采用了數(shù)據(jù)鎖存和總線緩沖的方法,通過377鎖存器模擬低速總線控制信號時序,利用244數(shù)據(jù)緩沖器對低速總線數(shù)據(jù)進行隔離。圖3給出了DSP與LCD模塊硬件連接圖。系統(tǒng)有2片74HC377(簡稱為“377”),一片用來鎖存模擬LCD模塊的讀寫控制信號(控制377),另一片用來鎖存寫入數(shù)據(jù)(數(shù)據(jù)377),由異步寫使能控制線AWE作為377的觸發(fā)沿輸入;CE3和EA20、EA21經(jīng)過譯碼產(chǎn)生2個377的使能信號,DSP寫數(shù)據(jù)377的地址為0xB0000000,寫控制377的地址為0xB0040000。數(shù)據(jù)377的輸出經(jīng)一片總線緩沖器HC244(寫出244,HC244簡稱為“244”)連接到LCD模塊總線上,該244輸出使能信號來自控制377。另有一片HC244(讀入244)用來將LCD模塊總線接到DSP低8位總線上,其輸出使能信號同樣由CE3和EA20、EA21經(jīng)過譯碼產(chǎn)生,地址為0xB0080000,是DSP對LCD模塊的讀地址。
圖3 LCD模塊與DSP的硬件連接
DSP根據(jù)LCD模塊總線時序,通過定時器延時中斷來間隔地寫入數(shù)據(jù)到控制377,以模擬相應(yīng)低速總線的控制信號,并適時從讀入244讀取數(shù)據(jù)(讀周期),或者寫入數(shù)據(jù)到數(shù)據(jù)377(寫周期),就可以完成對LCD模塊的讀/寫操作。LCD寫周期驅(qū)動例程如下(該程序通過延時來控制時間間隔):
#defineSET_CS_LCD() ctrl377valu|=0X01;ctrl377reg=ctrl377valu
/*向液晶模塊寫入數(shù)據(jù)子程序。subaddress:0~3為A1、A0的值;writevalu:待寫入LCD的數(shù)據(jù)*/
voidWrite2LCD(unsignedcharsubaddress,unsignedchar
writevalu){
ctrl377valu|=subaddress<<3;
ctrl377valu&=(subaddress<<3)|0XE7;
/*根據(jù)A0、A1的值更新ctrl377valu的對應(yīng)位*/
ctrl377valu&=~0x23;/*使能CS、WR和LCD_wren*/
ctrl377reg=ctrl377valu;
/*輸出控制數(shù)據(jù)到377控制鎖存器*/
LCD_wr_reg=writevalu;
/*輸出待寫數(shù)據(jù)到377數(shù)據(jù)鎖存器*/
DELAY(WR_LCD_DELAYTIME310);
/*延時T420ns×6=120ns*/
SET_WR_LCD();
/*置位WR信號,上升沿將數(shù)據(jù)寫入LCD*/
DELAY(WR_LCD_DELAYTIME); /*延時20ns*/
SET_CS_LCD();
/*置位CS,使地址信號無效*/
DELAY(WR_LCD_DELAYTIME35);/*延時100ns*/
SET_WREN_LCD();
/*寫出244輸出禁止,數(shù)據(jù)無效*/
DELAY(WR_LCD_DELAYTIME32);
/*延時40ns,周期結(jié)束*/
}
軟件系統(tǒng)設(shè)計
軟件系統(tǒng)流程如圖4所示。DSP在復(fù)位完成之后首先進行系統(tǒng)的初始化,配置鎖相環(huán)、EMIF和GPIO,并硬件復(fù)位OV7620,通過GPIO模擬SCCB總線配置其內(nèi)部功能寄存器,之后對LCD模塊清屏。當(dāng)EDMA沒有被使能時,OV7620的同步信號仍能被EDMA事件寄存器捕獲并保持,所以把EDMA的初始化放在OV7620和LCD模塊的初始化之后,并在使能之前清事件標志。在中斷被使能之后,OV7620的幀同步信號會觸發(fā)系統(tǒng)中斷,開始進行數(shù)據(jù)的循環(huán)采集,并在每幀數(shù)據(jù)采集完成之后置位相應(yīng)標志,通知主程序進行處理。主程序在接到通知后對OV7620的原始數(shù)據(jù)進行插值和平滑,生成待處理的RGB24位色圖像數(shù)據(jù)。圖像處理和運算的結(jié)果被送到LCD模塊進行動態(tài)顯示,LCD的顯示任務(wù)主要由中斷服務(wù)程序完成,而此時主程序已開始等待和處理下一幀圖像。
圖4 DSP視頻采集系統(tǒng)軟件流程
結(jié)論
本系統(tǒng)通過總線隔離和地址譯碼,只使用簡單的邏輯芯片將OV7620接入DSP,并充分發(fā)揮EDMA獨立傳送的特點,僅占用DSP少量的軟件開銷和總線資源,就完成圖像數(shù)據(jù)的采集。與采用視頻接口芯片、外圍FIFO和CPLD/FPGA等方案相比,很大程度上降低了系統(tǒng)成本,縮短了開發(fā)周期,而對系統(tǒng)總線的占用卻并沒有增加。利用數(shù)據(jù)鎖存和總線緩沖實現(xiàn)了對LCD模塊異步低速總線的接入;利用EDMA進行總線模擬,進一步降低DSP對LCD模塊讀/寫的參與,減少系統(tǒng)中斷次數(shù),優(yōu)化系統(tǒng)性能,能夠?qū)D像處理的結(jié)果實時和直觀地顯示出來。
與其他DSP嵌入式系統(tǒng)相比,本系統(tǒng)具有處理速度快、接口簡單、成本低、能實時顯示的特點,適用于視覺導(dǎo)航、視頻實時處理等要求高速處理圖像的場合,以及有實時演示要求的場合。
評論
查看更多