200 likes | 394 Views
IEEE 1284 I/O. IEEE 1284 Overview. Four parallel port interfaces through ENI 40 pins Uses external latching transceivers Host-side only No IEEE negotiation. Net+ARM/IEEE 1284 Signal Name Equivalencies. IEEE 1284 External Transceivers. Port Multiplexing to External Transceivers.
E N D
IEEE 1284 Overview • Four parallel port interfaces through ENI • 40 pins • Uses external latching transceivers • Host-side only • No IEEE negotiation
Forward Compatibility Mode • Manual or Automatic mode • Selected by MAN bit in Port Control Register • Manual mode • STROBE* signal manually controlled by *MSTB • DATA signal driven by last byte to channel data register • Automatic mode • STROBE* and DATA automatically controlled based on BUSY • Slow or Fast mode • Selected by FAST in Port Control Register • DMA support provided
Nibble Mode • Net+ARM asserts AUTOFD* (ready) • Peripheral puts first nibble on status line • Peripheral signals valid nibble via ACK* • Net+ARM deasserts AUTOFD* (busy) • Peripheral deasserts ACK* • Repeat for remaining nibbles
Byte Mode • Net+ARM asserts AUTOFD* (ready) • Peripheral places first byte on DATA • Peripheral signals done by asserting ACK* • Net+ARM deasserts AUTOFD (busy) • Peripheral acknowledges by deasserting ACK • Net+ARM pulses STROBE* (via MSTB*) • Repeat for additional bytes
Forward ECP Mode • Slow or Fast mode • Selected by FAST in Port Control Register • AUTOFD*, HSELECT*, and INIT* outputs are statically driven • Command vs. data encoding provided by AUTOFD*ACK*, BUSY, PE, PSELECT, and FAULT* are manually read via the port control register. • ACK* can be configured to generate an interrupt on a high-to-low transition • Net+ARM manipulates STROBE* and DATA signals based on the BUSY input • DMA support provided
Reverse ECP Mode • HSELECT*, and INIT* statically driven based on bit settings in the port control registers. • STROBE* always high when in reverse ECP mode. • PE, PSELECT, and FAULT* are manually read via the port control register • Net+ARM automatically manipulates AUTOFD* based on ACK* • DATA bytes are stored in the channel data register. • When four bytes have been received, or the reverse ECP channel is “closed,” the inbound buffer ready (IBR) bit is set in the channel control register.
Reverse ECP Mode (2) • When IBR is set, RXFDB shows the number of bytes available • IBR can be configured to generate an interrupt or used by DMA • BUSY provides the command/data • Reverse ECP mode provides a character timer that can be used to guard against stale data sitting in the port data register. • DMA support provided – see HW manual for details
Forward/Reverse ECP mode transitions • Software action required • Forward ÞReverse • Assert INIT* • Assert BIDIR • Now in Forward mode • Reverse ÞForward • Deassert INIT • Wait for PE high • Deassert BIDIR • Now in Reverse mode
EPP Mode • Net+ARM can read/write data or address in peripheral
EPP Mode Data Write • Net+ARM issues DATA and STROBE* low to indicate a write cycle • AUTOFD* is asserted since BUSY is inactive • Net+ARM waits the peripheral to acknowledge via active BUSY • Net+ARM deasserts AUTOFD to acknowledge the peripheral • Net+ARM drives STROBE inactive and tri-states the DATA bus to end the EPP write cycle • The above is repeated as required
EPP Data Read • NET+ARM deasserts STROBE* indicating a read cycle • AUTOFD* asserted since BUSY is inactive • Net+ARM waits for acknowledgment from the peripheral via active BUSY • Net+ARM deasserts AUTOFD* to acknowledge the peripheral; read data is latched • The peripheral removes BUSY and tri-states the data bus • The above is repeated as required
EPP Address Write • Net+ARM executes a write cycle to the EPP address byte address in the port by setting DATA and STROBE* • HSELECT* is asserted since BUSY is inactive • Net+ARM waits for acknowledgment from the peripheral via active BUSY • Net+ARM deasserts HSELECT* to acknowledge the peripheral • Net+ARM drives STROBE* inactive and tri-states the DATA bus to end the EPP write cycle • The above is repeated as necessary
EPP Address Read • Net+ARM deasserts STROBE* to indicate a read cycle • HSELECT* is asserted since BUSY is inactive • Net+ARM waits for the acknowledgment from the peripheral via active BUSY. The peripheral drives the data bus when BUSY is asserted • Net+ARM deasserts HSELECT* to acknowledge the peripheral; read data is latched at this time • The peripheral removes BUSY and tri-states the data bus • The above is repeated as required