0

我正在为terasic 的 TFT LCD 7" 屏幕编写 VHDL 代码,但我很难理解数据表中提供的时序规范

  • 第 17 页,手册中的表 3-1(下载链接)
  • 第 15 页,数据表中的第 8.3 节(保管箱链接)

我在我办公室的一台电脑上发现了同一个 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 建立/保持时间[ns]

水平/垂直脉冲宽度

另外,您知道为什么会有 2 种操作模式(DE/SYNC)吗?我应该什么时候使用每一个?VGA 等其他类型屏幕的模块要简单得多。
我的老板正在努力推动我完成这项任务,因为我已经为此工作了一个月。如果这里有人对这些时间参数有一个很好的定义,我会非常高兴:)

4

2 回答 2

0

定义:

HSYNC/VSYNC 建立/保持时间[ns]

这是 33[mhz] DCLK 从“1”上升到“0”所需的最短时间,反之亦然。

水平/垂直脉冲宽度

例如,对于 LCD_HSD,这是 LCD_HSD 为高的 DCLK 脉冲量,如提到的“ tollin ”。LCD_HSD 的 LCD_VSD 与 DCLK 相同。我已经将一个带有 LCD-driver quartus 项目

的存储库上传到github ,该项目创建了一个供所有人使用的舒适通用模块:

https ://github.com/Doron-Behar/VEEK-MT_LCD-driver

于 2015-08-25T20:19:36.130 回答
0

HSYNC 或水平同步信号是一个短脉冲,表示每行的开始。类似地,VSYNC 或垂直同步信号是一个短脉冲,表示每一帧的开始。

脉冲宽度是每个信号处于逻辑高状态的时间。在您的示例中,HSYNC 为 13ns 到 523ns 的逻辑高电平。这意味着510ns是HSYNC的脉冲宽度

于 2015-08-20T11:54:17.227 回答