3、VGA 转 HDMI:数模转换芯片(如 CH7101B)电路设计与 EDID 模拟

说实话,VGA 转 HDMI 这个需求,在工程里太常见了。

很多老设备、工控机、投影仪,还在用 VGA 接口。但现在的显示器、电视,基本只认 HDMI。你总不能让人家把设备换了吧?所以,我们就得用一颗数模转换芯片,把 VGA 的模拟信号,转成 HDMI 的数字信号。

今天我就拿 CH7101B 这颗芯片,跟你聊聊这个转换过程。我去年帮一个客户做工业显示器改造,用的就是这颗料,整体表现很稳。

3.1 为什么需要数模转换芯片?

VGA 传输的是模拟信号,R、G、B 三路模拟电压,加上行场同步。HDMI 呢?它是纯数字的,TMDS 差分信号,还带音频和加密。

你想想看,这两者之间,差了一个时代。所以不能直接拿根线怼上去,必须经过一颗转换芯片。

这颗芯片要干三件事:

  • 采样:把模拟的 RGB 信号,用 ADC 转成数字 RGB。
  • 编码:把数字 RGB 和同步信号,打包成 HDMI 的 TMDS 格式。
  • 模拟 EDID:让电脑以为你接了一台正常的显示器。

核心要点:VGA 转 HDMI 的本质,是「模拟采样 + 数字编码 + 协议伪装」。缺一不可。

3.2 CH7101B 芯片简介

CH7101B 是南京沁恒(WCH)推出的一颗专用芯片。我选它,主要是因为它便宜、好买、外围电路简单。

它的主要特性:

  • 支持 VGA 输入,分辨率最高 1080p@60Hz
  • 内置 ADC,无需外部采样芯片
  • 输出 HDMI 1.4,支持 3D 和深色
  • 内置 EDID 存储器,可外部烧写
  • QFN-32 封装,适合小体积设计
参数
输入接口 VGA (RGB + HSYNC + VSYNC)
输出接口 HDMI 1.4 / DVI
最大分辨率 1920x1080@60Hz
ADC 精度 8-bit per channel
工作电压 3.3V / 1.2V
封装 QFN-32 (5x5mm)

个人经验:我建议你优先选 QFN 封装,散热好,而且沁恒的芯片供货稳定。之前有朋友用某台湾厂的芯片,结果采购周期拖了两个月,项目差点黄了。

3.3 电路设计要点

电路设计其实不复杂,但有几个坑,我得跟你讲清楚。

3.3.1 电源设计

CH7101B 需要两路电源:3.3V 和 1.2V。3.3V 给 I/O 和模拟部分,1.2V 给内核。

我习惯用一颗 LDO 从 5V 转 3.3V,再用一颗 LDO 从 3.3V 转 1.2V。注意,模拟电源和数字电源要分开走线,中间加磁珠隔离。

警告:千万不要把 1.2V 和 3.3V 用同一颗 LDO 降压!我曾经见过有人用 DCDC 直接出 1.2V,结果纹波太大,画面出现水波纹。老老实实用 LDO,纹波控制在 30mV 以内。

3.3.2 VGA 输入电路

VGA 的三路模拟信号(R、G、B),需要经过 75Ω 端接电阻到地,然后直接进芯片的 ADC 引脚。

同步信号(HSYNC、VSYNC)是 TTL 电平,一般 3.3V 或 5V。CH7101B 的同步输入是 3.3V 容忍,如果遇到 5V 信号,需要加一个 100Ω 串联电阻限流。

// VGA 输入接口参考电路
// R, G, B 各接 75Ω 到 GND,然后直连芯片
// HSYNC, VSYNC 各串 100Ω 后接芯片

3.3.3 HDMI 输出电路

HDMI 输出是四对 TMDS 差分线(时钟 + 三路数据)。走线要等长,阻抗控制在 100Ω ± 10%。

我一般会在靠近芯片端,每对差分线加一个共模扼流圈(Common Mode Choke),抑制高频干扰。

