
SMSC DS – FDC37N958FR
Page 122
Rev. 09/01/99
3. When nErrIntrEn is 0 and nFault transitions
from high to low or when nErrIntrEn is set from
“1” to “0” and nFault is asserted.
4. When ackIntEn is “1” and the nAck signal
transitions from a low to a high.
FIFO Operation
The FIFO threshold is set in the chip configuration
registers. All data transfers to or from the parallel
port can proceed in DMA or Programmed I/O
(non-DMA) mode as indicated by the selected
mode. The FIFO is used by selecting the Parallel
Port FIFO mode or ECP Parallel Port Mode. (FIFO
test mode will be addressed separately.) After a
reset, the FIFO is disabled. Each data byte is
transferred by a Programmed I/O cycle or PDRQ
depending on the selection of DMA
Programmed I/O mode.
The following paragraphs detail the operation of
the FIFO flow control. In these descriptions,
<threshold> ranges from 1 to 16. The parameter
FIFOTHR, which the user programs, is one less
and ranges from 0 to 15.
A low threshold value (i.e. 2) results in longer
periods of time between service requests, but
requires faster servicing of the request for both
read and write cases. The host must be very
responsive to the service request. This is the
desired case for use with a "fast" system.
A high value of threshold (i.e. 12) is used with a
"sluggish" system by affording a long latency
period after a service request, but results in more
frequent service requests.
DMA TRANSFERS
DMA transfers are always to or from the ecpDFifo,
tFifo or CFifo. DMA utilizes the standard PC DMA
services. To use the DMA transfers, the host first
sets up the direction and state as in the
or
programmed I/O case. Then it programs the DMA
controller in the host with the desired count and
memory address. Lastly it sets dmaEn to “1” and
serviceIntr to 0. The ECP requests DMA transfers
from the host by activating the PDRQ pin. The
DMA will empty or fill the FIFO using the
appropriate direction and mode. When the
terminal count in the DMA controller is reached,
an interrupt is generated and serviceIntr is
asserted, disabling DMA. In order to prevent
possible blocking of refresh requests dReq shall
not be asserted for more than 32 DMA cycles in a
row. The FIFO is enabled directly by asserting
nPDACK and addresses need not be valid.
PINTR is generated when a TC is received.
PDRQ must not be asserted for more than 32
DMA cycles in a row. After the 32nd cycle,
PDRQ must be kept unasserted until nPDACK is
deasserted for a minimum of 350nsec. (Note: The
only way to properly terminate DMA transfers is
with a TC.)
DMA may be disabled in the middle of a transfer
by first disabling the host DMA controller. Then
setting serviceIntr to 1, followed by setting
dmaEn to “0”, and waiting for the FIFO to become
empty or full. Restarting the DMA is
accomplished by enabling DMA in the host,
setting dmaEn to “1”, followed by setting
serviceIntr to 0.
DMA Mode - Transfers from the FIFO to the
Host
Note:
In the reverse mode, the peripheral may not
continue to fill the FIFO if it runs out of data to
transfer, even if the chip continues to request
more data from the peripheral.
The ECP activates the PDRQ pin whenever there
is data in the FIFO. The DMA controller must
respond to the request by reading data from the
FIFO. The ECP will deactivate the PDRQ pin
when the FIFO becomes empty or when the TC
becomes true (qualified by nPDACK), indicating