Convert AN75779 to 32Bit

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
WeNe_1271406
Level 1
Level 1

H,

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)

Problems:

     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.

Neo

0 Likes
1 Solution
Anonymous
Not applicable

Hi,

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.

Regards,

-Madhu

View solution in original post

0 Likes
3 Replies
WeNe_1271406
Level 1
Level 1

Update:

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?

0 Likes
Anonymous
Not applicable

Hi,

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.

Regards,

-Madhu

0 Likes

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.

0 Likes