FT FT600 only works when on top?

It scaled linearly and is hitting the expected 200 MB/sec total bandwidth with a buffer size of 2048Bytes.

Note that the “MiB” is incorrect in the common.hpp provided by FTDI. It should say MB/sis actually showing MB (1,000,000 bytes) as confirmed in the code. It’s also missing the “/s” in the total… sloppy work. I realized FTDI screwed up when I calculated that the reported bandwidth was greater than the theoretical top speed possible: 16 bits * 100 MHz.

I’m very impressed!

It’s so close to the theoretical max that I’d need to use a scope to know if it is actually not saturated because I don’t know or trust the accuracy of the short term bandwidth measurement done in the C++ code.

I don’t understand how you were able to hit so much higher numbers than I could with buffers of 256. But that’s academic.

Thanks for all your help!

The buffers being a bottleneck probably depend mostly on the computer and the USB devices/drivers than anything. I haven’t done too much testing with it.

I reworked the code a bit and I’m now consistently hitting 356MBps (millions of bytes).

I used buffers on the Au of 1024. Larger buffers made no difference. 512 got me about 330MBPS. This makes sense as 1024 in a pure echo mode would effectively by 2048 bytes of storage and that’s the exact size of the FT’s buffer when used is bi-directionally. Switching to purley unidirectional data transfer is likely to get a bit fast.

The big switch was to using the async functions to pack requests in and multithreading the reads/writes.

streamer.zip (7.1 MB)