VGA信号详解

最近做了一些关于视频的工作,稍微研究了一下V4L2和硬件上的视频知识,其中包括了VGA、component、PAL等信号。在这里总结一下关于VGA信号波形方面的知识。

    在学习VGA的视频输出的时候,很容易就可以从网上找到相关的引脚定义:

  1. 1        红色视频信号      (Red, 75 ohm, 0.7 V p-p)
    2         绿色视频信号      (Green, 75 ohm, 0.7 V p-p)
    3           蓝色视频信号      (Blue, 75 ohm, 0.7 V p-p)
    4          显示器标识信号#2    (Monitor ID Bit 2)
    5       地线          (Gnd)

    6       红色视频信号地线    (Red Gnd)
    7       绿色视频信号地线    (Green Gnd)
    8       蓝色视频信号地线    (Blue Gnd)
    9       未连接         (No Pin)
    10          同步信号地线      (Sync Gnd)

    11          显示器标识信号#0    (Monitor ID Bit 0)
    12           显示器标识信号#1/SDA  (Monitor ID Bit 1 or SDA)
    13        水平/复合同步信号   (Horizontal Sync or Composite Sync)
    14        垂直同步信号      (Vertical Sync)
    15           显示器标识信号#3/SCL  (Monitor ID Bit 3 or SCL)

    VGA信号详解_第1张图片

    根据上面的定义,可以看出VGA其实就是将我们平常的3基色数据放到了三根模拟信号线中传输。但是我以前错误地认为水平和垂直同步信号是必须的,但是在这次硬件设计的时候发现,一个TI的公板上的VGA只有3基色信号和地,并且在软件调试的时候可以正常的让液晶显示器显示高清画面,所以上网搜索了一下,才发现了VGA的多种同步方式。

    VGA接口根据同步信号的不同可分为:

  1. 3线同步(绿同步)
  2. 4线同步(3基色信号+复合同步信号)
  3. 5线同步(3基色信号+场行同步信号)

   首先我先找到了网上较为详细的一篇英文资料:VGA Signal information,大家可以先看看。其中讲述了绿同步的原理:其实就是在绿色模拟信号中复合了场行同步信号,下面我用真实的示波器输出解释3线同步(绿同步)信号的波形。

实验视频源:开发板输出的1080P-60帧/秒 VGA信号(绿同步),硬件上仅用杜邦线连接三基色信号和地到VGA接口:

VGA信号详解_第2张图片

为了方便观测,开发板输出彩条信号:

VGA信号详解_第3张图片

首先我们从总体的波形上观察:

 VGA信号详解_第4张图片

   从上面的线号波形上看,绿色信号和其他两个信号比不太一样,似乎上面罩这一层“雾”一样的。其实这层“雾”就是叠加在上面的场行同步信号。 

    从一场的信号中,我们可以和显示器上的颜色对应上(这也是我为什么用简单彩条信号的原因,有利于分析):

VGA信号详解_第5张图片


    大家都知道,视频数据的场、行同步信号都是场、行的消隐期发生变化的,所以我们要研究场行同步信号就必须研究消隐期的波形。

下面先看行消隐波形:

VGA信号详解_第6张图片

将行消隐放大后,我们可以清楚地看到行同步信号的脉冲波形:
 
VGA信号详解_第7张图片

再来看看场消隐波形:

VGA信号详解_第8张图片

将场 隐放大后,我们可以清楚地看到场同步信号的脉冲波形(下图较大,若没有显示出来请刷新页面,或者点击图片位置可在新窗口打开):
VGA信号详解_第9张图片
    
    从中我们可以通过波形数出在场消隐期间(VBI)有多少行的数据(以上波形为45行)。在这期间,3基色信号线上可以携带数据,所谓的VBI数据。有兴趣的朋友可以Google一下,它在不同的场合可以有不同的应用。

    从上面的波形采集时显示的时间,我们可以验证我们输出的是1080p的数据:

  1. (场信号周期/行周期)-场消隐期的行数
  2. =(16.7mS/14.8uS)-45=1083
  3. (其中包含了测量误差,主要来源于场周期的测量)

    而对于4线同步方式,也就是将场行同步信号放在了13脚的复合同步信号中;5线同步方式就是把行同步信号放在了 13脚,场同步信号放在了14脚中。
     一般的显示器都可以接受5线同步方式;至于4线同步和3线同步,那就要看显示器硬件方案中是否可以从绿信号或复合同步信号中分离出场行同步信号了,并不是所有显示器都支持。比如我做实验的 LG L179S就支持绿同步,但是NEC LCD192WG就不支持,但是他们都不支持复合同步。 可以通过读取显示器的EDID数据得知显示器是否支持这些同步方式,见下文)。理论上VGA接口只要接上了上面主要的信号线和地,就可以显示了。

