淺談增強(qiáng)并行口EPP的便攜式數(shù)據(jù)采集系統(tǒng)應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
利用傳統(tǒng)的標(biāo)準(zhǔn)并行口(SPP)或RS232進(jìn)行數(shù)據(jù)傳輸,其速度和靈活性受到很大限制。簡(jiǎn)并行過程(Simplified Parallel Process)是基于CMMI以及軟件工程和項(xiàng)目管理知識(shí)而創(chuàng)作的一種"軟件過程改進(jìn)方法和規(guī)范",它由眾多的過程規(guī)范和文檔模板組成。SPP主要用于指導(dǎo)國(guó)內(nèi)IT企業(yè)持續(xù)地改進(jìn)其軟件過程能力。通??蛇x擇Nibble(4bits)或Byte(8bits)的方式進(jìn)行輸入數(shù)據(jù),還有一種Bi-directiONal的雙向傳輸方式,這種方式需硬件支持。SPP硬件是由8條數(shù)據(jù)線,4條控制線和5條狀態(tài)線所組成,它們分別對(duì)應(yīng)三個(gè)不同的寄存器來進(jìn)行數(shù)據(jù)的讀寫操作。而增強(qiáng)型并行端口EPP(Enhanced Parallel Port)不但與SPP兼容,而且其最高傳輸速率可達(dá)ISA總線的能力(2MHz)。由于便攜式計(jì)算機(jī)日益普及,基于EPP協(xié)議開發(fā)的便攜式微機(jī)采集系統(tǒng)將會(huì)是一個(gè)發(fā)展趨勢(shì)。
通常,低速的數(shù)據(jù)采集系統(tǒng)可不需要板上的數(shù)據(jù)緩存區(qū)。數(shù)據(jù)采集通常有兩種解釋:一種是指盤點(diǎn)機(jī)、掌上電腦等終端電腦設(shè)備;另外一種是指網(wǎng)絡(luò)數(shù)據(jù)采集用的軟件。數(shù)據(jù)采集系統(tǒng)包括了:可視化的報(bào)表定義、審核關(guān)系的定義、報(bào)表的審批和發(fā)布、數(shù)據(jù)填報(bào)、數(shù)據(jù)預(yù)處理、數(shù)據(jù)評(píng)審、綜合查詢統(tǒng)計(jì)等功能模塊。其管腳功能如圖1所示。它不但提供了存儲(chǔ)空間作為數(shù)據(jù)的緩沖,而且還在EPP并行總線和A/D轉(zhuǎn)換器之間充當(dāng)一彈性的存儲(chǔ)器,因而無需考慮相互間的同步與協(xié)調(diào)。FIFO的優(yōu)點(diǎn)在于讀寫時(shí)序要求簡(jiǎn)單,內(nèi)部帶有讀寫的環(huán)形指針,在對(duì)芯片操作時(shí)不需額外的地址信息。隨著FIFO芯片存儲(chǔ)量的不斷增加和價(jià)格的不斷下降,它將成為傳統(tǒng)數(shù)據(jù)存儲(chǔ)器件RAM、SRAM等的有力替代者。方案中的A/D轉(zhuǎn)換器采用了Analog Device 公司的AD1671,最大采集速率可達(dá)1.25MHz、12Bit無漏碼轉(zhuǎn)換輸出。
1 EPP協(xié)議簡(jiǎn)介
EPP協(xié)議與標(biāo)準(zhǔn)并行口協(xié)議兼容且能完成數(shù)據(jù)的雙向傳輸,它提供了四種數(shù)據(jù)傳送周期:數(shù)據(jù)寫周期;數(shù)據(jù)讀周期;地址寫周期;地址讀周期。雖然用于域名是EPP最初的動(dòng)因,但協(xié)議設(shè)計(jì)的目標(biāo)是可應(yīng)用于任何訂單和執(zhí)行體系。EPP協(xié)議基于XML(結(jié)構(gòu)化文本)格式,底層網(wǎng)絡(luò)傳輸是不固定的,雖 EPP泡沫然目前指定的唯一方法是通過TCP,但該協(xié)議的靈活性設(shè)計(jì),同樣允許其使用如BEEP、SMTP、SOAP或其他方式傳輸。該協(xié)議由IETF的provreg工作組于2004年定稿,2009年8月,IETF認(rèn)定了EPP的充分標(biāo)準(zhǔn)地位。
在設(shè)計(jì)中我們把數(shù)據(jù)周期用于便攜機(jī)與采集板之間的數(shù)據(jù)傳輸,地址周期用于地址的傳送與選通。表1列出了DB25插座在EPP協(xié)議中的各腳定義。
表1 EPP信號(hào)定義
EPP信號(hào) | 方向 | DB25對(duì)應(yīng)腳 | 描述 |
nWrite | out | 1 | 低電平寫,高電平讀 |
nDataSTB | out | 14 | 低有效,數(shù)據(jù)讀寫 |
nAddrSTB | out | 17 | 低有效,地址讀寫 |
AD[8:1] | Bi | 2~9 | 雙向數(shù)據(jù)/地址線 |
GND | 18~25 | 地線 | |
nReset | out | 16 | 低有效,外設(shè)復(fù)位 |
NINTR | in | 10 | 外設(shè)中斷,對(duì)主機(jī)產(chǎn)生 |
一個(gè)中斷請(qǐng)求 | |||
nWait | in | 11 | 握手信號(hào),低表示可以開始一個(gè) |
讀寫周期,高表示可以 | |||
結(jié)束一個(gè)讀寫周期 | |||
Userdfn | in | 12/13/15 | 根據(jù)不同外設(shè)靈活定義 |
圖2是一個(gè)數(shù)據(jù)寫周期的例子。
(1) 程序執(zhí)行一個(gè)I/O寫周期,寫數(shù)據(jù)到Port4(EPP數(shù)據(jù)寄存器)。
(2)nWrite變低,數(shù)據(jù)送到串行口上。
(3)由于nWait為低,表示可以開始一個(gè)數(shù)據(jù)寫周期,nDataSTB變低。
(4)等待外設(shè)的握手信號(hào)(等待nWait變高)。
(5)nDataSTB變高,EPP周期結(jié)束。
(6)ISA的I/O周期結(jié)束。
(7)nWait變低,表示可以開始下一個(gè)數(shù)據(jù)寫周期。
可以看到,整個(gè)數(shù)據(jù)傳送過程發(fā)生在一個(gè)ISA I/O周期內(nèi),所以用EPP協(xié)議傳送數(shù)據(jù),系統(tǒng)可以獲得接近ISA總線的傳輸率(500k~2M byte/s)。
2 AD1671控制及采集系統(tǒng)工作原理
圖3是AD1671的AD轉(zhuǎn)換時(shí)序圖
AD1671在Encode信號(hào)上升沿開始A/D轉(zhuǎn)換,Dav信號(hào)在本次轉(zhuǎn)換完成前一定時(shí)間變低,直到Dav出現(xiàn)上升沿表示本次轉(zhuǎn)換結(jié)束。為防止數(shù)字噪聲耦合帶來的誤差,Encode信號(hào)應(yīng)在Dav信號(hào)變低后50ns內(nèi)變低。系統(tǒng)中通過8254計(jì)數(shù)器對(duì)晶振進(jìn)行分頻來給AD1671提供Encode信號(hào),以滿足其工作時(shí)序的需要。系統(tǒng)原理圖如圖4所示。系統(tǒng)初始化時(shí),向8254的Clock0寫入計(jì)數(shù)值,由此可以靈活改變采樣間隔,同時(shí)寫入Clock1的計(jì)數(shù)值用來控制采樣的個(gè)數(shù)。晶振采用5MHz有源四腳晶振,D觸發(fā)器實(shí)現(xiàn)觸發(fā)功能,系統(tǒng)工作原理如下:
系統(tǒng)初始化完成后,經(jīng)地址譯碼器產(chǎn)生Add2信號(hào),使D觸發(fā)器狀態(tài)翻轉(zhuǎn),由低變到高,8254計(jì)數(shù)使能端Gate0、Gate1變高,8254開始方式2的計(jì)數(shù)。當(dāng)Clock0的計(jì)數(shù)時(shí)間到時(shí),發(fā)出一個(gè)寬度為一時(shí)鐘周期的負(fù)脈沖,經(jīng)反向送入Encode,啟動(dòng)AD1671進(jìn)行A/D轉(zhuǎn)換。一次轉(zhuǎn)換結(jié)束,利用Dav信號(hào)將轉(zhuǎn)換的數(shù)據(jù)寫入IDT7202,同時(shí)Clock1計(jì)數(shù)一次。當(dāng)Clock1計(jì)數(shù)時(shí)間到后,發(fā)出一個(gè)脈沖,用來實(shí)現(xiàn)對(duì)D觸發(fā)器的清零,使Gate0、Gate1變低,停止AD1671轉(zhuǎn)換,完成一次系統(tǒng)的采集工作。
3 FIFO與EPP的接口電路
圖5是EPP與IDT7202的接口電路
此電路是基于EPP1.9設(shè)計(jì)的。nDataSTB與nAddSTB組合產(chǎn)生nWait回送信號(hào),實(shí)現(xiàn)連鎖握手。方案中分別用數(shù)據(jù)讀周期、地址讀周期對(duì)1#FIFO、2#FIFO進(jìn)行讀取。EPP模式設(shè)定后,對(duì)FIFO存儲(chǔ)器的讀取非常簡(jiǎn)單。通過產(chǎn)生一個(gè)單I/O讀指令到"基址+4",EPP控制器就會(huì)產(chǎn)生所需的選通信號(hào),用EPP數(shù)據(jù)讀周期傳送數(shù)據(jù)。對(duì)"基址+3"的I/O操作,可產(chǎn)生地址周期信號(hào)。
C語(yǔ)言指令如下:
讀一個(gè)字節(jié)數(shù)據(jù):Data=Inportb(Base_Addr+4);
讀一個(gè)字節(jié)地址: Data=Inportb(Base_Addr+3);
實(shí)際應(yīng)用中FIFO的存取時(shí)間達(dá)到ns 級(jí),EPP的速度也接近ISA總線的速率。上述接口電路屬于高頻,電路設(shè)計(jì)要注意消除干擾。FIFO的讀寫信源應(yīng)盡量靠近FIFO,沒用到的數(shù)據(jù)輸入端應(yīng)接地或VCC等。