For firmware use "cyfxbulksrcsink" in basic example. For app use: "Streamer"
I have test the highest speed with cfxbulksrcsink firmware ,but the result is bad.
The result is shown in attach file: I have used C++ stream and C# stream , I got diffrenet result , the highest speed is only 29200 KB/s.
I use NEC D720200F1 based PCI-E(X1) USB3.0 adapt card in this test.
How can I optimize the parameter in software?
???.JPG 79.7 K
Use SDK 1.1, follow the steps given in "C:\Cypress\EZ-USB FX3 SDK\1.1\firmware\basic_examples\cyfxbulksrcsink\readme.txt". you will have to set CY_FX_EP_BURST_LENGTH = 16 and CY_FX_DMA_SIZE_MULTIPLIER to more than 1.
With the changes to the cyfxbulksrcsink as recommended in the readme.txt file, I am only able to get ~160 MB/s throughput into the PC. Shouldn't I be able to get around 300 MB/s? What is the maximum throughput I should expect with these examples? Can the throughput be improved?
160MB/s sounds like you host controller is connected only to a PCIe 1.1 slot. You can reach the highest USB 3.0 bandwith only with a PCIe 2.0 host controller interface.
Yes, it looks like my host controller is in a slot limited to PCIe 1.1. Thank you!
What about a x4 card connected to a PCIe 1.0 x4 slot?. Theorically PCIe 1.0 gives 250MB/s per slot so it should be enough to achieve the maximum:
250MB/s x 4 > 640MB (USB3.0 spec)
but I am not able to allocate the maximum bandwidth in isochronous endpoint (not values bigger than ~20KB are allowed). Therefore when using a bulk endpoint as required by my application I am not able to achieve a rate bigger than 1,30Gb/s.
Does it seem to be a PCIe issue?.