Part Number: AM623
We are attempting to leverage a BCDMA to transfer data between memory and a FPGA connected via a synchronous GPMC bus. The transfers are occurring, but there is some strange size dependent fragmentation of GPMC accesses that doesn't make sense. For example with a 16 bit data bus and the GPMC configured for an ATTACHEDDEVICEPAGE LENGTH of 32, I would expect to see only a single GPMC burst access for reads and writes less than or equal to 64 bytes. Instead I see the behavior shown in the below table. This behavior is the same for a read or write.
| Bytes | GPMC transactions |
| 2 | 1 |
| 8 | 1 |
| 10 | 2 |
| 12 | 2 |
| 14 | 1 |
| 16 | 1 |
| 18 | 2 |
| 24 | 2 |
| 26 | 3 |
| 28 | 3 |
| 30 | 1 |
| 32 | 1 |
| 34 | 2 |
| 40 | 2 |
| 42 | 3 |
| 44 | 3 |
| 46 | 2 |
| 48 | 2 |
| 50 | 3 |
| 56 | 3 |
| 58 | 4 |
| 60 | 4 |
| 62 | 1 |
| 64 | 1 |
What is causing this fragmentation and is there anything can be done to prevent it? The logic in the FPGA is trying to keep track of what is read, but the unpredictable behavior is making it difficult to design the logic to do so.
Thanks,
John
