應(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í)和修改上變得非常簡(jiǎn)單和方便。在采集系統(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)鏈接庫(kù)(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é)束語(yǔ)
利用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)的影響,也大大改善了采集的效果。
1 jan axelson,那怡超譯.并行端口大全.中國(guó)電力出版社. 2001
2 馮敏. visual c++.net編程基礎(chǔ).清華大學(xué)出版社. 2002
3 潘松,王國(guó)棟.基于eda技術(shù)的cpld/fpga應(yīng)用前景.電子與自動(dòng)化出版社. 1999
4 馮志輝.用計(jì)算機(jī)cpld設(shè)計(jì)數(shù)字電子系統(tǒng).新技術(shù)新工藝出版社. 2002
5 戴紫彬.在系統(tǒng)可編程器件的輸入信號(hào)處理技術(shù).電子技術(shù)出版社. 2000
評(píng)論