
GR716-DS-UM, May 2019, Version 1.29
293
www.cobham.com/gaisler
GR716
To enable a descriptor the enable (EN) bit should be set and after this is done, the descriptor should
not be touched until the enable bit has been cleared by the core.
32.3.3 Starting transmission
Enabling a descriptor is not enough to start transmission. A pointer to the memory area holding the
descriptors must first be set in the core. This is done in the descriptor pointer register. The address
must be aligned to a 16 kByte boundary. Bits 31 to 14 hold the base address of descriptor area while
bits 13 to 4 form a pointer to an individual descriptor. The first descriptor should be located at the base
address and when it has been used by the core, the pointer field is incremented by 16 to point at the
next descriptor. The pointer will automatically wrap back to zero when the next 16 kByte boundary
has been reached. The WR bit in the descriptors can be set to make the pointer wrap back to zero
before the 16 kByte boundary.
The pointer field has also been made writable for maximum flexibility but care should be taken when
writing to the descriptor pointer register. It should never be touched when transmission is active.
If the Cyclic Redundancy Code (CRC) bit is set, a CRC calculated over all but the two last octets, will
be inserted overwriting the two last octets of a data block. The CRC is defined in
The final step to activate the transmission is to set the enable bit in the DMA control register. This
tells the core that there are more active descriptors in the descriptor table. This bit should always be
set when new descriptors are enabled, even if transmission is already active. The descriptors must
always be enabled before the transmission enable bit is set.
32.3.4 Descriptor handling after transmission
When the transmission has finished, status is written to the first word in the corresponding descriptor.
The other bits in the first descriptor word are set to zero after transmission, while the second word is
left untouched. The enable bit should be used as the indicator when a descriptor can be used again,
which is when it has been cleared by the core.
There are multiple bits in the DMA status register that hold status information.
The Transmitter Interrupt (TI) bit is set each time a DMA transmission ended successfully. The Trans-
mitter Error (TE) bit is set each time an DMA transmission ended with an error. For either event, an
interrupt is generated for which the Interrupt Enable (IE) was set in the descriptor. The interrupt is
maskable with the Interrupt Enable (IE) bit in the control register.
The Transmitter AMBA error (TA) bit is set when an AMBA AHB error was encountered either when
reading a descriptor or data. Any active transmission was aborted and the DMA channel was disabled.
It is recommended that the transmitter is reset after an AMBA AHB error. The interrupt is maskable
with the Interrupt Enable (IE) bit in the control register.
32.4
Registers
The core is programmed through registers mapped into APB address space.
Table 357.
GRPWTX registers
APB address offset
Register
0x00
GRPWTX DMA Control register
0x04
GRPWTX DMA Status register
0x08
GRPWTX DMA Descriptor Pointer register
0x80
GRPWTX Control register
0x84
GRPWTX Status register
0x88
GRPWTX Configuration register
0x8C
GRPWTX Physical Layer register