VBP/VFP/HBP/HFP

2023-10-18 08:30
文章标签 vfp vbp hbp hfp

本文主要是介绍VBP/VFP/HBP/HFP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在RGB模式中,LCD数据的扫描是以行为单位的。HSYNC是水平同步信号。PCLK是象素时钟。ENABLE是数据使能信号,当它为高时,在PCLK的上升沿输出有效数据。P_DATA是输出的数据。
 水平同步信号的上升沿到ENABLE的上升沿的间隔称为HBP。把ENABLE的下降沿到水平同步信号的下升沿的间隔称为HFP。把水平同步信号的低电平(非有效电平)持续时间称为HSW。
 HSW存在的必要性:水平同步信号为低电平有效。在水平同步信号有效时,需要等待HBP的时间,才从数据线取数。由于水平同步信号的有效电平持续时间通常比无效电平长,因此占空比不是50%。无效电平短些比较好。
 HBP和HFP存在的必要性:从道理上说,LCD使用矩阵寻址这两个阶段完全可以没有。但是考虑到从前CRT电子枪行扫描时,需要一个返回时间,而且目前的制式中,在有效信号的两端分别加入了消隐时间。就是为了做到一致,这二者才出来的。
 

====================================================================
第一次调试lcd驱动的话是不是对下面的结构有点陌生,不知道那些值是如何得来的,当然我就属于其中的一个

点击(此处)折叠或打开

  1. static struct s3cfb_lcd lte480wv = {
  2.     .width    = 1024,//800,
  3.     .height    = 600,//480,
  4.     .bpp    = 24,//24,//32,
  5.     .freq    = 45,//45,//60

  6.     .timing = {  //这里主要会影响图像在LCD上显示的位置,偏移啥的
  7.         .h_fp    = 160,//210,//8,
  8.         .h_bp    = 160,//46,//13,
  9.         .h_sw    = 16,    // 3
  10.         .v_fp    = 12,//12,//15,//22, liao
  11.         .v_fpe    = 0,/*1,//0,*/
  12.         .v_bp    = 23,//22, liao
  13.         .v_bpe    = 0,/*1,//0,*/
  14.         .v_sw    = 2,//
  15.     },

  16.     .polarity = {  //这几个参数挺重要的,判断你极性是否要反转(0--normal,1---inverted)
  17.         .rise_vclk    = 0,
  18.         .inv_hsync    = 1,
  19.         .inv_vsync    = 1,
  20.         .inv_vden    = 0,
  21.     },
  22. };
好吧,言归正传,首先有必要理解几个定义:

一般TFTLCD时序图如下所示

1

我们先来理解下面引脚有寄存器中相关参数的意义吧

 

外部引脚信号:

 

VSYNC: 帧同步信号,表示扫描1帧的开始,一帧也就是LCD显示的一个画面。

HSYNC: 行同步信号,表示扫描1行的开始。

VDEN数据使能信号。

VD[23:0] : LCD像素数据输出端口。

VCLK像素时钟信号。

 

寄存器参数:

 

VSPW帧同步信号的脉宽,单位为1行(Line)的时间。

VFPD: 帧同步信号的前肩,单位为1行(Line)的时间。

VBPD: 帧同步信号的后肩,单位为1行(Line)的时间。

LINEVAL 帧显示尺寸-1,即屏行宽-1,对于800*480分配率的LCD屏,那么LINEVAL=480-1=479,请记住,是屏行宽,也就是LCD屏显示一帧数据所需要的行的数目。

 

HBPD行同步信号的后肩,单位为1VCLK的时间。

HFPD行同步信号的前肩,单位为1VCLK的时间。

HSPW行同步信号的脉宽,单位为1VCLK的时间。

HOZVAL行显示尺寸-1,即屏列宽-1,对于800*480分配率的LCD屏,那么HOZVAL=800-1=799,请记住,是屏列宽,也就是LCD屏显示一行数据所需要的像素(pixel)的数目。

 

由图1可知:

扫描一帧所需的时间:

=((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))个行时间。

 

扫描一行所所需的时间:

= ((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))VCLK时间。

 

而一个VCLK时间由LCD寄存器VIDCON0内的CLKVAL决定:

=HCLK/(CLKVAL+1)  ------>这个公式是S3C2443LCD控制器的,其他CPU的不一定一样

 

因此扫描一帧所需的时间:

