計算機的并行接口(2)
為了提高Centronics接口的性能,也要兼容過去的標準,IEEE1284定義了5種工作模式:
本文引用地址:http://www.j9360.com/article/201612/328723.htmSPP模式:Standard Parallel Port標準并行接口,也稱為Compatibility mode兼容模式, Nibble模式:從PC機到外設8-bit數據線,反向4-bit數據線
Byte模式:8-bit雙向傳輸,速率在50KB/s 到150KB/s之間
EPP模式:Enhanced Parallel Port增強并行接口,允許任一方向的高速字節傳輸
ECP模式:Extended Capabilities Port擴展功能并行接口,允許PC機發送數據塊
符合IEEE 1284標準的并口,使用設備ID(Device identification sequence)來實現即插即用(Plug and Play)配置,使并口更易于使用。各種模式都可以使用相同的連接器和電纜連接方式,因硬件和編程方式的不同,傳輸速度可以從50K Bits/秒到2MB/秒不等。
2.1)SPP模式:即傳統的Centronics并行接口,所以也稱Centronics mode
提供基本的信號,包括8-bit數據線,4條控制線(Strobe、Initialize Printer、Select Printer、Auto Feed line)和5條狀態線(Busy、Acknowledge、Select、Paper Empty、Fault),需要三個不同的寄存器來進行數據的讀寫操作。
SPP模式是最基本的工作模式,異步、字節單向傳輸,數據率在50KB/s 到150KB/s之間。使用AB-cable 電纜可傳6米,而使用新的CC-cable 電纜可達10米。
基本的SPP 模式的時序如圖:
當打印機準備好接收數據,設BUSY為低,主機發出有效的數據到數據線,等待至少500ns然后發出STROBE負脈沖持續至少500ns,有效的數據在STROBE上升沿后至少要維持500 ns 。打印機接收數據并設BUSY有效以指示處理數據,當打印機完成數據接收,發出ACK脈沖至少500ns,然后清除BUSY以指示準備好接收下一個字節數據。
Centronics標準的握手信號略有不同,nStrobe為最小寬度大于1us的負脈沖,nAck為寬度大于5us的響應負脈沖,由于nAck信號的負脈沖較短,一般不會查詢它,而是查詢Busy。
主機軟件通過4步來完成1字節數據通過并口的傳輸:
1. 把有效數據寫入數據寄存器
2. 檢查BUSY狀態線,等待其無效(0)
3. 寫控制寄存器,使STROBE有效(0)
4. 寫控制寄存器,使STROBE失效(1)
SPP模式要求的最小的建立時間、保持時間和脈沖寬度限制了其性能,考慮到軟件的等待時間,IEEE1284最大的數據傳輸率為150 kbytes/s,而Centronics典型為10 kbytes/s,這對于點陣行式打印機已經足夠了,但對于高速的激光打印機就顯露出不足。
SPP模式下的信號定義:
為操作并行口,SPP定義了寄存器,并映射到PC機的I/O空間。寄存器包括了以并口地址為基址的3塊連續的寄存器,并口地址常見為3BCH、378H和278H,其中都包括數據、狀態和控制寄存器,分別對應數據、狀態和控制信號線操作,通常稱為數據端口、狀態端口和控制端口。打印機卡1的地址常為378H,其中數據口0378H、狀態口0379H、控制口037AH;打印機卡2的地址常為278H,其中數據口0278H、狀態口0279H、控制口027AH。支持新的IEEE 1284標準的并口,使用8到16個寄存器,地址為378H or 278H,即插即用(Plug and Play)兼容的的并口適配器也可以重新加載。
并口的寄存器定義:
數據寄存器:所占用的地址是并行接口的基地址,對應于于接口的2-9針
狀態寄存器 :占用的地址是基地址加1,對應于接口的10,11,12,13,15針,是只讀寄存器,其中包含一個IRQ中斷位(由Ack相反后形成),當有中斷發生這個數據位為“0”。 Bit7(引腳11)在輸入+5V電平時,數據值為”0”,有反轉的特性。
控制寄存器 :占用的地址是基地址加2,對應于接口的1,14,16,17針,其中Bit0,Bit1,Bit3有反轉的特性。Bit4為IRQ應用,當向Bit4寫入“1”時,將使ACK(引腳10)信號反相后成為中斷請求IRQ信號,通常為IRQ5或IRQ7。
并口使用的3BCH、378H和278H三個基地址幾乎都支持SPP、ECP和EPP模式(3BCH這個地址在早期的并口打印機適配器上不支持EPP和ECP模式)。三個不同基地址的地址段如下:
一些集成的1284 I/O控制器使用FIFO buffer傳輸數據稱為Fast Centronics或Parallel Port FIFO Mode,也使用SPP協議,但用硬件產生strobe信號來實現控制信號握手,使數據率能超過500KB/s。然而,這不是IEEE 1284定義的標準模式。
2.2)Nibble模式:用于從打印機或外部設備得到反向數據的常用方式,
Nibble模式利用4條狀態線把數據從外設傳回電腦。標準的并行口提供5條外設到PC機的信號線,用于指示外設的狀態,利用這些信號線,外設可以分2次發送1字節(8-bit)數據,每次發半字節(nibble:4-bit)信息。因為nACK信號一般用來提供外設中斷,所以難以把傳輸的nibble(半字節)信息通過狀態寄存器(Status register)合成1字節,需要軟件讀狀態信號并作相應操作來得到正確的字節信息。Nibble模式的數據率為50kbps(6米電纜),使用新型10米CC-cable電纜的數據率為150 kbps。Nibble模式的優勢在于具有并口的PC機都可以執行這種方式,但只能用于反向通道為低速率的場合。
下表定義了Nibble模式的信號:
下圖描述了Nibble模式的基本時序
Nibble模式數據傳輸步驟:
1. 主機通過設置HostBusy為低表明可以接收數據
2. 外設把第一個半字節(nibble)輸出到狀態線
3. 外設設置PtrClk為低指示nibble數據有效
4. 主機設置HostBusy為高指示接收到nibble數據,而正在處理
5. 外設設置PtrClk為高應答主機
6. 重復步驟1到5來接收第二個半字節(nibble)
Nibble模式與SPP模式相似,需要軟件通過設置和讀取并口的控制信號線來實現協議。Nibble模式與SPP模式結合建立完整的雙向通道,形成最簡單的雙向傳輸方式。從PC機到外設8-bit數據線,反向4-bit數據線,支持單向打印機接口,提供了全速率的前向傳輸和半速率的反向傳輸,速率在50KB/s 到150KB/s之間。
2.3)Byte模式:在數據線上實現反向傳輸的方式
Byte模式利用數據線把8-bit數據從外設傳輸到主機。標準并行口的8-bit數據線只能從主機向外設單向傳輸,需要抑制住控制數據線的驅動器,使數據可以從打印機傳到電腦。Byte模式數據傳送,一次傳送一個字節,與nibble模式下需要的兩數據周期不同,速度和由電腦到打印機的一樣,在50KB/s 到150KB/s之間,使用新型CC-cable可在10米電纜上達到500kbps。
下表定義了Byte模式的信號:
Byte模式數據傳輸步驟:
1. 主機通過設置HostBusy為低表明可以接收數據
2. 外設把第一個字節(byte)數據輸出到數據線
3. 外設設置PtrClk為低指示byte數據有效
4. 主機設置HostBusy為高指示接收到byte數據,而正在處理
5. 外設設置PtrClk為高應答主機
6. 重復步驟1到5來接收其他字節(byte)數據
下圖描述了Byte模式的基本時序
制造商首先在IBM PS/2并口上增加了對8-bit數據線的讀取能力,實現Byte模式,使之成為雙向口,稱為擴展并口的Type 1。此外,還提供了Type 2和Type 3,使用DMA方式。在Type 2 和 3的DMA 寫數據時,DMA控制器向數據寄存器寫數據,而STROBE脈沖自動產生,當從外設收到ACK,發出DMA請求,下一個字節發出。外設可以設置BUSY 來延遲傳輸。在Type 2 和 3的DMA 讀數據時,ACK脈沖產生DMA請求,發起對系統存儲器的傳輸, DMA 控制器讀取數據寄存器,STROBE脈沖自動產生。Type 2 和3的 DMA傳輸依照SPP模式時序進行。
雖然IBM定義了Type 2和3方式提高了并口的性能,但只有IBM計算機實現這種功能,缺乏軟件來支持這種DMA特性。相比較,EPP和ECP 是種工業標準,為更廣泛的硬件和軟件制造商支持。
2.4)EPP模式:Enhanced Parallel Port增強型并行端口,可實現高速雙向數據傳輸
EPP模式由Intel、Xircom, and Zenith Da
EPP模式的信號定義
EPP模式有一個數據周期和一個地址周期,提供了4種傳輸周期時序:
1. 數據寫周期時序
2. 數據讀周期時序
3. 地址寫周期時序
4. 地址讀周期時序
數據周期時序用于在主機和外設間傳輸數據,地址周期時序用于分配地址、通道、命令和控制信息。
EPP 地址寫周期:主機首先設置WRITE*,并把地址信號發到數據線上,設置ASTROBE*;外設取消WAIT*,指示已準備接收地址字節;主機然后取消ASTROBE* ;外設在ASTROBE* 上升沿鎖存地址數據,然后設置WAIT*,指示準備開始下一周期。
EPP 地址讀周期:主機取消WRITE*,使數據線處于高阻狀態,設置ASTROBE*;外設發地址字節到數據線,取消WAIT*指示地址有效;主機檢測到WAIT*取消,讀地址,然后取消ASTROBE;外設然后使數據線處于高阻狀態,設置WAIT*,指示準備開始下一周期。
EPP 數據寫周期:主機設置WRITE*,把數據字節發到數據線,設置DSTROBE*;外設取消WAIT*,指示準備接收數據;主機然后取消DSTROBE* ;外設在DSTROBE*上升沿鎖存數據,然后設置WAIT*,指示準備開始下一周期。
EPP 數據讀周期:主機取消WRITE*,使數據線處于高阻狀態,設置DSTROBE* ;外設把數據字節發往數據線,取消WAIT*,指示數據有效;主機檢測到WAIT*取消,讀數據,然后取消DSTROBE*;外設外設然后使數據線處于高阻狀態,設置WAIT*,指示準備開始下一周期。
EPP模式在3個SPP模式并口寄存器外又定義了5個寄存器, 用于把地址或數據自動發到并口數據線上,然后自動產生地址和數據的選通(strobe)信號。EPP模式的數據、狀態和控制寄存器與SPP模式的配置相同。
把數據寫入Auto Address Strobe寄存器,將把數據發到并口數據線,并伴隨自動產生的ASTROBE*低脈沖信號;把數據寫入任一Auto Da
EPP寄存器接口:
從軟件角度看,EPP模式是擴展了SPP的并口寄存器。SPP的并口包括數據Da
EPP寄存器定義如下:
通過產生一個對“base_address+4”的 I/O 寫指令,EPP控制器產生需要的數據寫(Da
標準并口的數據傳輸需要7個軟件步驟,EPP增加了其他的硬件和寄存器,通過單I/O 指令自動產生控制strobes和數據傳輸的handshaking信號,保證以ISA 總線速度傳輸,最大數據率為2 Mbytes/s,在其他平臺上可能達到10 Mbytes/s 。EPP的微處理器的總線結構使之易于直接與外設硬件通訊。EPP模式還有進一步的塊傳輸能力,使用REP_IO指令,依靠主機適配器的支持。
EPP模式數據寫時序的步驟:
1. 程序對PORT4 (EPP Da
2. nWrite信號有效,數據發送到并口
3. 設datastrobe有效,然后nWAIT 設置為低
4. 等待外設的響應 (nWAIT變為無效)
5. 設置datastrobe無效,結束EPP周期
6. ISA 的I/O 周期結束
7. nWAIT 設置為低,指示下一個周期開始
下圖是EPP數據寫時序的實例,CPU信號nIOW是用來強調全部的handshake在一次I/O中完成
注意,全部數據傳輸發生在一次ISA 的I/O 周期中,這表明使用EPP協議,數據傳輸率可為500KB/s到2MB/s,這樣外設在性能上接近ISA卡。
因為使用互鎖握手信號協議,數據可在很低的速率下傳輸。Nibble、Byte、EPP和ECP 模式都使用互鎖握手信號協議。所謂互鎖握手信號,指每次控制信號的變化都需要另一邊的響應。
EPP模式允許任一方向的高速字節傳輸,但不是同時,是半雙工方式,為光盤機、磁帶機、硬盤機和網絡適配器設計,數據率從500KB/S到2MB/S,使用AB-cable 電纜可傳6米,而使用新的CC-cable 電纜可達10米。
2.5)ECP模式:Extended Capability Port 擴展功能并行接口,也可實現高速雙向數據傳輸
ECP模式是由Microsoft and Hewlett Packard提出,是對標準并口的擴展,作為打印機和掃描儀類的外設的高級通訊模式,允許圖象數據壓縮、排隊中的FIFO(先入先出)和高速雙向通信。數據傳送速度大約2—4MB/S。
ECP協議重新定義了SPP模式的信號,如下表:
ECP模式提供了2種數據傳輸周期時序,可用于2個方向:
1. 數據周期da
2. 命令周期command cycle
命令周期又分為2種類型,RLE(Run-Length Count)和通道編址(Channel address)。
RLE方式實現數據的實時壓縮,壓縮率可達64:1,特別用于打印機和掃描儀傳輸大量光柵圖像數據(含有大量的相同數據串)時,但必須主機和外設都支持才可以實現。通道編址與EPP的地址有不同,是用于一種物理設備包括多種邏輯設備的場合,比如FAX/Printer/Modem一體機。
ECP模式定義前向傳輸為主機到外設,有2種前向傳輸周期,當HostAck 為高,指示進行da
ECP模式的前向傳輸時序:
1. 主機發送數據到數據線,并設置HostAck 為高來指示一個da
2. 主機設置HostClk為低,指示數據有效
3. 外設設置PeriphAck 為高響應主機
4. 主機設置HostClk為高,這是邊緣觸發信號,用于使數據存入外設
5. 外設設置PeriphAck為低,指示準備好接收下一字節
6. 循環重復,但這次為command cycle,因為HostAck為低
注意:接口2側都使用FIFO ,發出的數據都認為已被接收。在第4步,HostClk變為高,da
ECP模式定義反向傳輸為從外設傳輸到主機,反向傳輸時,當并口線上數據有效,外設設置PeriphClk 為低,主機在接收數據后設置HostAck 為低。下圖描述了反向通道的command周期緊隨da
上圖也顯示出ECP和EPP協議的不同。在EPP模式,軟件可以執行混合的讀寫操作,而不需要額外的協議;而在ECP模式,改變數據傳輸方向必須協商。主機要求反向傳輸通道需設置nReverseRequest并等待外設的nAckReverse的響應, 然后才可以進行反向數據傳輸。另外, 如果以前為DMA傳輸,軟件必須等待DMA完成或中斷DMA(要FIFO確定準確的已傳輸的數據量),然后要求反向通道。
ECP模式的反向Da
1. 主機設置nReverseRequest 為低,要求反向傳輸通道
2. 外設設置nAckReverse 為低,響應主機
3. 外設發送數據到數據線,并設置PeriphAck 為高指示da
4. 外設設置PeriphClk為低指示數據有效
5. 主機設置HostAck 為高確認
6. 外設設置PeriphClk為高,這是邊沿觸發信號,用于使數據存入主機
7. 主機設置HostAck為低,指示準備好接收下一個字節
8. 循環重復,但這次是command周期,因為PeriphAck為低
ECP FIFO的使用,無論DMA方式或可編程I/O方式,減弱了與ISA的關聯,軟件不會精確知道數據傳輸的狀態,只關心傳輸是否完成。
在Microsoft 的規格書"The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard"中,定義了基于ISA的ECP模式的通用寄存器和適配器的工作模式。ECP寄存器利用了定義的6個寄存器,只需要3個I/O口操作,注意寄存器的定義與工作模式有關。
ECP寄存器描述:
ECP模式在3個SPP模式并口寄存器外又定義了6個寄存器, 用于把地址或數據自動發到并口數據線上,然后自動產生地址和數據的選通(strobe)信號。
ECP的Address和Da
ECP模式并口寄存器配置圖:
ECP模式的目的是實現并口的即插即用(plug-and-play)性能和在Windows環境下進行高性能雙向傳輸。ECP模式允許任一方向的高速字節傳輸,也是半雙工方式,為打印機和掃描儀設計,數據率從500KB/S到1MB/S,使用AB-cable 電纜可傳6米,而使用新的CC-cable 電纜可達10米。ECP主要使用DMA而不是直接的I/O操作,目的是傳輸大的數據塊。
2.6)工作模式選擇過程(Negotiation):
一個設備可能設計為有多種工作模式,但不能同時使用,每次只能選用一種。IEEE 1284發明了協商(negotiation)方式,主機必須要判斷所連接的外設的能力以及使用的模式,決定出使用哪種IEEE1284模式,這種協商方式不會影響過去的設備,一個舊式設備不會響應協商的時序,但符合IEEE 1284標準的設備會響應這一時序,使主機獲得設備的ID碼(Device ID co
主機用Device ID序列來識別并口設備。Device ID是定義了外設特性和性能的ASCII字符串。因為沒有一個授權中心來分派設備和制造商編碼,在即插即用(Plug and Play)系統中,主機必須能夠測定和識別加入的設備,并自動安裝需要的設備驅動程序。
使用IEEE 1284的所有設備,上電時都為SPP模式。主機執行IEEE 1284工作模式選擇的過程如下:
1. 把IEEE 1284的8-bit擴展碼(extensibility co
2. 設置SelectIn信號線為高,并設置AUTOFD為低
3. 外設然后設PError為高、ACK為低、FAULT為高、Select為高表示為為IEEE1284標準設備(如果外設不設置這些信號,主機認為外設不是IEEE1284設備),然后做以下操作。
4. 使STROBE為低
5.使STROBE為高、AUTOFD為低
6. 如果extensibility co
7. 外設使ACK為高,指示狀態線可用
IEEE1284 擴展碼:Extensibility Request Bytes
ECR寄存器用來設置當前工作模式,另外也用于軟件確定安裝于PC機的并口的性能。
ECR寄存器的模式:
如果要退出Nibble、Byte或ECP模式,設置SelectIn為低,而退出EPP模式主機要設置INIT信號有效,然后外設將恢復到SPP模式。
如果一個并口既支持SPP模式,也可實現其他雙向模式,那么其前3個寄存器與標準并行口的寄存器完全一致,以便兼容過去的標準。
2.7)不同模式下25PIN D-sub連接器信號的不同定義:
評論