基于uPSD323X的EPP增強(qiáng)并口的接口技術(shù)
關(guān)鍵詞:EPP增強(qiáng)并口 uPSD323X PSDsoft EXPRESS
引言
在IBM公司推出PC機(jī)時,并行端口已經(jīng)是PC機(jī)的一部分。并口設(shè)計(jì)之初,是為能代替速度較慢的串行端口驅(qū)動當(dāng)時的高性能點(diǎn)陣式打印機(jī)。并口可以同時傳輸8位數(shù)據(jù),而串口只能一位一位地傳輸,傳輸速度慢。隨著技術(shù)的進(jìn)步和對傳輸速度要求的提高,最初的標(biāo)準(zhǔn)并行端口即SPP模式的并行端口的速度已不能滿足要求。1994年3月,IEEE 1284委員會頒布了IEEE 1284標(biāo)準(zhǔn).IEEE 1284標(biāo)準(zhǔn)提供的在主機(jī)和外設(shè)之間的并口傳輸速度,相對于最初的并行端口快了50~100倍。IEEE 1284標(biāo)準(zhǔn)定義了5種數(shù)據(jù)傳輸模式,分別是兼容模式、半字節(jié)模式、字節(jié)模式、EPP模式和ECP模式。其中EPP模式、ECP模式為雙向傳輸模式。EPP模式比ECP模式更簡潔、靈活、可靠,在工業(yè)界得到了更多的實(shí)際應(yīng)用。本文介紹的一種基于uPSD323X的EPP增強(qiáng)并口的設(shè)計(jì)核心是,使用uPSD323X內(nèi)部的CPLD實(shí)現(xiàn)EPP接口。
1 EPP接口協(xié)議介紹
EPP(Enhanced Parallel Port,增強(qiáng)并行端口)協(xié)議最初是由Intel、Xirocm、Zenith三家公司聯(lián)合提出的,于1994年在IEEE1284標(biāo)準(zhǔn)中發(fā)布。EPP協(xié)議有兩個標(biāo)準(zhǔn):EPP1.7和EPP1.9。EPP接口控制信號由硬件自動產(chǎn)品,整個數(shù)據(jù)傳輸可以在一個ISA I/O周期完成,通信速率能達(dá)到500KB/s~2MB/s。
EPP引腳定義如表1所列。
表1 EPP接口引腳定義
對應(yīng)并口引腳 | EPP信號 | 方 向 |
說 明 |
1 | nWrit | 輸出 | 指示主機(jī)是向外設(shè)寫(低電平)還是從外設(shè)讀(高電平) |
2~9 | Data0~7 | 輸入/輸出 | 雙向數(shù)據(jù)總線 |
10 | Interrupt | 輸入 | 下降沿向主機(jī)申請中斷 |
11 | nWait | 輸入 | 低電平表示外設(shè)準(zhǔn)備好傳輸數(shù)據(jù),高電平表示數(shù)據(jù)傳輸完成 |
12 | Spare | 輸入 | 空余線 |
13 | Spare | 輸入 | 空余線 |
14 | nDStrb | 輸出 | 數(shù)據(jù)選通信號,低電平有效 |
15 | Spare | 輸入 | 空余線 |
16 | Ninit | 輸出 | 初始化信號,低電平有效 |
17 | nAStrb | 輸出 | 地址數(shù)據(jù)選通信號,低電平有效 |
18~25 | Ground | GND | 地線 |
1.1 EPP接口時序
EPP協(xié)議定義了4種并口周期:數(shù)據(jù)寫周期、數(shù)據(jù)讀周期、地址寫周期和地址讀周期。數(shù)據(jù)周期用于計(jì)算機(jī)與外設(shè)間傳送數(shù)據(jù);地址周期用于傳送地址、通道、命令、控制和狀態(tài)等輔助信息。圖1是EPP數(shù)據(jù)寫的時序圖。圖1中,nIOW信號實(shí)際上在進(jìn)行EPP數(shù)據(jù)寫時并不會產(chǎn)生,只不過是表示所有的操作都發(fā)生在一個I/O周期內(nèi)。在t1時刻,計(jì)算機(jī)檢測nWait信號,如果nWait為低,表明外設(shè)已經(jīng)準(zhǔn)備好,可以啟動一個EPP周期了。在t2時刻,計(jì)算機(jī)把nWrite信號置為低,表明是寫周期,同時驅(qū)動數(shù)據(jù)線。在t3時刻,計(jì)算機(jī)把nDataStrobe信號置為低電平,表明是數(shù)據(jù)周期。當(dāng)外設(shè)在檢測到nDataStrobe為低后讀取數(shù)據(jù)并做相應(yīng)的數(shù)據(jù)處理,且在t4時刻把nWait置為高,表明已經(jīng)讀取數(shù)據(jù),計(jì)算機(jī)可以結(jié)束該EPP周期。在t5和t6時刻,計(jì)算機(jī)把nDataStrobe和nWrite置為高。這樣,一個完整的EPP數(shù)據(jù)寫周期就完成了。如果就圖1中的nDataStrobe信號換為nAddStrobe信號,就是EPP地址寫周期。
圖2是EPP地址讀周期。與EPP寫周期類似,不同的是nWtrite信號置為高,表明是讀周期,并且數(shù)據(jù)線由外設(shè)驅(qū)動。
從EPP讀、寫周期可以看出,EPP模式的數(shù)據(jù)傳輸過程是一個信號互鎖的過程。以EPP寫周期為例子,當(dāng)檢測到nWait為低后,nDataStrobe控制信號就會變低,nWait狀態(tài)信號會由于nDataStrobe控制信號的變低為而高。當(dāng)計(jì)算機(jī)檢測到
nWait狀態(tài)信號變高后,nDataStrobe控制信號就會變高,一個完整的EPP寫周期結(jié)束。因此,EPP數(shù)據(jù)的傳輸以接口最慢的設(shè)備來進(jìn)行,可以是主機(jī),也可以是外設(shè)。
1.2 EPP增強(qiáng)并口的定義
EPP增強(qiáng)并口模式使用與標(biāo)準(zhǔn)并口(SPP,Standard Paralled Port)模式相同的基地址,定義了8個I/O地址?;刂?0是SPP數(shù)據(jù)口,基地址+1是SPP狀態(tài)口,基地址+2是SPP控制口。這3個口實(shí)際上就是SPP模式下的數(shù)據(jù)、狀態(tài)和控制口,保證了EPP模式和SPP模式的軟硬件兼容性。
基地址+3是EPP地址口。這個I/O口中寫數(shù)據(jù)將產(chǎn)生一個連鎖的EPP地址寫周期,從這個I/O口中讀數(shù)據(jù)將產(chǎn)生一個連鎖的EPP地址讀周期。在不同的EPP應(yīng)用系統(tǒng)中,EPP地址口可以根據(jù)實(shí)際需要設(shè)計(jì)為設(shè)備選擇、通道選擇、控制寄存器、狀態(tài)信息等。給EPP應(yīng)用系統(tǒng)提供了極大的靈活性。
基地址+4是EPP數(shù)據(jù)口。向這個I/O口中寫數(shù)據(jù)將產(chǎn)生一個連鎖的EPP數(shù)據(jù)寫周期,從這個I/O口讀數(shù)據(jù)將產(chǎn)生一個連鎖的EPP數(shù)據(jù)寫周期?;刂?5~+7與基地址+4一起提供對EPP數(shù)據(jù)口的雙字操作能力。EPP允許主機(jī)在此個時鐘周期內(nèi)寫1個32位雙字,EPP電路再把32位雙字拆為個字節(jié)依次從EPP數(shù)據(jù)口中送出去。也可以用其所長6位字方式進(jìn)行數(shù)據(jù)傳送。
由于EPP通過硬件自動握手,對EPP地址口和EPP數(shù)據(jù)口的讀寫操作都自動產(chǎn)生控制信號而無需軟件生成。
2 uPSD323X及其開發(fā)環(huán)境PSDsoft EXPRESS
ST公司的uPSD323X是帶8032內(nèi)核的Flash可編程系統(tǒng)器件,將于8032 MCU、地址鎖存器、Flash、SRAM、PLD等集成在一個芯片內(nèi)。其主要特點(diǎn)如下:具有在線編程能力和超強(qiáng)的保密功能;2片F(xiàn)lash保存器,1片是128K或者256K的主Flash存儲器,另一片是32K的從Flash存儲器;片內(nèi)8K的SDRAM;可編程的地址解碼電路(DPLD),使存儲器地址可以映射到8032尋址范圍內(nèi)的任何空間;帶有16位宏單元的3000門可編程邏輯電路(CPLD),可以實(shí)現(xiàn)EPP接口等及一些不太復(fù)雜的接口和控制功能;2個異步串口、I2C接口、USB接口、5通道脈沖寬度調(diào)節(jié)器、50個I/O引腳等。由于uPSD323X采用的是8032內(nèi)核,因此可以完全得到Keil C51編程器的PSDsoft EXPRESS是ST公司針對PSD系列產(chǎn)品(包括uPSD)開發(fā)的基于Windows平臺的一套軟件開發(fā)環(huán)境。經(jīng)過不斷升級,目前最新版是PSDsoft EXPRESS 7.9。它提供非常容易的點(diǎn)擊設(shè)計(jì)窗口環(huán)境用戶不需要自己編程,也不需要了解HDL語言,只有點(diǎn)擊鼠標(biāo)即可完成對地址鎖存器、Flash、可編程邏輯電路等外設(shè)的所有配置和寫入。它支持所有PSD器件的開發(fā),使用PSDsoft EXPRESS工具對uPSD323X系列器件的可編程邏輯電路的操作簡單、直觀。PSDsoft EXPRESS工具可以在ST網(wǎng)站(www.st.com/psd)免費(fèi)下載。
3 用uPSD323X實(shí)現(xiàn)EPP接口設(shè)計(jì)
3.1 硬件接口
EPP增強(qiáng)并口的速度最高可達(dá)到500KB/s~2MB/s,這對外設(shè)的接口設(shè)計(jì)提供了一個很高的要求,如果外設(shè)響應(yīng)太慢,系統(tǒng)的整體性能將大大下降。用戶可編程邏輯器件,系統(tǒng)的整體性能將大大降低。用戶可編程邏輯器件,如FPGA(Field Programmable Gates Array,現(xiàn)場可編程門陣列)和CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件),可以實(shí)現(xiàn)EPP增強(qiáng)并口的接口設(shè)計(jì),這種實(shí)現(xiàn)方案可以達(dá)到并口中的速度極限,并且保密性好。ST公司的uPSD323X內(nèi)部集成了可編程邏輯電路(CPLD),因此使用uPSD323X可以很好地實(shí)現(xiàn)EPP增強(qiáng)并口的接口設(shè)計(jì)。
EPP接口(EPP1.7)外設(shè)硬件接口原理如圖3所示。在本設(shè)計(jì)中,uPSD323X通過中斷的方式接收PC機(jī)并口的數(shù)據(jù),并且當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)上傳到PC機(jī)時,PC機(jī)采用的也是中斷方式接收外設(shè)的數(shù)據(jù)。
在上述硬件電路的基于上實(shí)現(xiàn)EPP并口通信還需做兩部分的工作:一部分工作是在PSDsoft EXPRESS工具中完成對CPLD 的數(shù)據(jù)的鎖存;另一部分工作是在KEIL C51環(huán)境下編寫中斷服務(wù)程序,實(shí)現(xiàn)EPP數(shù)據(jù)的讀取和發(fā)送。
圖3
3.2 對CPLD的編程及其實(shí)現(xiàn)數(shù)據(jù)鎖存的過程
在PSDsoft EXPRESS工具中,將PA端口(EPPD0~EPPD7)配置成帶有時鐘上升沿觸發(fā)的寄存器類型(PT clocked register)的輸入宏,PB0(nWait)配置成上升沿觸發(fā)的D類型寄存器(D-type register)的輸出宏,PB3(nWrite)、PB4(nDstrb)、PB2(nAstrb)配置成CPLD邏輯輸入(logic input)口。NDstrb信號和nAstrb信號各自取反再相與后的值作為輸入宏單元和輸出宏單元的時鐘。上述對PA、PB端口的配置用方程式表示如下:
PORTA EQUATIONS:
=======================
!EPPD7_LD_0=nAstrb & nDstrb;
EPPD0.LD=EPPD3_LD_0.FB;
!EPPD3_LD_0=nAstrb & nDstrb;
EPPD1.LD=EPPD3_LD_0.FB;
!nWait_C_0=nAstrb & nDstrb;
EPPD2.LD=EPPD3_LD_0.FB;
EPPD3.LD=EPPD3_LD_0.FB;
EPPD4.LD=FPPD7_LD_0.FB;
EPPD5.LD=EPPD7_LD_0.FB;
EPPD6.LD=EPPD7_LD_0.FB;
EPPD7.LD=EPPD7_LD_0.FB;
PORTB EQUATIONS:
=======================
nWait.D:=1;
nWait.PR=0;
nWait.C=nWait_C_0.FB;
nWait.OE=1;
nDstrb.LE=1;
nAstrb.LE=1;
EPP數(shù)據(jù)的鎖存過程如下:以計(jì)算機(jī)向外設(shè)傳輸數(shù)據(jù)(即EPP數(shù)據(jù)寫周期)為例子,計(jì)算機(jī)首先檢測nWait信號,如果nWait為低計(jì)算機(jī)把nWrite信號置為低,表明是寫周期,同時將數(shù)據(jù)放到數(shù)據(jù)總線上,然后置低nDstrb信號。此時,nDstrb信號會出現(xiàn)一個上升沿,此上升沿會將PA端口的數(shù)據(jù)鎖存到輸入宏;同時,此上升沿使nWait信號變高,表示外設(shè)正忙阻計(jì)算機(jī)發(fā)數(shù)年。當(dāng)計(jì)算機(jī)檢測到nWait信號為高后就會將數(shù)據(jù)握手信號nDstrb變高,EPP數(shù)據(jù)寫周期結(jié)束。上述EPP數(shù)據(jù)的鎖存和nWait握手信號的產(chǎn)生都由硬件產(chǎn)生,因此數(shù)據(jù)傳輸速度快。整個數(shù)據(jù)傳輸過程可以在一個I/O周期內(nèi)完成,鎖存到輸入宏的數(shù)據(jù)的讀取和nWait信號的清除則在外部中斷0服務(wù)程序軟件完成。
3.3 中斷服務(wù)程序的功能描述及流程
由硬件原理圖可以看出,EPP并口的nDstrb和nAstrb信號線分別連到uPSD323X的外部中斷定和外部中斷1引腳。當(dāng)發(fā)生EPP數(shù)據(jù)讀寫時,nDstrb信號就會產(chǎn)生一個下降沿,引起外中斷定中斷。當(dāng)發(fā)生EPP地址讀寫時,nAstrb信號就會產(chǎn)生一個下降沿,引起外中斷1中斷。外部中斷0和外部中斷1的中斷服務(wù)程序的功能是相同的,只不過前者接收或發(fā)送的是數(shù)據(jù)而后者是地址、命令等。以外部中斷0的中斷服務(wù)程序?yàn)槔?,詳?xì)介紹數(shù)據(jù)正向傳輸(計(jì)算機(jī)向外設(shè)發(fā)送數(shù)據(jù))和反向傳輸(外設(shè)向計(jì)算機(jī)傳送數(shù)據(jù))時中斷服務(wù)程序的功能。外部中斷0中斷服務(wù)程序流程如圖4所示。
(1)數(shù)據(jù)正向傳輸
當(dāng)發(fā)生EPP數(shù)據(jù)寫周期時,即數(shù)據(jù)正向傳輸時,計(jì)算機(jī)首先檢測nWait信號。如果nWait為低,表示外設(shè)已準(zhǔn)備好接收數(shù)據(jù)。計(jì)算機(jī)把nWrite信號置為低,表明是寫周期,同時將數(shù)據(jù)放到數(shù)據(jù)總線上,然后置低nDstrb。NDstrb信號就會產(chǎn)生一個下降沿,此下降沿一方面將PA端口的數(shù)據(jù)鎖存到輸入宏并使nWait信號變高,表示外設(shè)正忙另一方面引起外部中斷0中斷,在外部中斷0的中斷服務(wù)程序中讀取輸入宏鎖存的數(shù)據(jù),然后將nWait信號清零通知計(jì)算機(jī)現(xiàn)在外設(shè)已經(jīng)準(zhǔn)備好可以再次接收數(shù)據(jù)了。
(2)數(shù)據(jù)反向傳輸
外設(shè)準(zhǔn)備好數(shù)據(jù)需要上傳到計(jì)算機(jī)時,uPSD323X就會將數(shù)據(jù)放到PA端口,同時置低Intr信號線,向計(jì)算機(jī)申請一個中斷,計(jì)算機(jī)中由一個硬件驅(qū)動程序來處理并口的硬件中斷。驅(qū)動程序在并口中斷服務(wù)程序中,通過讀取EPP數(shù)據(jù)口獲得外設(shè)上傳的數(shù)據(jù)。由于EPP接口的握手信號由硬件產(chǎn)生,當(dāng)計(jì)算機(jī)讀取EPP數(shù)據(jù)口時同樣會檢測nWait信號。如果nWait為低,計(jì)算機(jī)把nWrite信號置高,表明是讀周期,然后置低nDstrb,nDstrb信號就會產(chǎn)生一個下降沿。此下降沿使nWait信號變高,同時引起uPSD323X外部中斷定中斷。在外部中斷0的中斷服務(wù)程序中,為確保計(jì)算機(jī)將PA端口的數(shù)據(jù)取走,需不斷檢測nDstrb是否為高。當(dāng)nDstrb為高時,表示計(jì)算機(jī)已將PA端口聽數(shù)據(jù)讀走,然后中斷服務(wù)程序?qū)Wait置低,EPP數(shù)據(jù)讀周期結(jié)束。
結(jié)語
本文系統(tǒng)地介紹了EPP增強(qiáng)并口協(xié)議,并給出使用ST公司的uPSD323X系列器件實(shí)現(xiàn)EPP增強(qiáng)并口的接口方法。此方案不需要外接門電路,保密性好,成本低。