GR712RC-UM, Jun 2017, Version 2.9 192 www.cobham.com/gaisler
GR712RC
26.5.1 Buffer full
The receiving buffer is full when the hardware has filled the complete buffer space while the software
didn’t read it out. Due to hardware implementation and safety, the buffer can’t be filled completely
without interaction of the software side. A space (offset) between the software read pointer (rx_r_ptr)
and the hardware write pointer (rx_w_ptr) is used as safety buffer. When the write pointer (rx_w_ptr)
would enter this region (due to a write request from the receiver), a buffer full signal is generated and
all hardware writes to the buffer are suppressed. The offset is hard coded to 8 bytes.
Warning: If the software wants to receive a complete 1 KiB block (when RXLEN = 0), then it must
read out at least 8 bytes of data from the buffer. In this case, the hardware can write the 1024 bytes
without being stopped by the rx buffer full signal.
26.5.2 Buffer full interrupt
The buffer full interrupt is given when the difference between the hardware write pointer (rx_w_ptr)
and the software read pointer (rx_r_ptr) is less than 1/8 of the buffer size. The way it works is the
same as with the buffer full situation, only is the interrupt active when the security zone is entered.
The buffer full interrupt is active for 1 system clock cycle. When the software reads out data from the
buffer, the security zone shifts together with the read pointer (rx_r_ptr) pointer. Each time the hard-
ware write pointer (rx_w_ptr) enters the security zone, a single interrupt is given.
Figure 81. Buffer full situation
Offset = 8 bytes
rx_r_ptr (S/W)
rx_w_ptr(H/W)
Figure 82. Buffer full interrupt (buffers size is 2 KiB in this example)
Offset = 256 bytes
rx_r_ptr (S/W)
rx_w_ptr(H/W)
Receiver buffer full interrupt is given
when the hardware pointer enters
the security zone