應(yīng)用CPLD及EPP技術(shù)對(duì)CCD信號(hào)像素級(jí)的高速采集
前言
CCD(Charge Coupled Device),即電荷耦合器件,是20世紀(jì)70年代初發(fā)展起來的新型的固體成像器件,CCD芯片借助于必要的光學(xué)系統(tǒng)和合適的外圍驅(qū)動(dòng)與處理電路,可以將景物圖像,通過輸入面空域上逐點(diǎn)的光電信號(hào)轉(zhuǎn)換、存儲(chǔ)和傳輸,在其輸出端產(chǎn)生一時(shí)序視頻信號(hào),并經(jīng)末端監(jiān)視器同步顯示出人眼可見的圖像。隨著CCD技術(shù)的迅猛發(fā)展,針對(duì)CCD信號(hào)的采集以及采集之后的信號(hào)如何與計(jì)算機(jī)進(jìn)行信息通信,就成為CCD應(yīng)用的一個(gè)重要問題,而能夠針對(duì)CCD每一個(gè)像素進(jìn)行高速采集并實(shí)時(shí)地傳輸給計(jì)算機(jī)處理,將會(huì)大大地提高采集到的CCD信號(hào)的精度并解決實(shí)時(shí)處理的問題。
EPP技術(shù)和CPLD技術(shù)
EPP技術(shù)(增強(qiáng)型并行接口技術(shù))可以進(jìn)行高速的雙向數(shù)據(jù)傳輸,它可以區(qū)分兩種類型的信息,并分別定義為數(shù)據(jù)和地址,而且它可以實(shí)現(xiàn)高速的方向轉(zhuǎn)換,因此非常適合數(shù)據(jù)采集領(lǐng)域。EPP可以在一個(gè)ISA總線周期內(nèi)完成包括握手聯(lián)絡(luò)在內(nèi)的一字節(jié)的數(shù)據(jù)讀寫工作。數(shù)據(jù)線是雙向的,一個(gè)控制信號(hào)負(fù)責(zé)確定數(shù)據(jù)端口的方向,另外兩個(gè)控制信號(hào)則用來區(qū)分?jǐn)?shù)據(jù)線上的數(shù)據(jù)和地址信息。EPP傳輸可以自動(dòng)生成控制信號(hào)并檢測(cè)對(duì)方的應(yīng)答。EPP模式支持4種操作,分別是地址寫入、數(shù)據(jù)寫入、地址讀取及數(shù)據(jù)讀取。數(shù)據(jù)讀寫一般用于主機(jī)與外設(shè)之間的數(shù)據(jù)傳送,地址的讀寫一般用于地址、通道、命令和控制信息的傳送。當(dāng)EPP模式要寫入一個(gè)數(shù)據(jù)字節(jié),需要將數(shù)據(jù)寫入EPP數(shù)據(jù)寄存器,寫操作將導(dǎo)致接口開啟一個(gè)完整的數(shù)據(jù)寫入周期。接口的硬件把待寫入數(shù)據(jù)置于D0~D7,然后接口自動(dòng)觸發(fā)握手聯(lián)絡(luò)信號(hào),并檢測(cè)外設(shè)的應(yīng)答。讀取1字節(jié)和此類似,對(duì)EPP數(shù)據(jù)寄存器進(jìn)行讀操作將引發(fā)一個(gè)完整的數(shù)據(jù)讀寫周期。地址的傳輸過程和數(shù)據(jù)的傳輸過程基本上一樣。EPP的基地址通常是378h,接口使用的地址為378h~37fh。
CPLD(可編程邏輯器件)技術(shù)可以將數(shù)字電路集成到一塊芯片上,大大減小了電路板的體積,而且它的可編程性使得設(shè)計(jì)好的電路在升級(jí)和修改上變得非常簡單和方便。在采集系統(tǒng)中將使用以上兩種技術(shù)并且結(jié)合A/D(模數(shù)轉(zhuǎn)換器)和FIFO(先入先出緩存器)來設(shè)計(jì),很好地解決了CCD信號(hào)的采集和處理難題。
系統(tǒng)的構(gòu)成和基本原理
CCD信號(hào)采集系統(tǒng)由以下幾個(gè)部分構(gòu)成:CCD數(shù)字傳感器、A/D、FIFO、CPLD、計(jì)算機(jī),如圖1所示。
當(dāng)A/D接收到CCD信號(hào)并將CCD每一個(gè)像素點(diǎn)的電壓值轉(zhuǎn)換成12位精度的數(shù)字量,送入FIFO中,通過CPLD的邏輯控制解決FIFO和A/D之間的速度不匹配問題,并控制FIFO的數(shù)據(jù)傳輸給計(jì)算機(jī)并行口。
CPLD對(duì)整個(gè)采集系統(tǒng)進(jìn)行控制,包括2選1數(shù)據(jù)選擇電路、工作觸發(fā)電路、CCD積分時(shí)間選擇電路、FIFO工作狀態(tài)控制電路,電路圖如圖2所示。當(dāng)采集準(zhǔn)備就緒,由CCD的采集使能脈沖對(duì)采集卡的各個(gè)芯片進(jìn)行初始化,此后,由CCD的采集脈沖通過AD的ENCODE端向AD發(fā)出采集脈沖,當(dāng)AD一次采集完成之后DAV發(fā)出高脈沖,此脈沖作為FIFO的寫脈沖信號(hào)。同時(shí)采集脈沖也向數(shù)字比較器中的計(jì)數(shù)器發(fā)出計(jì)數(shù)脈沖,并行口同時(shí)檢測(cè)采集脈沖和讀取脈沖的數(shù)目,當(dāng)讀取脈沖的數(shù)目少于采集脈沖的數(shù)目時(shí),并行口向FIFO中讀取數(shù)據(jù),這樣既可以保證FIFO內(nèi)不會(huì)殘留有數(shù)據(jù),也可以保證讀寫脈沖能以最短的時(shí)間結(jié)束,大大縮短了采集時(shí)間。一次采集完成之后,等待CCD發(fā)出下一次采集的指令。其中并行口向FIFO中讀取數(shù)據(jù)時(shí),每次數(shù)據(jù)將分成2次讀取,每次讀取總位數(shù)的一半,并加上高低識(shí)別位,以使數(shù)據(jù)讀入計(jì)算機(jī)中后計(jì)算機(jī)能夠分別識(shí)別高低位。
在采集系統(tǒng)中選擇合適的芯片將使得采集系統(tǒng)的采集速度達(dá)到并行口的最大傳輸速度,精度最大可達(dá)14位。由于采集系統(tǒng)通過并行口與計(jì)算機(jī)進(jìn)行通信,避免了計(jì)算機(jī)硬件電子器件對(duì)采集卡的電磁干擾,因此具有良好的抗干擾性。
采集系統(tǒng)的驅(qū)動(dòng)程序
VC++對(duì)底層的操作能力非常強(qiáng)大,可以方便地實(shí)現(xiàn)對(duì)并行口的讀寫及操作,而且后期對(duì)采集的信號(hào)進(jìn)行分析處理也非常方便,通過VC++封裝動(dòng)態(tài)鏈接庫(DLL)作為采集系統(tǒng)的驅(qū)動(dòng)程序,主要封裝以下幾個(gè)函數(shù)。
BOOL PASCAL EXPORT PTC_Open (PTC_HANDLE *phPTC);//打開并行口
void PASCAL EXPORT PTC_Close(PTC_HANDLE hPTC);//關(guān)閉并行口
BYTE PASCAL EXPORT PTC_Readdata (PTC_HANDLE hPTC);//讀取并行口數(shù)據(jù)寄存器
void PASCAL EXPORT PTC_Writedata (PTC_HANDLE hPTC, BYTE data);//寫并行口數(shù)據(jù)寄存器
BYTE PASCAL EXPORT PTC_Readstatus (PTC_HANDLE hPTC);//讀取并行口狀態(tài)寄存器
BYTE PASCAL EXPORT PTC_Readcontrol (PTC_HANDLE hPTC); //讀取并行口控制寄存器
void PASCAL EXPORT PTC_Writecontrol (PTC_HANDLE hPTC, BYTE data);//寫并行口控制寄存器
詳細(xì)的代碼由于篇幅關(guān)系不再一一列舉了。
結(jié)束語
利用CCD信號(hào)的采集脈沖信號(hào)和數(shù)據(jù)輸入信號(hào)的同步性,采集卡可以實(shí)現(xiàn)對(duì)CCD信號(hào)的每個(gè)像素進(jìn)行采集,使得采集數(shù)據(jù)達(dá)到很高的精度,而且可以通過靈活地更改CPLD的主控電路來實(shí)現(xiàn)FIFO不同的讀取方式,滿足不同工作的要求。此外FIFO的速度和精度都非常高,可以通過更換高速、高精度的AD來達(dá)到更好的采集效果。最好通過并行口和計(jì)算機(jī)通信,避免了計(jì)算機(jī)內(nèi)部電路對(duì)CCD信號(hào)的影響,也大大改善了采集的效果。