LCD 模块的时序规范
Timing specifications for LCD module
我正在为 TFT LCD 7" screen by terasic and I'm having a hard time understand the timing specifications presented in the datasheet
编写 VHDL 代码
- 手册第 17 页,table3-1(下载-link)
- 第 15 页,第 8.3 节 数据表 (dropbox-link)
我在我办公室的一台电脑上发现了同一个 LCD 屏幕的 VHDL 代码,但编写它的人不在。他写的代码中最有趣但还不完全清楚的部分呈现:
process(Reset,clk_33)
begin
if Reset = '0' then
H_count <= 0;
V_count <= 0;
DE <= '0';
LCD_fin <= '0';
R<=(others=>'0');
G<=(others=>'0');
B<=(others=>'0');
elsif rising_edge(clk_33) then
H_count <= H_count + 1; -- Horizantal pixels count
case V_count is -- Vertical row
when 0 to 12 => V_sync <= '0'; LCD_fin <= '0'; -- Vertical pulse width
when 13 to 22 => V_sync <= '1'; -- Vertical back porch
when 23 to 502 => V_sync <= '1'; -- Vertical valid
when 503 to 523 => V_sync <= '1'; LCD_fin <= '1'; -- Vertical front porch
when 524 => V_count <= 0;
end case;
case H_count is -- Horizontal column
when 0 to 29 => H_sync <= '0'; -- Horizontal pulse width
when 30 to 45 => H_sync <= '1'; -- Horizontal back porch
when 46 to 845 => H_sync <= '1'; DE<='1'; -- Horizontal valid
when 846 to 1054 => H_sync <= '1'; DE<='0';-- Horizontal front porch
when 1055 => H_count <= 0; V_count <= V_count + 1;
end case;
我知道 VHDL 很好,但我似乎无法为这些项目找到一个好的解释:
HSYNC/VSYNC setup/hold time[ns]
Horzontal/Vertical pulse width
另外,你知道为什么会有2种操作模式吗(DE/SYNC)?我应该什么时候使用它们? VGA等其他类型屏幕的模块要简单得多..
我的老板正在努力推动我完成这项任务,因为我现在已经为此工作了一个月。如果这里有人对这些时间参数有一个很好的定义,我会非常高兴:)
HSYNC 或水平同步信号是单个短脉冲,表示每一行的开始。
同样,VSYNC 或垂直同步信号是单个短脉冲,表示每一帧的开始。
脉冲宽度是每个信号处于逻辑高状态的时间。在您的示例中,HSYNC 从 13ns 到 523ns 为逻辑高电平。这意味着 510ns 是 HSYNC
的脉冲宽度
定义:
HSYNC/VSYNC setup/hold time[ns]
这是 33[mhz] DCLK 从“1”上升到“0”所需的最短时间,反之亦然。
Horzontal/Vertical pulse width
例如,对于LCD_HSD,这是其中LCD_HSD如“tollin”所述那样高的DCLK脉冲量。对于 LCD_VSD 对于 LCD_HSD 与 DCLK 相同。
我已经将一个存储库上传到 github,其中包含一个 LCD 驱动程序 quartus 项目,它创建了一个舒适的通用模块供所有人使用:
https://github.com/Doron-Behar/VEEK-MT_LCD-driver
我正在为 TFT LCD 7" screen by terasic and I'm having a hard time understand the timing specifications presented in the datasheet
编写 VHDL 代码- 手册第 17 页,table3-1(下载-link)
- 第 15 页,第 8.3 节 数据表 (dropbox-link)
我在我办公室的一台电脑上发现了同一个 LCD 屏幕的 VHDL 代码,但编写它的人不在。他写的代码中最有趣但还不完全清楚的部分呈现:
process(Reset,clk_33)
begin
if Reset = '0' then
H_count <= 0;
V_count <= 0;
DE <= '0';
LCD_fin <= '0';
R<=(others=>'0');
G<=(others=>'0');
B<=(others=>'0');
elsif rising_edge(clk_33) then
H_count <= H_count + 1; -- Horizantal pixels count
case V_count is -- Vertical row
when 0 to 12 => V_sync <= '0'; LCD_fin <= '0'; -- Vertical pulse width
when 13 to 22 => V_sync <= '1'; -- Vertical back porch
when 23 to 502 => V_sync <= '1'; -- Vertical valid
when 503 to 523 => V_sync <= '1'; LCD_fin <= '1'; -- Vertical front porch
when 524 => V_count <= 0;
end case;
case H_count is -- Horizontal column
when 0 to 29 => H_sync <= '0'; -- Horizontal pulse width
when 30 to 45 => H_sync <= '1'; -- Horizontal back porch
when 46 to 845 => H_sync <= '1'; DE<='1'; -- Horizontal valid
when 846 to 1054 => H_sync <= '1'; DE<='0';-- Horizontal front porch
when 1055 => H_count <= 0; V_count <= V_count + 1;
end case;
我知道 VHDL 很好,但我似乎无法为这些项目找到一个好的解释:
HSYNC/VSYNC setup/hold time[ns]
Horzontal/Vertical pulse width
另外,你知道为什么会有2种操作模式吗(DE/SYNC)?我应该什么时候使用它们? VGA等其他类型屏幕的模块要简单得多..
我的老板正在努力推动我完成这项任务,因为我现在已经为此工作了一个月。如果这里有人对这些时间参数有一个很好的定义,我会非常高兴:)
HSYNC 或水平同步信号是单个短脉冲,表示每一行的开始。 同样,VSYNC 或垂直同步信号是单个短脉冲,表示每一帧的开始。
脉冲宽度是每个信号处于逻辑高状态的时间。在您的示例中,HSYNC 从 13ns 到 523ns 为逻辑高电平。这意味着 510ns 是 HSYNC
的脉冲宽度定义:
HSYNC/VSYNC setup/hold time[ns]
这是 33[mhz] DCLK 从“1”上升到“0”所需的最短时间,反之亦然。
Horzontal/Vertical pulse width
例如,对于LCD_HSD,这是其中LCD_HSD如“tollin”所述那样高的DCLK脉冲量。对于 LCD_VSD 对于 LCD_HSD 与 DCLK 相同。
我已经将一个存储库上传到 github,其中包含一个 LCD 驱动程序 quartus 项目,它创建了一个舒适的通用模块供所有人使用:
https://github.com/Doron-Behar/VEEK-MT_LCD-driver