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总体系统框图

四.板级验证

 

 

 

 

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/375520.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法力扣刷题记录 三十七【二叉树层序遍历】

前言 二叉树递归遍历和二叉树迭代遍历 实现的前中后序遍历都归类深度搜索; 广度搜索如何实现?一层结束,再继续下一层搜索:层序遍历。 一、题目阅读 【102.二叉树的层序遍历】 给你二叉树的根节点 root ,返回其节点值…

服务攻防——中间件Jboss

文章目录 一、Jboss简介二、Jboss渗透2.1 JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)2.2 JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)2.3 JBossMQ JMS 反序列化漏洞(CVE-2017-7504)2.4 Adminis…

【逆向基础】十、工具分享之DIE(Detect It Easy)

一、简介 DIE(Detect It Easy)是一款可以轻松检测PE文件的程序;其主要作用是查壳,并将pe文件的内容解析出来,包括PE文件中包含的导入函数、导出函数的名称及地址,入口函数地址等,是技术人员分析…

如何在小红书上面有效地种草?

文末领取小红书电商开店运营教程! 小红书是一个以内容分享为主的社交平台,大家喜欢在这里分享自己的生活体验和心得,其中就包括各种产品的使用感受。 那么我们要想在小红书上有效地种草,首先就需要了解并掌握小红书的种草文化。 …

Elasticsearch详细介绍

B站对应视频: Elasticsearch01-01.为什么学习elasticsearch_哔哩哔哩_bilibili 大多数日常项目,搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的,存在很多问题。 首先,查询效率较低。 由于数据…

libcoap3对接华为云平台

文章目录 前言一、平台注册二、引入源码库1.libcoap仓库编译2.分析网络报文3.案例代码4.编译&运行 总结 前言 通过libcoap3开源代码库对接华为云平台,本文章将讨论加密与不加密的方式对接华为云平台。 一、平台注册 首先,你需要在华为云平台上创建…

QT之嵌入外部第三方软件到本窗体中

一、前言 使用QT开发,有时需要调用一些外部程序,但是单独打开一个外部窗口有的场合很不合适,最好是嵌入到开发的QT程序界面中。还有就是自己开发的n个程序,一个主程序托n个子程序,为了方便管理将各个程序独立&#xf…

安全防御---防火墙实验1

安全防御—防火墙实验1 一、实验拓扑与要求 要求: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 …

华为手机联系人不见了怎么恢复?3个解决方案

华为手机联系人列表就像是我们精心编织的社交网络之网。然而,有时,这张网可能会因为各种原因而意外破损,联系人信息消失得无影无踪,让我们陷入“人脉孤岛”的困境。华为手机联系人不见了怎么恢复?别担心,我…

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播,广播mac地址 mac帧 如何取用…

【面试八股总结】线程基本概念,线程、进程和协程区别,线程实现

一、什么是线程? 线程是“轻量级进程”,是进程中的⼀个实体,是程序执⾏的最小单元,也是被系统独立调度和分配的基本单位。 线程是进程当中的⼀条执行流程,同⼀个进程内多个线程之间可以共享代码段、数据段、打开的文件…

解决:Flink向kafka写数据使用Producer精准一次(EXACTLY_ONCE)异常

在使用flink向kafka写入数据报错:Caused by: org.apache.kafka.common.KafkaException: Unexpected error in InitProducerIdResponse; The transaction timeout is larger than the maximum value allowed by the broker (as configured by transaction.max.timeou…

【C++】哈希表的模拟实现及 unordered_set 和 unorderded_map 的封装

目录 前言一、哈希表的模拟实现1.1 哈希表的改造1.1.1 模板参数列表的改造1.1.2 增加迭代器操作 1.2 哈希表的模拟实现1.2.1 哈希表中仿函数的实现1.2.2 哈希表中节点类的实现1.2.3 哈希表中迭代器类的实现1.2.4 哈希表中构造函数、析构函数和 Clear() 函数的实现1.2.5 哈希表中…

[笔试训练](三十六)106:提取不重复的整数107:哈夫曼编码108:abb

目录 106:提取不重复的整数 107:哈夫曼编码 108:abb 106:提取不重复的整数 题目链接:提取不重复的整数_牛客题霸_牛客网 (nowcoder.com) 题目: ​ 题解: #include <iostream> #include <string> using namespace std; int n0; int cnt[10]; int ret0; int mai…

【pytorch18】Logistic Regression

回忆线性回归 for continuous:y xwbfor probability output:yσ(xwb) σ:sigmoid or logistic 线性回归是简单的线性模型&#xff0c;输入是x&#xff0c;网络参数是w和b&#xff0c;输出是连续的y的值 如何把它转化为分类问题?加了sigmoid函数&#xff0c;输出的值不再是…

Python精神病算法和自我认知异类数学模型

&#x1f3af;要点 &#x1f3af;空间不确定性和动态相互作用自我认知异类模型 | &#x1f3af;精神病神经元算法推理 | &#x1f3af;集体信念催化个人行动力数学模型 | &#x1f3af;物种基因进化关系网络算法 | &#x1f3af;电路噪声低功耗容错解码算法 &#x1f4dc;和-…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-55循环神经网络的从零开始实现和简洁实现

55循环神经网络的实现 1.从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_ste…

C语言中的数组:掌握数据的有序集合【一维数组,二维数组,字符串数组,直方图打印,计算全排列,字符数组常用函数】

目录 C语言中的数组&#xff1a;掌握数据的有序集合【一维数组&#xff0c;二维数组&#xff0c;字符串数组】一维数组一维数组的创建数组的七种初始化完全初始化&#xff1a;部分初始化&#xff1a;字符数组的初始化&#xff1a;自动初始化为0&#xff1a;使用memset函数初始化…

『大模型笔记』GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布

GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 文章目录 一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布1. 评估和结果2. 研究见解和未来方向二. 参考文献一. GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布 下载 GraphRAG今年早些时候,我们介绍…

博客建站3 - 购买域名

1. 本网站的系统架构2. 选择域名 2.1. 确定域名关键词2.2. 保持简洁易记2.3. 检查域名可用性 3. 域名注册商 3.1. 海外的提供商 3.1.1. GoDaddy3.1.2. Namecheap3.1.3. Google Domains 3.2. 国内的提供商 3.2.1. 阿里云&#xff08;Alibaba Cloud&#xff09;3.2.2. 腾讯云&…