2 Replies Latest reply on Sep 20, 2017 9:13 PM by user_436701451

    FX3 DMA ready flag goes LOW too long

    user_436701451

      I use FX3 CYUSB3014 as below.

      • Slave FIFO 8bit width
      • FPGA write data to FX3 slave FIFO.
      • Only write operation,No read from Slave FIFO.
      • FLAG A = THREAD 0 DMA ready flag (FIFO FULL)
      • FLAG B = THREAD 0 DMA watermark as FIFO almost Full.
      • Just only use THREAD 0 on slave FIFO.
      • Frequency of PCLK to slave FIFO is 100MHz.

       

       

      FPGA write about 600bytes data and SLCS = L, ADR = 0x0, SLWR = L, PKTEND = L at the end of data.

      FPGA always send short packet.

       

      3 cycles clock After PKTEND = L, FLAG A goes to Low ,and usually return to HIGH after 600-700ns.

      FLAG B is still HIGH.

      I think it is OK.

       

      However sometimes  it takes more than 50 miliseconds  that FLAG A return to HIGH after PKTEND = L .

      (FLAG B is HIGH, so FIFO is not FULL)

       

      I think it is too long.

      FPGA cannot write data to FX3 for long time.

       

      And I'm not sure why this is caused.

      Could you tell me any suggestion to solve this problem?

        • 1. Re: FX3 DMA ready flag goes LOW too long
          rghe

          Hi!,

           

          You might see the mentioned scenario if the Host Application is not clearing the DMA buffers fast enough.

          Are you making sure that the Host Application issues IN tokens fast enough to clear the DMA buffers?

          • 2. Re: FX3 DMA ready flag goes LOW too long
            user_436701451

            Hi,

            Thank you for your reply.

            Yes, the speed of Host Application might not be enough fast.

            I found that, on fast PC, this event occurs less than slower PC.

             

            As you mentioned,IN packet from Host PC might be slow.

            On my system, FPGA send short packet everytime, so the frequency of listening event is too much.

            I think these issues might cause the problem.

            I'll check them.

             

            Also, to increase Application performance, I will try below.

             

            • Increase number of data listening queue(buffer) on my application.
            • Increase size of FX3 DMA buffer and consider to send multiple full packets not short packet.
            • Escalate the priority of application process or threads,if it is needed.

             

            If you have any good idea to optimize GPIF bulkin performance,tell me please.

            It would be very helpful for me.

             

            I appreciate your help.

            Regards.