關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > EPP模式500ksps數(shù)據(jù)采集接口

EPP模式500ksps數(shù)據(jù)采集接口

作者: 時間:2004-12-07 來源:網(wǎng)絡 收藏

作者Email: whxcds@hotmail.com

摘 要: 文章通過對微機并行口下數(shù)據(jù)讀取時序的深入實驗分析,研究了實現(xiàn)500數(shù)據(jù)連續(xù)采集及傳輸涉及的軟件和硬件相關因素,并采用CPLD器件結合大容量SRAM構成FIFO,實現(xiàn)WIN98環(huán)境下高速數(shù)據(jù)采集接口。

關鍵詞: CPLD FIFO 數(shù)據(jù)采集

數(shù)據(jù)采集系統(tǒng)中,通過微機COM端口的RS-232串行通訊及通過微機并行端口的并行通訊具有開發(fā)使用方便的特點,前者可與工作于11.0592MHz晶振下的8052單片機在波特率115200時,實現(xiàn)10(samples per second)的連續(xù)數(shù)據(jù)采集和傳輸而不丟失數(shù)據(jù),若要達到更高速率的數(shù)據(jù)采集,可以通過并行口通訊方式實現(xiàn)。當前微機均可通過配置CMOS,將基地址為378H的并行口設置為EPP以支持通過數(shù)據(jù)口雙向傳輸通訊,并由芯片硬件自動產(chǎn)生握手信號,實現(xiàn)高速傳輸?shù)哪康摹?/P>

為充分實現(xiàn)EPP模式的高速特性,外設應當及時響應EPP的握手信號,當數(shù)據(jù)采集系統(tǒng)工作于非實時多任務的WIN98操作系統(tǒng)環(huán)境下,為實現(xiàn)數(shù)據(jù)高速、均勻性采樣,還需要在外設配置必要的數(shù)據(jù)緩沖存儲器。如果數(shù)據(jù)采集速率低于EPP模式數(shù)據(jù)讀入平均速率,就可能實現(xiàn)數(shù)據(jù)的連貫有效性。有資料[1]說明在EPP模式,可實現(xiàn)500kBytes/s以上的傳輸速率,這表明通過EPP模式,可以實現(xiàn)500的數(shù)據(jù)采集系統(tǒng)。通過對EPP模式的深入實驗分析,發(fā)現(xiàn)要實現(xiàn)500ksps,外設硬件及微機軟件程序均要采取一些策略:硬件上必須配置FIFO數(shù)據(jù)緩沖存儲器,才能協(xié)調數(shù)據(jù)采集嚴格的時間間隔要求與數(shù)據(jù)傳輸給微機的非實時、非均勻性之間的矛盾;軟件程序方面應當采取雙字讀的方法,否則EPP模式下僅能實現(xiàn)250kBytes/s數(shù)據(jù)讀取可行性。

1 EPP模式讀取速率的實驗分析

圖1為實驗EPP模式讀取速率的電路,實驗程序為



Delphi結合內(nèi)嵌匯編語言,涉及EPP讀取的關鍵代碼如下:

FUNCTION READDATA:BYTE;
VAR
STARTTIME,STOPTIME,DELAY:INT64;
NUMBER:LONGWORD;
QUERYPERFORMANCECOUNTER(STARTTIME);
FOR NUMBER:=0 TO 999999 DO
BEGIN
ASM
MOV DX,$37C
IN AL,DX
MOV RESULT,AL
END;
END;
QUERYPERFORMANCECOUNTER(STOPTIME);
DELAY:=STOPTTIME-STARTTIME;
END;

