3 Replies Latest reply on Aug 22, 2018 4:12 AM by MaAr_2545856

    Convert AN75779 to 32Bit



      I have problem converting AN75779 UVC example to interface with FPGA at 32bit.


      Setup: FX3 explorer kit

                Xilinx ZC706


      What I have achieved:

           I have created a 8-bit YUV2 pattern generator from ZC706 to interface with FX3.  FX3 is running vanilla AN75779 firmware (latest).  I am able to see the color pattern on PC using DirectCap.  GPIF CLK  output from FPGA is running at 100MHz.


      My changes to support 32bit:

      1. Modify GPIF Designer from 8bit to 32bit

      2. Modify GPIF state machine Addr and data counter limit to 4091.  because each transfer is now 4 byte instead of 1.  Original was 16367.

      3. Modify FPGA to output 32bit, effectively Y0, U0, Y1, V0 color in 1 transfer

      4. Lower FPGA clk to 25MHZ so total datarate is still the same.

      5. I DID NOT make any changes to firmware ( I don't think I need to)



           Directcap show 0 FPS and there is not activity on display window.

           Using USB monitor, USB transactions stop after DirectCap request video.  THere is no bulk data out from FX3, infact there is no firther USB communications

           DirectCap is still able to request STOP, which FX3 accepts.


      Please advise how to get 32bit working.



        • 1. Re: Convert AN75779 to 32Bit


          I am able to get UVC USB packets out from FX3.  Actually I had not done anything except power cycle FX3 explorer kit.


          But DirectCap still show a blank screen with 0 fps.


          Using USB monitor, I can see streams of 16380 byte sized bulk packets (12byte header + 4092 * 4).  The UVC header is present.  So it seems video has been transmitted out of FX3.


          I notice that for each 32bit  YUV2 color data in the bulk stream, 16 bits are always zero.  This is not what I am sending.  So I stop FX3 execution and found the same 16bits zero in DMA buffer.  So I think the problem occur during GPIF sampling.


          Any advice how to get all 32bits capture correctly?

          • 2. Re: Convert AN75779 to 32Bit



            Can you please print the number of bytes transferred in each frame and check whether it matches with the expected value?


            To do this, you need to have a variable say, uint32 framecount. You need to increment this variable with the number of bytes in each buffer as soon as a buffer is committed. (After CyU3PDmaMultiChannelCommitBuffer) and print it by the end of the frame.




            • 3. Re: Convert AN75779 to 32Bit

              I am facing the same problem in 32bit GPIF interface. https://drive.google.com/open?id=1E29TuSP3NhSbABdiK-Is80g8d-bvkHWW

              I analyzed the communication using USBlyzer.I have attached the report.


              1. We generated a test pattern data "12345678". When we cross verified with USBlyzer the data received was "02345678".

              2. We generated a test pattern data "FFFFFFFF". When we cross verified with USBlyzer the data received was "AFFFFFFF".


              when we tried to play with AMcap. The application hangs. Kindly help me to resolve this issue.