6 Replies Latest reply on May 21, 2012 8:47 PM by andy.yao

    SyncFiFo speed problem?

    hokoon.im

      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?
       

        • 1. Re: SyncFiFo speed problem?
          nazila.salimi

          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

          • 2. Re: SyncFiFo speed problem?
            hokoon.im

            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 

            • 3. Re: SyncFiFo speed problem?
              nazila.salimi

              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

              • 4. Re: SyncFiFo speed problem?
                hokoon.im

                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.

                • 5. Re: SyncFiFo speed problem?
                  andy.yao

                  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!

                  • 6. Re: SyncFiFo speed problem?
                    andy.yao

                    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!