In a DMA channel writing to a flow controlling the PL destination scenario, the software configures the FCI to flow control the DST. Each valid credit allows the DMA channel to perform one AXI write command. If the read/SRC is not flow controlled when the FCI is configured to the flow control DST, the channel can issue multiple read transactions and use the entire common buffer, which starves other channels. To resolve this issue, software configures the maximum number of entries used by the DMA channel. After the DMA channel exceeds the programmed value, it does not issue more read transactions. The PROG_CELL_CNT of the PS_ZDMA.CH_FCI register can be programmed in the register.
Maximum number of occupied cells = (ARLEN + 1) << PROG_CELL_CNT
If the software programs PROG_CELL_CNT to zero, the maximum number of entries occupied by the DMA channel is the same as one AXI4burst.
Because the SRC and DST addresses are unaligned and over fetch can be disabled,
the DMA channel might have to generate multiple read transactions to perform a single
write transaction. Because of this, it is advised to program PROG_CELL_CNT to a 1
. As explained previously, the number of SRC and DST
transfers can be different and unless the software calculates the number of valid
transactions required for DMA transfer, the PL destination cannot use the valid
transactions.
The DMA channel generates write data transactions only if credits are available. The write command is only generated when enough credit and enough data is available to generate one write transaction.