Chinaunix首页 | 论坛 | 博客
  • 博客访问: 464062
  • 博文数量: 100
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-21 09:30
文章分类

全部博文(100)

文章存档

2017年(1)

2016年(16)

2015年(83)

我的朋友

分类: 嵌入式

2015-11-20 11:18:04

上次调vga时序都是3年前了,很多概念都记不清了, 故撰写本文, 作为备忘。

一、VGA
首先以标准的XVGA为例:
1024 x 768
XGA eXtended-VGA

参考


一个行周期()内包含a、b、c、d 4个阶段,即同步脉冲(Sync a)、显示后沿(Back porch b)、显示时序段(Display interval c)和显示前沿(Front porch d)。
其中只有a为低电平,有时候会将bcd合起来计算。c为图像有效时间,即分辨率。a、b、d都是消隐间隔。a+b+c+d=e(total time)就是整个行周期的时间。

同样,场周期也有opqr4个参数。
LCD还有一个参数为刷新率,就是屏幕扫描频率,通常为50~60HZ。人眼感应动画的频率至少为24Hz,即帧速为24帧/秒。
对于XVGA@60Hz分辨率:
行时序为      a~d依次为=136 160 1024 24,合计为e=1344
场时序为      o~s依次为=6 29 768 3,合计为e=806
像素时钟 pixclk = 1344 * 806 * 60Hz = 65Mhz。

二、AT070TN92时序
知道了VGA参数的计算方法。
我们来看常见屏幕AT070TN92的参数:
分辨率800x480
行时序:
假设同步脉冲a= 40(最大40)
HS pulse width(thpw) = thb - b = 40
H Blanking(thb) = 46
Horizontal Display Area(thd)= 800
HS Front Porch thfp = 210
One Horizontal Line(th)= 1056
DCLK Frequency(fclk) =  33.3 MHz

这里群创把a+b合起来算作H Blank(thb),对应之前分析的ga时序:
a = 40
b = thb - a = 6
c = thd = 800
d = 210

e = thd = a+b+c+d =1056

同理,假设o = 10
a = 10
b = thb - a = 13
c = thd = 480
d = 22
e = thd = a+b+c+d =525


static struct da8xx_panel A70 = {
    .name = "AT070TN92",
    .width = 800,
    .height = 400,
    .hfp = 210,// 前沿
    .hbp = 6, //后沿
    .hsw = 40, //行同步时间
    .vfp = 22, //场前沿
    .vbp = 13,//场后沿
    .vsw = 10,//场同步
    .pxl_clk = 30000000,//30Mhz
    .invert_pxl_clk = 0,
};

static struct da8xx_panel A70 = {
    .name = "AT070TN92",
    .width = 800,
    .height = 400,
    .hfp = 210,// 前沿
    .hbp = 6, //后沿
    .hsw = 40, //行同步时间
    .vfp = 22, //场前沿
    .vbp = 13,//场后沿
    .vsw = 10,//场同步
    .pxl_clk = 30000000,//30Mhz
    .invert_pxl_clk = 0,
};

三、Linux中的LCD时序
struct fb_videomode {
    const char *name;    /* optional */
    u32 refresh;        /* optional */
    u32 xres;  //c
    u32 yres;    //q
    u32 pixclock;  //像素周期,单位ps
    u32 left_margin;//行后沿b
    u32 right_margin;//行前沿d
    u32 upper_margin;//场后沿p
    u32 lower_margin;//场前沿r
    u32 hsync_len;//行同步a
    u32 vsync_len;//场同步o
    u32 sync;
    u32 vmode;
    u32 flag;
};

四、AM335时序
static struct da8xx_panel H70 = {
    .name = "H70-1024x600",
    .width = 1024,
    .height = 600,
    .hfp = 24,// 前沿
    .hbp = 160, //后沿
    .hsw = 136, //行同步时间
    .vfp = 1, //场前沿
    .vbp = 4,//场后沿
    .vsw = 23,//场同步
    .pxl_clk = 30000000,//30Mhz
    .invert_pxl_clk = 0,
};


高清屏N101GBE(1366x768):
DCLK Frequency              72.6 76.42 80.24 MHz
Vertical Total Time                       (TV) 774 800 1000
Vertical Active Display Period        (TVD) 768 768 768
Vertical Active Blanking Period       (TVB)  32
Horizontal Total Time                   (TH)  1592  
Horizontal Active Display Period     (THD) 1366
Horizontal Active Blanking Period   (THB) 226

N101使用DE模式来定义时序,THB = a+b+d,即行消隐时间。THD = c   。



http://blog.csdn.net/bruce0532/article/details/5861523
阅读(5190) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~