避坑指南:我曾经在 HDMI 输出线上忘了加 ESD 保护管,结果客户现场插拔几次,芯片就烧了。后来我在每对 TMDS 线上加了 PESD5V0S1UB,再也没出过问题。

3.4 EDID 模拟:让电脑「以为」有显示器

EDID 是什么?说白了,就是显示器告诉电脑「我能支持哪些分辨率、刷新率」的一份数据表。

VGA 接口本身没有 EDID 通道。但电脑在检测到 VGA 连接时,会通过 DDC 总线(I2C)去读 EDID。如果读不到,电脑就会认为没有显示器,或者输出一个默认的低分辨率。

所以,CH7101B 内部集成了一个 EDID 存储器。我们需要把一份标准的 EDID 数据写进去,让电脑以为接了一台支持 1080p 的显示器。

3.4.1 EDID 数据结构

EDID 是 128 字节的二进制数据。我直接给你一份常用的模板:

// 128 字节 EDID 示例(支持 1080p@60Hz)
00 FF FF FF FF FF FF 00  // 固定头
1E 6D 01 00 01 01 01 01  // 厂商 ID
01 15 01 03 80 30 1B 78  // 基本参数
EA 66 35 A5 55 4E 9E 26
0C 50 54 A5 6B 80 81 80
A9 40 71 4F 81 00 81 C0
01 01 01 01 01 01 02 3A
80 18 71 38 2D 40 58 2C
45 00 F4 2C 11 00 00 1E
00 00 00 FD 00 38 4B 1E
51 0E 00 0A 20 20 20 20
20 20 00 00 00 FC 00 48
44 4D 49 20 43 6F 6E 76
65 72 74 65 72 0A 20 20
00 00 00 FF 00 23 20 20
20 20 20 20 20 20 20 20
01 03  // 校验和

小技巧:你可以用「EDID Editor」软件生成自定义的 EDID 数据。我一般会生成两份:一份 1080p@60Hz,一份 720p@60Hz,根据客户需求烧写。

3.4.2 烧写 EDID 的方法

CH7101B 支持通过 I2C 接口烧写 EDID。上电后,芯片处于编程模式,主机通过 SCL/SDA 把 128 字节写入内部 EEPROM。

我习惯在产测阶段,用一颗 MCU(比如 STM32)自动烧写。这样量产时不用人工干预。

// I2C 烧写 EDID 伪代码
I2C_Start();
I2C_Write(0xA0);  // 芯片地址
I2C_Write(0x00);  // 起始地址高字节
I2C_Write(0x00);  // 起始地址低字节
for(i=0; i<128; i++) {
    I2C_Write(edid_data[i]);
}
I2C_Stop();

3.5 整体架构图

下面这张图,是我自己画的 CH7101B 典型应用框图。你可以看到信号流向:VGA 进来,经过 ADC 和编码,最后从 HDMI 出去。EDID 通过 I2C 烧写,电脑通过 DDC 读取。

VGA 输入 CH7101B ADC + TMDS 编码 内置 EDID 存储器 HDMI 输出 I2C 烧写器 电脑 DDC 读取 实线:视频信号路径 虚线:EDID 烧写/读取路径

3.6 常见问题与调试

嗯,这里我要多说几句。VGA 转 HDMI 的调试,最容易出问题的就是画面不稳定或者没信号。

  • 没画面:先量 VGA 的同步信号有没有。我遇到过好几次,是 VGA 线接触不良,导致同步信号丢失。
  • 画面闪烁:检查电源纹波。用示波器看 1.2V 电源,如果纹波超过 50mV,换 LDO 或者加电容。
  • 分辨率不对:EDID 没烧写成功。重新烧写,然后用 I2C 读出来校验一遍。
  • 颜色偏色:VGA 的 R、G、B 三路阻抗不匹配。检查 75Ω 端接电阻是否焊好。

最后说一句:CH7101B 这颗芯片,我用了三年,返修率极低。只要电源和 EDID 搞对了,基本一次点亮。如果你在项目中遇到问题,欢迎随时交流。

专注资料整理