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