cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

kumu_4723976
New Contributor II

Dears, I am literally stuck for many months in my project of the design of a 16-bit grayscale camera.  I got the superspeed FX3 kit and started with the example code in AN75779.  After multiple trials and errors, I see no progress at all.  In fact, I am more confused than before.  My ultimate aim is to get a 16-bit grayscale image from a sensor via FPGA, and feed it to an FX3 kit and get it streamed to a PC and use a LabVIEW program to acquire it for post-processing.  As I was lost in my way seeing multiple community posts and not much of programming skills, I would like to request your help to at least make a successful first step. 

1. I wanted to use the AN75779 as it (except for changing LV, FV, nRST pin numbers in GPIF)  is so I do not add any error to the original program.  I interfaced it with a DeoNano FPGA board with a custom made interface board.  I changed the pin numbers in GPIF accordingly.  Please see GPIF interface definition picture attached.  I use VLC to try to get some video.  I wrote a test program in FPGA/verilog to generate the PCLK, LV, FV, DATA.  I start with 8 bit DATA as in GPIF the original program it was 8 bit.  Some Signaltap plots of FV, LV shown.  I made it for 1280 x 720, 30FPS using PCLK of 48MHz.  I added Frame and Line blanking accordingly so that the final frame rate is 30FPS.  I uncommented the DEBUG_PRINT_FRAME_COUNT in uvc.h as per suggestion from other posts.  But I always get Frame timer overflow and 0 frames and 0 buffers in the UART debug as attached.  Is my idea/attempt wrong?  I tried giving both longer and shorter blanking times keeping the 30FPS more or less same.  If I manage to make this work, I hope I can make some progress to my actual project goal.

2. I am not using any I2C lines for now.  Will this work without I2C connected?  I guess so.

If I manage to get this FV, LV, Data test signal correctly, I will be making the actual readout in same sequence and timing hoping it to work fine.  Later I will have to change the resolution too as I have one QVGA and one VGA sensors to be interfaced individually.

Thank you for your kind help.

Regards

 

0 Likes
1 Solution
kumu_4723976
New Contributor II

Hemant,

After much of trial and error with the GPIF and UVC Descriptor file, and also I have resoldered the expansion headers.  Now I am able to get the stream successfully.  I have synchronized my video signal simulator part of my FPGA program and successfully streaming in exact resolution and frame rate.  Now my next problem to solve is getting the 16-bit monochrome data.  With 8 bit on GPIF, 16-bit definition on the UVC Descriptor, as expected, the streaming video is pink for a test pixel signal of 255 and green for a test pixel value of 0.  I see 4 GUIDs are supported.  What is the best way to solve this i.e., getting real 16-bit grayscale data on my PC for each pixel?

View solution in original post

0 Likes
7 Replies
Hemanth
Moderator
Moderator

Hi,

You have shared signal plots. But please capture the external signals on board - that is those signals which go to FV, LV and PCLK of FX3. It looks like these signals are not reaching FX3.

UART logs indicate frame timer overflow which means there was no data coming in from GPIF side for 200ms after host app starts requesting video data.

Data does not come into FX3, when GPIF state machine is not running - which will depend on FV, LV and PCLK.

Regards,

Hemanth
0 Likes
kumu_4723976
New Contributor II

Hello Hemanth ji,

I am unable to get a oscilloscope as I am in my hometown carrying these boards with me for development.  I can assure these signals are coming at the specific GPIO pins (all pins - LV, FV, PCLK) of DeoNano as I have probed the respective pins on the Superspeed kit after connecting to the DeoNano and using another GPIO on DeoNano with signal tap - like a logic analyzer.  I am doubting if it could be a defective board.

0 Likes
Hemanth
Moderator
Moderator

Hi,

Please check if GND is connected between the boards.

Try after undefining the following macro: FRAME_TIMER_ENABLE

Regards,

Hemanth
0 Likes
kumu_4723976
New Contributor II

Hemant,

After much of trial and error with the GPIF and UVC Descriptor file, and also I have resoldered the expansion headers.  Now I am able to get the stream successfully.  I have synchronized my video signal simulator part of my FPGA program and successfully streaming in exact resolution and frame rate.  Now my next problem to solve is getting the 16-bit monochrome data.  With 8 bit on GPIF, 16-bit definition on the UVC Descriptor, as expected, the streaming video is pink for a test pixel signal of 255 and green for a test pixel value of 0.  I see 4 GUIDs are supported.  What is the best way to solve this i.e., getting real 16-bit grayscale data on my PC for each pixel?

View solution in original post

0 Likes
Hemanth
Moderator
Moderator

Hi,

You can refer to third post in below thread:

https://community.cypress.com/t5/USB-Superspeed-Peripherals/Image-Sensor-MT9V034-Monochrome-UVC/m-p/...

Instead of externally wiring the MSB data bus, you can make use of CyU3PGpioSetIoMode() to achieve the same.

Regards,

Hemanth
0 Likes
kumu_4723976
New Contributor II

Sir,  I saw the thread.  I guess it talks about 8-bit data.  But I need to get the 16-bit grayscale data on the PC end.  I need this 16-bit intensity value of each pixel for post-processing by the 'to be developed' Labview program.  Just a confident GUID to be used and any other changes to the files in this application note AN75779.

 

0 Likes
Hemanth
Moderator
Moderator

Hi,

The grayscale format is not supported by in-box UVC driver of windows. So, you will have to report YUY2 GUID in the device firmware and a custom host application has to handle the display of the data obtained from the uvc driver.

Regards,

Hemanth
0 Likes