概览
Video Timing Controller主要有两个功能,检测时序和生成时序,生成IP时可以选择只使用其中任意一个功能或者两个功能都有。
支持AXI4-Lite接口进行动态配置,也可以使用固定配置生成IP。支持的最大行宽度和场高度均为8192(包含消隐部分,所以支持的分辨率要小于8192x8192)。在最新的v6.2中已经支持16384x16384,手册中这部分没有变更。
支持16路帧同步信号输出,每帧输出一次高脉冲,持续一个时钟。输出时机可配置为第n行的第m个像素(包含消隐)。
性能
最高频率
最大频率依赖于器件、工具链等,典型频率如下:
- V7,K7,7Z030,7Z045:225MHz
- A7,7Z010,7Z020:150MHz
- KU,KUP,ZUP:400MHz
延迟
输出信号延迟可配置为无延迟或指定延迟。
接口
接口框图
Video Timing Controller包含视频时序信号输入接口、视频时序信号输出接口、AXI4-LITE接口、帧同步输入、帧同步输出、中断输出。框图如下。
这些信号并不总是有效的,可以根据需要选择或关闭其中部分接口,视频时序输入/输出接口可选一个或两个,AXI4-LITE接口可选 。默认配置及对应的接口如下图所示。
不使用AXI4-LITE控制接口时,接口如下图所示。需要注意的是,此时用户无法获取输入时序,视频时序输入仅可用于帧同步信号的生成。
接口描述
下表中所有多位宽信号均为小端模式。
通用接口 | |||
信号名称 | 方向 | 位宽 | 描述 |
clk | 输入 | 1 | IP核时钟 |
clken | 输入 | 1 | IP核时钟使能,高有效 |
det_clken | 输入 | 1 | 时序检测时钟使能,高有效 |
gen_clken | 输入 | 1 | 时序生成时钟使能,高有效 |
resetn | 输入 | 1 | IP核同步复位,低有效 |
irq | 输出 | 1 | 中断请求输出,上升沿触发 |
intc_if | 输出 | 32 | (可选)当“Include INTC Interface”或C_HSA_INTC_IF选中时生效。 [31:0]与状态寄存器(0x0004)[31:8]相同 [7:6]预留,总是0 [5:0]与错误寄存器(0x0008)[21:16]相同 |
时序检测接口(视频时序输入接口) | |||
field_id_in | 输入 | 1 | (可选)奇偶场标识,隔行视频中使能field id时生效 |
hsync_in | 输入 | 1 | 行同步/消隐,至少二选一,极性自适应。如果不连接相应信号,则必须取消相应选项。 |
hblank_in | 输入 | 1 | |
vsync_in | 输入 | 1 | 场同步/消隐/视频有效,至少三选一,极性自适应。如果不连接相应信号,则必须取消相应选项。 |
vblank_in | 输入 | 1 | |
active_video_in | 输入 | 1 | |
active_chroma_in | 输入 | 1 | (可选)对应VIDEO_FORMAT和CHROMA_PARITY位,极性自适应。如果不连接相应信号,则必须取消相应选项。 |
时序生成接口(视频时序输出接口) | |||
field_id_out | 输出 | 1 | (可选)隔行信号场id,极性在Generator Polarity Register(0x006C)中设置。仅在支持隔行视频且使能field id生成时有效。 |
hsync_out | 输出 | 1 | 行同步,在GENERATOR HSYNC寄存器中设置起始和结束周期。 |
hblank_out | 输出 | 1 | 行消隐,在GENERATOR HSIZE寄存器中设置起始和结束周期。 |
vsync_out | 输出 | 1 | 场同步,在GENERATOR F#_VSYNC_V寄存器中设置起始和结束行。 |
vblank_out | 输出 | 1 | 场消隐,在GENERATOR VSIZE寄存器中设置起始和结束行 |
active_video_out | 输出 | 1 | 非消隐行第一个时钟生效,GENERATOR ACTIVE_SIZE中设置结束周期。 |
active_chroma_out | 输出 | 1 | 表示哪些行包含有效色度采样(用于YUV420),非消隐行生效,在GENERATOR Encoding寄存器中配置VIDEO_FORMAT以及CHROMA_PARITY位。 |
帧同步信号 | |||
fsync_out | 输出 | FrameSyncs | 帧同步输出,延迟可设,最大16路。 |
fsync_in | 输入 | 1 | 帧同步输入,高有效。使能时,时序生成会与此信号同步。 |
sof_state | 输入 | 1 | AXI4-S帧起始信号,当与AXI4视频输出IP一起使用时连接VTC。 |
关于时钟
视频时序输入必须与IP核时钟clk同步。所有视频时序信号在clk的上升沿采样。所有视频时序输出在clk上升沿之后。clken取消期间,内部状态保持不变,除非resetn复位信号生效。如果clk时钟信号处于非运行状态,或clken未置位,AXI4-LITE接口所有读写都是从机错误应答(0x02)。
关于检测时钟使能(det_clken)
此使能信号用于控制时序检测功能,与时序生成功能相独立。必须与时钟使能(clken)同时置位才会生效。
关于生成时钟使能(gen_clken)
此使能信号用于控制时序生成功能,与时序检测功能相独立。必须与时钟使能(clken)同时置位才会生效。
关于复位(resetn)
此复位信号为低有效同步复位,在clk的下一个上升沿生效。注意,拉低clken不会影响resetn的生效。复位信号至少保持32个时钟周期。复位信号拉低时,AXI4-LITE读写响应为从机错误响应(0x02)。
关于帧同步输入(fsync_in)
高有效的帧同步输入,持续一个时钟周期,每帧一次用于同步时序生成。此信号会重置所有内部时序生成相关计数器,并开始生成同步帧时序。其与时序检测信号生成的det_fsync信号通过逻辑“或”驱动时序生成,这两个信号的使用可在运行中变更,但同一时刻应当只有一个生效。
AXI4-Lite接口
此为AXI4标准接口的一部分,此处不详述。
寄存器
寄存器列表如下,具体的寄存器含义建议直接查阅官方文档PG016.
寄存器 | |||||
偏移地址 | 名称 | 访问类型 | 双缓冲 | 默认值 | 描述 |
0x0000 | CONTROL | R/W | Y | 0 | 通用控制 |
0x0004 | STATUS | R/WC | N | 0 | 状态寄存器,写1清除 |
0x0008 | ERROR | R/WC | N | 0 | 附加状态核错误寄存器,写1清除 |
0x000C | IRQ_ENABLE | R/W | N | 0 | 中断使能/失能 |
0x0010 | VERSION | R | N/A | 0X06010001 | IP核版本信息 |
0x0014 | ADAPTIVE_SYNC_CTRL | R/W | N/A | 0 | 自适应同步控制 |
0x0018 | Stretch Limit | R/W | N/A | 0 | 自适应同步时最大Front porch |
0x0020 | DETECTOR ACTIVE_SIZE | R | N/A | 0 | 有效行场尺寸(不含消隐) |
0x0024 | DETECTOR TIMING_STATUS | R | N/A | 0 | 时序检测状态 |
0x0028 | DETECTOR ENCODING | R | N/A | 0 | 帧编码 |
0x002C | DETECTOR POLARITY | R | N/A | 0 | 消隐同步信号极性 |
0x0030 | DETECTOR HSIZE | R | N/A | 0 | 水平宽度(含消隐) |
0x0034 | DETECTOR VSIZE | R | N/A | 0 | 垂直高度(含消隐) |
0x0038 | DETECTOR HSYNC | R | N/A | 0 | 水平同步信号起止时钟 |
0x003C | DETECTOR F0_VBLANK_H | R | N/A | 0 | 场0垂直消隐起止时钟 |
0x0040 | DETECTOR F0_VSYNC_V | R | N/A | 0 | 场0垂直同步起止行 |
0x0044 | DETECTOR F0_VSYNC_H | R | N/A | 0 | 场0垂直同步起止时钟 |
0x0048 | DETECTOR F1_VBLANK_H | R | N/A | 0 | 场1垂直消隐起止时钟 |
0x004C | DETECTOR F1_VSYNC_V | R | N/A | 0 | 场1垂直同步起止行 |
0x0050 | DETECTOR F1_VSYNC_H | R | N/A | 0 | 场1垂直同步起止时钟 |
0x0060 | GENERATOR ACTIVE_SIZE | R/W | Y | GUI设置 | 场0行场尺寸 |
0x0064 | GENERATOR TIMING_STATUS | R | N | GUI设置 | 时序检测状态 |
0x0068 | GENERATOR ENCODING | R/W | Y | GUI设置 | 帧编码 |
0x006C | GENERATOR POLARITY | R/W | Y | GUI设置 | 消隐同步信号极性 |
0x0070 | GENERATOR HSIZE | R/W | Y | GUI设置 | 水平宽度(含消隐) |
0x0074 | GENERATOR VSIZE | R/W | Y | GUI设置 | 垂直高度(含消隐) |
0x0078 | GENERATOR HSYNC | R/W | Y | GUI设置 | 水平同步信号起止时钟 |
0x007C | GENERATOR F0_VBLANK_H | R/W | Y | GUI设置 | 场0的垂直消隐起止时钟 |
0x0080 | GENERATOR F0_VSYNC_V | R/W | Y | GUI设置 | 场0的垂直同步起止行 |
0x0084 | GENERATOR F0_VSYNC_H | R/W | Y | GUI设置 | 场0的垂直同步起止时钟 |
0x0088 | GENERATOR F1_VBLANK_H | R/W | Y | GUI设置 | 场1的垂直消隐起止时钟 |
0x008C | GENERATOR F1_VSYNC_V | R/W | Y | GUI设置 | 场1的垂直同步起止行 |
0x0090 | GENERATOR F1_VSYNC_H | R/W | Y | GUI设置 | 场1的垂直同步起止时钟 |
0x0094 | GENERATOR ACTIVE_SIZE | R/W | Y | GUI设置 | 场1的行场尺寸 |
0x0100 ~ 0x013C | FRAME SYNC 0 - 15 CONFIG | R/W | Y | 0 | 帧同步输出的起始时钟和起始行 |
0x0140 | GENERATOR GLOBAL DELAY | R/W | Y | 0 | 生成延时 |