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.
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 ?
We have tested 1080P at 60 fps with UVC header being added by the FX3.
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.
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 ?
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.