Arbiter and
bus switches
CPU
DMA Controllers
8K byte
descriptor
memory
Configuration
registers
Interrupt
logic
Interrupts
to CPU
EMAC interrupts
MDIO interrupts
Configuration bus
Transmit and Receive
Architecture
1827
SPNU563A – March 2018
Copyright © 2018, Texas Instruments Incorporated
EMAC/MDIO Module
32.2.7 EMAC Control Module
The EMAC control module (
) interfaces the EMAC and MDIO modules to the rest of the
system, and also provides a local memory space to hold EMAC packet buffer descriptors. Local memory
is used to help avoid contention with device memory spaces. Other functions include the bus arbiter and
the interrupt logic control.
Figure 32-12. EMAC Control Module Block Diagram
32.2.7.1 Internal Memory
The EMAC control module includes 8K bytes of internal memory (CPPI buffer descriptor memory). The
internal memory block is essential for allowing the EMAC to operate more independently of the CPU. It
also prevents memory underflow conditions when the EMAC issues read or write requests to descriptor
memory. (Memory accesses to read or write the actual Ethernet packet data are protected by the EMAC's
internal FIFOs).
A descriptor is a 16-byte memory structure that holds information about a single Ethernet packet buffer,
which may contain a full or partial Ethernet packet. Thus with the 8K memory block provided for descriptor
storage, the EMAC module can send and received up to a combined 512 packets before it needs to be
serviced by application or driver software.
32.2.7.2 Interrupt Control
Interrupt conditions generated by the EMAC and MDIO modules are combined into four interrupt signals
that are routed to the Vectored Interrupt Manager (VIM); the VIM then relays the interrupt signals to the
CPU. The EMAC control module uses two sets of registers to control the interrupt signals to the CPU:
•
C0RXTHRESHEN, C0RXEN, C0TXEN, and C0MISCEN registers enable the pulse signals that are
mapped to the VIM
•
INTCONTROL, C0RXIMAX, and C0TXIMAX registers enable interrupt pacing to limit the number of
interrupt pulses generated per millisecond
Interrupts must be acknowledged by writing the appropriate value to the EMAC End-Of-Interrupt Vector
(MACEOIVECTOR). The MACEOIVECTOR behaves as an interrupt pulse interlock -- once the EMAC
control module has issued an interrupt pulse to the CPU, it will not generate further pulses of the same
type until the original pulse has been acknowledged.