此為循環(huán)1000000次讀取EPP數(shù)據(jù)口程序,循環(huán)僅為方便用計時及示波器觀察而設,并在執(zhí)行前后分別讀取系統(tǒng)計數(shù)值,DELAY值除以1.2后為執(zhí)行花費的時間(單位為微秒),執(zhí)行前先通過對地址379H的D0位寫入高,使該位為低(注意:對該位寫入低通常不能達到使該位變?yōu)榈偷哪康?,只有采取寫入高才能使該位變?yōu)榈停?,以清除EPP超時位,當A、B點均為低時,可實現(xiàn)最快的EPP握手,若A為高、B為低時,由于EPP周期開始時滿足WAIT為低的要求,EPP自動在DATASTB處輸出低,但因WAIT沒有出現(xiàn)表示應答的高狀態(tài),EPP在延時10μs后,將DATASTB恢復為高以結束該次EPP訪問過程,并置超時位。稍后因WAIT為低再次開始一次EPP訪問過程,如果B為高,則WAIT為高,不能滿足EPP的開始條件,故DATASTB保持為高,EPP在延時10μs后結束該次EPP訪問過程,并置超時位。在發(fā)生超時情況下,數(shù)據(jù)仍然可正確讀入
(這一特性與筆者所查資料[1]有出入),此結論可通過對比循環(huán)前后時間差來及實際讀入數(shù)據(jù)值證實。

注意程序循環(huán)中并未執(zhí)行清除EPP超時位的指令,根據(jù)筆者實驗,即使已發(fā)生EPP訪問超時,也不影響下一次的EPP讀周期(包括對37BH的地址讀及對37CH的數(shù)據(jù)讀),但超時對EPP寫周期有影響,在清除超時位之前,EPP寫周期無效(因本文不涉及EPP寫周期的內(nèi)容,此處不再展開探討)。在圖2所示意波形中,當有正確握手的EPP讀周期執(zhí)行時間約為1.5μs,此時間是字節(jié)模式下一次有效EPP訪問所需最短時間,在這段時間內(nèi),“IN AL,DX”這一條指令占據(jù)了約90%以上的訪問時間,驗證此點僅需臨時屏蔽“IN AL,DX”指令,并比較所花費的時間差別即可。1.5μs相當于接近700kBytes/s的數(shù)據(jù)讀速率。如果以“IN EAX,DX”替代“IN AL,DX”指令,可以充分利用EPP模式下硬件將4個8位數(shù)自動合并為1個32位數(shù)的特性,在一次I/O訪問中由硬件自動產(chǎn)生4個DATASTB負脈沖從而實現(xiàn)4個字節(jié)的輸入。因為一次字節(jié)模式的I/O訪問所費時大約間需要1.5μs,減少這類指令的執(zhí)行次數(shù)有利于實現(xiàn)更高速的EPP訪問過程,經(jīng)實驗發(fā)現(xiàn)以4字節(jié)方式訪問的EPP過程可以在3.2μs內(nèi)讀取一次,即平均每字節(jié)需0.8μs,相當于1.2MBytes/s,此實驗結果是基于外設可以連續(xù)不斷的輸送數(shù)據(jù)理想前提,實際上要實現(xiàn)有效的數(shù)據(jù)傳輸,可得到的速率要低于該值。

2WIN98下高速EPP接口的構成

在WIN98環(huán)境下,由于非實時多任務的特性,運行于RING3的應用程序頻繁被操作系統(tǒng)打斷,這決定了靠軟件無法實現(xiàn)連續(xù)均勻的數(shù)據(jù)采樣,只有在硬件上配置數(shù)據(jù)緩沖存儲器并及時傳入微機以免數(shù)據(jù)緩沖存儲器溢出。只要保證一定深度的數(shù)據(jù)緩沖存儲器,且滿足數(shù)據(jù)傳輸平均速率大于數(shù)據(jù)采樣速率,就能將所采集的數(shù)據(jù)傳入微機的大容量內(nèi)存,以備處理。在硬件構成方面,為以較低代價獲得大容量的FIFO數(shù)據(jù)緩沖存儲器,采取CPLD器件結合512KB的SRAM方式,實現(xiàn),由CPLD器件完成讀寫控制的FIFO特性及EPP模式的應答握手信號。接口結構及CPLD內(nèi)部功能模塊見圖3所示,數(shù)據(jù)在CPLD控制下,以2μs 的固定速率存入SRAM環(huán)狀連續(xù)增量地址,因為EPP模式讀取速率與數(shù)據(jù)采樣的固定速率是異步的,控制邏輯為保證2μs 的固定采樣速率,當采樣時間點到達時,不論當前是否處于EPP應答處理期間,優(yōu)先執(zhí)行數(shù)據(jù)采樣,因為處理是在系統(tǒng)時鐘脈沖驅動下的硬件行為,僅存在固定的傳輸延時,故兩次采樣間隔是嚴格保證的。

