Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

5.13.6.7.2. Transmit Watermark Level

Consider the example where the following assumption is made:

DMA burst length = FIFO_DEPTH - decoded watermark level of IIR_FCR.TET

Here the number of data items to be transferred in a DMA burst is equal to the empty space in the transmit FIFO. Consider the following two different watermark level settings:

IIR_FCR.TET = 1

IIR_FCR.TET = 1 decodes to a watermark level of 16.

  • Transmit FIFO watermark level = decoded watermark level of IIR_FCR.TET = 16
  • DMA burst length = FIFO_DEPTH - decoded watermark level of IIR_FCR.TET = 112
  • UART transmit FIFO_DEPTH = 128
  • Block transaction size = 448
Figure 249. Transmit FIFO Watermark Level = 16

The number of burst transactions needed equals the block size divided by the number of data items per burst:

Block transaction size/DMA burst length = 448/112 = 4

The number of burst transactions in the DMA block transfer is 4. But the watermark level, decoded level of IIR_FCR.TET, is quite low. Therefore, the probability of transmit underflow is high where the UART serial transmit line needs to transmit data, but there is no data left in the transmit FIFO. This occurs because the DMA has not had time to service the DMA request before the FIFO becomes empty.

IIR_FCR.TET = 3

IIR_FCR.TET = 3 decodes to a watermark level of 64.

  • Transmit FIFO watermark level = decoded watermark level of IIR_FCR.TET = 64
  • DMA burst length = FIFO_DEPTH - decoded watermark level of IIR_FCR.TET = 64
  • UART transmit FIFO_DEPTH = 128
  • Block transaction size = 448
Figure 250. Transmit FIFO Watermark Level = 64

Number of burst transactions in block:

Block transaction size/DMA burst length = 448/64 = 7

In this block transfer, there are 15 destination burst transactions in a DMA block transfer. But the watermark level, decoded level of IIR_FCR.TET, is high. Therefore, the probability of UART transmit underflow is low because the DMA controller has plenty of time to service the destination burst transaction request before the UART transmit FIFO becomes empty.

Thus, the second case has a lower probability of underflow at the expense of more burst transactions per block. This provides a potentially greater amount of bursts per block and worse bus utilization than the former case.

Therefore, the goal in choosing a watermark level is to minimize the number of transactions per block, while at the same time keeping the probability of an underflow condition to an acceptable level. In practice, this is a function of the ratio of the rate at which the UART transmits data to the rate at which the DMA can respond to destination burst requests.