用增強并口EPP協(xié)議擴展計算機的ISA接口
利用微機開(kāi)發(fā)便攜式的數據采集、控制系統一直是微機應用系統開(kāi)發(fā)者十分關(guān)心的課題。特別在是基于筆記本電腦的數據采集和控制系統中,這一點(diǎn)顯得尤為重要。傳統的數據采集和控制系統是針對臺式機或者工控機設計的,一般都做成了標準的插卡,如A/D卡、D/A卡、RS232擴展卡等等,用戶(hù)根據自己的實(shí)際需要選取合適的插卡,安裝在自己的計算機中,再編寫(xiě)所需要的程序。但是在基于筆記本電腦的應用系統中,由于其沒(méi)有擴展槽,如果用戶(hù)自己不再配一個(gè)擴展箱,就不能配置現成的插卡。擴展箱的主要功能是擴展筆記本電腦的各種外圍接口,即把筆記本電腦的功能擴展為與一個(gè)臺式機相同的功能。它需要單獨的電源供應,體積比筆記本電腦本身大,又比筆記本重的多,價(jià)格在人民幣7000~10000元左右。如果能夠找到一種便捷的方法,為筆記本電腦提供一個(gè)標準的總線(xiàn)接口,如ISA接口,那么現在市場(chǎng)上大部分的插卡都可以用在筆記本電腦上,不僅為用戶(hù)節約了一個(gè)擴展箱投資,而且還為用戶(hù)提供了更加廣闊的選擇余地。本文提出了解決該問(wèn)題的一個(gè)完整的技術(shù)方案。
1 EPP并口
最初的計算機并口只是為打印機設計的,數據只是單向傳輸。IBM公司引進(jìn)了PS/2設計后,并口開(kāi)始支持雙向數據傳輸,但是PS/2實(shí)際上并沒(méi)有成為一個(gè)為業(yè)界廣泛認可的雙向并口模式。1992年,由Intel、Xicom和Zenith公司共同制定了EPP1.7標準。以后IEEE又發(fā)展了IEEE1284的EPP標準。實(shí)際上EPP的標準共有三個(gè),即EPP1.7、EPP1.9和IEEE1284,這些標準并不完全兼容,特別是EPP1.7和IEEE1284之間,不過(guò)這些對用戶(hù)的使用并沒(méi)有太大的影響。文獻[1]即是IEEE1284標準,其中規定了并口各種模式的詳細的時(shí)序圖,包括SPP、PS/2、ECP和EPP模式。作者根據IEEE1284上規定的時(shí)序圖進(jìn)行了時(shí)序設計,而計算機上提供的EPP版本是EPP1.7或EPP1.9,實(shí)際使用中它們沒(méi)有不匹配的地方。
2 用EPP擴展ISA接口的總體設計
計算機主板上一般有2~3個(gè)ISA插槽,可以擴充一些ISA插卡。大多數基于ISA標準的微機數據采集和控制只用到了ISA接口的數據線(xiàn)、地址線(xiàn)、AEN、ALE、#IOR、#IOW等信號,有的也用到了中斷和DMA的信號。只要了解這些信號之間的時(shí)序關(guān)系,我們完全可以自己用邏輯器件“制造”出ISA接口,文獻[2]介紹了用單片機擴展總線(xiàn)的技術(shù),包括ISA、STD總線(xiàn)等。作者曾經(jīng)用并口的SPP模式和80C196單片機擴展出了計算機的ISA接口,但是IO讀寫(xiě)速度只能達到20KB/s左右,總體的效果不太理想。ECP和EPP都能進(jìn)行高速雙向數據通訊,但是ECP的實(shí)現遠比EPP復雜的多,其性能和EPP卻大致相當,所以最終的方案采用了EPP模式。由于單片機是一個(gè)單任務(wù)的串行控制器,如果它只是用來(lái)擴展ISA接口,那么可以達到比較高的速度;否則,ISA總線(xiàn)的速度會(huì )大大降低,最后變得失去使用價(jià)值,所以最終的外設芯片不能采用單片機,只能采用DSP或者大規模的可編程邏輯器件。作者選用了后一種方案。
用EPP擴展ISA口的硬件核心是一片可編程邏輯器件,如CPLD,它一方面負責與計算機通過(guò)EPP協(xié)議進(jìn)行雙向數據通訊,另一方面負責產(chǎn)生ISA接口時(shí)序,系統體系相當簡(jiǎn)潔而高效,電路原理如圖1所示。EPP的數據線(xiàn)D0~D7和信號線(xiàn)nWrite、nDstrb、nAstrb、nInit、nWait、Intr直接與CPLD的雙向I/O線(xiàn)相連。另外,EPP沒(méi)有定義標準并口的第12、13、15三個(gè)引腳,這些引腳用戶(hù)可以靈活使用。電路圖上并口的第13腳和CPLD連了起來(lái),可以提供其他的功能。CPLD提供了ISA接口的D0~D7,A0~A15,ALE,AEN,#IOR,#IOW,IRQ、IORDY等信號。擴展的ISA接口提供了16根地址線(xiàn),可以尋址64K的IO空間,這比計算機所提供的IO空間(1K)大了許多倍。用戶(hù)可以專(zhuān)門(mén)設計具有64K尋址能力的數據采集和控制板,也可以用只有1K尋址能力的數據采集和控制板,在這種情況下,地址線(xiàn)的高6位被忽略了,但這并不影響系統的正常使用。
3 硬件操作方法
EPP協(xié)議定義的并行口提供了四種傳送周期:數據寫(xiě)周期、數據讀周期、地址寫(xiě)周期和地址讀周期。數據周期一般用于計算機和外設間的數據傳送,地址周期一般用于傳送地址、通道、命令和控制等信息。實(shí)際上,數據周期和地址周期并沒(méi)有那么嚴格的界限,可以把地址周期看做另一種數據周期,二者并沒(méi)有太大的區別。圖2是EPP數據寫(xiě)周期的時(shí)序圖,圖中的nIOW信號實(shí)際上在進(jìn)行EPP數據寫(xiě)時(shí)并不會(huì )產(chǎn)生,只不過(guò)是為了表示所有的操作都發(fā)生在一個(gè)IO周期內,只有這樣,才能使EPP獲得ISA總線(xiàn)的數據操作速度。圖2中的nDataStrobe信號如果換為nAddStrobe信號,就是EPP地址寫(xiě)周期。圖3是EPP地址讀周期,也是發(fā)生在一個(gè)IO周期內。
EPP定義了一個(gè)計算機用于控制外設初始化的信號:nInit,如果用戶(hù)不希望控制外設的初始化,則可以不處理這個(gè)信號;用戶(hù)也可以挪用nInit信號做其他的用途,在本設計方案的地址周期中,如果nInit為高,則表示該地址對應ISA接口的高8位地址,否則,對應低8位地址。用這種辦法解決了用8位的EPP地址擴展16位的ISA地址的難題。實(shí)踐證明,這是一個(gè)方便實(shí)用的解決方法。
用EPP擴展ISA接口,最根本的任務(wù)是把EPP的數據讀寫(xiě)周期快速地轉化為ISA的IO讀寫(xiě)周期。在ISA的時(shí)序中[3],時(shí)鐘的頻率是4.77MHz,典型的一個(gè)ISA周期要用4個(gè)時(shí)鐘周期,即大概1μs的時(shí)間。在EPP的讀周期中,EPP首先發(fā)出讀命令,然后等待ISA的數據響應,如果ISA仍然以4個(gè)時(shí)鐘來(lái)進(jìn)行IO讀操作,那么EPP很有可能會(huì )由于超時(shí)而發(fā)生時(shí)序錯誤,數據也必然會(huì )錯。解決這個(gè)問(wèn)題可以用提高ISA接口的時(shí)鐘頻率的辦法,如提高到8MHz甚至是16MHz,但是這樣的話(huà)ISA卡可能會(huì )來(lái)不及響應而發(fā)生數據錯誤,所以這種方法不可??;另一種方法是改造ISA接口的時(shí)序,使得既能滿(mǎn)足ISA卡的時(shí)序要求,又不至于造成EPP的超時(shí)錯誤。仔細分析ISA的IO讀時(shí)序,CPU在T1發(fā)出地址信號并發(fā)出ALE信號,在T2發(fā)出讀命令,在T3采樣READY信號,以決定是否產(chǎn)生等待周期,如果不需要等待,則在T4讀取數據,完成整個(gè)讀周期??梢园l(fā)現,對于本系統,T1周期是可以省略的,因為CPLD可以在EPP的地址周期內設定要尋址的IO地址,而沒(méi)有必要在ISA周期內再發(fā)送地址,這樣ISA的IO讀周期就從4個(gè)時(shí)鐘減少到3個(gè)時(shí)鐘;如果可以保證ISA卡設備可以在一個(gè)時(shí)鐘內送出有效的數據,則T3也可以省略,這樣一個(gè)ISA讀周期實(shí)際上只占用了兩個(gè)時(shí)鐘,不會(huì )造成EPP的超時(shí)錯誤。對EPP數據寫(xiě)周期,因為CPLD可以先把數據寫(xiě)到緩沖中,首先保證EPP時(shí)序,再把數據從緩沖寫(xiě)到ISA設備中去,所以不會(huì )造成超時(shí)錯誤。ISA的讀寫(xiě)時(shí)序經(jīng)過(guò)這樣的簡(jiǎn)化處理后,可以滿(mǎn)足ISA設備和EPP兩方面的時(shí)序要求。
4 CPLD的編程
系統選用的CPLD是ALTERA公司的MEP7064,它有64個(gè)宏單元,1250個(gè)可用門(mén),就可以完成EPP和ISA的接口任務(wù)。文獻[4]詳細介紹了ALTERA公司的CPLD器件,在這里就不再介紹器件的性能和使用方法了。僅給出用VHDL語(yǔ)言寫(xiě)的控制程序如下(部分信號的意義請參照前面的電路原理圖)。
Process (clk)
Type ISAType is (Idle,RD,WR);
Variable ISA: ISAType;
Variable IOR: STD_LOGIC;
Variable IOW: STD_LOGIC;
Variable EPPBuf: STD_LOGIC_VECTOR (7 downto 0);
Begin
Case ISA is
When Idle =>
If IOR=‘1’ then
#IORD <= ‘0’;
IOR=‘0’;
ISA := RD;
Elseif IOW=‘1’ then
#IOWR <= ‘0’;
ISADataBuf<=EPPBuf;
IOW:=‘0’;
ISA:=WR;
End if;
When RD =>
EPPBuf:=ISADataBus;
#IORD<=‘1’;
ISA:=Idle;
When WR =>
#IOWR <=‘1’;
ISA:=Idle;
End case;
End;
End Process;
5 計算機對EPP/ISA的操作
計算機通過(guò)EPP協(xié)議用CPLD擴展出ISA接口,現有的ISA卡就可以通過(guò)ISA接口、CPLD和EPP協(xié)議間接地連到了計算機上。對于ISA卡的使用者而言,無(wú)論從硬件的角度還是從軟件的角度來(lái)看,都好象是這塊ISA卡直接插在計算機的ISA槽內,其速度也完全能夠達到應用的要求。EPP協(xié)議的用戶(hù)編程接口是協(xié)議定義的幾個(gè)IO口地址。以并口基地址為378H為例,378H是SPP數據口,379H是SPP狀態(tài)口,37AH是SPP控制口,37BH是EPP地址口,37CH是EPP數據口。對ISA卡的操作順序是:首先通過(guò)設置nInit為高和寫(xiě)EPP地址口來(lái)設置ISA卡的高8位地址,再通過(guò)設置nInit為低和寫(xiě)EPP地址口來(lái)設置ISA卡的低8位地址,就可以通過(guò)EPP數據口對ISA卡進(jìn)行讀寫(xiě)操作了。作者本人做出的系統對單一的地址進(jìn)行操作時(shí),寫(xiě)操作的速度可以達到1000~1200 KB/s,最高可以達到1310KB/s,讀操作的速度可達800~1100KB/s,完全能滿(mǎn)足數據采集和控制的要求。如果是對多個(gè)地址進(jìn)行操作,由于設置地址要占用一個(gè)或者兩個(gè)EPP地址周期,所以數據傳輸速度會(huì )有所損失。
6 與其它通訊方案的比較
(1)RS232串口:最通用的一種連接方法。但是它支持數據傳輸速率最大為10~20KB/s,對于一般的數據采集和控制系統而言顯得有些慢。
(2)SPP:數據通訊速度比串口快,可以達到150 KB/s。但是SPP用做數據輸入時(shí)很麻煩,用多次IO才能完成一次完整的數據讀取,速度要犧牲很多,況且外設的設計并不比EPP簡(jiǎn)單。所以,如果選擇了并口方案,就不能選擇SPP模式,除非用戶(hù)僅僅是做數據輸出并且對速度沒(méi)有很高的要求。
(3)ECP:與EPP相比ECP最大的優(yōu)勢是它支持DMA操作,如果系統工作時(shí)有大批量的數據要傳輸,用ECP模式可以大大減輕計算機CPU的負擔,提高系統的整體性能。但是獲得ECP的高性能的代價(jià)是必須重新設計比EPP復雜得多的接口軟件(指CPLD的控制軟件),同時(shí)計算機軟件方面還必須要編寫(xiě)硬件驅動(dòng)程序,這對于一般的計算機應用系統開(kāi)發(fā)者而言還是一個(gè)不小的困難。
(4)PCMCIA(the Personal Computer Memory Card Industry Association):發(fā)展了信用卡大小的外設與PC機連接的標準。最初,PCMCIA標準僅對于內存卡,現在已擴展到I/O設備。數據能以最大5MB/s的速率傳輸。但PCMCIA卡不支持DMA,這就增加了數據采集和CPU處理之間的時(shí)間。因而,目前的PCMCIA I/O卡需大容量緩存。PCMCIA設備的另一缺點(diǎn)是尺寸太?。ㄗ畲蟪叽纾福叮恚?times;54mm×10mm),不能用于控制數據采集系統中的一些模擬電路部分。
(5)USB(Universal Serial Bus):支持12Mbps的數據傳輸速度,支持127個(gè)外圍設備,支持PNP(Plug and Play),支持熱插拔,并且總線(xiàn)本身可以提供用戶(hù)系統電源。信號傳輸采用差分方式,可以抑制比較強的共模干擾。USB具有很大的發(fā)展前途。在未來(lái)的計算機上,可能不再提供RS232串口,可能不再提供并口,但絕對不可能沒(méi)有USB接口。USB的使用不象并口那樣簡(jiǎn)潔,它必須要有專(zhuān)用的接口芯片的支持才能用在系統中。不少芯片商已經(jīng)提供了USB的產(chǎn)品,如USB HUB、USB接口、USB單片機等等。當然用戶(hù)自己也可以把USB協(xié)議寫(xiě)到PLD芯片中去,使接口和系統融為一體。
綜上所述,采用EPP擴展計算機的ISA接口是一種新穎的計算機外設設計方案,它具有非常高的性能價(jià)格比,能夠達到絕大多數基于ISA接口的數據采集和控制系統的通訊速度要求。這種方案大大擴展了筆記本電腦對于ISA接口設備的適應能力,省去了用戶(hù)對擴展箱的需求。僅僅改寫(xiě)該系統的CPLD程序和計算機的控制程序就可以提供新的功能,如做成雙ISA接口系統,或者改造成STD、STE總線(xiàn)系統等等,而系統的硬件不需做任何的改動(dòng)。EPP的確是一種有前景的實(shí)用接口技術(shù),值得微機外設設計者和使用者采用。
評論