EPP模式的讀取平均速率必須高于數(shù)據(jù)采樣速率,一旦FIFO數(shù)據(jù)讀空必須讓微機正確處理,由前述實驗可知,每次字節(jié)方式I/O執(zhí)行時間約為1.5μs,如果通過在EPP的狀態(tài)口(379H)的保留位輸入代表FIFO讀空的信號,則每完整讀取均要執(zhí)行兩次I/O指令:EPP數(shù)據(jù)讀及EPP狀態(tài)讀,至少需3μs完成讀取一個字節(jié),這也是通常方式能達到的最快有效讀取速率。當采用雙字讀讀及EPP狀態(tài)讀的方式時,需4.8μs完成4個數(shù)據(jù)字節(jié)讀取,但此方式需要處理的一個問題:由于雙字方式EPP數(shù)據(jù)讀由硬件自動產(chǎn)生4個EPP數(shù)據(jù)讀周期,當其執(zhí)行完畢,執(zhí)行EPP狀態(tài)讀發(fā)現(xiàn)FIFO已空,微機軟件無法判別在從第幾個EPP數(shù)據(jù)讀周期開始FIFO為空,從而影響對數(shù)據(jù)隊列的正確排序,故CPLD邏輯應當在FIFO隊列還有至少4個未讀數(shù)據(jù)時必須發(fā)出讀空信號,微機程序應當在每次EPP開始前執(zhí)行讀取狀態(tài)口的指令,以決定是否可以開始EPP數(shù)據(jù)讀周期,從上分析可以看出為實現(xiàn)有效的EPP數(shù)據(jù)讀取,平均每字節(jié)至少需要1.2μs,即可


以獲得最快約800kBytes/s的數(shù)據(jù)傳輸速率。因500ksps的數(shù)據(jù)采集設計速率僅略低于800kBytes/s的數(shù)據(jù)傳輸速率,考慮WIN98工作環(huán)境,配置大容量的FIFO十分必要,采用大容量SRAM與CPLD器件構成FIFO,具有成本較低的優(yōu)點,通過使用VHDL的行為描述,經(jīng)CPLD器件開發(fā)軟件的編譯、綜合、仿真、適配、下載,實現(xiàn)所需要的控制邏輯。根據(jù)設計,當數(shù)據(jù)鎖存輸出的下一個時鐘脈沖(即83ns后),WAIT將輸出為高電平,EPP在此時讀取數(shù)據(jù)口信號,如果不采用外部緩沖驅動器,數(shù)據(jù)上升過程將耗時80ns,對EPP數(shù)據(jù)接收可靠性有不容忽視的影響,為減小電纜電容的影響,數(shù)據(jù)輸出使用了74ALS574芯片作緩沖,其高電平輸出能力達15mA,是ispLSI1032高電平輸出能力的3.5倍,在電纜電容有100pF時,23ns可達到3.5V的邏輯高電平,保證數(shù)據(jù)接收可靠性。

