I'm trying to implement HDMI to FPGA and vice-versa.

Currently I'm referring with https://www.fpga4fun.com/HDMI.html site. But I'm confused that "But video signals usually also have an "off-screen" area, which is used by the HDMI receiver (TV or monitor) for some housekeeping. Our 640x480 frame is actually sent as an 800x525 frame."

Especially, how does he know 640x480 is actually sent as an 800x525 frame? If I want to send 1920x1080 or 2592x1944 frame then do they have some already defined off-screen area size?

  • \$\begingroup\$ Yes, it is common in video to have "off screen" pixels/lines. You probably want to start with the HDMI specification: hdmi.org/manufacturer/specification.aspx \$\endgroup\$ – CapnJJ Jul 10 '18 at 3:34
  • \$\begingroup\$ @CapnJJ Could you let me know more specifically? because I can't find any definition of off screen in High-Definition Multimedia Interface Specification Version 1.4a \$\endgroup\$ – Carter Jul 10 '18 at 3:47
  • \$\begingroup\$ No, sorry, I don't know the HDMI specification, but thought there would be info in there regarding that. Somebody will come along with the answer, just thought maybe the spec would get you there sooner. \$\endgroup\$ – CapnJJ Jul 10 '18 at 4:00
  • \$\begingroup\$ Video is generated precisely by synchronization of {pixel and line counters} with H and V sync all harmonically related with PLL’s. This is regardless of analog or digital since it must be sync’ in the monitor and displayed as analog video except digital has memory buffers for special processing. \$\endgroup\$ – Sunnyskyguy EE75 Jul 10 '18 at 4:57
  • 2
    \$\begingroup\$ A more common term for off-screen parts of the signal is "blanking". Data in these areas can include things like synchronization, audio, subtitles, etc. \$\endgroup\$ – Dave Tweed Jul 10 '18 at 11:26

Modern protocols quite often rely on historical choices and maintain them for good reason.

In short:

a. the receiver will detect the image size by determining the image edges in the source image as the vertical and horizontal sync signals are still sent in the HDMI signal.

b. the off-screen area is probably not pre-defined (but I did not read the HDMI specification). It is about 20% for horizontal "off-screen" and 10% for vertical "off-screen".

In depth:

With our good old CRT screens we called this "off-screen area" the blanking. So this is the area where the incoming signal said that no video should be generated. During horizontal blanking, the "beam's positions" would return to the left side of the screen and during vertical blanking, the beam returns to the top (and left) of the screen - the duration of the blanking allows to determine if the blanking is also vertical or not. We refer to the signals as vertical and horizontal sync. Apparently (from your link) the HDMI protocol still has the horizontal and vertical sync.

This blanking is apparently called off-screen now, as there is no actual blanking being done. The time available can thus be used for "housekeeping". Which can include: saving the line in "video memory", resetting some counters, and more generally do any computation that could not be done while the incoming data had to be decoded.

In the historical signal, blanking was shorter than the "off-screen area" because the beam needed to start moving to the right again before putting any actual video on the screen. Otherwise the image would be compressed somewhat on the left side because the speed would not be constant yet. A similar margin was applied on the right side for other reasons.

Several standards (NTSC, PAL) will indicate picture sizes and total sizes to use for video, but in practice many more formats exist. I did not read the HDMI standard, but I am sure that they are flexible on that. Usually horizontal blanking is about 20% of the horizontal time, and vertical blanking about 10%. The actual numbers will depend on the frame rate and pixel clocks.

So how does the TV know the size of the image? There are several ways: one method is that the TV/monitor detects the width of the image (by checking which pixels are black and which are not), another is that the user configures this. On my TV both are possible within the list of available formats. When I designed FGPA's for video treatment, we analyzed counted the number of black pixels from the sync edge to determine the offset and we determined the end of the line/last line by detecting the black pixels again. We had some algorithm to get the "best guess" for the whole image and for several frames. A TV would pick from the preset list of formats and has to fit it on the digital (!) screen. So a 640x480 format would scale up to 1280x960 as that implies "simple" repetition of pixels and lines. It does leave a lot of black area on a 1920x1080 screen tough (so the off-screen area is not entirely off-screen in that case and even bigger than the off-screen area in the source signal!).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.