摘要:提出了用EPP協(xié)議和CPLD擴展筆記本電腦的ISA接口的方法,給出了詳細的技術解決方案。擴展的ISA接口可以達到1310 KB/s的雙向通訊速度,與ISA本身的速度相當。用戶可以通過擴展的ISA接口直接使用市場上的基于ISA的接口卡。
關鍵詞:ISA 標準并口 增強并口 復雜的可編程邏輯器件
利用微機開發(fā)便攜式的數(shù)據(jù)采集、控制系統(tǒng)一直是微機應用系統(tǒng)開發(fā)者十分關心的課題。特別在是基于筆記本電腦的數(shù)據(jù)采集和控制系統(tǒng)中,這一點顯得尤為重要。傳統(tǒng)的數(shù)據(jù)采集和控制系統(tǒng)是針對臺式機或者工控機設計的,一般都做成了標準的插卡,如A/D卡、D/A卡、RS232擴展卡等等,用戶根據(jù)自己的實際需要選取合適的插卡,安裝在自己的計算機中,再編寫所需要的程序。但是在基于筆記本電腦的應用系統(tǒng)中,由于其沒有擴展槽,如果用戶自己不再配一個擴展箱,就不能配置現(xiàn)成的插卡。擴展箱的主要功能是擴展筆記本電腦的各種外圍接口,即把筆記本電腦的功能擴展為與一個臺式機相同的功能。它需要單獨的電源供應,體積比筆記本電腦本身大,又比筆記本重的多,價格在人民幣7000~10000元左右。如果能夠找到一種便捷的方法,為筆記本電腦提供一個標準的總線接口,如ISA接口,那么現(xiàn)在市場上大部分的插卡都可以用在筆記本電腦上,不僅為用戶節(jié)約了一個擴展箱投資,而且還為用戶提供了更加廣闊的選擇余地。本文提出了解決該問題的一個完整的技術方案。
1 EPP并口
最初的計算機并口只是為打印機設計的,數(shù)據(jù)只是單向傳輸。
IBM公司引進了PS/2設計后,并口開始支持雙向數(shù)據(jù)傳輸,但是PS/2實際上并沒有成為一個為業(yè)界廣泛認可的雙向并口模式。1992年,由Intel、Xicom和Zenith公司共同制定了EPP1.7標準。以后IEEE又發(fā)展了IEEE1284的EPP標準。實際上EPP的標準共有三個,即EPP1.7、EPP1.9和IEEE1284,這些標準并不完全兼容,特別是EPP1.7和IEEE1284之間,不過這些對用戶的使用并沒有太大的影響。文獻[1]即是IEEE1284標準,其中規(guī)定了并口各種模式的詳細的時序圖,包括SPP、PS/2、ECP和EPP模式。作者根據(jù)IEEE1284上規(guī)定的時序圖進行了時序設計,而計算機上提供的EPP版本是EPP1.7或EPP1.9,實際使用中它們沒有不匹配的地方。
2 用EPP擴展ISA接口的總體設計
計算機主板上一般有2~3個ISA插槽,可以擴充一些ISA插卡。大多數(shù)基于ISA標準的微機數(shù)據(jù)采集和控制只用到了ISA接口的數(shù)據(jù)線、地址線、AEN、ALE、#IOR、#IOW等信號,有的也用到了中斷和DMA的信號。只要了解這些信號之間的時序關系,我們完全可以自己用邏輯器件“制造”出ISA接口,文獻[2]介紹了用單片機擴展總線的技術,包括ISA、STD總線等。作者曾經(jīng)用并口的SPP模式和80C196單片機擴展出了計算機的ISA接口,但是IO讀寫速度只能達到20KB/s左右,
總體的效果不太理想。ECP和EPP都能進行高速雙向數(shù)據(jù)通訊,但是ECP的實現(xiàn)遠比EPP復雜的多,其性能和EPP卻大致相當,所以最終的方案采用了EPP模式。由于單片機是一個單任務的串行控制器,如果它只是用來擴展ISA接口,那么可以達到比較高的速度;否則,ISA總線的速度會大大降低,最后變得失去使用價值,所以最終的外設芯片不能采用單片機,只能采用DSP或者大規(guī)模的可編程邏輯器件。作者選用了后一種方案。
用EPP擴展ISA口的硬件核心是一片可編程邏輯器件,如CPLD,它一方面負責與計算機通過EPP協(xié)議進行雙向數(shù)據(jù)通訊,另一方面負責產(chǎn)生ISA接口時序,系統(tǒng)體系相當簡潔而高效,電路原理如圖1所示。EPP的數(shù)據(jù)線D0~D7和信號線nWrite、nDstrb、nAstrb、nInit、nWait、Intr直接與CPLD的雙向I/O線相連。另外,EPP沒有定義標準并口的第12、13、15三個引腳,這些引腳用戶可以靈活使用。電路圖上并口的第13腳和CPLD連了起來,可以提供其他的功能。CPLD提供了ISA接口的D0~D7,A0~A15,ALE,AEN,#IOR,#IOW,IRQ、IORDY等信號。擴展的ISA接口提供了16根地址線,可以尋址64K的IO空間,這比計算機所提供的IO空間(1K)大了許多倍。用戶可以專門設計具有64K尋址能力的數(shù)據(jù)采集和控制板,也可以用只有1K尋址能力的數(shù)據(jù)采集和控制板,在這種情況下,地址線的高6位被忽略了,但這并不影響系統(tǒng)的正常使用。
3 硬件操作方法
EPP協(xié)議定義的并行口提供了四種傳送周期:數(shù)據(jù)寫周期、數(shù)據(jù)讀周期、地址寫周期和地址讀周期。數(shù)據(jù)周期一般用于計算機和外設間的數(shù)據(jù)傳送,地址周期一般用于傳送地址、通道、命令和控制等信息。實際上,數(shù)據(jù)周期和地址周期并沒有那么嚴格的界限,可以把地址周期看做另一種數(shù)據(jù)周期,二者并沒有太大的區(qū)別。圖2是EPP數(shù)據(jù)寫周期的時序圖,圖中的nIOW信號實際上在進行EPP數(shù)據(jù)寫時并不會產(chǎn)生,只不過是為了表示所有的操作都發(fā)生在一個IO周期內,只有這樣,才能使EPP獲得ISA總線的數(shù)據(jù)操作速度。圖2中的nDataStrobe信號如果換為nAddStrobe信號,就是EPP地址寫周期。圖3是EPP地址讀周期,也是發(fā)生在一個IO周期內。
EPP定義了一個計算機用于控制外設初始化的信號:nInit,如果用戶不希望控制外設的初始化,則可以不處理這個信號;用戶也可以挪用nInit信號做其他的用途,在本設計方案的地址周期中,如果nInit為高,則表示該地址對應ISA接口的高8位地址,否則,對應低8位地址。用這種辦法解決了用8位的EPP地址擴展16位的ISA地址的難題。實踐證明,這是一個方便實用的解決方法。
用EPP擴展ISA接口,最根本的任務是把EPP的數(shù)據(jù)讀寫周期快速地轉化為ISA的IO讀寫周期。在ISA的時序中[3],時鐘的頻率是4.77MHz,典型的一個ISA周期要用4個時鐘周期,即大概1μs的時間。在EPP的讀周期中,EPP首先發(fā)出讀命令,然后等待ISA的數(shù)據(jù)響應,如果ISA仍然以4個時鐘來進行IO讀操作,那么EPP很有可能會由于超時而發(fā)生時序錯誤,數(shù)據(jù)也必然會錯。解決這個問題可以用提高ISA接口的時鐘頻率的辦法,如提高到8MHz甚至是16MHz,但是這樣的話ISA卡可能會來不及響應而發(fā)生數(shù)據(jù)錯誤,所以這種方法不可;另一種方法是改造ISA接口的時序,使得既能滿足ISA卡的時序要求,又不至于造成EPP的超時錯誤。仔細分析ISA的IO讀時序,