仿真波形參見圖4,出于方便,仿真時鐘設置為12.5MHz。系統(tǒng)每24個時鐘脈沖產(chǎn)生一次數(shù)據(jù)采集,仿真采樣速率521ksps。數(shù)據(jù)由DIN[7:0]輸入,通過CPLD內(nèi)部數(shù)據(jù)輸入觸發(fā)時鐘(該時鐘同相緩沖后形成RAMOE脈沖,持續(xù)寬度為兩個系統(tǒng)時鐘)的上升沿鎖存,并控制地址選擇器將寫地址輸出到ABUS上,在RAMOE為高期間,DBUS開放三態(tài)數(shù)據(jù)觸發(fā)器輸出使能,使被鎖存的8位數(shù)據(jù)經(jīng)DBUS輸出,數(shù)據(jù)輸入觸發(fā)時鐘過后一個系統(tǒng)時鐘,RAMWR產(chǎn)生一個系統(tǒng)時鐘寬度的負脈沖,控制SRAM將DBUS上的數(shù)據(jù)寫入,再下一個系統(tǒng)時鐘的上升沿,RAMWR變高,RAMOE變低使SRAM輸出有效,三態(tài)數(shù)據(jù)觸發(fā)器恢復為高阻狀態(tài),ABUS變?yōu)榇x數(shù)據(jù)地址,完成一次數(shù)據(jù)采集、存儲過程。微機軟件執(zhí)行EPP數(shù)據(jù)讀前先讀取狀態(tài)口(379H)以判別READ_EN是否有效,當READ_EN為高時,可以執(zhí)行EPP數(shù)據(jù)讀周期,CPLD在同步DATASTB_IN的下降沿后,產(chǎn)生一個寬度的OUTCLK輸出鎖存脈沖,其上升沿將相應待讀地址的SRAM數(shù)據(jù)鎖存于外部74ALS574,下降沿使WAIT_OUT上升,形成EPP模式的應答握手信號。WAIT_OUT在DATASTB_IN的上升沿異步復位以響應下一次EPP模式訪問。數(shù)據(jù)寫入優(yōu)先于數(shù)據(jù)讀取,當?shù)竭_固定的采樣間隔點時,CPLD總是推后OUTCLK及WAIT_OUT 的執(zhí)行,待采樣并存儲完畢才繼續(xù)被暫緩的EPP應答,在設計中,數(shù)據(jù)的采樣及存儲需要兩個系統(tǒng)時鐘周期共167ns,遠低于EPP的超時參數(shù),故有充分的時間正確地完成EPP握手。圖4仿真了數(shù)據(jù)讀空狀態(tài),在圖中部,READ_EN信號存在一個低電平區(qū)域,此負脈沖前,根據(jù)RAMWR個數(shù)可知當時采樣了11個數(shù)據(jù),根據(jù)OUTCLK個數(shù)可知讀取了8個數(shù),剩下3個數(shù)不足以提供EPP執(zhí)行雙字讀的操作,如果此時微機需要訪問EPP,在其對狀態(tài)口的讀取中,因得知READ_EN無效而暫緩EPP的執(zhí)行,當再次完成一次數(shù)據(jù)采樣后,達到至少存在4個未讀數(shù)據(jù)的條件,READ_EN重新變?yōu)橛行В晒┪C讀取。

為與微機接口,附加部分其它口線,其中RESET使CPLD全局復位,74ALS574的OE腳由微機控制輸出是否為高阻,在程序設定數(shù)據(jù)端口作為輸入使用前,保持該腳為高電平,使74ALS574輸出為高阻態(tài),雖然使用的是EPP模式的地址選通信號腳作控制,但程序中并無EPP模式的地址讀寫指令,此腳的變化直接由EPP端口的控制口(37AH)的D3位控制,另外一般D5位為讀寫方向控制,將該位置為高,使數(shù)據(jù)端口作為輸入使用。SYN與RAMWR有固定(芯片編程時設定)的相位關系,作為數(shù)據(jù)采集的同步控制用,當選用MAX114芯片且配置為流水線模式(Pipelined Mode)時,MAX114的WR及RD腳共同連接至SYN腳,此信號波形是與RAMWR同步下降但持續(xù)時間為500ns的負脈沖信號,由A/D芯片MAX114與SRAM及CPLD等器件可構成EPP模式下500ksps的連續(xù)數(shù)據(jù)采集接口。

微機的數(shù)據(jù)接收是個環(huán)狀循環(huán)體后臺程序,頻繁對端口的訪問占據(jù)大量CPU時間片,為保證對用戶操作的響應,應采取多線程方式的程序結構。微機軟件部分采用Delphi程序設計語言,端口訪問使用內(nèi)嵌匯編語言,程序中開辟一塊20-100M字節(jié)或更大的環(huán)型數(shù)據(jù)區(qū),可根據(jù)實際需要考慮。



關鍵詞: ksps EPP 模式

評論


相關推薦

技術專區(qū)

關閉