SyncFiFo speed problem?

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

cross mob
Anonymous
Not applicable

I tested my fpga+fx3 and slavefifo firmware(SlaveFifoSync).

   

But, the speed is 6MB/s.

   

I reviewed the same problem on this Forums and got all information, but I could not solve.

   

So, I want to get all src pgm runs on http://www.cypress.com/?rID=59492

   

1.PC pgm src

   

2.Firmware pgm src

   

3.FPGA pgm(this would be an option)

   

thanks, in advance.

   

 

   

 

   

 

   

 
so there is any solutions to fixed it?
 

0 Likes
6 Replies
Anonymous
Not applicable

Hi,

   

I get exactly the same speed when downloading data from the Cypress. I changed the PtoU dma from MANUAL to AUTO, but I got a little bit better result but still far away from 400MB/s!

   

I modified my firmware based on the http://www.cypress.com/?app=forum&id=167&rID=59529  where Chris R. posted on 22 Feb 2012 05:12 AM PST explained the code mofidication. However, when I download the img, the control center does not recognize the device anymore.

   

Any help would be highly appreciated,

   

Nazila

0 Likes
Anonymous
Not applicable

I'd like to get the demo's sources.(PC's pgm, Firmware, GPIF, FPGA )

   

I think the demo pgms ip should be open.

   

If the speed is at least 1.2Gbps, my project can be launched or I give up. Pls, help me. 

   

Thks 

0 Likes
Anonymous
Not applicable

Hi,

   

I found what the issue was in my own project. The software was writing the read data to the hard drive so it makes downloading too slow.

   

The reuired changes on the firmware to get better data throughput than 6MB/s are:

   

1. In *.h file: add: #define CY_FX_SLFIFO_PACKETS_PER_BURST  (16)

   

2. In *dscr.c file: change the "Max no. of packets in a burst" under

   

/* Standard super speed configuration descriptor */
const uint8_t CyFxUSBSSConfigDscr[]=  from 0x00 to 0x0F.

   

3. In *.c file: change the down-link endpoint burst length as:

   

              epCfg.burstLen = CY_FX_SLFIFO_PACKETS_PER_BURST;

   

4. In *.c file: define the size for downlink dma as 16*1024

   

             if (usbSpeed == CY_U3P_SUPER_SPEED)
             {
                   size = 16*1024;
             }
             dmaCfg.size = size;
5. In *.c file: Remove any dma call back (if you have any), since it can decrease the speed:

   

             dmaCfg.cb = NULL;

   

This is what I did to improve the data throughput.

   

Nazila

0 Likes
Anonymous
Not applicable

Hi Nazila,

   

Thanks for your advice.

   

I changed my pgm as your recommand, but it failed.

   

CyU3PSetEpConfig failed, Error code = 64.

   

Above err code is,

   

CY_U3P_ERROR_BAD_ARGUMENT - when the packet size or the endpoint number is invalid

   

"size = 16*1024;" cause to error.

   

Please, let me know how to set the size to be 16*1024.

   

Thanks, in advance.

0 Likes
Anonymous
Not applicable

Hi dopak,

   

You misunderstanded  Nazila's advice,

   

4. In *.c file: define the size for downlink dma as 16*1024

   

             if (usbSpeed == CY_U3P_SUPER_SPEED)
             {
                   size = 16*1024;
             }
             dmaCfg.size = size;

   

it only needs to change the dmaCfg.size into 16*1024, u cant change the epCfg.size into 16*1024.

   

epCfg.size  must be 1024 so that it will not present the err of CyU3PSetEpConfig failed, Error code = 64.

   

u got it? try it!

0 Likes
Anonymous
Not applicable

Hi dopak,

   

You misunderstanded  Nazila's advice,

   

4. In *.c file: define the size for downlink dma as 16*1024

   

             if (usbSpeed == CY_U3P_SUPER_SPEED)
             {
                   size = 16*1024;
             }
             dmaCfg.size = size;

   

it only needs to change the dmaCfg.size into 16*1024, u cant change the epCfg.size into 16*1024.

   

epCfg.size  must be 1024 so that it will not present the err of CyU3PSetEpConfig failed, Error code = 64.

   

u got it? try it!

0 Likes