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 代码

我在我办公室的一台电脑上发现了同一个 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