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其实就是将我们平常的3基色数据放到了三根模拟信号线中传输。但是我以前错误地认为水平和垂直同步信号是必须的,但是在这次硬件设计的时候发现,一个TI的公板上的VGA只有3基色信号和地,并且在软件调试的时候可以正常的让液晶显示器显示高清画面,所以上网搜索了一下,才发现了VGA的多种同步方式。
VGA接口根据同步信号的不同可分为:
首先我先找到了网上较为详细的一篇英文资料:VGA Signal information,大家可以先看看。其中讲述了绿同步的原理:其实就是在绿色模拟信号中复合了场行同步信号,下面我用真实的示波器输出解释3线同步(绿同步)信号的波形。
实验视频源:开发板输出的1080P-60帧/秒 VGA信号(绿同步),硬件上仅用杜邦线连接三基色信号和地到VGA接口:
为了方便观测,开发板输出彩条信号:
首先我们从总体的波形上观察:
从上面的线号波形上看,绿色信号和其他两个信号比不太一样,似乎上面罩这一层“雾”一样的。其实这层“雾”就是叠加在上面的场行同步信号。
从一场的信号中,我们可以和显示器上的颜色对应上(这也是我为什么用简单彩条信号的原因,有利于分析):
大家都知道,视频数据的场、行同步信号都是场、行的消隐期发生变化的,所以我们要研究场行同步信号就必须研究消隐期的波形。
下面先看行消隐波形:
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