Best way to transfer large data blocks from FPGA to FX3 | Cypress Semiconductor
Best way to transfer large data blocks from FPGA to FX3
I have connected a FPGA to the FX3 in 32-Bit mode at 100MHz (SlafeFifoSync). I did read the documentation and a lot of forum articles already but still have some questions.
I have to transfer large data blocks (several Megabytes) from the FPGA to the FX3. I will implement a DMA-Auto-channel from P-Socket to U-Socket.
To reach max. speed I will use a large burst size, let’s say 256 DWORDs.
Can I do the following?
1.) Configure FLAGA to FIFO full and FLAGB to a Watermark of 256-DWORDs.
2.) When FLAGB is OK I will burst 256 DWORDs to the FX3.
When only FLAGA is OK I will transfer 1 DWORD to the FX3.
3.) After the transfer I am adding a 3 Clocks delay for the FLAGs to become valid.
4.) I continue with Step 2
If this is possible, what will be a good configuration for the DMA-Buffers?
What is the right “burst” parameter in CyU3PGpifSocketConfigure?
What about the PKTEND?
When I am transferring a multiple of 1024 Byte (SuperSpeed) I don’t have to set PKTEND? When it is not a multiple of 1024 Byte I have to set PKTEND with the last transfer or a ZLP after that? Is it a problem to send a ZLP after each transfer regardless of the length?
I am still waiting for my board, but I am working on the FPGA and it would be nice to get some information about this. It will help me to design the FPGA-FX3-Interface.