2 tx fifo, Tx fifo -45 – Freescale Semiconductor MCF5480 User Manual

Page 807

Advertising
background image

Functional Description

MCF548x Reference Manual, Rev. 3

Freescale Semiconductor

26-45

NOTE

In AC97, the number of data bytes are four times the number of time slot

samples in the FIFO. Because, each 20-bit sample uses an entire 32-bit

longword in the FIFO.

For the Rx FIFO, the value can be between 0 and 7 bytes only. Therefore, the interrupt has hysteresis. For

example, the interrupt goes active when the Rx FIFO is “almost full” (i.e., the amount of empty space is

less than the alarm level). It stays active until enough data is read out of the Rx FIFO so that the amount

of data left in the FIFO is less than the granularity level.
For the example (see

Figure 26-41

) this means:

The requestor to the Multichannel DMA to emptying the RX FIFO becomes active if the empty

space in the FIFO is less than 8 bytes (504 data bytes are in the FIFO).
The requester became inactive if 4 bytes are left in the FIFO. (508 byte space now)

When the Multichannel DMA is servicing the FIFOs, this process works well. However, if the CPU is

servicing the FIFOs, the interrupt has no hysteresis.
For example, the alarm level is used for both activating and deactivating the CPU interrupt.
When using the Multichannel DMA you must specify a non-zero granularity to get FIFO underrun errors.

This is due to its internal pipelining.
Multichannel DMA does not immediately stop accessing the FIFO when the FIFO interrupt goes away.

26.4.9.2

TX FIFO

The TX FIFO space is 512 bytes. For a Tx FIFO, the alarm value specifies a threshold in terms of DATA

bytes, not in terms of empty space as with the Rx FIFO. Once the amount of data in the Tx FIFO falls

below the alarm level, an interrupt activates. The interrupt indicates the Tx FIFO is” almost empty” and

needs more data. Tx FIFO granularity is specified in terms of empty bytes, not the number of data bytes

as with the Rx FIFO. For more informations see also

Figure 26-41

.

The granularity value range is 0–7.

The Tx FIFO controller hardware multiplies this value by 4, to establish the actual level at which the FIFO

alarm goes away. For the Tx FIFO, the alarm goes away when the number of empty bytes left in the Tx

FIFO is less than or equal to:

0 (Granularity value 0)

4 (Granularity value 1)

8 (Granularity value 2)

12 (Granularity value 3)

16 (Granularity value 4)

20 (Granularity value 5)

24 (Granularity value 6)

28 (Granularity value 7)

The FIFO interrupt stays active until Multichannel DMA writes enough data into the Tx FIFO to reach the

granularity level. Once the granularity level is reached, the interrupt goes away.
For the example (see

Figure 26-41

) it means:

The requestor to the Multichannel DMA to filling the TX FIFO becomes active if the amount of

data in the FIFO is less then 16 data.
The requester became inactive if less than 20 (5

× 4) bytes space in the FIFO.

Advertising
This manual is related to the following products: