How the data is transferred by TX port of Avalon-MM PCIe
Hi,
We are developing a PCIe application with SGDMA DMA controller. The SGDMA mm_write port (128 bits wide) is connected to the slave TX port of Avalon-MM V PCIe core. The SGDMA 'Burst Enable' option set to 'enable' and 'Maximum Burst Count' set to 16. After initialization the SGDMA generates burst write requests to the TX port with size of 16. The 256 B payload packet is transferred by PCIe.
From datasheet of PCIe core:
'The Avalon-MM bridge accepts Avalon-MM burst write requests with a burst size of up to 512 bytes at the Avalon-MM TX slave interface. The Avalon-MM bridge converts the write requests to one or more PCI
Express write packets with 32– or 64-bit addresses based on the address translation configuration, the request address, and the maximum payload size.'
Maybe somebody could explain me the following questions.
1. When is the PCI Express TLP packet sent by PCIe core to host memory? After writting to TX port maximum payload size? The 'Maximum pyload size' is set to 256 B.
2. When is the TLP packet sent if short bursts or single Avalon writes to TX are generated? After writing maximum payload? Or maybe it is any possibility to generate and send a short TLP packet with size less than maximum payload.
3.
An example:
- first Avalon write to the TX port: burst count = 4, write address = 0x1000000
- the second Avalon write: burst count = 2, write address = 0x1000040
- the third Avalon write: burst count = 16, write address = 0x2000000
The first and the second transfer in one PCI express TLP packet starting with address 0x1000000? In one short 96 B packet? Or maybe more data is required to fit 256 B TLP?
What about of the third write? In separate TLP packet starting with address 0x2000000?
With regards