The primary interface for user image data has been modeled on the industry standard for display timing controller signals. The port list consists of video timing information encoded in a vertical and horizontal sync pulse and data valid indicator. These single bit control lines frame the active data and provide flow control for the AXI4-Stream video.
Vertical timing is framed using the vertical sync pulse which indicates the end of frame N-1 and the beginning of frame N. The vertical back porch is defined as the number of horizontal sync pulses between the end of the vertical sync pulse and the first line containing active pixel data. The vertical front porch is defined as the number of horizontal sync pulses between the last line of active pixel data and the start of the vertical sync pulse. When combined with the vertical back porch and the vertical sync pulse width, these parameters form what is commonly known as the vertical blanking interval.
At the trailing edge of each vertical sync pulse, the user data interface resets key elements of the image datapath. This provides for a robust user interface that recovers from any kind of interface error in one vertical interval or less.
The following figure shows the typical signaling of a full frame of data.
Similarly, the horizontal timing information is defined by a front porch, back porch, and pulse width. The porch values are defined as the number of clocks between the horizontal sync pulse and the start or end of active data. Pixel data is only accepted into the image data interface when the data valid flag is active-High, as shown in the following figure.
The data valid signal must remain asserted for the duration of a scan line. Dropping the valid signal might result in improper operation.
In the two-dimensional image plane, these control signals frame a rectangular region of active pixel data within the total frame size. This relationship of the total frame size to the active frame size is shown in the following figure.
The User Data Interface can accept one, two, or
four pixels per clock cycle. The vid_pixel width is always 48
bits, regardless of whether all bits are used. For pixel mappings that do not require all 48
bits, the convention used for this core is to occupy the MSB bits first and leave the lower
bits either untied or driven to zero. The following table provides the mapping for all
supported data formats.
| Format | BPC/BPP | R | G | B | Cr | Y | Cb | Cr/Cb | Y |
|---|---|---|---|---|---|---|---|---|---|
| RGB | 6/18 | [47:42] | [31:26] | [15:10] | – | – | – | – | – |
| RGB | 8/24 | [47:40] | [31:24] | [15:8] | – | – | – | – | – |
| RGB | 10/30 | [47:38] | [31:22] | [15:6] | – | – | – | – | – |
| RGB | 12/36 | [47:36] | [31:20] | [15:4] | – | – | – | – | – |
| RGB | 16/48 | [47:32] | [31:16] | [15:0] | – | – | – | – | – |
| YCrCb444 | 6/18 | – | – | – | [47:42] | [31:26] | [15:10] | – | – |
| YCrCb444 | 8/24 | – | – | – | [47:40] | [31:24] | [15:8] | – | – |
| YCrCb444 | 10/30 | – | – | – | [47:38] | [31:22] | [15:6] | – | – |
| YCrCb444 | 12/36 | – | – | – | [47:36] | [31:20] | [15:4] | – | – |
| YCrCb444 | 16/48 | – | – | – | [47:32] | [31:16] | [15:0] | – | – |
| YCrCb422 | 8/16 | – | – | – | – | – | – | [47:40] | [31:24] |
| YCrCb422 | 10/20 | – | – | – | – | – | – | [47:38] | [31:22] |
| YCrCb422 | 12/24 | – | – | – | – | – | – | [47:36] | [31:20] |
| YCrCb422 | 16/32 | – | – | – | – | – | – | [47:32] | [31:16] |
| YONLY | 8/8 | – | – | – | – | – | – | – | [47:40] |
| YONLY | 10/10 | – | – | – | – | – | – | – | [47:38] |
| YONLY | 12/12 | – | – | – | – | – | – | – | [47:36] |
| YONLY | 16/16 | – | – | – | – | – | – | – | [47:32] |
|
|||||||||