6 Replies Latest reply on May 17, 2017 12:38 PM by SeMc_1917576

    1080P60 GPIF interface



      I'm trying to set up a GPIF interface into the FX3 device using the full 32 bit interface.


      I have video data in a 1080P60 format which is running at 148.5MHz clock rate, Each pixel is 16 bits, 8 for luma, 8 for chroma. I was planning to send the video data over the GPIF two pixels at a time, which would require a clock of 74.25MHz. As the no of active pixels is 1920x1080 this is around 249Mbytes/s, or 84% of bandwidth at a 74.25MHz fifo bus or 62.2% of a bus running at 100MHz, the maximum clock rate of the interface.


      Should this be possible to setup in the FX3 ?





        • 1. Re: 1080P60 GPIF interface

          We have tested FX3 with 1080P at 60 fps YUV where we have 2 bytes per pixel (approx: 237 MBps)


          "1080P60 " does it mean 60 fps?  


          Do you have any processor in-between the sensor and the FX3? If you have a FPGA, you can add the UVC header (if you plan to use UVC) on the FPGA side, this will allow you to achieve better performance. 

          • 2. Re: 1080P60 GPIF interface

            Hi Nishant,


            Yes it's 1080 lines, which are 1920 long, at 60 frames per sec. It is the same as Full HD. It is in a YUV422 format.


            I am using UVC.


            I do have an fpga in the path.


            Since I posted I have looked in more detail at the UVC design in the application notes, and following that I am sending 2 pixels over the 32 bit FX3 GPIF bus on each clock.


            Each pixel has 8 bits luma, 8 bits chroma, so the 32 bit bus contains YUYV I think this is sometimes called YUY2 format. The data rate is 74.25MHz so it can be sent over the GPIF bus which supports upto 100MHz. 


            The data rate is 1920 x 1080 x 60 x 2 = 248.832000MB/s which sounds like the example you quoted.


            Does the FX3 test of 1080P at 60 fps you have tried require the UVC header to be created and sent with the video data ?





            • 3. Re: 1080P60 GPIF interface

              We have tested 1080P at 60 fps with UVC header being added by the FX3.

              • 4. Re: 1080P60 GPIF interface

                For what it is worth we tried to do 1080p60 YUV422 video following the app note approach where the ARM9 adds the headers.  While it may be possible to get that to work we did not, and I was not able to find anything here that gave me the secret sauce to get that going.  


                When we switched to an auto-channel DMA with the UVC header added to the data prior to being sent over GPIF things worked much better.  From my outsider perspective the ARM9 is slightly underpowered in the FX3 for some of the workloads especially if you put it in the datapath for every block.  Switch to auto-DMA if you can and save yourself a lot of headaches.  


                FYI,Switching to 32kB buffers was also helpful and did show some improvement when the ARM was adding the UVC headers but not enough to keep up.  I think the processor just can't respond quickly enough to the interrupts it is receiving from the GPIF interface for each block commit.



                • 5. Re: 1080P60 GPIF interface

                  Hi Sean, thanks for the feedback. We're still getting the endpoints to work at the moment, let alone doing transfers so we may ask more questions when that is up. Did you add the uvc header at the start of each frame's video data in the gpif stream ?





                  • 6. Re: 1080P60 GPIF interface

                    Yes.  We also have an FPGA feeding the FX3 and I added a state machine there to insert the UVC header every 32KB in my case.  Adjust the counters appropriately in the GPIF state machine from the app note as you now no longer need to reserve the buffer space for the header, change to a dual socket auto-DMA configuration and away you go.