Cypress Perform

Home > Design Support > Cypress Developer CommunityTM > Cypress Forums > USB Controllers > SyncFiFo speed problem?

Bookmark and Share
Cypress Developer CommunityTM
Forums | Videos | Blogs | Training | Rewards Program | Community Components



SyncFiFo speed problem?
Moderator:
RSKV

Post Reply
Follow this topic



SyncFiFo speed problem?

dopak posted on 10 May 2012 6:40 PM PST
Member
7 Forum Posts

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?
 




Re: SyncFiFo speed problem?

Nazila posted on 10 May 2012 06:48 PM PST
Top Contributor
55 Forum Posts

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



Re: SyncFiFo speed problem?

dopak posted on 11 May 2012 05:04 PM PST
Member
7 Forum Posts

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 



Re: SyncFiFo speed problem?

Nazila posted on 14 May 2012 11:18 AM PST
Top Contributor
55 Forum Posts

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



Re: SyncFiFo speed problem?

dopak posted on 15 May 2012 01:17 AM PST
Member
7 Forum Posts

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.



Re: SyncFiFo speed problem?

wqyao posted on 21 May 2012 06:47 PM PST
Member
9 Forum Posts

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!



Re: SyncFiFo speed problem?

wqyao posted on 21 May 2012 06:47 PM PST
Member
9 Forum Posts

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!






ALL CONTENT AND MATERIALS ON THIS SITE ARE PROVIDED "AS IS". CYPRESS SEMICONDUCTOR AND ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THESE MATERIALS FOR ANY PURPOSE AND DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THESE MATERIALS, INCLUDING BUT NOT LIMITED TO, ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHT. NO LICENSE, EITHER EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, IS GRANTED BY CYPRESS SEMICONDUCTOR. USE OF THE INFORMATION ON THIS SITE MAY REQUIRE A LICENSE FROM A THIRD PARTY, OR A LICENSE FROM CYPRESS SEMICONDUCTOR.

Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms and Conditions of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms and Conditions of this site. Cypress Semiconductor and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.