I am using the GPIF interface in synchronous 32-bit mode, at 100 MHz, writing buffers into the FX3. I burst 1024 bytes at a time. I am using a modified version of the cyfxslfifosync example firmware.
Something is wrong with the overhead after a buffer is filled...
Let’s use 4 buffers, 2048 bytes each. I expect, when the firmware starts, that I can fill these buffers at nearly 400 megabytes per second. But no, there is significant overhead. I can fill up a buffer (2048 bytes) at 100 MHz, no problems. After a buffer is filled, the thread’s full-flag goes low for about 700 nanoseconds. This is much longer than I would expect.
Switching between manual or automatic DMA makes no difference.
Switching between full/empty flags or partial flags makes no difference. Switching between dedicated flags and current-thread flags makes no difference.
Changing buffer size or number of buffers makes no difference.
If I drop the PCLK frequency down to 50 MHz, the full-flag overhead changes to about 1100 ns. (Remember, it was 700 nanoseconds for the 100 Mhz clock). Clearly the PCLK frequency has most influence over the overhead time.
What is going on here?
Assertion of full flag while buffer switching is expected behavior but this dependency on PCLK isn't what I would expect. Please create a tech support case (MyAccount -> MyCases) and post your code in it so that one of our engineers can take a deeper look at it.