|
|
Parallel Port Explained |
| Manufacturer | Product | Protocol |
|---|---|---|
| Adaptec | Mini-SCSI EPP adapter | EPP |
| APS | MobilStor tape backup | Bi-Di/EPP |
| B&B Electronics | ISAPP1 | SPP/BPP/EPP/ECP |
| PCIPP1 | SPP/BPP/EPP | |
| PCIPP2 | SPP/BPP/EPP | |
| Disctec | Portable hard drive | EPP/Daisy Chain |
| RoadRunner Express CD-ROM | EPP/ECP/Daisy Chain | |
| RoadRunner PD/Edge 650 MB R/W CD | EPP/ECP/Daisy Chain | |
| 34C60 Peripheral Interface | EPP/ECP/Daisy Chain | |
| Fujitsu | PrintPartner 4000/8000 laser printers | Nibble |
| Hewlett Packard | LaserJet 5P/5MP | Level II I/F/Bi-Di |
| LaserJet 5si | Bi-Di/ECP | |
| LaserJet 5L | Bi-Di | |
| LaserJet 4 family printers | Nibble | |
| OfficeJet | Nibble | |
| DeskJet 560/1200C | ECP | |
| DeskJet 540, 6xx series, 8xx series | Nibble/ECP | |
| DeskJet 600 family | ECP | |
| DeskJet 850/855 family | ECP | |
| DeskJet 870 CXI/CSE | ECP | |
| HP Colorado Memory division | Trakker tape backup | Bi-Di |
| Iomega | PPA-3, SCSI adapter | EPP |
| Zip 100 parallel port drive | Bi-Di/EPP | |
| Lexmark International | 4039 series printers/MarkVision | Byte/Nibble |
| MarkNet Xle printer server | Byte/Nibble/ECP | |
| Optra and Optra Plus printer family | Byte/Nibble/ECP | |
| Logitech | PageScan Color scanner | EPP/ECP |
| Microcom | Microcom DeskPorte FAST T modem | EPP/ECP |
| Micro Solutions | Backpack portable tape backup | Bi-Di/EPP |
| Backpack portable CD | Bi-Di/EPP | |
| Backpack portable hard drive | Bi-Di/EPP | |
| QMS | 1060, 1660 laser printers | Nibble/EPP/ECP |
| Quatech | SPP-100 PCMCIA card | EPP |
| Seagate | Technology TapeStor 800, 850 Travan tape backup | Bi-Di/EPP |
| Tektronix | Phaser series color printers | Bi-Di |
| Texas Instruments | MicroLaser Pro 600 printer | Nibble/ECP |
| Vista Imaging | ViCAM LPTx digital camera | EPP |
| VLSI Vision | PPC2 Multimedia camera | Nibble/ECP |
| Xircom | Pocket Ethernet adapter (PE3) | EPP |
| Pocket Ethernet and Modem (PEM) | EPP | |
| Pocket Token Ring adapter (PT3) | EPP |
Note: This list is only a partial list of available peripherals out there in the market. It is just intended to show the example of different protocols supported by each device.
Parallel data transfer was largely performed by software in SPP and BPP systems, and thus data transfer rates were limited to 150 KBps in the forward direction (compatibility or "Centronics" mode) and 50 KBps in the reverse direction (nibble and byte modes). In SPP and BPP systems, data is placed on the port's data lines, the printer status is checked for no errors and that it is not busy, then a data strobe is generated by the software to clock the data to the printer. Compatibility or "Centronics" mode requires four I/O instructions and at least as many additional instructions just to output one byte. Nibble mode is the most software intensive with ten I/O instructions to clock in one byte of data while byte mode requires only five I/O instructions. Both modes' operations does not have much visible effect on peripherals that have low reverse channel requirements, such as printers, but can be nearly intolerable when used for LAN adapters, disk drives, or CD ROM drives.
The EPP and ECP modes are the two high speed data transfer protocols of the IEEE 1284 standard. Both EPP and ECP standards specify a hardware driven handshake system of data transfer which allows significantly higher data transfer speeds of up to 2 MBps in ISA systems. In these modes, data transfer takes place as a single software instruction, and the rest of the transfer is handled by hardware. This allows an EPP/ECP port to function as a 16- or 32-bit data transfer interface using 8-bit I/O hardware, in effect enabling EPP/ECP capable peripherals to achieve the same speed and efficiency as their ISA bus counterparts.
An EPP parallel port implements two registers in addition to the standard data, status, and control ports. An EPP data port and an EPP address port allow EPP data transfers. However, the entire data transfer still occurs within one ISA I/O cycle. Tri-stateable outputs allow the EPP port to be used as a data bus for multiple EPP compatible devices. On a "read-from" or "write-to" any EPP port, automatic handshaking is performed and the host bus cycle is extended until the transfer is complete. A watchdog timer prevents any system lockup, which may occur in a failed transfer cycle. Normally an indirect addressing location in the peripheral and a subsequent read or write of the EPP data port transferring data to the specified address.
An ECP parallel port features two modes, namely data and command cycles, which can greatly enhance data transfer rates. In the Parallel Port Data FIFO Mode, data written or DMAed to a 16-byte FIFO is automatically transferred to a peripheral using standard parallel port protocol. The ECP Parallel Port Mode allows bi-directional data transfer using automatic interlocked handshaking via the ECP protocol. In addition to DMA support and 16-byte FIFOs, the ECP parallel port's advantages include run length encoded (RLE) decompression, channel addressing, and peer-to-peer capability.
Unlike EPP, when the ECP protocol was proposed, a standard register implementation was also proposed through Microsoft ECP Specification. This document defines features that are implementation specific, which the IEEE 1284 standard could not address. These features include the RLE compression, the 16-byte FIFOs, and DMA as well as programmed I/O for the host register interface.
The RLE feature enables real time data compression that can achieve compression ratios up to 64:1. This is particularly useful for printers and scanners that are transferring large raster images that have large strings of identical data. In order for the RLE mode to be enabled both the host and the peripheral must support it.
Channel addressing is, conceptually, a little different than the EPP addressing. Channel addressing is intended to be used to address multiple logical devices within a single physical device. Think of this in terms of a new multi-function device such as FAX/Printer/Modem. Within one physical package, having a single parallel port attached, there is a printer, fax and modem. Each of these separate functions can be thought of as separate logical devices within the same package. Using the ECP channel addressing to access each of these devices, you could receive data from the modem data device while the printer data channel is busy processing a print image. With the compatibility mode protocol, if the printer gets busy then no more communication can occur until the printer data channel if free. With ECP, the software driver simply addresses another channel and communication can continue.
There is another difference between the ECP and EPP protocols. With EPP, the software driver may intermix read and write operations without any overhead or protocol handshaking. With the ECP protocol, changes in the data direction must be negotiated. The host must request a reverse channel transfer by asserting nReverseRequest and then wait for the peripheral to acknowledge the request by asserting nAckReverse. Only then can a reverse channel data transfer take place. In addition, since the previous transfer may have been DMA driven, the host software must either wait for the DMA to complete, or interrupt the DMA, backflush the FIFO to determine the exact transferred byte count, and then request the reverse channel. This adds a fair amount of overhead with peripherals that require a lot of intermixed reading and writing of registers or small buffers.
Although, there are some keen differences between ECP and EPP, both essentially support the higher throughput of today's variety of devices via the parallel ports. We carries a line of parallel cards to meet your different peripherals need:
All support SPP and BPP modes to guarantee the basic compatibility with older peripherals and printers. SPP provides the forward direction only of data transfer, and BPP provides the bi-directional function, each with a maximum data transfer rate of 150 KBps. The overall maximum rate for ISA is up to 2 MBps and 5.5-6 MBps for PCI.
The major difference is that the PCI series cards do not support ECP. As mentioned above, ECP protocol is meant to be driven by DMA rather than explicit I/O operations, and the PCI bus does not support DMA transfers. Please consult your manufacturer's specification for the complete protocols and maximum speed that your device will support.
For more information on parallel ports, we recommend Parallel Port Complete and Programming the Parallel Port: Interfacing the PC for Data Acquisition & Process Control.
|