基于CPLD控制的通用視頻采集模塊
對于用于視頻圖像處理的DSP來(lái)說(shuō),由于前端的A/D 采集速度較低,一般為了減少DSP 的開(kāi)銷(xiāo),在視頻采集A/D 和DSP之間接入先進(jìn)先出存儲器(FIFO) 作為緩沖。
基于先進(jìn)先出存儲器(FIFO) 的多樣性,一般在視頻采集與微處理器模塊之間很少提供無(wú)縫接口。傳統的方法是用簡(jiǎn)單的邏輯電路實(shí)現很少一部分接口控制,大多數是通過(guò)軟件來(lái)實(shí)現,雖然軟件設計靈活性比較大,但是對軟件設計者提出很高的要求; 一般來(lái)說(shuō)使用的都是線(xiàn)存的FIFO,這種FIFO 的存儲量比較少,會(huì )花費CPU 很大的開(kāi)銷(xiāo)。
本文實(shí)現了一種在采集A/D 模塊、專(zhuān)用視頻FIFO 以及DSP 微處理使用CPLD作為純硬件控制的方案。使用這種方案的創(chuàng )新點(diǎn)是首先因為使用的是幀存儲器FIFO,存儲一幀或者一場(chǎng)視頻數據,這樣可以大大減輕DSP的開(kāi)銷(xiāo),提高DSP 的效率,從而更好的提高視頻處理的實(shí)時(shí)性;其次因為接口邏輯比較復雜,一般用軟件實(shí)現起來(lái)比較困難,使用可編程CPLD實(shí)現全部的硬件接口邏輯,減少軟件設計的難度,減少DSP 的開(kāi)銷(xiāo)。同時(shí)可以發(fā)揮CPLD 現場(chǎng)可編程的特點(diǎn),可以像軟件一樣更改; 最后可
以作為一個(gè)集成的通用硬件采集模塊。
本文實(shí)現的是基于TI TMS320C6x 的DSP的視頻采集壓縮卡的A/D采集模塊以及接口控制模塊。在采集模塊主要功能是將從CCD 攝像頭輸入的模擬視頻信號轉換為數字信號,普通CCD攝像頭的輸出是NTSC 制式的復合全電視信號CVBS 信號,通過(guò)SAA7114H TV解碼芯片將模擬TV 信號解碼,轉換為符合ITU-R BT.601 標準的數字視頻信號,并且由CPLD 控制模塊將數據存儲到專(zhuān)用的視頻FIFO芯片,中斷DSP 讀取數據處理。
具體的信號控制見(jiàn)圖1.1。
2. 模塊介紹
2.1. 視頻采集模塊
采集模塊采用PHILIPS 公司的視頻A/D 芯片SAA7114H,該專(zhuān)用視頻A/D 具有6 路模擬視頻輸入,兩個(gè)模擬預處理通道,并且抗混濾波、梳狀濾波都被集成到芯片內部,這樣對于硬件設計帶來(lái)了極大的方便。同時(shí)場(chǎng)同步信號IGPV,行同步信號IGPH,有效圖像數據輸出信號IDQ,時(shí)鐘輸出信號ICLK都有管腳直接引出,這樣省去了以往的時(shí)鐘同步電路的設計,可靠性也有所提高。系統內部鎖相環(huán)技術(shù)的集成使得可靠性和設計復雜度都有極大的降低。SAA7114H 的配置支持I2C,可以通過(guò)DSP的通用I/O 口軟件模擬I2C總線(xiàn)。
從圖2可以看出整個(gè)過(guò)程是在ICLK在上升沿觸發(fā),在 IDQ 有效的情況下傳輸的數據有效,數據輸出的格式為(下為奇數場(chǎng)的一行數據掃描)
FF00 0080 U0Y0,V0Y1,U1Y2,V1Y3,…………,U319Y638,V320Y639
其中FF00 和0080 是奇數場(chǎng)標志位。
當輸出IGPH 有效表明為一行數據的掃描,當IGPH無(wú)效的情況下,表明數據在回掃。從圖3可以看出當IGPV 有效說(shuō)明是一場(chǎng)數據的掃描,當為無(wú)效時(shí),說(shuō)明為一場(chǎng)數據結束。通過(guò)這幾個(gè)狀態(tài)信號的輸出,以及其它標志信號可以對行數據和場(chǎng)數據同步進(jìn)行控制。具體見(jiàn)圖2.1(信號一行掃描輸出狀態(tài)) 和圖2.2(信號一場(chǎng)掃描輸出狀態(tài))。
圖2.1 信號輸出狀態(tài)( 一行掃描)
圖2.2 信號輸出狀態(tài)( 一場(chǎng)掃描)
2.2. 視頻緩沖模塊FIFO
AL422B 是Averlogic 公司的專(zhuān)用視頻的FIFO,最大存儲為384K× 8bits,同時(shí)支持VGA,CCIR,NTSC,PAL 等視頻制式,兩端獨立的讀寫(xiě)操作,支持不同速率的讀寫(xiě)。根據CCIR.601協(xié)議,一場(chǎng)圖像數字化后最大的數據量是220K× 16bit,因此,采用的AL422B 足夠可以容納完整的一場(chǎng)視頻圖像的數據量。采用這種大的FIFO 的設計可以降低DSP 對視頻FIFO 讀寫(xiě)控制時(shí)序的復雜度,使整個(gè)視頻圖像處理流程簡(jiǎn)捷,同時(shí)減少控制信號。
2.3. CPLD控制模塊
該模塊的組成主要是一片Altera 公司的CPLD 芯片EPM7128STC100,其主要功能是提供DSP 的EMIF 接口與視頻FIFO 相連時(shí)所需的一些額外的輔助邏輯(glue logic)。另外一個(gè)重要的功能是通過(guò)檢測SAA7114H 輸出的同步信號來(lái)生成DSP 中斷,通知DSP 讀取視頻FIFO 中已滿(mǎn)的一場(chǎng)圖像數據。(視頻FIFO AL422B 的容量為384K× 8bits,系統中使用兩片并聯(lián)成16bits的接口寬度,整個(gè)視頻FIFO可以一次存放一幀的視頻數據。)
CPLD通過(guò)SAA7114H的輸出狀態(tài)信號以及TMS320C6x DSP的相應輸出控制信號生成FIFOAL422B 的控制信號。具體為:
根據SAA7114H輸出的VPO 總線(xiàn)同步信號,控制將輸出的數字視頻信號寫(xiě)入到FIFO 中。
檢查到SAA7114H輸出的場(chǎng)同步信號后(表明FIFO 中已經(jīng)存滿(mǎn)一場(chǎng)圖像數據),向DSP 發(fā)出INT 信號,通知其開(kāi)始讀取FIFO 中的圖像數據。同時(shí)將FIFO 的寫(xiě)入指針復位到地址0x0000處。
根據SAA7114H 的兩個(gè)輸出信號IGP1 和RTS1,判定當前視頻AD輸出的視頻數據是奇數場(chǎng)還是偶數場(chǎng),同時(shí)發(fā)出不同的INT中斷來(lái)通知DSP。
控制DSP 讀取FIFO 中圖像數據的讀寫(xiě)時(shí)序,當讀完一場(chǎng)數據后,將FIFO 的讀出指針復位到地址0x0000 處。
控制FIFO 的寫(xiě)時(shí)鐘與讀時(shí)鐘,并且使得寫(xiě)時(shí)鐘與SAA7114H的輸出時(shí)鐘保持同步,使得讀時(shí)鐘與DSP 的外部分頻后的時(shí)鐘保持同步。
圖2.4 FIFO 寫(xiě)時(shí)序控制
圖2.5 FIFO 讀時(shí)序控制
圖2.6 CPLD 控制寫(xiě)時(shí)序的狀態(tài)機
從FIFO的寫(xiě)時(shí)序圖和讀時(shí)序可以看到,當/WE和/RE(兩者都是低電平有效)為高電平的第一個(gè)周期,芯片仍然進(jìn)行寫(xiě)入和讀出
在讀控制中主要是產(chǎn)生用于DSP 中斷的外部使能,中斷DSP 讀取FIFO的數據,同時(shí)還要通知DSP 讀取的是奇數場(chǎng)的數據還是偶數場(chǎng)的數據。FIFO 的讀時(shí)序圖上可以看出如果F_OE 為低電平,這F_RE 變高后(F_OE 和F_RE 都是低電平有效),FIFO 的輸出仍然保存原來(lái)的值,而不是進(jìn)入高阻狀態(tài)。CPLD 控制程序中正是利用這點(diǎn)來(lái)實(shí)現DSP對FIFO 的讀寫(xiě)時(shí)序的匹配以及保證DMA 傳輸在被DSP 中斷后不會(huì )出錯。DSP 的FIFO 的讀取采用32 位的異步接口,8個(gè)DSP的時(shí)鐘周期(注意: 采用的是DSP 的主頻,不是總線(xiàn)頻率ClockOut2) 實(shí)現一次對FIFO 的讀寫(xiě)。具體設置參考EMIF 總線(xiàn)初始化部分。CPLD通過(guò)將F_RE 置高,延長(cháng)FIFO數據的輸出時(shí)間來(lái)匹配整個(gè)DSP 的讀取時(shí)序。利用邏輯分析儀測得FIFO 的讀取時(shí)序為圖9。
根據整個(gè)控制過(guò)程的邏輯和相應器件的讀寫(xiě)時(shí)序,可以將整個(gè)FIFO 的控制過(guò)程分為寫(xiě)入控制和讀出控制兩個(gè)部分,在寫(xiě)入控制中用了4個(gè)有限狀態(tài)機來(lái)實(shí)現,它們分別是IDLE,WEN0,WEN1,WEN2。根據狀態(tài)機的圖,采用硬件描述語(yǔ)言VHDL 實(shí)現了對CPLD 的邏輯的設計、綜合和仿真。邏輯綜合采用Synplicit7.2 公司專(zhuān)門(mén)針對CPLD/CPLD 的邏輯綜合工具。該軟件帶有Altera公司的綜合模塊庫,可以針對Altera公司的CPLD 器件對邏輯綜合后的結果進(jìn)行優(yōu)化和改進(jìn),其中寫(xiě)狀態(tài)機綜合后的電路原理圖為圖2.7。
對于邏輯設計的仿真時(shí)序驗證工作重要采用ALDEC 公司的仿真工具Active-HDL4.2,然后加入綜合工具生成的標準時(shí)延文件(SDF文件),通過(guò)仿真結果的驗證,說(shuō)明CPLD 的邏輯設計是符合FIFO 讀寫(xiě)控制模塊的功能要求的。最后綜合的邏輯結果通過(guò)Altera 公司的MAXplus10軟件,采用ByteBlaster 電纜下載到CPLD 芯片中。
3. 實(shí)驗結果:
圖3.1 是采用QCIF(176× 144) 格式的視頻圖像,壓縮編碼算法采用M-JPEG2000標準。其中前一幅是無(wú)損壓縮恢復的結果圖,后一幅為有損壓縮。相應的壓縮編碼指標如表3.1 所示。
表 3.1
從上面表3.1 的結果可以看出,整個(gè)壓縮系統可以實(shí)現對視頻圖像的壓縮編碼。壓縮后的視頻流比較流暢。
從通過(guò)邏輯分析儀測得的時(shí)序圖(圖2.8、圖2.9)可以看出,CPLD 實(shí)現的FIFO 控制信號滿(mǎn)足視頻AL422B的時(shí)序要求,整個(gè)視頻數據傳輸的通路工作正常,基本上達到了系統設計的指標和要求。同時(shí)這種方案可以作為一個(gè)整體的視頻采集模塊,在一般的使用DSP 的EMIF 總線(xiàn)的情況下的都可以無(wú)需改動(dòng)就可以作為一個(gè)采集模塊直接使用,大大簡(jiǎn)化硬件電路開(kāi)發(fā)的難度。此方案已經(jīng)在基于DSP 的視頻PCI 采集壓縮卡中得到了驗證,達到了很好的效果。本文的基于CPLD的視頻采集通用模塊已經(jīng)在M-JPEG2000的視頻采集壓縮卡得到了應用。
評論