RGB LCD 彩条显示实验

目录

一.RGB TFT-LCD简介

1.1分辨率

1.2像素格式

1.3LCD屏幕接口 

1.4LCD时间参数

 1.5RGB LCD屏幕时序

1.6像素时钟

二.实验任务

三.模块设计与仿真

3.1读ID模块设计

3.1.1模块设计

3.1.2波形绘制

3.1.3modelsim仿真波形

3.2时钟分频模块

3.2.1模块设计

3.2.2绘制波形图

3.2.3仿真波形

3.3lcd_driver模块

3.3.1模块设计

3.3.2绘制波形 

3.3.3仿真波形

3.4lcd_display模块

3.4.1模块设计

3.4.2波形仿真


一.RGB TFT-LCD简介

       TFT-LCD 的全称是 Thin Film Transistor-Liquid Crystal Display ,即薄膜晶体管液晶显示屏。

1.1分辨率

       以分辨率1080P举例,指的就是LCD屏幕上的像素数量是1920*1080个。像素点就是一个包含光三原色(红绿蓝)的RGB小灯。

1.2像素格式

       一般一个 RGB 这三部分分别使用8bit 的数据,那么一个像素点就是 8bit*3=24bit,也就是说一个像素点 3 个字节,这种像素格式称为 RGB888

1.3LCD屏幕接口 

       本实验用到的启明星开发板支持 RGB 接口LCD HDMI 接口的显示器,RGB LCD 接口的信号线如下表所示: 其信号线含义下面会介绍。

          

1.4LCD时间参数

          如下图所示,LCD显示图片是按照从左至右,从上至下依次将像素点点亮。HSYNC 是水平同步信号,也叫做行同步信号,当产生此信号的话就表示开始显示新的一行了。当从左至右点亮一行末端(右侧)后,从下一行首端(左侧)开始点亮时,需要等待一端时间(因为点完一行需要跑一会才能到达下一行首端),这段时间就称为HBP(行显示后沿)和HFP(行显示前沿)。同理,当点完一帧画面后,即点到最后一行末端时,就需要再等待一会才能点亮下一帧图片(因为点完当前帧的最后一行末端移到下一帧首端也需要跑一段时间),该等待时间称为VBP(帧显示后沿)和VFP(帧显示前沿)。VSYNC(帧/场同步信号),当产生此信号的话就表示开始显示新的一帧了。

    

 1.5RGB LCD屏幕时序

 

          HSYNC :行同步信号,当此信号有效的时候就表示开始显示新的一行数据,查阅所使用的 LCD 数据手册可以知道此信号是低电平有效还是高电平有效,图 28.1.7 为低电平有效。
          HSPW :行同步信号宽度,也就是 HSYNC 信号持续时间。 HSYNC 信号不是一个脉冲,而是需要持续一段时间才是有效的,单位为 CLK
          HBP :行显示后沿(或后肩),单位是 CLK
          HOZVAL :行有效显示区域,即显示一行数据所需的时间,假如屏幕分辨率为 1024*600, 那么 HOZVAL就是 1024 ,单位为 CLK
          HFP :行显示前沿(或前肩),单位是 CLK
         
        当 HSYNC 信号发出以后,需要等待 HSPW+HBP CLK 时间才会接收到真正有效的像素数据。当显示完一行数据以后需要等待 HFP CLK 时间才能发出下一个 HSYNC 信号,所以显示一行所需要的时间就是: HSPW + HBP + HOZVAL + HFP。同理可得显示完一帧所需的时间为VSPW+VBP+LINE+VFP 个行时间。
       选择 DE 同步模式时,LCD 的 DE 信号作为数据的有效信号,如图 28.1.7 和图 28.1.8 的 DE 信号所示。只有同时扫描到帧有效显示区域和行有效显示区域时,DE 信号才有效(高电平)。当选择 DE 同步模式时,此时行场同步信号 VS 和 HS 必须为高电平。

1.6像素时钟

 

二.实验任务

     

        本节的实验任务是使用正点原子 ZYNQ 开发板上的 RGB TFT-LCD 接口,驱动 RGB LCD 液晶屏(支持目前推出的所有 RGB LCD 屏),并显示出彩条。

三.模块设计与仿真

3.1读ID模块设计

