• 0
Guru Prasanth S

hdmi port functionality in zybo board

Question

Hi,
IN the link given (https://github.com/Digilent/Zybo-Z7-20-hdmi?_ga=2.136476851.289549728.1571318283-45849474.1563874383), where it demonstrates the functionality of hdmi TX and RX module. Option 5 (start/stop video streaming to video buffer). is not working and the input video is detected by hpd signal. Hence the clarity of functionality is needed. Need the complete functional description of the experiment.

Share this post


Link to post
Share on other sites

20 answers to this question

Recommended Posts

  • 0

Hi @Guru Prasanth S,

The Option 5 on the start/stop video streaming into Video Framebuffer does not turn off the display. It instead no longer sends video frames to the display so that you effectively have a screenshot. This can be more easily seen by having a moving object (such as a mouse pointer) on the display, then pressing the 5 to stop any further frames from being put into the buffer, and then moving the mouse to see that the mouse pointer no longer moves on that display.

Let me know if you have any questions about this.

Thank you,
JColvin

Share this post


Link to post
Share on other sites
  • 0
6 hours ago, JColvin said:

Hi @Guru Prasanth S,

The Option 5 on the start/stop video streaming into Video Framebuffer does not turn off the display. It instead no longer sends video frames to the display so that you effectively have a screenshot. This can be more easily seen by having a moving object (such as a mouse pointer) on the display, then pressing the 5 to stop any further frames from being put into the buffer, and then moving the mouse to see that the mouse pointer no longer moves on that display.

Let me know if you have any questions about this.

Thank you,
JColvin

Hi @JColvin,

      I need to know location of  data coming from hdmi rx port that is stored in zynq processor through vdma ip form xilinx  

Share this post


Link to post
Share on other sites
  • 0
Just now, Guru Prasanth S said:

Hi @JColvin,

      I need to know location of  data coming from hdmi rx port that is stored in zynq processor through vdma ip form xilinx  

Hi @JColvin,

             Once I chose option 5 i.e start and stop video to buffer. I need to know which option to choose for displaying the frame to desktop.

 

Regards,

Guru Prasanth S

Share this post


Link to post
Share on other sites
  • 0
On 11/20/2019 at 10:28 AM, Guru Prasanth S said:

Hi @JColvin,

      I need to know location of  data coming from hdmi rx port that is stored in zynq processor through vdma ip form xilinx  

Hi @JColvin,

                    In the above mentioned i am not getting the screenshot image even i choose option 5 

Share this post


Link to post
Share on other sites
  • 0

Hi @Guru Prasanth S,

I apologize for the delay.

I presume you are using the 2018.2 version of this release? Does the input frame buffer and the output video frame buffer, controlled by options 2 and 6, respectively, on the serial terminal, match values (i.e. both 0, 1, or 2)? If you want to display the test pattern, you will likely need to pause the video stream, and then display one of the two test patterns (options 3 and 4 on the serial terminal) to view it.

The other thing I would recommend changing is two lines of code within the video_demo.c file that is within the Zybo-Z7-20-HDMI project as this will help prevent crashes while the application is running. The two changes are as follows:

In the "DemoPrintMenu" function, change line 284 (on my system anyway, the number may be slightly different for you) as follows:

//LINE 284 currently says:
printf("*Display Pixel Clock Freq. (MHz): %15.3f*\n\r", dispCtrl.pxlFreq);

//Change LINE 284 to instead say:
xil_printf("*Display Pixel Clock Freq. (MHz): %11d.%03d*\n\r", (int)dispCtrl.pxlFreq, (((int)dispCtrl.pxlFreq*1000)%1000));

In the "DemoCRMenu" function, change line 389 (on my system anyway, the number may be slightly different for you) as follows:

//LINE 389 currently says:
printf("*Pixel Clock Freq. (MHz): %23.3f*\n\r", dispCtrl.pxlFreq);

//Change LINE 389 to instead say:
xil_printf("*Display Pixel Clock Freq. (MHz): %11d.%03d*\n\r", (int)dispCtrl.pxlFreq, (((int)dispCtrl.pxlFreq*1000)%1000));

This should help resolve any crashes while running the application.

Please let me know if you have any questions about this.

Thanks,
JColvin

Share this post


Link to post
Share on other sites
  • 0
On 11/20/2019 at 10:28 AM, Guru Prasanth S said:

Hi @JColvin,

      I need to know location of  data coming from hdmi rx port that is stored in zynq processor through vdma ip form xilinx  

Hi @JColvin,

                    The teraterm  window (uart prints) is displaying a HDMI UNPLUGGED in video capture resolution when i connect the video source i need to know why is it so??

Share this post


Link to post
Share on other sites
  • 0

Hi @Guru Prasanth S,

My understanding is that the application while using the printf statements occasionally has an issue within that library such that it jumps to a random memory location; this can cause a crash or get the sync process slightly off so that the HDMI is no longer connected. Did you apply the changes I recommended, save the changes, and rebuild the project (through the Project tab -> Build All)? Making these changes made it so I was successfully able to unplug and re-plug the HDMI cables and still have the application successfully re-detect and display on the external monitor.

Thanks,
JColvin

Share this post


Link to post
Share on other sites
  • 0

Hi @JColvin,

I connected dvi2rgb and rgb2dvi IP back to back without any application support and processor to  check the working of those IP's. I observed that dvi2rgb seems to get junk data at the  output of above mentioned when  red data was given as input ( output RGB =FF0000 is expected), I also tested for other data like green and blue . I request you to check the same and reply ASAP. 

Share this post


Link to post
Share on other sites
  • 0

This thread is a mess, so I will try to summarize it here. @Guru Prasanth S, please correct me, if I understand it wrong.

The Zybo-Z7-20-HDMI demo was tried on a Zybo Z7 -20. Option 5 does not seem to do what is expected, ie. forwarding the input video stream to the output. The console prints HDMI UNPLUGGED even with a video source is connected. Then,  a Vivado-only project was tried with the dvi2rgb and rgb2dvi IPs to test core functionality. Output from dvi2rgb seems to be junk data, and not the expected color pattern.

It is good that the you tried to simplify the test case by instantiating the two IPs yourself. However, there are some caveats you must consider when creating a project from scratch. HDMI_RX_HPD particularly needs to be driven high as documented here: https://reference.digilentinc.com/reference/programmable-logic/zybo-z7/reference-manual#auxiliary_signals.

Please answer the following questions (some of which were asked by James, but remain unanswered):

  • What Vivado version are you using?
  • Are you building the project yourself, or using the https://github.com/Digilent/Zybo-Z7-20-HDMI/releases?
  • What is your test setup? Are you using HDMI or DVI sources? What resolutions are they using? What sinks (monitor) are you using?
  • Does the monitor ever detect sync and lock to a resolution (even if the image is blank)?
  • How are you verifying the output of dvi2rgb? ILA? Do you have aPixelClkLckd=1, vde, hsync and vsync pulsing correctly?

 

Share this post


Link to post
Share on other sites
  • 0

I am happy that you understand my issue correctly.In the mentioned below I answered your questions 

1.What Vivado version are you using?

Ans : Version 2018.2.

2.Are you building the project yourself, or using the https://github.com/Digilent/Zybo-Z7-20-HDMI/releases?

Ans : Yes, I am using the example program, you mentioned in the URL .

3.What is your test setup? Are you using HDMI or DVI sources? What resolutions are they using? What sinks (monitor) are you using?

Ans : -> The video source is PHABRIX SX.

        -> The output of the source is SDI which is converted to HDMI using AJA converter ( Differential clock and data signals).

        -> I tried with formats 1080p60 (3G) and 720p60 (HD) 

       NOTE:

         I changed the preferred resolution in IP 's   accordingly(using UART prompt -teraterm)

        -> Monitor: DELL (3G compatible).

4.Does the monitor ever detect sync and lock to a resolution (even if the image is blank)?

Ans: No.

5.How are you verifying the output of dvi2rgb? ILA? Do you have aPixelClkLckd=1, vde, hsync and vsync pulsing correctly?

Ans: Yes, I verified using ILA  by connecting dvi2rgb and rgb2dvi back to back without Znyq processor . The signals aPixelClkLckd=1, vde, hsync and vsync are pulsing correctly. But, Data is not in correct format ( If I apply red data i am not receiving ff0000),

 

NOTE:

1.HDMI_RX_HPD is high when I connected the sink(Monitor) to HDMI_TX port by connecting dvi2rgb and rgb2dvi back to back.

2.  when I am using the example program, once i choose option 5 (Start/Stop Video stream into Video Framebuffer) and i choose option 7(Grab Video Frame and invert colors)
option 8(Grab Video Frame and scale to Display resolution). i am getting blank display and monitor is not detecting sync and lock to a resolution.

 

 

Share this post


Link to post
Share on other sites
  • 0

My working theory is that your signal generator does not read/parse the EDID from dvi2rgb and does not realize that the sink only supports DVI. This is documented in https://github.com/Digilent/vivado-library/blob/c79b0d651d750c6fcb52c6b7c58b0837fc27de9b/ip/dvi2rgb/docs/dvi2rgb.pdf and in https://reference.digilentinc.com/reference/programmable-logic/zybo-z7/reference-manual#hdmi.

Could you try it with a PC with a backward-compatible HDMI output, or a DVI output?

Edited by elodg
Clarified HDMI/DVI output distinction

Share this post


Link to post
Share on other sites
  • 0

Hi sorry for long delay,

 I performed experiment for with and without EDID. while spying the signals by chip-scope for (data[23:0], hsync, vsync, data valid,pixel clock )signals  at TX and Rx side.

Following observations are

1. Output of RX side dvi2rgb IP core signals are not matching with the timing reference observed at TX side rbg2 DVI IP input( rgb input driven by Zynq pattern generator).

2. Pixel clock generated by dvi2rgb ip is 148.5 MHz and dynamic clock generator is 148.571 MHz

3. I connected the pc HDMI output as a input to HDMI RX . Still in the window hdmi unplugged is displayed kin teraterm window 

PFA given below the output of Debug ILA for the above two case.

 

 

 

Debug_ila_output_screenshoots.docx

Share this post


Link to post
Share on other sites
  • 0

Hi,

Now i am getting the video capture resolution on screen "( When i connected pc hdmi output). I need to know the steps to see the screen of source in display window

I will write the flow used to display from source

->There are three video frames namely 0,1,2

->First I choose 6 ( index 0) then 5 ( Repeated for index 1 and 2)

->Later I choose 6 and then 8 (  i am getting blank image for all index)

image.png.fd7572572bd1b51f02a2f37fd0b93616.png

Note: 

Test pattern are successfully getting displayed ( for 3 and 4 option for all frame buffers)

 

 

 

 

Share this post


Link to post
Share on other sites
  • 0

There is something wrong with the decoded signals in the ILA screenshots, that I cannot put my finger on and have not seen before. Please activate the debug module in dvi2rgb and screenshot those ILA modules too. The debug signals are documented in https://github.com/Digilent/vivado-library/blob/master/ip/dvi2rgb/docs/dvi2rgb.pdf.

I do not know what you did in your last post that made it detect the incoming resolution, but seeing the screenshots from earlier I do not trust the console output.

Share this post


Link to post
Share on other sites
  • 0

So is there anything else that is not working still?

Please mark your post as best answer to let others know what the solution was.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now