4 udma operations, 5 performance considerations – Cirrus Logic EP93xx User Manual

Page 775

Advertising
background image

DS785UM1

27-5

Copyright 2007 Cirrus Logic

IDE Interface

EP93xx User’s Guide

2

7

2

7

27

In a write operation, when the DMA controller writes to IDEMDMADataOut for completing the
DMA transfer, the state machine toggles DIOWn and drives the data onto the DD bus. In a
read operation, when data is filled into IDEMDMADataIn by the host latching in the DD bus at
the DIORn rising edge, the state machine sends the DMA request. The DMA transfer is
completed when the IDEMDMADataIn register is read by the DMA controller. These two
registers should only be written or read by the DMA controller.

The registers IDEDataOut and IDEDataIn are aliased to IDEMDMADataOut and
IDEMDMADataIn during MDMA operations. The host can read IDEDataOut and IDEDataIn
registers at any time. All data transfers are 32-bit wide, with 2 16-bit wide data transfers to or
from the DD bus executed before the next DMA request is sent.

27.2.4 UDMA Operations

For UDMA operations, DMA commands are set up using PIO operations by the host. There is
a 32-bit, 12-deep output write buffer and a 32-bit, 12-deep input read buffer. These buffers
are circular buffers with head and tail pointers. The state machine set up the necessary
signals including the DMA request to the DMA controller.

In a write operation, when the write buffer has less than 4 entries, a DMA request will be sent
to fill 4 32-bit entries in the buffer. At the same time, the state machine does the handshaking
with the device and sends out the data in 16-bit pieces. Flow control is achieved by the host
through controlling when to toggle HSTROBE and by the device through temporarily
deasserting DDMARDYn.

In a read operation, the state machine does the handshaking and starts to receive data from
the device. When the read buffer has 4 or more entries filled, a DMA request is sent to the
DMA controller. Flow control is achieved by the host through temporarily deasserting
HDMARDYn or by the device through controlling when to toggle DSTROBE.

In both write and read, either the host or the device can terminate the transfer and the state
machine handles the termination handshaking mechanism.

A 16-bit CRC result is always sent from the host to device in both write and read operations
for checking. The CRC registers are “seeded” or pre-loaded with the value of 0x4ABA at the
beginning of the transfer. The “ping-pong” method is used and a “grace” area is provided in
the buffers in case the handshaking required for pausing comes more slowly than the data.
All data transfers are in chunks of four 32-bit words. Pieces of 16-bit wide data to or from the
DD bus are consumed or collected. All data to be transferred through the DMA controller
must be on word boundaries. In case the last chunk contains less than 4 32-bit words, a non-
4-word transfer is allowed.

27.2.5 Performance Considerations

IDE data transfer performance depends on many factors. All PIO operations are expected to
complete at the normal speed of the IDE interface when configured for the fastest PIO mode.
Payload data transfers will normally use one of the DMA modes. For host read operations the
DMA controller will try to keep the input read buffer empty. For host write operations the DMA
controller will try to keep the output write buffer at least half full. If the DMA Transfer State

Advertising