What is the maximum size that can be transferred to the FPGA with a single C call to WriteToPipeIn. I found this question addressed in 2005 in a post in the forum archives. The answer was that there is no limit. I am passing data through a XEM3005 (with some manipulation along the way through the board) and things don’t work if the transfer size is greater than 0x20000000. About 537 MB. Is this a limit? I understand that I can break up the transfer into separate pieces to overcome any limit.
The limit is specified in the API documentation as approximately 16 MiB, but the limit varies depending on the target device. Please see the API documentation for details.
I see that limit in the documentation for ReadFromBlockPipeOut and ReadFromPipeOut, but not for WriteToBlockPipeIn or WriteToPipeIn. No limit is listed for those. As far as I can tell, the length of 0x20000000 is working and every last byte is getting through.
Posting here as I feel my question is related.
In the RAMTester.c code, the section to write to the memory is:
printf(" Writing to memory(%d)…\n", mem);
for (i=0; iWriteToPipeIn(0x80+mem, WRITE_SIZE, &g_buf[WRITE_SIZE*i]);
now, how quickly can this loop be executed and the corresponding block size? Is there a flow control? This is a speed test and the loop makes sense. For my application, I need to calculate fresh data each time. Similary for read, how soon can the read loop be executed?
There is no flow control on standard Pipes.
For performance, please refer to the PipeTest sample.