Cirrus Logic EP93xx User Manual

Page 316

Advertising
background image

9-14

DS785UM1

Copyright 2007 Cirrus Logic

1/10/100 Mbps Ethernet LAN Controller
EP93xx User’s Guide

9

9

9

of buffers as they are exchanged with the MAC. When the MAC reads a descriptor, it keeps a
copy of the index, which it includes in any status entry associated with that buffer. The Not
Start Of Frame bit may be set by the Host on any buffer in which it does not want a new frame
to be started. This buffer would then only be used for chaining of frame fragments. This mode
may be used to align frames on boundaries coarser than descriptors, such as when multiple
physical address descriptors are used to describe one virtual address buffer.

In normal operation, the Host does not need to access the RXDQBAdd, RXDQBLen,
RXDCurAdd registers following initialization. Control of the use of the descriptors is handled
using the Receive Descriptor Enqueue register (RXDEnq). The term enqueue refers to the
action of adding descriptors to the end of an existing queue. To enqueue receive descriptors,
the Host writes the number of descriptors to the RXDEnq register. The number is
automatically added to the existing value. When the MAC consumes descriptors by reading
them into its on local storage (internal MAC buffer), the number read is subtracted from the
total. The Host can read the total number of unread valid descriptors left in the queue from
the RXDEnq. There is a restriction that no more than 255 descriptors may be added to the
queue in one write operation. To add more than this number requires multiple write
operations. See

Figure 9-7

.

Figure 9-7. Receive Descriptor Format and Data Fragments

Receive Descriptor
queue Base Address
RxDBA (32)

register sizes are in bits,
and shown in parentheses ().

RxBufAdr 0 (32)

Buffer

Length 0 (16)

RxBufAdr 1 (32)

RxBufAdr 2 (32)

RxBufAdr k (32)

Data Buffer 0

Buffer 0

Length

in bytes

Receive Descriptor Format

and Data Fragments

Buffer 1

Length

in bytes

Receive Descriptor queue
Base Length (RxDBL)

Buffer 2

Length

in bytes

Buffer k

Length

in bytes

Buffer length
0 to 64 Kbytes
in multiples of 4-bytes

Each Data Buffer
begins and ends
on a 4-byte boundary.

Buffer

Indx 0 (15)

Data Buffer 1

Data Buffer 2

Data Buffer k

Not
SOF
(1)

Buffer

Length 1 (16)

Buffer

Indx 1 (15)

Not
SOF
(1)

Buffer

Length k (16)

Buffer

Indx k (15)

Not
SOF
(1)

Not
SOF
(1)

Buffer

Indx 2 (15)

Buffer

Length 2 (16)

Advertising