Video Timing Generation - 6.2 English - PG016

Video Timing Controller LogiCORE IP Product Guide (PG016)

Document ID
PG016
Release Date
2025-11-26
Version
6.2 English

The VTC can generate up to six output video signals:

  • Vertical blank
  • Vertical synchronization
  • Horizontal blank
  • Horizontal synchronization
  • Active video
  • Active chroma

To enable generation of these signals, the Enable Generation GUI parameter must be set and the Control Register bit 0 or bit 2 must also be set. Other GUI parameters can be set to selectively disable generation of one or more video timing signals.

The polarity of each output signal can be set by bits 0-5 of the Generator Polarity Register (address offset 0x006C). High denotes active-High polarity and Low denotes active-Low polarity. Bits 8 and 9 of the Control Register also sets the number of lines skipped between each active chroma line. Bit 8 High denotes that every other line is skipped (4:2:0) and Low denotes that no lines are skipped (4:4:4 or 4:2:2). Bit 9 High denotes that every other pixel is skipped and Low denotes that no pixels are skipped.

The VTC has bits in the Control Register called Source Selects to select the internal detection registers or the external input generation registers. These bits allow the detected timing (if enabled) to control the generated outputs or allow the host processor to override each value independently via the generation registers at address offset 0x0060 to 0x0084, as described in Register Space.

Tables in Horizontal Generation Configuration Example through Timing Regeneration Example with Selective Signals Overridden show example settings of the input control buses and the resultant video timing output signals.

Setting VBLANK to deassert at the same time as HBLANK on the last line of the frame is not supported. The typical use case is for VBLANK to deassert at the same time HBLANK asserts. However, the closest possible configuration to this is off by one clock cycle. You can configure VBLANK to deassert one clock cycle before HBLANK deasserts on the last line of the frame. Do this by setting the VBLANK end:

(F0_VBLANK_HEND) = HFRAME_SIZE - 1