異步FIFO在DSP圖像采集系統(tǒng)中的應(yīng)用
引言
基于DSP的圖像采集與處理系統(tǒng)與傳統(tǒng)的PC端的系統(tǒng)相比,具有功耗低、攜帶方便、處理速度快的特點(diǎn),被廣泛使用在圖像采集與處理領(lǐng)域。DSP(Digital Signal Process or)芯片也稱數(shù)字信號(hào)處理器,是TI公司推出的專用于數(shù)字信號(hào)處理系統(tǒng)中進(jìn)行算法處理的微處理器器件。DSP采用哈佛結(jié)構(gòu)總線設(shè)計(jì),程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開,取值和數(shù)據(jù)訪問可以同時(shí)進(jìn)行。DSP還使用流水線操作,使得多條指令重疊進(jìn)行操作,可以有效地提高指令執(zhí)行效率。此外,DSP還擁有獨(dú)立的硬件乘法器,在處理濾波、卷積等運(yùn)算時(shí)具有很快的速度,因此,DSP特別適合在圖像采集與處理系統(tǒng)中作為核心器件。視頻采集端的視頻解碼芯片使用TVP5150,將采集到的模擬圖像信號(hào)轉(zhuǎn)換成數(shù)字圖像信號(hào)。
1 系統(tǒng)設(shè)計(jì)整體架構(gòu)
本系統(tǒng)是基于DSP的數(shù)字圖像處理系統(tǒng),總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。首先CCD攝像機(jī)拍攝視頻圖像,輸出標(biāo)準(zhǔn)PAL制式視頻信號(hào),輸入到視頻解碼芯片TVP5150中,TVP5150將模擬圖像信號(hào)轉(zhuǎn)換為數(shù)字圖像信號(hào)送入FIFO中,本系統(tǒng)采用AL422B。DSP通過EMIF接口從FIFO中讀取圖像數(shù)據(jù)并存入存儲(chǔ)器,圖像數(shù)據(jù)經(jīng)過DSP中算法處理后,通過仿真器傳輸?shù)絇C機(jī)上進(jìn)行顯示。其中,CPLD負(fù)責(zé)FIFO的讀寫指針復(fù)位和讀寫使能控制等工作。
(First In First Out)是一種先進(jìn)先出的數(shù)據(jù)緩存器。FIFO與其他存儲(chǔ)器的區(qū)別是沒有讀寫地址線,操作可以變得很簡(jiǎn)單,而且,它只能將數(shù)據(jù)順序?qū)懭?,并且順序讀出。此外,F(xiàn)IFO還具有以下一些特點(diǎn):
①對(duì)連續(xù)的數(shù)據(jù)進(jìn)行緩存,防止數(shù)據(jù)的丟失。
②可以對(duì)數(shù)據(jù)進(jìn)行集中存儲(chǔ),使CPU總線避免頻繁的操作。
③允許系統(tǒng)進(jìn)行高速的DMA操作,即可以不通過CPU的干預(yù),直接進(jìn)行數(shù)據(jù)存儲(chǔ),節(jié)約了使用CPU的時(shí)間,使系統(tǒng)的效率大大提高。
FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀寫時(shí)鐘必須是同一個(gè)時(shí)鐘,而異步FIFO可以接受一種時(shí)鐘寫入數(shù)據(jù),另一種時(shí)鐘讀出數(shù)據(jù),也就是讀寫時(shí)鐘可以不一致,能夠相互獨(dú)立。
由于本系統(tǒng)中TVP5150送數(shù)據(jù)到DSP時(shí),TVP5150的寫時(shí)鐘和DSP的讀時(shí)鐘是不一樣的。TVP5150的輸出時(shí)鐘是27 MHz,數(shù)據(jù)位為8位寬度,那么每秒的數(shù)據(jù)量就是216 Mbps,而DSP的輸出時(shí)鐘很難匹配27 MHz的時(shí)鐘頻率,設(shè)置為33 MHz,8位數(shù)據(jù)寬度,那么最大傳輸速率為264 Mbps。顯然,兩者的數(shù)據(jù)傳輸量在單位時(shí)間內(nèi)是不一樣的,如果這時(shí)不經(jīng)過任何緩存就進(jìn)行數(shù)據(jù)間的相互傳輸,系統(tǒng)無法同步操作,并且會(huì)進(jìn)入一種亞穩(wěn)定狀態(tài),從而整個(gè)系統(tǒng)功能失常。為了避免亞穩(wěn)定狀態(tài)以實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)的高速穩(wěn)定的傳輸,本系統(tǒng)使用了異步FIFO作為解決方案,且采用AL422B作為異步FIFO存儲(chǔ)器,容量為3MB(393 216字節(jié)×8位),可以存儲(chǔ)PAL制式一幀圖形的信息。它的一些技術(shù)指標(biāo)如下:
①支持VGA、CCIR、NTSC、PAL和HDTV制式的視頻信號(hào);
②獨(dú)立的讀寫操作,可以接受不同的I/O速率;
③讀或?qū)懼芷跒?0 ns;
④訪問時(shí)間為15 ns;
⑤輸出使能控制;
⑥具有DRAM自刷新功能;
⑦3.3 V或5.0 V供電。
AL422B的讀寫過程分為4個(gè)步驟:寫復(fù)位,寫使能,讀復(fù)位,讀使能。首先復(fù)位寫指針,當(dāng)寫使能為低電平時(shí),在WCK的上升沿將數(shù)據(jù)寫入到寫數(shù)據(jù)寄存器;當(dāng)
為高電平時(shí),寫操作被禁止。然后復(fù)位讀指針,當(dāng)都變?yōu)榈蜁r(shí),在RCK的上升沿將數(shù)據(jù)寫入讀數(shù)據(jù)寄存器;反之,讀操作被禁止。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 TVP5150與AL422B的接口實(shí)現(xiàn)
在本系統(tǒng)中,TVP5150的數(shù)據(jù)輸出端要與AL422B的數(shù)據(jù)寫入端相連,AL422B的數(shù)據(jù)讀出端要與DSP的數(shù)據(jù)輸入端相連。首先介紹TVP5150與AL422B之間的硬件連接,TVP5150的數(shù)據(jù)總線可以與AL422B的寫入端的數(shù)據(jù)總線直接進(jìn)行連接。
TVP5150的輸出時(shí)鐘需要進(jìn)行二分頻并移相半個(gè)時(shí)鐘周期,然后與AL422B的寫時(shí)鐘WCK連接,因?yàn)槲覀冎恍枰@取灰度圖像,這樣做可以將彩色部分的圖像濾除并且可以減少數(shù)據(jù)量。
TVP5150端的VSYNC、VBLK、AVID、FID借助CPLD進(jìn)行邏輯組合后與AL422B的寫指針復(fù)位WRST和寫使能WE連接。具體邏輯組合將在軟件設(shè)計(jì)部分介紹。
TVP5150與AL422B接口如圖2所示。
2.2 TMS320VC5509A與AL422B的接口實(shí)現(xiàn)
TMS320VC5509A(以下簡(jiǎn)稱5509A)要接收來自AL422B中的數(shù)據(jù),需要將AL422B的讀數(shù)據(jù)總線與5509A的EMIF數(shù)據(jù)總線接口直接連接。5509A的輸出時(shí)鐘CLKOUT給AL422B提供讀時(shí)鐘。AL422B的輸出使能和讀使能需要借助CPLD將5509A端的外部存儲(chǔ)器片選信號(hào)、EMIF接口輸出使能和EMIF接口讀使能進(jìn)行邏輯組合后進(jìn)行連接。組合邏輯部分在軟件設(shè)計(jì)部分介紹。TMS320VC5509A與AL422B接口如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
軟件部分分為兩部分,分別是DSP內(nèi)的程序設(shè)計(jì)和CPLD中的組合邏輯。
3. 1 DSP主程序
程序流程圖如圖4所示。
3.1.1 主函數(shù)初始化
主函數(shù)需要對(duì)時(shí)鐘頻率、中斷函數(shù)、EMIF外部存儲(chǔ)器接口、I2C總線、TVP5150視頻配置、AL422B的寫指針復(fù)位進(jìn)行初始化。
其中,AL422B的初始化采用TMS320VC5509A的GPIO口GPIO0、GPIO1、GPIO2發(fā)送邏輯電平到CPLD,然后由CPLD發(fā)送命令控制AL422B的讀寫指針復(fù)位與讀寫使能。
在DSP中,首先定義GPIO口的方向控制寄存器IODIR和引腳電平寄存器IODATA,并將IODIR寄存器的低3位設(shè)為1,也就是將GPIO0、GPIO1、GPIO2的方向設(shè)為輸出。接著對(duì)IODA TA寄存器進(jìn)行賦值,并將寄存器的值通過GPIO口送到CPLD,CPLD端進(jìn)行邏輯組合,對(duì)AL422B的復(fù)位寫指針復(fù)位。
3.1.2 初始化TVP5150
TVP5150是視頻解碼芯片,要求其模擬輸入是PAL制信號(hào),轉(zhuǎn)換為8位的YUV4:2:2格式的數(shù)字輸出信號(hào)。DSP需要通過GPIO口對(duì)TVP5150進(jìn)行復(fù)位,方法類似于AL422B的寫指針復(fù)位控制。DSP還需要通過I2C總線控制TVP5150的寄存器,TVP5150寄存器的配置如下:
①雜項(xiàng)控制寄存器:地址0x03,設(shè)置為0x0f。
②輸出和數(shù)據(jù)比率選擇寄存器:地址0x0d,設(shè)置為0x40。
③配置復(fù)用引腳寄存器:地址0x0f,設(shè)置為0x0a。
④有效像素開始高位寄存器:地址0x11,設(shè)置為0x4d。
⑤有效像素開始低位寄存器:地址0x12,設(shè)置為0x02。
⑥有效像素結(jié)束低位寄存器:地址0x13,設(shè)置為0xe4。
⑦有效像素結(jié)束低位寄存器:地址0x14,設(shè)置為0x02。
經(jīng)過寄存器配置,使得場(chǎng)消隱信號(hào)VBLK、像素有效信號(hào)AVID、場(chǎng)同步信號(hào)VSYNC、奇偶場(chǎng)標(biāo)志位信號(hào)FID、輸出時(shí)鐘SCLK輸出有效,數(shù)據(jù)總線激活,并將采集到的圖像裁剪成150×300的圖像。
在初始化程序后,執(zhí)行while死循環(huán),等待中斷的到來。
3.1.3 中斷函數(shù)
由于只需要處理150×300的圖像,所以在FIFO里只需存儲(chǔ)150×300個(gè)像素點(diǎn),存滿后發(fā)出中斷信號(hào),DSP轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。中斷函數(shù)首先通過GPIO口告知CPLD使AL422 B的讀指針復(fù)位(方法類似AL422B的寫指針復(fù)位,這里不再贅述),并且使AL422B的輸出使能有效、讀使能有效(具體實(shí)現(xiàn)在3.2說明)。然后DSP便讀取FIFO中的數(shù)據(jù),因?yàn)镕IFO外擴(kuò)在DSP的這個(gè)空間,地址為0x600000,所以DSP將中的數(shù)據(jù)寫入內(nèi)存中,存入內(nèi)存中的數(shù)據(jù)供后續(xù)處理。
這里,我們使用的處理算法為圖像的邊緣檢測(cè)法,處理完成后在CCS中進(jìn)行顯示,并觀察算法處理結(jié)果。
最后,進(jìn)行寫指針復(fù)位,準(zhǔn)備下一次的圖像采集。需要注意的是,由于圖像在傳輸過程中奇偶場(chǎng)是分開傳輸?shù)模現(xiàn)IFO中只存儲(chǔ)奇場(chǎng)的一部分圖像,而完整的圖像是由奇場(chǎng)和偶場(chǎng)共同組成的,所以獲得的圖像顯示的是一幀圖像壓縮一半的結(jié)果,圖像是失真的。但是,我們只觀察算法的處理結(jié)果,因此沒有進(jìn)行圖像的完整顯示。
3.2 CPLD程序
CPLD接收的輸入信號(hào)有來自TMS320VC5509A的GPIO口的信號(hào),來自TVP5150的場(chǎng)消隱信號(hào)VBLK、像素有效信號(hào)AVID、場(chǎng)同步信號(hào)VSYNC和奇偶場(chǎng)標(biāo)志位信號(hào)FID。CPLD的輸出信號(hào)有提供給FIFO的寫使能信號(hào),寫復(fù)位指針信號(hào)和讀復(fù)位指針信號(hào),以及提供給TMS320VC5509A的中斷信號(hào)。
當(dāng)VSYNC由高電平變?yōu)榈碗娖綍r(shí),輸出的是有效視頻信號(hào),同時(shí)當(dāng)VBLK為低電平、AVID為高電平時(shí),TVP5150輸出有效視頻數(shù)據(jù)。
因?yàn)榕紨?shù)場(chǎng)是從一行的中間開始掃描的,如果不設(shè)置FID信號(hào),最后采集到的圖像可能是偶場(chǎng)信號(hào),也可能是奇場(chǎng)信號(hào),那么,在CCS中顯示的圖像有可能是完整的,也可能顯示的是左右顛倒的圖像,剛好錯(cuò)開半行的圖像。所以,設(shè)置FID信號(hào)為0,采集奇場(chǎng)的信號(hào)。
CPLD將這些邏輯進(jìn)行組合,使AL422B的寫使能有效,TVP5150輸出視頻數(shù)據(jù)到AL422B中。
因?yàn)橐杉环?50x 300的圖像,需要在CPLD中設(shè)置一個(gè)計(jì)數(shù)器對(duì)采集到的像素進(jìn)行計(jì)數(shù),由AL422B的寫時(shí)鐘WCK作為計(jì)數(shù)器的時(shí)鐘信號(hào),當(dāng)計(jì)數(shù)到45 000后觸發(fā)DSP外部中斷2,同時(shí)將計(jì)數(shù)器清零。
AL422B外擴(kuò)在DSP的這個(gè)空間,當(dāng)和TMS320VC5509A的EMIF接口輸出使能信號(hào)且為低電平時(shí),通過CPLD的邏輯組合使能AL422B的輸出使能信號(hào)。接著當(dāng)TMS32 0VC5509A的EMIF接口讀使能信號(hào)為低電平時(shí),通過CPLD的邏輯組合使能AL422B的讀使能信號(hào)。邏輯關(guān)系如下:
4 實(shí)驗(yàn)結(jié)果
利用設(shè)計(jì)的系統(tǒng)進(jìn)行實(shí)物圖像的采集,圖5(a)為采集的實(shí)驗(yàn)室的辦公座椅場(chǎng)景,圖5(b)為使用邊緣檢測(cè)算法來對(duì)采集到的圖像進(jìn)行的邊緣處理。
邊緣檢測(cè)能夠突出圖像的邊緣特征,使觀察者一目了然,并且蘊(yùn)含了豐富的內(nèi)在信息(方向、階躍性質(zhì)和形狀等)。
結(jié)語
在DSP仿真軟件CCS中設(shè)置斷點(diǎn),經(jīng)過多次圖像采集處理的測(cè)試,均可以得到的完整的圖像信息。結(jié)果表明,使用異步FIFO作為TVP5150與DSP之間的數(shù)據(jù)傳輸連接器,能夠達(dá)到系統(tǒng)預(yù)設(shè)功能,并且可以穩(wěn)定、高速地進(jìn)行傳輸。