
Core10/100 Ethernet Media Access Controller
v3.1 35
The address bus width of the Receive/Transmit Data
RAMs can be customized via the core parameters
RFIFODEPTH/TFIFODEPTH (Table 1 on page 5). Those
memories should be at least as big as the longest frame
used on a given network. Core10/100 stops to request
new frame data when there are two frames already in
the Transmit Data RAM. It resumes the request for new
frame data when there is either one or no frame in the
Transmit Data RAM.
At any given time, the Receive Data RAM can hold no
more than four frames, including frames under transfers.
DMA Controller
The Direct Memory Access (DMA) is used to control a
data flow between the host and Core10/100.
The DMA services the following types of requests from
the Core10/100's transmit and receive processes:
• Transmit request:
– Descriptor fetch
– Descriptor closing
– Setup packet processing
– Data transfer from host buffer to transmit the
FIFO
• Receive request:
– Descriptor fetch
– Descriptor closing
– Data transfer from receive the FIFO to the host
buffer
The key task for the DMA is to perform an arbitration
between the receive and transmit processes. Two
arbitration schemes are possible according to the CSR0.1
bit:
• 1 – Round-robin arbitration scheme in which
receive and transmit processes have equal
priorities.
• 0 – The receive process has priority over the
transmit process unless transmission is in progress.
In this case, the following rules apply:
– The transmit process request should be
serviced by the DMA between two consecutive
receive transfers.
– The receive process request should be serviced
by the DMA between two consecutive transmit
transfers.
Transfers between the host and Core10/100 performed
by the DMA component are either single data transfers
or “burst” transfers. For the data descriptors the data
transfer size depends on the core parameter
DATAWIDTH. The rule is that every descriptor field (32-
bit) is accessed with a single burst. For the
DATAWIDTH = 32, the descriptors are accessed with a
single transaction; for the DATAWIDTH = 16, the
descriptors are accessed with a burst of two 16-bit words,
and for the DATAWIDTH = 8, the descriptors are accessed
with a burst of four eight-bit words.
In case of data buffers, the burst length is defined by the
CSR0(13..8) (programmable burst length) and can be set
to 0, 1, 2, 4, 8, 16, or 32. When set to 0, no maximum
burst size is defined, and the transfer ends when the
transmit FIFOs are full or the receive FIFOs are empty.
Transmit Process
The transmit process can operate in one of three modes:
running, stopped, or suspended. After a software or
hardware reset, or after a stop transmit command, the
transmit process is in a stopped state. The transmit
process can leave a stopped state only after the start
transmit command.
When in a running state, the transmit process performs
descriptor/buffer processing. When operating in a
suspended or stopped state, the transmit process retains
the position of the next descriptor, i.e., the address of
the descriptor following the last descriptor being closed.
After entering a running state, that position is used for
the next descriptor fetch. The only exception is when the
host writes the transmit descriptor base address register
(CSR4). In that case, the descriptor address is reset and
the fetch is directed to the first position in the list.
When operating in a stopped state, the transmit process
stopped (tps) output is high. This output may be used to
optionally disable the clkt clock signal external to
Core10/100. When both the tps and receive process
stopped (rps) outputs are high, all clock signals except
clkcsr may be optionally disabled external to Core10/100.
The transmit process remains running until one of the
following events occurs:
• The hardware or software reset is issued. Setting
the CSR0.0 (SWR) bit can perform the software
reset. After the reset, all the internal registers
return to their default states. The current
descriptor's position in the transmit descriptors list
is lost.
• A stop transmit command is issued by the host.
This can be performed by writing 0 to the CSR6.13
(ST) bit. The current descriptor's position is
retained.
• The descriptor owned by the host is found. A
current descriptor's position is retained.
• The transmit FIFO underflow error is detected. An
underflow error is generated when the transmit
FIFO is empty during the transmission of the
frame. When it occurs, the transmit process enters
a suspended state. Transmit automatic polling is
internally disabled, even if it is enabled by the
host by writing the TAP bits. A current descriptor's
position is retained.