How to achieve the highest speed of cy7c68013?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 Hi, I try to link FPGA with PC to transmit large data like pictures via this cy7c68013a mini board, I learn the chip about two  weeks and tried many ways, until now,I can only achieve speed about 15MB/s, but I found somebody can achieve more than 35MB/s via google.The transmission speed is very important to us,could somebody help me to improve it? Thanks a lot.

   

My test environment is as follows:

   

1,the firmwire I used is based on AN61345 Designing with EZ-USB FX2LP Slave FIFO Interface using FPGA(quad buffers*512B,bulk transfer http://www.cypress.com/?rID=43046) and almost no changes.

   

2,My PC is Win7,32bit,the client software is develped based on cyapi.lib and cyapi.h,I created two independent thread  for send and receive data , I didn't read or write files in disk.

   

In theory, speed of isochronous transfer is much higher than bulk transfer, but actually I found sochronous transfer is much slower than bulk transfer in cy7c68013, so I really don't know how to achieve higher speed. 

0 Likes
1 Solution
Anonymous
Not applicable

 Luchang

   

What is the host application which you are using?

   

AN61345 demostrates the data throughput using Streamer host application. And Streamer implementation is through asynchronous data requests. In case of asynchronous requests, the Bulk IN requests are queued so that when one In transfer is finished another request is already present.

   

This is not the case with synchronous request from the host.

   

 

   

Please go through the source of Streamer application. It will help you how to implement asynchronous requests in the host application.

   

You can even use Streamer with your present setup to check the data throughput Streamer can perform upto.

   

 

   

Thanks

   

Nikhil

View solution in original post

0 Likes
3 Replies
Anonymous
Not applicable

 Luchang

   

What is the host application which you are using?

   

AN61345 demostrates the data throughput using Streamer host application. And Streamer implementation is through asynchronous data requests. In case of asynchronous requests, the Bulk IN requests are queued so that when one In transfer is finished another request is already present.

   

This is not the case with synchronous request from the host.

   

 

   

Please go through the source of Streamer application. It will help you how to implement asynchronous requests in the host application.

   

You can even use Streamer with your present setup to check the data throughput Streamer can perform upto.

   

 

   

Thanks

   

Nikhil

0 Likes
Anonymous
Not applicable

 Thanks Nikhil, I will read the paper, I used bulk transfer and xferdata funcion in my project, I'm not clear about the asynchronous or synchronous data requests. Another I found that when a timeout reached and generate an error,  later transfer can't be succeed anymore, in oder to guarantee successful transmission, I must set the timeout to infinite, and can use an abort function to stop transmission.

   

Thank you very much for answer my questions.

   

LiLuchang

   

HUST

0 Likes
Anonymous
Not applicable

Hi, i met the same error as yours.

   

once the xferdata() return false, the subsequence call to xferdata() will no longer return true.

   

i tried delete CCyUSBDevice instance, generated a new one, opened same endpoints and call xferdata() again.

   

But the endpoint sames like be occupied so can not return data anymore.

   

my colleague catch the packet between Host and USB with a device.

   

he told me, since the false return, HOST will not send SOF to USB in the later calling of xferdata().

   

how do you solve this? just setting timeout infinite?

0 Likes