笔记根据正点原子官方教学视频第24讲
时间:2025/4/2
【第一期】手把手教你学领航者&启明星ZYNQ之FPGA开发篇【真人出镜】FPGA教学视频教程_哔哩哔哩_bilibili
有错误的地方希望可以告诉博主
LCD 屏幕分辨率
像素格式
RGB:由红 绿 蓝三种颜色通道构成,这三种颜色的分量叠加决定实际颜色;通常,会给RGB图像加一个通道alpha,即透明度,这样就会有四个分量共同控制颜色。
YUV:YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
RGB 与 YUV 格式的转换公式
RGB 像素格式
从高位到低位依次是红、绿、蓝。
LCD 屏幕显示时序
HSYNC(行同步)信号:在水平方向上,HSYNC信号的产生位置标记在有效显示区域的左侧边缘,用于指示每一行的开始。
VSYNC(场同步)信号:在垂直方向上,VSYNC信号的产生位置标记在有效显示区域的上边缘,用于指示每一帧的开始。
HBP(水平后边距):在水平同步信号之后,下一帧数据开始传输之前的时间间隔。它为水平同步信号的结束和新数据的开始提供了一个缓冲区,确保数据传输的稳定性。
HFP(水平前边距):在当前行的有效数据结束到水平同步信号开始之间的时间间隔。它为当前行的结束和下一水平同步信号的开始提供了一个过渡时间,避免图像在行切换时出现撕裂或闪烁。
VBP(垂直后边距):在垂直同步信号之后,下一帧数据开始传输之前的时间间隔。它为垂直同步信号的结束和新帧数据的开始提供了一个缓冲区,确保帧与帧之间的平稳过渡。
VFP(垂直前边距):在当前帧的有效数据结束到垂直同步信号开始之间的时间间隔。它为当前帧的结束和下一垂直同步信号的开始提供了一个过渡时间,防止图像在帧切换时出现闪烁或不连贯。
现在一般把前后沿的准备时间称为消隐时间,在这段时间中是不点亮像素点的。
LCD 屏幕时序参数表
在行时序中:显示周期 = 行同步 + 显示后沿 + 显示区域 + 显示前沿,单位都是时钟周期。
在帧时序中:显示周期 = 场同步 + 显示后沿 + 显示区域 + 显示前沿,单位都是行。
显示分辨率 | 时钟(Mhz) | 行时序(像素数) | 帧时序(行数) | ||||||||
行同步 | 显示后沿 | 显示 区域 | 显示前沿 | 显示 周期 | 场同步 | 显示后沿 | 显示区域 | 显示前沿 | 显示 周期 | ||
480*272 | 9 | 41 | 2 | 480 | 2 | 525 | 10 | 2 | 272 | 2 | 286 |
800*480 | 33.3 | 128 | 88 | 800 | 40 | 1056 | 2 | 33 | 480 | 10 | 525 |
1024*600 | 50 | 20 | 140 | 1024 | 160 | 1344 | 3 | 20 | 600 | 12 | 635 |
1280*800 | 70 | 10 | 80 | 1280 | 70 | 1440 | 3 | 10 | 800 | 10 | 823 |
LCD 行同步时序(DE)
以 1024*600 分辨率为例,其中 HSPW 的长度为 20 个时钟周期,HBP 的长度为 140 个时钟周期,HFP 的长度为 160 个时钟周期,HOZVAL 的长度为 1024 个时钟周期。
LCD 帧同步时序(DE)
以 1024*600 分辨率为例,其中 VSPW 的长度为 3 行(对应的时钟周期),HBP 的长度为 20 行,HFP 的长度为 160 个时钟周期,HOZVAL 的长度为 1024 个时钟周期。
一帧的时序当中会有很多的行同步时序。
字模数据
字模:将一个确定大小的文字转换成0/1矩阵。如下图所示。
字模数据:将这个0/1矩阵按照屏幕扫描的顺序以字节的形式体现。使用字节的形式体现是为了后续方便使用数组来进行表示。
// 定义二维寄存器
reg [15:0] char[15:0];
// 第一行的 00 00
char[0] = 16'h0000;
// 第一行的 7f fc
char[1] = 16'h7ffc;
如果想知道某一个像素点的值,则通过 char[y][x] 的形式即可知道,y 表示行,x 表示列。
注:一般来说,一个字的大小是 16 x 16 的像素。
图片数据也可参考字模的形式,只不过图片的像素点更多,颜色更丰富而已。