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