3.1.1模块设计

          该模块任务就是根据lcd显示屏传来的rgb数据,判定是多少分辨率的板子,对应关系在如下图所示,从而得到板子的ID,进一步根据分辨率由上面一张表得到LCD的时序参数。

3.1.2波形绘制

                   这里我的lcd显示屏的分辨率大小是4.3寸,分辨率是800*480.当清零信号(rst_n)消失后,读id标志(rd_flag)信号开始拉高,表示可以根据传输进来的lcd_rgb信号,读出对应的lcd_id号了。

3.1.3modelsim仿真波形

3.2时钟分频模块

3.2.1模块设计

      由系统时钟50Mhz,设计出12.5MHZ和25Mhz的分频时钟。

    

3.2.2绘制波形图

       

3.2.3仿真波形

因为4384需要的系统时钟是25MHZ,故lcd_pclk=25MHZ.

3.3lcd_driver模块

3.3.1模块设计

        该模块是根据识别到的lcd的id号从而给出驱动lcd屏幕的信号,lcd_clk,lcd_hs,lcd_vs,lcd_b1,lcd_de,lcd_rst,lcd_rgb。以上信号只要是驱动lcd屏幕显示,lcd_hs,lcd_vs,lcd_b1,lcd_rst全程给高电平,因为我们使用的是de模式。因此需要计算的只有lcd_de、lcd_rgb、pixel_xpos、pixel_ypos(这两个信号不连接显示屏,是为了给下一个模块使用)

        lcd_de信号:表示lcd屏幕驱动像素点使能信号,该信号高电平时,lcd屏幕可以驱动像素点,而使用的板子分辨率为800x480.故每行像素点有800个,该信号持续时长为800个clk周期。

        lcd_rgb信号:表示要传给lcd屏幕每个像素点的像素值(值不同才能显示不同的画面),该信号由下面一个信号给出。

        pixel_xpos信号和pixel_ypos信号:相当于lcd屏幕显示的坐标,该信号得到800X480任意一点的(x,y)坐标,方便后续赋像素值。

3.3.2绘制波形 

                 h_cnt信号:对点亮一行的时间进行计数(单位是像素点,即一个clk)。由下图中可知,4384点亮一行的总时间为1056,故h_cnt计数范围是0~1055.

                 v_cnt信号:对点亮一帧的时间进行计数(单位是行,即1056*T(clk))。由下图可知4384点亮一帧的总时间为525,故v_cnt计数范围是0~524.

                 data_req信号:代表到行显示区域时(即下表中的800),发出数据请求,表示可以点亮像素点。同lcd_de含义一样,只不过时序电路会延迟一个clk赋值,故引入中间信号data_req。

                 lcd_de:上面已经解释过,实现时对data_req打一拍即可。

                 pixel_xpos,和pixel_ypos就是对lcd屏幕进行建模,得到任一点的坐标。

                 

3.3.3仿真波形

           由波形可以看出,与设计相符。

 

3.4lcd_display模块

3.4.1模块设计

               本实验时彩条显示,故根据pixel_xpos的值分别赋予不同的颜色,一共显示5个彩条,则800/5=160.则党pixel_xpos=(0-160),(160-320),(320-480),(480-540),(540-800)依次赋值即可。

 

3.4.2波形仿真

3.5总体系统框图

四.板级验证

 

 

 

 

        

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:24:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:24:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:24:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 21:24:01       69 阅读

热门阅读

  1. 3011.判断一个数组是否可以变为有序

    2024-07-13 21:24:01       23 阅读
  2. Spring是如何管理事务的?

    2024-07-13 21:24:01       23 阅读
  3. Kylin的智能优化:Cube自动优化的奥秘

    2024-07-13 21:24:01       18 阅读
  4. ES证书过期替换方案

    2024-07-13 21:24:01       24 阅读
  5. 深度学习调参

    2024-07-13 21:24:01       18 阅读
  6. 算法练习第29天|1005.K次取反后最大化的数组和

    2024-07-13 21:24:01       16 阅读
  7. C++ STL sort用法

    2024-07-13 21:24:01       19 阅读
  8. 什么是稀疏化

    2024-07-13 21:24:01       17 阅读
  9. centos清空history

    2024-07-13 21:24:01       12 阅读
  10. 宪法学学习笔记(个人向) Part.5

    2024-07-13 21:24:01       18 阅读