IEEE 1284 Nibble Mode

The Nibble mode is the most common way to get reverse channel data from a printer or peripheral. This mode is usually combined with the Compatibility mode or a proprietary forward channel mode to create a complete bi-directional channel. Nibble mode is always entered through negotiation.

All of the standard parallel ports provide 5 lines from the peripheral to the PC to be used for external status indications. Using these lines, a peripheral can send a byte of data (8-bits) by sending 2 nibbles (4-bits) of information to the PC in two data transfer cycles. Unfortunately, since the nACK line is generally used to provide a peripheral interrupt, the bits used to transfer a nibble are not conveniently packed into the byte defined by the Status register. For this reason, the software must read the status byte and then manipulate the bits in order to get a correct byte.

Table 1 identifies the signal names for the Nibble mode. Figure 1 shows the basic data handshake for a nibble mode transfer from the peripheral to the host.

Table 1 -- Nibble Mode Signals

SPP Signal Nibble Mode Name In/Out Description -- Signal usage when in Nibble Mode data transfer
nSTROBE nSTROBE Out Not used for reverse data transfer
nAUTOFEED HostBusy Out Host nibble mode handshake signal. Set low to indicate host is ready for nibble. Set high to indicate nibble has been received.
nSELECTIN 1284Active Out Set high when host is in a 1284 transfer mode.
nINIT nINIT Out Not used for reverse data transfer
nACK PtrClk In Set low to indicate valid nibble data, set high in response to HostBusy going high.
BUSY PtrBusy In Used for Data bit 3, then 7
PE AckDataReq In Used for Data bit 2, then 6
SELECT Xflag In Used for Data bit 1, then 5
nERROR nDataAvail In Used for Data bit 0, then 4
DATA[8:1] Not Used  


Figure 1 -- Nibble Mode Data Transfer Cycle 1284 Nibble Mode phase transistion:

  1. Host signals ability to take data by asserting HostBusy low
  2. Peripheral responds by placing first nibble on status lines
  3. Peripheral signals valid nibble by asserting PtrClk low
  4. Host sets HostBusy high to indicate that it has received the nibble and is not yet ready for another nibble.
  5. Peripheral sets PtrClk high to acknowledge host
  6. States 1 through 5 repeat for the second nibble

Nibble mode, like the Compatible mode, requires that the software drive the protocol by setting and reading the lines on the parallel port. Nibble mode is the most software intensive mode for reverse channel data communication. For this reason, there is a severe limitation of approximately 50K bytes per second for this type of data transfer. The major advantage of this combination of modes is the ability to operate on all PCs that have a parallel port. The performance limitations incurred by the Nibble mode operation 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.