视频处理很多时候需要测试图像,Xilinx提供了这个测试图像生成器,可以生成一些常见的灰度条、彩条、黑白棋格等固定图案,也可以加上移动的前景变成动态视频。
IP核使用了AXI4-Lite配置接口以及AXIS视频接口,整体并不复杂,我们直接看如何使用。
IP生成
配置项的含义很明确,AXIS从接口等暂不涉及。可以注意到生成的图像分为背景和前景两个图层,其中背景至少选择一项,前景为可选的。
背景是固定的,虽然我们可以通过修改背景模式让其改变。
前景是叠加在背景上的显示内容,可以是简单的十字线,也可以是非全屏的、移动的,例如移动的方块等。
寄存器
IP核使用AXI4-Lite接口 进行配置,我们看一下主要的寄存器定义。
偏移地址 | 寄存器名称 | 操作类型 | 寄存器描述 |
0x0000 | 控制 | 读/写 | Bit 0:开始 Bit 1:完成 Bit 2:空闲 Bit 3:就绪 Bit 7:自动重启 其他:预留 |
0x0010 | 有效(视频)高度 | 读/写 | 每帧有效行 |
0x0018 | 有效(视频)宽度 | 读/写 | 每行有效像素 |
0x0020 | 背景图案ID | 读/写 | |
0x0028 | 覆盖ID | 读/写 | 前景模式 0-无覆盖 1-移动方块,涉及方块尺寸、颜色 2-十字线,一像素宽度,涉及XY坐标 |
0x0030 | 遮罩ID | 读/写 | 仅作用于RGB格式 0-无遮罩 1-遮住红色部分 2-遮住绿色部分 3-遮住蓝色部分 |
0x0038 | 移动速度 | 读/写 | 移动元素每帧移动的像素 |
0x0040 | 颜色模式 | 读/写 | 0-RGB 1-YUV444 2-YUV422 3-YUV420 |
0x0048 | 十字线水平位置 | 读/写 | |
0x0050 | 十字线垂直位置 | 读/写 | |
0x0078 | 方块尺寸 | 读/写 | 方块的边长 |
0x0080 | 方块R/Y | 读/写 | |
0x0088 | 方块G/U | 读/写 | |
0x0090 | 方块B/V | 读/写 |
这里面要注意的是,方块尺寸部分,官方列表描述不准确,有可能是未更新。官方描述中分别定义了宽高,实际使用时输入值仅会识别为方块边长,16位输入会大大超出显示范围而导致显示错误。
库函数的使用注意事项
模块的初始化等配置都很简单,下面简单列出一些使用中的注意点:
- 如果不使能自动重启选项,启动ip核后仅会生成一帧图像
- 前景元素的部分属性可以实时改变,无需启停IP核,例如方块的颜色