Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Video Interface (VI)

The video interface is responsible for outputing a video signal to a display from a framebuffer in main RAM, named the eXternal FrameBuffer (XFB).

For a high level overview on the topic of analog video, take a look at the analog video page.

Registers

Note

Lengths are in samples unless stated otherwise.

Work in Progress

Not all registers are described here yet

VI Vertical Timing (0x0C00_2000, 2 bytes)

This register configures the vertical timing properties of the video signal.

BitsNameDescription
0..4Equalization Pulse LengthDouble the length of the EQU pulse in half-lines
4..14Active Video LengthLength of the active video section in half-lines

VI Display Config (0x0C00_2002, 4 bytes)

BitsNameDescription
0EnableEnable video timing generation and data requests
1ResetClears all requests and puts the interface into an idle state
2ProgressiveWhether progressive video mode is enabled (interlaced otherwise)
3StereoscopicWhether the 3D stereoscopic effect is enabled1
4..6Display Latch 0 Mode
6..8Display Latch 1 Mode
8..10Video FormatCurrent video format (0 = NTSC, 1 = Pal50, 2 = Pal60, 3 = Debug)

VI Horizontal Timing 0 (0x0C00_2004, 4 bytes)

This register configures part of the horizontal timing properties of the video signal.

BitsNameDescription
0..7Sync LengthLength of the HSync pulse
7..17Sync Start to Blank End LengthLength of interval between HSync start and HBlank end
17..27Half-line to Blank Start LengthLength of interval between the half-line and HBlank start

VI Horizontal Timing 1 (0x0C00_2008, 4 bytes)

This register configures part of the horizontal timing properties of the video signal.

BitsNameDescription
0..9Half-line lengthLength of a half-line
16..23Sync Start to Color Burst EndLength of interval between HSync start and Color Burst end
24..31Sync Start to Color Burst StartLength of interval between HSync start and Color Burst start

VI Odd Field Vertical Timing (0x0C00_200C, 4 bytes)

This register configures the vertical timing properties of the video signal of the odd field.

BitsNameDescription
0..10Pre-blanking lengthLength of the pre-blanking period, in half-lines
16..26Post-blanking lengthLength of the pre-blanking period, in half-lines

VI Even Field Vertical Timing (0x0C00_2010, 4 bytes)

This register configures the vertical timing properties of the video signal of the even field.

Same bits as VI Odd Field Vertical Timing.

VI Top Field Base Register (0x0C00_201C, 4 bytes)

This register configures the address of the XFB for the odd field.

BitsNameDescription
0..24BaseBits 0..24 of the XFB address in physical memory
24..28Horizontal Offset
28ShiftWhether to shift the base address right by 5

VI Bottom Field Base Register (0x0C00_2024, 4 bytes)

This register configures the address of the XFB for the even field.

BitsNameDescription
9..24BaseBits 9..24 of the XFB address in physical memory
28ShiftWhether to shift the base address right by 5

VI Current Line (Vertical Counter) (0x0C00_202C, 2 bytes)

This register contains a counter for the current line in the frame. It starts at 1 and increases every HSync, up to the number of lines per frame. It is reset at the start of a new frame.

Note

In interlaced mode, a frame is composed of the two fields.

VI Current Sample (Horizontal Counter) (0x0C00_202E, 2 bytes)

This register contains a counter for the current sample in the line. It starts at 1 and increases every sample, up to the number of samples per frame. It is reset at the start of a new line.

VI Display Interrupt 0 (0x0C00_2030, 4 bytes)

This register configures the VI interrupt 0.

BitsNameDescription
0..9Horizontal TargetTarget value for the current sample
16..25Vertical TargetTarget value for the current line
28MaskWhether this interrupt is enabled
31StatusWhether this interrupt is active

Warning

The value to write in order to acknowledge the interrupt is 0 instead of the usual 1.

VI Display Interrupt 1 (0x0C00_2034, 4 bytes)

This register configures the VI interrupt 1.

Same bits as VI Display Interrupt 0.

VI Display Interrupt 2 (0x0C00_2038, 4 bytes)

This register configures the VI interrupt 2.

Same bits as VI Display Interrupt 0.

VI Display Interrupt 3 (0x0C00_203C, 4 bytes)

This register configures the VI interrupt 3.

Same bits as VI Display Interrupt 0.


  1. Nothing uses this.