T=[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]*[(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* HCLK/ (CLKVAL+1)

 

即帧频率为:1/T

 

1.首先来判断 HSYNC,VSYNC,VCLK, VDEN信号是否需要反转

 

这个其实还挺好判断的,主要就是通过你主控的介绍lcd的时序图,在结合你屏厂的spec文档的时序图就可以完全判断出来了

先看LCD控制器默认情况下送出来的TFT LCD屏的时序图:

再来看屏厂的提供的时序图

看上面的介绍应该知道需要反转HSYNC,VSYNC,VCLK信号输出,这样才能输出满足lcd所需要的时序图

 

再来看看timing这个结构体如何配置,如果提供下面这个参数就很好确定相关的数值了

 

h_fp  = (horizontal total time)- 1024

f_sw  =  (horizontal total time)- 1024 - h_fp    

这篇关于VBP/VFP/HBP/HFP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231420

相关文章

btstack协议栈实战篇--HFP HF - Hands-Free

btstack协议栈---总目录_bt stack是什么-CSDN博客 目录  1.Main Application Setup 2.hci_packet_handler 3.hfp_hf_packet_handler 4.log信息         这个HFP免提示例演示了如何从远程HFP音频网关(AG),并且如果定义了HAVE BTSTACK STDIN,如何控制HFP A

【ARMv8/ARMv9 硬件加速系列 1 -- SVE | NEON | SIMD | VFP | MVE | MPE 基础介绍】

文章目录 ARM 扩展功能介绍VFP (Vector Floating Point)SIMD (Single Instruction, Multiple Data)NEONSVE (Scalable Vector Extension)SME (Scalable Matrix Extension)CME (Compute Matrix Engine)MVE (M-profile Vector

error: xxx.elf uses VFP register arguments

在根据https://wiki.analog.com/resources/fpga/xilinx/kc705/adv7511 的例程进行ZC702 HDMI核的构建和测试(汉语例程参考http://blog.csdn.net/rzjmpb/article/details/50212875#reply)时在编译时遇到一个和硬浮点有关的bug: 解决方法: 1.右键单击工程->prop

【NEON 和 VFP 编程】NEON通用算术指令

本节包括以下小节: • VABA{L} 和 VABD{L} 向量差值绝对值累加和差值绝对值。 • V{Q}ABS 和 V{Q}NEG 向量绝对值和求反。 • V{Q}ADD、VADDL、VADDW、V{Q}SUB、VSUBL 和 VSUBW 向量加法和减法。 • V{R}ADDHN 和 V{R}SUBHN 选择高半部分的向量加法和选择高半部分的向量减法。 • V{R}HADD 和

【NEON 和 VFP 编程】NEON移位指令

本节包括以下小节: • VSHL、VQSHL、VQSHLU 和 VSHLL(按立即数) 按立即值左移。 • V{Q}{R}SHL(按有符号变量) 按有符号变量左移。 • V{R}SHR{N}、V{R}SRA(按立即数) 按立即值右移。 • VQ{R}SHR{U}N(按立即数) 按立即值右移并进行饱和。 • VSLI 和 VSRI 左移并插入,右移并插入。 一、VSHL、VQS

【NEON 和 VFP 编程】NEON通用数据处理指令

本节包括以下小节: • VCVT 向量在定点数或整数与浮点数之间转换。 • VDUP 将标量复制到向量的所有向量线。 • VEXT 提取。 • VMOV、VMVN(立即数) 移动和求反移动(立即数)。 • VMOVL、V{Q}MOVN、VQMOVUN 移动(寄存器)。 • VREV 反转向量中的元素。 • VSWP 交换向量。 • VTBL、VTBX 向量表查找。

【NEON 和 VFP 编程】NEON 逻辑运算和比较运算

这节内容包括: • VAND、VBIC、VEOR、VORN 和 VORR(寄存器) 按位与、位清除、异或、或非以及或(寄存器)。 • VBIC 和 VORR(立即数) 按位位清除和或(立即数)。 •VBIF、VBIT 和 VBSL 为 False 时按位插入,为 True 时按位插入以及按位选择。 • VMOV、VMVN(寄存器) 移动和求反移动。 • VACGE 和 VACGT

【NEON 和 VFP 编程】NEON 和 VFP 共享的指令

NEON 和 VFP 共享的指令包括以下内容: 1.VLDR 和 VSTR 扩展寄存器加载和存储。 2.VLDM、VSTM、VPOP 和 VPUSH 扩展寄存器加载多个和存储多个。 3.VMOV(在两个 ARM 寄存器和一个扩展寄存器之间) 在两个 ARM 寄存器和一个 64 位扩展寄存器之间传送内容。 4.VMOV(在一个 ARM 寄存器和一个 NEON 标量之间) 在一个 AR

【NEON 和 VFP 编程】通用信息

为避免重复,下面列出了许多指令共有的一些信息。 • 浮点异常 • 体系机构的版本 • NEON 和 VFP 数据类型 • NEON 中的正常指令、长指令、宽指令、窄指令和饱和指令 • NEON 标量 • 扩展记号 • {0,1} 上的多项式算法 • VFP 协处理器 • VFP 寄存器 一、浮点异常 在会导致浮点异常的那些指令的描述中,会列出相应的异常。 二、体系机构的版本

【NEON 和 VFP 编程】扩展寄存器组

NEON 是适用于 ARM Cortex-A 系列处理器的一种128位 SIMD(Single Instruction, Multiple Data, 单指令、多数据)扩展结构。 VFP 代表用于矢量运算的矢量浮点架构。迄今为止,VFP 主要有三个版本: VFPv1 已废弃; VFPv2 是对 ARMv5TE、ARMv5TEJ 和 ARMv6 架构中 ARM 指令集的可选扩展; VFPv3