与分量视频信号对比
    通常我们 在一些视频设备或高档影碟机等家电上看到有YUV、YcbCr、Y/B-Y/B-Y等标记的接口标识:
VGA信号详解_第10张图片

   这表示的是 分量视频信号(Component Video)也叫色差信号通常采用YPbPr 和YCbCr两种标识,前者表示逐行扫描色差输出,后者表示隔行扫描色差输出。 其实3线同步就是分量视频的逐行RGB形式,它和 YPbPr之间的差别仅在于颜色空间上,信号的同步方法是一致的。口说无凭,下面是分量视频显示同一彩条视频的波形

整体波形,由于颜色空间不同,三个信号线所携带的数据值肯定就不同了:
VGA信号详解_第11张图片

行消隐波形:
VGA信号详解_第12张图片

场消隐波形:
VGA信号详解_第13张图片


  
显示器信息(EDID)知识及实验

    介绍完了主要的信号线,下面简单介绍下剩下的所谓“显示器标识信号”。这个是可选的,不接也是可以显示的,但是不用这些信号就无法获取当前显示器的信息,无法实现比较高级的管理功能。这些信号线遵循 VESA(Video Electronics Standards Association:视频电子标准协会)的 DDC( Display Data Channel:显示数据通道 相关标准。  
   你可以去VESA 注册下就可以下载。http://www.hardwarebook.info/VGA_(VESA_DDC) 总结得也很不错可以参考下(如果你打不开,这里有转载的)。前先看了这些资料后再阅读下面的内容。

    相关引脚总结如下:
  1. 4      显示器标识信号#2    (Monitor ID Bit 2)
  2. 11      显示器标识信号#0    (Monitor ID Bit 0)  可能作为彩色与黑白的标志(color=GND,Mono=NC)
  3. 12       显示器标识信号#1/SDA  (Monitor ID Bit 1 or SDA)
  4. 15      显示器标识信号#3/SCL  (Monitor ID Bit 3 or SCL)
    这个I2C总线就是我们平时PC上获取显示器信息的方法,其实也就是PC通过I2C总线获取了保存在显示器内部EEPROM的EDID信息。在Linux下可以通过“read-edid”工具来获取当前系统中存在的显示设备的EDID信息,但是查不到裸数据。如果是Nvidia的显卡,Linux下可以通过专用的Nvidia X Server Setting 获取EDID的裸数据bin文件:

VGA信号详解_第14张图片


    嵌入式Linux下可以通过I2C总线获取的一个显示器的EDID数据,我用开发板做了一个实验,过程如下:

   实验方法:用一个嵌入式的开发板(包含引出的I2C信号脚),连接一个显示器的VGA接口的12、15和地。在开发板端通过I2C工具“i2ctool”直接读取总线上存在的设备的所有寄存器信息。
   实验使用的显示器LG L179S
   
   首先探测I2C总线上的设备(I2C-3 总线仅连接了VGA的I2C总线)

  1. root@evm:~# i2cdetect 3

  2. WARNING! This program can confuse your I2C bus, cause data loss and worse!
  3. I will probe file /dev/i2c-3.
  4. I will probe address range 0x03-0x77.
  5. Continue? [Y/n]
  6. 0 1 2 3 4 5 6 7 8 9 a b c d e f
  7. 00: -- -- -- -- -- -- -- -- -- -- -- -- --
  8. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  9. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  10. 30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
  11. 40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- --
  12. 50: 50 51 52 53 54 55 56 57 -- 59 -- -- -- -- -- --
  13. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  14. 70: -- -- -- -- -- -- -- --
 从这个结果上我们可以看出:在这个总线上有多个地址是有效的。对这些地址的读取如下:

  1. root@evm:~# i2cdump 3 0x37
  2. No size specified (using byte-data access)
  3. WARNING! This program can confuse your I2C bus, cause data loss and worse!
  4. I will probe file /dev/i2c-3, address 0x37, mode byte
  5. Continue? [Y/n]
  6. 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
  7. 00: f4 33 1d bf 7f 31 27 1b 20 01 ff be fc f0 96 51 ?3???1'? ?.????Q
  8. 10: 10 dc bf 07 e4 ac 29 d1 5e 54 bb 24 b9 7e 8f de ??????)?^T?$?~??
  9. 20: 8b 8e 7b 5e 15 8e 1d 15 ac 91 bf 1f 95 d6 c3 61 ??{^???????????a
  10. 30: 26 31 d0 ed af 2f 66 5e fd ff 3d ef c9 fd 73 2e &1???/f^?.=???s.
  11. 40: b6 65 e9 37 8f cd 45 ef 97 4d 6c 73 3e db 3f 57 ?e?7??E??Mls>??W
  12. 50: f7 ad e1 74 5f 18 95 1f 77 d5 9d b9 35 b7 97 44 ???t_???w???5??D
  13. 60: ac d5 d2 75 4c bd 96 1a 65 b9 57 f7 6a 6a 6a 6a ???uL???e?W?jjjj
  14. 70: 6a 6a 6a 6a 6a 6a 6a 6a 6a 6a 79 79 79 79 79 79 jjjjjjjjjjyyyyyy
  15. 80: 79 79 81 81 81 81 82 83 84 85 7e 7f 80 72 74 75 yy????????~??rtu
  16. 90: 76 77 78 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 vwx\]^_`abcdefgh
  17. a0: 69 3d 90 91 93 95 96 97 98 99 9a 9b 9c 9d 9e 9f i=??????????????
  18. b0: a0 a1 60 62 63 64 65 66 67 68 3d d1 5e 54 bb 24 ??`bcdefgh=?^T?$
  19. c0: 7e de 8b 8e 7b 5e 15 8e 1d 15 ac 87 91 bb bf 1f ~???{^??????????
  20. d0: d6 c3 3d 61 26 31 d0 ed af 2f 5e fd ff 3d ef c9 ??=a&1???/^?.=??
  21. e0: fd fe 73 2e b6 65 e9 37 bd cd ef 97 b5 bf 6c 73 ??s.?e?7??????ls
  22. f0: 3e 67 db 3f 57 f7 ad e1 74 18 1f 77 d5 2c 9d 1f >g??W???t??w?,??
  23. root@evm:~# i2cdump 3 0x49
  24. No size specified (using byte-data access)
  25. WARNING! This program can confuse your I2C bus, cause data loss and worse!
  26. I will probe file /dev/i2c-3, address 0x49, mode byte
  27. Continue? [Y/n]
  28. 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
  29. 00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  30. 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  31. 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  32. 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  33. 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  34. 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  35. 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  36. 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  37. 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  38. 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  39. a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  40. b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  41. c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  42. d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  43. e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  44. f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
  45. root@evm:~# i2cdump 3 0x50
  46. No size specified (using byte-data access)
  47. WARNING! This program can confuse your I2C bus, cause data loss and worse!
  48. I will probe file /dev/i2c-3, address 0x50, mode byte
  49. Continue? [Y/n]
  50. 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
  51. 00: 00 ff ff ff ff ff ff 00 1e 6d 41 44 f1 da 05 00 ........?mAD???.
  52. 10: 02 11 01 03 6a 22 1b 78 ea 2e e5 a4 57 4a 9c 25 ????j"?x?.??WJ?%
  53. 20: 11 50 54 a5 6b 80 31 4f 45 4f 61 4f 81 80 01 01 ?PT?k?1OEOaO????
  54. 30: 01 01 01 01 01 01 30 2a 00 98 51 00 2a 40 30 70 ??????0*.?Q.*@0p
  55. 40: 13 00 52 0e 11 00 00 1e 00 00 00 fd 00 38 4b 1e ?.R??..?...?.8K?
  56. 50: 53 0e 00 0a 20 20 20 20 20 20 00 00 00 fc 00 4c S?.? ...?.L
  57. 60: 31 37 31 39 53 0a 20 20 20 20 20 20 00 00 00 fc 1719S? ...?
  58. 70: 00 20 0a 20 20 20 20 20 20 20 20 20 20 20 00 66 . ? i2c i2c-3: sendbytes: NAK bailout.
  59. .f
  60. 80: XX i2c i2c-3: sendbytes: NAK bailout.
  61. XX i2c i2c-3: sendbytes: NAK bailout.
  62. ......

地址0x51 0x52 0x53 0x54 0x55 0x56 0x57的数据与0x50一致,地址0x59的数据与0x49一致。
    设备地址0x37的数据是什么暂不明确,我猜测是显示器用于保存自身显示配置参数用的EEPROM,但是0x50~0x57的数据就是EDID了。
    至于为什么EDID的EEPROM地址在0x50~ 0x57,我没有在标准(《 VESA E-EDID EEPROM STANDARD 》)中查到,这个应该是和显示器所用的专用EEPROM指定的I2C地址相关的。我下载了几个 EDID专用EEPROM芯片的数据手册(微芯的24LC41A、24LC22A和罗姆的BR24C21),看到其中设备地址定义一般是:

  1. 以下是24LC41A的芯片手册信息:
  2. VGA信号详解_第15张图片

  3. B0, B1, and B2 are zeros for DDC Monitor Port. 
  4. B0、B1和B2对于DDC监视器端都是0. 
  5. B1 and B2 are don’t care bits for the Microcontroller Access Port,
  6. B1和B2对于微处理器访问端(也就是我们通过I2C接口访问的端口)是忽略的。(也就是他们0或1都是一样的)
  7. and B0 is used to select which of the two 256 word blocks of memory are to be accessed.
  8. B0使用于选择访问两个256字块中的一个。
    从上面看来,这款显示器的EEPROM的两个256B的信息是一样的(可能有两个,或许只有一个256B),访问地址从0x50到0x57其实可能访问的就是同一片区域而已。


   对照详细的EDID定义,下面我简单分析一下这些数据:

  1. 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00: 00 ff ff ff ff ff ff 00 1e 6d 41 44 f1 da 05 00 ........?mAD???.
    10: 02 11 01 03 6a 22 1b 78 ea 2e e5 a4 57 4a 9c 25 ????j"?x?.??WJ?%
    20: 11 50 54 a5 6b 80 31 4f 45 4f 61 4f 81 80 01 01 ?PT?k?1OEOaO????
    30: 01 01 01 01 01 01 30 2a 00 98 51 00 2a 40 30 70 ??????0*.?Q.*@0p
    40: 13 00 52 0e 11 00 00 1e 00 00 00 fd 00 38 4b 1e ?.R??..?...?.8K?
    50: 53 0e 00 0a 20 20 20 20 20 20 00 00 00 fc 00 4c S?.? ...?.L
    60: 31 37 31 39 53 0a 20 20 20 20 20 20 00 00 00 fc 1719S? ...?
    70: 00 20 0a 20 20 20 20 20 20 20 20 20 20 20 00 66 . ?

    位元组序列
    00-19: 标头资讯
          00–07: 标头资讯"00h FFh FFh FFh FFh FFh FFh 00h"
          08–09: 制造商ID。这个识别码是经由微软来分配。
                   "00001=A”; “00010=B”; ... “11010=Z”。第7位元(位址08h) 是0, 第一个字元(字母)是位于位元6 → 2 (位址08h), 第二个字元(字母)是位于位元1和0 (位址08h)和位元7 → 5(位址09h),第三个字元(字母)是位于位元4 → 0 (位址09h)。

           1e 6d ---- 0001  1110  0110  1101    GSM                      

          10–11: 生产ID码(储存方式是LSB开始)。由制造商分配。41 44

          12–15: 32位元序号。非必需格式。通常储存由LSB 优先。为了去维持和之前需求的相容性,假如一个ASCII序号在详细时脉部分被提供,这个栏位应该设定至少一个位元组不是零。f1 da 05 00

          16: 制造周。这个由制造商改变。法一是去计算一月的1-7 当做第一周,一月8-15 当做第二周并且以此类推。一些计算是以星期几(星期日-星期六)为基础。有效范围是1-54。02

          17: 制造年份。加上1990才是确实的年份。11---2001

          18: EDID 版本号码。"01h"
          19: EDID 修订版号码。"03h" 01 03


    20-24: 基本显示参数  6a 22 1b 78 ea
          20: 影像输入定义
              位元7: 0=类比, 1=数位
                假如位元7 是数位:位元0: 1=相容DFP 1.x
                假如位元7 是类比:位元6-5: 影像等级
                   00=0.7, 0.3,01=0.714, 0.286, 10=1, 0.4 11=0.7, 0

                   bit 4: 白黑设定
                   bit 3: 分离同步
                   bit 2: 合成同步
                   bit 1: 绿色同步
                   bit 0: 锯齿垂直同步

    6a------01101010  类比 影像等级:0.7, 0  彩色 支持分离同步  不支持合成同步 支持绿同步 不支持锯齿垂直同步


         21: 最大水平图形尺寸(单位为公分)。22 
         22: 最大垂直图形尺寸(单位为公分)。1b
         23: 显示伽玛。除以100再加1才是真正的值。0x78 / 100 = 1.2 --> 2.2
         24: 电源管理和支援的特征:
              bit 7: 待命
              bit 6: 暂停
              bit 5: 活跃关闭/低电源
              bit 4-3: 显示型态
                   00=黑白, 01=RGB 色彩, 10=非RGB 多色彩, 11=未定义
              bit 2: 标准色彩空间
              bit 1: 偏好时脉模式
              bit 0: 预设GTF 支援

    ea------11101010 支持待命、暂停、活跃关闭/低电源,RGB 色彩 支持偏好时脉模式


    25-34: 色度调节    2e e5 a4 57 4a 9c 25 11 50 54
         25: 低有效位关于红色X1X0 (位元7-6), 红色Y1Y0 (位元5-4), 绿色X1X0 (位元3-2),绿色Y1Y0 (位元1-0)。
         26: 低有效位关于蓝色X1X0 (位元7-6), 蓝色Y1Y0 (位元5-4), 白色X1X0 (位元3-2),白色Y1Y0 (位元1-0)。
         27–34: 高有效位关于红色X9-2, 红色Y9-2, 绿色X9-2, 绿色Y9-2, 蓝色X9-2, 蓝色Y9-2, 白色X9-2, 白色Y9-2。
         正确值是介于0.000和0.999,但编码值是介于000h和3FFh。

     


    35: 建立时脉 I a5
         位元7-0: 720×400@70 Hz, 720×400@88 Hz, 640×480@60 Hz, 640×480@67 Hz,640×480@72 Hz, 640×480@75 Hz, 800×600@56 Hz, 800×600@60 Hz
    36: 建立时脉II 6b
         位元7-0: 800×600@72 Hz, 800×600@75 Hz, 832×624@75 Hz, 1024×768@87 Hz (交错的),1024×768@60 Hz, 1024×768@70 Hz, 1024×768@75 Hz, 1280×1024@75 Hz
    37: 制造商保留的时脉  80
         00h 是无
         位元7: 1152x870 @ 75 Hz (麦金塔II, 苹果)
    38–53: 标准时脉识别。
         第一个位元组
         水平结果。加上31,再乘上8, 得到正确值。

         第二个位元组
         位元7-6: 外观比例。正确的垂直结果依赖水平结果。
             00=16:10, 01=4:3, 10=5:4, 11=16:9 (00=1:1 在v1.3之前)
         位元5-0: 垂直频率。加上60 去得到正确的值。

    实例:31 4f ---(0x31+31)*8 = 640  4:3  75Hz


    54–71: 详细时脉描述 1


    54–55: 像素时脉(单位为10 kHz) 或0 (55 MSB 54 LSB)  30

     实例:2a -----> 0x2a30 = 10800*10KHz=108MHz

    假如像素时脉并非无效:
    56: 水平活跃(单位为像素)
    57: 水平空白(单位为像素)
    58: 水平活跃高(4 高位元)
         水平空白高(4 低位元)
    59: 垂直活跃(单位为线)
    60: 垂直空白(单位为线)
    61: 垂直活跃在高有效位(4 高位元)
         垂直空白在高有效位(4 低位元)
    62: 水平同步偏移量(单位为像素)
    63: 水平同步脉冲宽度(单位为像素)
    64: 垂直同步偏移量(单位为线) (4 高位元)
         垂直同步脉冲宽度(单位为线) (4 低位元)
    65: 高有效位关于水平同步偏移量(位元7-6)
         高有效位关于水平同步脉冲宽度(位元5-4)
         高有效位关于垂直同步偏移量(位元3-2)
         高有效位关于垂直同步脉冲宽度(位元1-0)
    66: 水平图像尺寸(单位为公厘)
    67: 垂直图像尺寸(单位为公厘)
    68: 高有效位关于水平图像尺寸(4 高位元)
         高有效位关于垂直图像尺寸(4 低位元)
    69: 水平边界线(单位为像素且只表示一边)
    70: 垂直边界线(单位为线且只表示一边)
    71: 交错与否(位元7)
         立体与否(位元6-5) ("00" 表示否)
         分离同步与否(位元4-3)
         垂直同步正与否(位元2)
         水平同步正与否(位元1)
         立体模式(位元0) (若是6-5 是00 则没使用)


    假如像素时脉是无效:
    56: 0
    57: 区块型态
         FFh=监视器序号, FEh=ASCII 字串, FDh=监视器变动限制, FCh=监视器名称,
         FBh=色彩点资料, FAh, 标准时脉资料, F9h=现在未定义, 0Fh=由制造商定义
    58: 0
    59–71: 区块内容描述符。
         假如区块型态是FFh, FEh, 或FCh, 整个区域是字串。
         假如区块型态是FDh:
    59–63:
         最小垂直频率, 最大垂直频率, 
         最小水平频率(单位为kHz), 最大水平频率(单位为kHz), 像素时脉 (单位为MHz (正确值需乘上10))
    64–65: 第二GTF 触发器
         假如编码值是000A, 位元组59-63 是使用。假如编码值是0200,位元组67–71 是使用。
    66: 开始水平频率(单位为kHz)。乘上2得到实际值。
    67: C。除以2 得到实际值。
    68-69: M (以LSB优先储存)。
    70: K
    71: J。除以2 得到实际值。


    假如区块型态是FBh:
    59: W 索引0。假如设定成0, 位元组60-63 是没使用。假如设定成1, 61–63 是分配到白点索引#1
    64: W 索引1。假如设定成0, 位元组65-68 是没使用。假如设定成2, 65–68 是分配到白点索引#2
         白点索引结构:
         第一个位元
              位元3-2: 低有效位关于白X (位元3-2), 白Y (位元1-0)
         第二到第三位元组: 高有效位关于白X, 白Y。
         第四位元组: 伽玛。除以100, 再加上1得到实际值。
         解码白X 和白Y, 看位元组25-34。


    假如区块型态是FAh:
    59–70: 标准时脉识别。2 位元组对于每一个纪录。
    关于结构细节, 看位元组38-53。


    72–89: 详细时脉描述2 或监视器描述符
    90–107: 详细时脉描述3 或监视器描述符
    108–125: 详细时脉描述4 或监视器描述符


    126: 额外的旗标。额外的数值采用这个区块。在EDID 1.3之前, 这是被忽略的, 并且应该被设成0。 0x00
    127: 校验和- 这个位元组应该被程式化使得所有128 位元组的加总等于00h.  0x66

-------------------------------------------------------------------------------------------
转自: http://blog.chinaunix.net/uid-20543672-id-3151106.html
参考资料:
VGA接口时序波形
VGA显示原理与VGA时序实现

你可能感兴趣的:(video,display,technologc)