一、引言
數(shù)據(jù)采集(Data Acquisition)技術(shù)是信息科學(xué)的一個(gè)重要分支,主要研究數(shù)字化信息的采集、存儲(chǔ)、處理等方面的內(nèi)容。隨著電子技術(shù)的不斷發(fā)展和人們對(duì)信息量需求的不斷擴(kuò)大,對(duì)高速、大容量的數(shù)據(jù)采集系統(tǒng)的需求也越來(lái)越高,以往的數(shù)據(jù)采集系統(tǒng)多采用單片機(jī)系統(tǒng)實(shí)現(xiàn),由于單片機(jī)的速度和容量的限制,難于設(shè)計(jì)高速大容量的數(shù)據(jù)采集卡。近年來(lái),由于PC機(jī)的廣泛應(yīng)用,采用PC機(jī)實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)已成必然趨勢(shì),因此,筆者研制了基于PC的高速數(shù)據(jù)采集卡。
圖1數(shù)據(jù)采集卡硬件結(jié)構(gòu)圖
二、硬件結(jié)構(gòu)及功能
本數(shù)據(jù)采集卡是采集高頻地質(zhì)雷達(dá)信號(hào),數(shù)據(jù)采集電路分為模擬電路和數(shù)字電路兩部分,其實(shí)現(xiàn)框圖如圖1所示:
其中接口及地址譯碼電路是為數(shù)據(jù)采集卡中各部分電路分配系統(tǒng)地址、提供啟動(dòng)信號(hào)和必要的控制信號(hào);前置放大器是一個(gè)臺(tái)階增益為2的256倍程控增益放大器,是對(duì)來(lái)自雷達(dá)發(fā)射波采樣保持后的信號(hào)進(jìn)行阻抗匹配,并進(jìn)行程控增益放大,使該信號(hào)的電壓幅度盡可能接近A/D轉(zhuǎn)換器的輸入電壓滿度值,以便得到信噪比較高的數(shù)字化輸出結(jié)果;A/D轉(zhuǎn)換器是16位的,是將前置程控增益放大器輸出的模擬信號(hào)數(shù)字化;延時(shí)電路1是用于啟動(dòng)天線發(fā)射子系統(tǒng)發(fā)射高頻高壓雷達(dá)脈沖信號(hào),該延時(shí)是可編程的,它主要用來(lái)消除電路自身和傳輸線路帶來(lái)的時(shí)滯影響,使得發(fā)射啟動(dòng)信號(hào)與接收啟動(dòng)信號(hào)之間的時(shí)間差控制在有效范圍內(nèi)。延時(shí)電路2是在系統(tǒng)啟動(dòng)脈沖觸發(fā)下,延遲一個(gè)可編程時(shí)間段后,產(chǎn)生一個(gè)觸發(fā)脈沖,用于啟動(dòng)天線接收子系統(tǒng)的采樣保持和數(shù)據(jù)采集卡的A/D轉(zhuǎn)換。微機(jī)總線采用ISA總線,ISA總線是在PC總線的基礎(chǔ)上發(fā)展起來(lái)的,但比PC總線在性能上有了較大的提高,其布線要求沒(méi)有PCI接口板的要求高,又能滿足本數(shù)據(jù)采集系統(tǒng)的速度要求。
ISA為工業(yè)標(biāo)準(zhǔn)總線,該總線較PC總線在性能上有了較大的提高,如其尋址空間的范圍、數(shù)據(jù)總線的寬度、中斷處理能力等都有很大的提高。ISA信號(hào)線分為5類(lèi):數(shù)據(jù)線、地址線、控制線、狀態(tài)線、輔助線和電源線,只簡(jiǎn)介本數(shù)據(jù)采集卡用到的信號(hào)線。
圖2ISA和GAL連接圖
地址線A0~A19共20根,為輸出信號(hào)。在系統(tǒng)總線周期由CPU驅(qū)動(dòng),在DMA周期由DMA驅(qū)動(dòng)。數(shù)據(jù)線D0~D7和SD8~SD15雙向。
AEN:地址允許信號(hào),由DMA控制器發(fā)出。AEN=1表示目前為DMA總線周期;AEN=0表示CPU在行使總線控制權(quán)。
-IOR:I/O讀命令輸出。信號(hào)有效時(shí),將選中的I/O設(shè)備接口中的數(shù)據(jù)讀到數(shù)據(jù)總線。
-IOW:I/O寫(xiě)命令輸出。信號(hào)有效時(shí),把數(shù)據(jù)總線上的數(shù)據(jù)寫(xiě)入所選中的單元。
-IOCS16:是三態(tài)信號(hào),信號(hào)有效時(shí),將數(shù)據(jù)讀到數(shù)據(jù)總線。本數(shù)據(jù)采集卡是把A/D轉(zhuǎn)換的數(shù)據(jù)通過(guò)總線存儲(chǔ)到微機(jī)中。
三、 I/O端口地址譯碼
為了CPU便于對(duì)I/O設(shè)備進(jìn)行尋址和選擇,必須給I/O設(shè)備進(jìn)行編址。CPU通過(guò)I/O設(shè)備的地址碼向I/O設(shè)備寫(xiě)數(shù)據(jù)或者從I/O設(shè)備的地址碼中讀數(shù)據(jù),一般系統(tǒng)占用低端512個(gè)I/O端口地址,即0000H∽01FFH,留給用戶(hù)使用的一般從512∽1024 I/O端口地址之間的地址,即0200H∽03FFH。單個(gè)地址編碼可以采用與門(mén)、或門(mén)、非門(mén)等簡(jiǎn)單的基本器件實(shí)現(xiàn),例如某個(gè)設(shè)備使用0200H端口地址,即轉(zhuǎn)化為二進(jìn)制為001000000000B,筆者用A0∽A9地址線來(lái)實(shí)現(xiàn),既A9=1,A0∽A8全為0,另外需要AEN地址允許信號(hào)置成低電平,對(duì)端口寫(xiě)數(shù)據(jù)-IOW或是對(duì)端口讀數(shù)據(jù)-IOR置成低電平,假設(shè)是對(duì)端口讀數(shù)據(jù),信號(hào)SIG=/AEN*/IOR*/A9*/A8*/A7*/A6*/A5*/A4*/A3*/A2*/A1*/A0,只要把地址線A0∽A8分別接上非門(mén),然后把A0∽A9,IOR和AEN接在與非門(mén)上,地址線上只要出現(xiàn)0200H端口地址,就出現(xiàn)一個(gè)高電平脈沖,就達(dá)到了單個(gè)地址的編碼。一般I/O設(shè)備都有多個(gè)地址端口,即每一臺(tái)設(shè)備占用若干個(gè)地址編碼,分別表示相應(yīng)的設(shè)備的存儲(chǔ)器的地址,通常設(shè)計(jì)I/O設(shè)備地址使用連續(xù)的地址碼,這樣再采用單個(gè)地址的編碼方法既復(fù)雜又難于實(shí)現(xiàn),目前大部分采用通用編程陣列GAL,它以可靈活編程實(shí)現(xiàn)各種邏輯功能的特點(diǎn)而成為構(gòu)成數(shù)字系統(tǒng)的理想器件,具有可以設(shè)計(jì)任意地址范圍的譯碼器,并因其電可擦除、可重新編程、輸出邏輯宏單元可組態(tài)、可以加密及其成本低等諸多優(yōu)點(diǎn)而得到廣泛的應(yīng)用。我們采用GAL20V8作為地址譯碼來(lái)設(shè)計(jì)數(shù)據(jù)采集卡電路,其相關(guān)的部分電路連線圖如圖2所示。
首先是GAL的24個(gè)引腳標(biāo)號(hào),按順序排好,然后對(duì)輸出的引角進(jìn)行編碼,STRAD的地址編碼為0208H高電平的寫(xiě)信號(hào),SD0的OE端地址為0202H,OA0是A0的反向,/RDDATA是讀74HC245的信號(hào),地址為0200H,低電平有效,IO16的OE端地址是0200H,/DACS的地址為從0200H開(kāi)始,低電平有效,它再配合其他的器件來(lái)實(shí)現(xiàn)DA轉(zhuǎn)換器片選及鎖存,/WRGAIN寫(xiě)增益信號(hào),地址為0209H,低電平有效,/WR是寫(xiě)入DA轉(zhuǎn)換器的延遲時(shí)間,地址為0204H,0205H,0206H,0207H,通過(guò)這幾個(gè)地址寫(xiě)入數(shù)據(jù),并且和/WRGAIN寫(xiě)增益信號(hào)一起控制前置放大器的放大倍數(shù),其地址為0209H。
GAL的輸入信號(hào)與PC62的地址線A0∽A9和-IOR、-IOW及AEN相連,輸出信號(hào)為SD0,此信號(hào)是為了打標(biāo)觸發(fā)設(shè)置的,WR是控制其中一個(gè)74HC245總線收發(fā)器,OSA0是控制DA轉(zhuǎn)換器的高字節(jié)的寫(xiě)入,STRAD是啟動(dòng)AD轉(zhuǎn)換器的信號(hào),WRGAIN是控制前置放大的寫(xiě)增益信號(hào),RDDATA是控制從另一個(gè)74HC245讀入數(shù)據(jù)到總線端口的信號(hào),DACS是片選DA轉(zhuǎn)換器的鎖存和片選的,-IOCS16是控制高8位的數(shù)據(jù)寫(xiě)入信號(hào)。
四、數(shù)據(jù)的讀寫(xiě)及編程實(shí)現(xiàn)
數(shù)據(jù)的讀入即從I/O卡存儲(chǔ)器讀數(shù)據(jù)到總線上,然后由主機(jī)CPU進(jìn)行處理,數(shù)據(jù)的寫(xiě)入即從總線向I/O卡的存儲(chǔ)器寫(xiě)入數(shù)據(jù),還需地址總線允許信號(hào)AEN和I/O端口讀信號(hào)IOR或I/O端口寫(xiě)信號(hào)IOW等信號(hào)的配合,才能完成數(shù)據(jù)的讀寫(xiě)。例如:STRAD啟動(dòng)AD轉(zhuǎn)換器的信號(hào),當(dāng)?shù)刂房偩€選中0208H時(shí),通過(guò)GAL譯碼電路使STRAD出現(xiàn)一個(gè)高電平信號(hào),就啟動(dòng)了AD;/RDDATA信號(hào)設(shè)置地址為0200H,當(dāng)?shù)刂房偩€上出現(xiàn)0200H地址時(shí),通過(guò)GAL譯碼產(chǎn)生一個(gè)低電平,使RDDATA信號(hào)有效,并且IO16三態(tài)信號(hào)允許,74HC245中的數(shù)據(jù)才能通過(guò)ISA總線的數(shù)據(jù)線SD8∽SD15讀到總線上,然后主機(jī)CPU進(jìn)行處理。
調(diào)試用匯編程序摘錄如下:
MOV DX,0208
OUT DX,AL
MOV CX,0100
A1:LOOP A1
MOV CX,0200
MOV BX,0200
A2:OUT DX,AL
MOV DX,0200
IN AL,DX
MOV AH,AL
INCDX
INAL,DX
MOV [BX],AX
INCBX
INCBX
LOOP A2
INT 3
五、實(shí)驗(yàn)結(jié)果及誤差改進(jìn)措施
本數(shù)據(jù)采集卡可以直接插在PC的ISA插槽上使用,具有方便靈活使用的特點(diǎn),I/O地址已經(jīng)設(shè)定,一般不需改動(dòng),如果改動(dòng),可以用GAL編程器重新設(shè)置地址,只要把幾個(gè)端口地址重新編碼即可,但相應(yīng)的軟件涉及到端口地址的必須改動(dòng)。由于采集高頻信號(hào)需要相當(dāng)高速度及大容量的要求,我們采用等效采樣技術(shù)避免了高速度的要求,經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,本數(shù)據(jù)采集卡可以實(shí)現(xiàn)高頻信號(hào)的采集,我們是對(duì)雷達(dá)高頻信號(hào)的采集,最高頻率可達(dá)30GHZ。其采集結(jié)果如圖3所示:
圖3實(shí)測(cè)雷達(dá)反射波形
在數(shù)據(jù)采集過(guò)程中,不可避免的會(huì)產(chǎn)生誤差,為了提高采樣精度,對(duì)同一點(diǎn)多次采樣并以平均值取代該點(diǎn)樣值。實(shí)踐證明n次采樣的平均值取代單次采樣得到的值,通常更接近于樣點(diǎn)的真實(shí)數(shù)值,因而可以對(duì)延時(shí)誤差有效地加以改善。