1. 从零开始DVI接口到底是什么如果你拆开过一台老式的台式机显示器或者显卡大概率会见过一个白色的、扁扁的、有很多针脚的接口那就是DVI。我第一次接触DVI接口设计还是在十多年前做一个工控显示板卡的项目当时为了把电脑画面稳定地输出到一块高分辨率的工业屏上可没少跟这个接口较劲。今天我就把自己这些年踩过的坑、总结的经验掰开揉碎了跟你聊聊从最基础的原理到最终的PCB板上怎么走线让你也能轻松搞定DVI电路设计。简单说DVI就是个专门用来传输数字视频信号的“水管”。它的全称是Digital Visual Interface数字视频接口。这个名字就点明了它的核心任务把显卡生成的数字图像信号原汁原味、高速地送到显示器上。在HDMI和DisplayPort普及之前DVI是连接电脑和显示器最主流、最专业的数字桥梁。它基于一项叫TMDS的技术来传输信号这项技术很聪明能把数据编码后再用差分信号传出去抗干扰能力特别强所以哪怕用比较长的线缆画面也能保持清晰稳定。你可能要问现在都是HDMI和DP的天下了还学DVI干嘛这话对也不对。对于消费电子新品确实DVI用得少了。但在很多特定领域比如工业控制、医疗显示、专业图形工作站、还有大量的存量设备和特定接口需求的场合DVI依然非常活跃。很多专业显示器、显卡仍然保留DVI接口做硬件开发、设备维护你绕不开它。理解DVI的设计也是理解数字视频传输的一个经典范例它的很多思想在HDMI里也得到了延续。所以掌握它绝对是一笔划算的技术投资。2. 庖丁解牛深入TMDS传输原理DVI的画质为什么好关键就在TMDS这三个字母上。TMDS中文叫“最小化传输差分信号”。听起来有点玄乎我用个比喻你就明白了。想象你要在一条嘈杂的马路边相当于电路板上的电磁环境告诉对面的朋友一个数字。如果你直接大喊“123”很可能被汽车声淹没。但如果你和朋友约定好一套暗号比如“1”用“苹果”代替“2”用“香蕉”代替然后再用两个人同时说反话的方式一个说“是苹果”一个说“不是苹果”来传递那么即使环境再吵对方也能准确分辨。TMDS干的就是类似的事。它主要做了三件大事编码、并串转换和差分驱动。首先显卡这边的发送芯片会把原始的8位RGB像素数据比如R通道的8位数据通过一个算法编码成10位的数据。这个编码算法有两个目的一是减少数据中从0变1或从1变0的次数这就是“最小化传输”的含义让信号更平稳二是让这10位数据里0和1的数量总体上保持平衡这叫直流平衡能防止信号因长期高电平或低电平而偏移。经过编码数据虽然多了两位但变得“更好传输”了。接下来这10位的并行数据会被转换成高速的串行数据流。你可以想象成把10辆并排行驶的小汽车并行数据变成一辆接一辆通过隧道串行数据流。这个过程速度极快DVI单通道的时钟频率就能达到165MHz而数据速率是这个的10倍因为每个时钟发10bit数据也就是1.65Gbps。对于双通道DVI理论带宽能翻倍支持更高的分辨率和刷新率。最后也是最关键的一步差分驱动。串行数据流不是用一根线对地传输而是用两根线传输相位完全相反的信号。在接收端芯片只关心这两根线的电压差。外界的噪声干扰通常是同时作用在这两根线上的称为共模噪声电压差一减噪声就被抵消掉了。这就是差分信号抗干扰能力的根源。所以你在PCB上看到DVI的走线总是成对出现并且要严格控制这两根线之间的距离和等长就是为了保证差分信号的完整性。注意TMDS的编码和并串转换通常由专用的发送器芯片如Silicon Image的SiI系列、德州仪器的TFP系列完成。作为硬件工程师我们的核心任务是为这颗芯片提供稳定的电源、正确的参考时钟并保证它输出的高速差分信号能高质量地传输到连接器。3. 接口迷宫DVI-A、DVI-D与DVI-I怎么选搞清楚原理我们得面对实际选型。DVI接口可不是只有一种它主要分为三大类DVI-A、DVI-D和DVI-I。光看后缀字母就头大别急我画个简单的图在脑子里帮你记。DVI-A这个“A”代表Analog模拟。它本质上就是VGA接口换了个马甲传输的是模拟信号。它的插头是125针的。因为数字显示已成绝对主流这个标准现在基本被废弃了你在新设备上很难见到了解即可。DVI-D这个“D”代表Digital数字。它是纯数字接口只能传输TMDS数字信号无法兼容老VGA显示器。它的插头有两种单通道181针和双通道241针。少的那4个针脚就是用来传输模拟信号的C1-C4和C5既然纯数字自然就不需要了。如果你确定你的设备只连接数字显示器选DVI-D接口可以节省成本和PCB空间。DVI-I这个“I”代表Integrated集成。它是最全能的集成了数字和模拟信号通道。它的插头也有单通道185针和双通道245针两种。多出来的那4个针脚C1-C4和一个十字孔C5就是用来走模拟VGA信号的。这意味着通过一个简单的无源转接头DVI-I接口就能输出VGA信号兼容性最好。怎么选我给你的实战建议是显卡或输出设备端通常优先选择DVI-I接口。因为它兼容性最强用户既可以用DVI数字线也可以通过转接头用VGA线避免客诉。虽然成本稍高一点但省去了很多麻烦。显示器或输入设备端如果显示器只有DVI口常用DVI-D。因为显示器是接收端它不需要去兼容输出模拟信号。如果显示器同时有DVI和VGA口其DVI口也可能是DVI-I以便内部电路布局。带宽需求对于1920x108060Hz1080P及以下分辨率单通道18针足够了。但如果你要上到2K、4K或者高刷新率如1080P144Hz就必须使用双通道24针的DVI-D或DVI-I。单通道的带宽是有限的强上高规格信号会导致黑屏或花屏。这里有个关键点接口外形决定了插头的物理兼容性但不代表功能兼容。一个DVI-I的插座可以插DVI-I和DVI-D的插头但一个DVI-D的插座绝对插不进DVI-I的插头因为多出来的4个模拟针脚会挡着。设计插座时一定要想清楚你的设备需要被什么线连接。4. 管脚定义与核心电路框架现在我们深入到管脚层级这是画原理图的基础。我们以最复杂的29针DVI-I双通道接口为例它的针脚可以分为四大功能块理解了这块电路框架就清晰了。第一块TMDS数据通道核心这是数据传输的高速公路。包括三对RGB差分数据通道TX0± TX1± TX2±对应单通道的3对数据。对于双通道还有额外的三对TX4± TX5± TX6±。通常我们用的发送芯片其输出就是这六对差分信号。一对TMDS时钟通道TXC±为数据提供同步基准至关重要。屏蔽地线在针脚3 11 19 22 它们是相邻差分对的屏蔽地用于提供良好的信号返回路径抑制串扰必须可靠接地。第二块DDC与HPD通信与检测这是设备和显示器“对话”的通道。DDC_CLK6脚和DDC_Data7脚这就是I2C总线。显示器会通过这个总线将一个叫EDID的数据块发给显卡。EDID里包含了显示器的型号、支持的分辨率、刷新率等所有身份信息。显卡读不到EDID就可能无法正常输出图像。HPD16脚 Hot Plug Detect热插拔检测。当显示器连接好并上电后它会将这个引脚拉高通常通过一个上拉电阻到5V。显卡检测到这个高电平就知道“显示器已就绪”然后开始通过DDC读取EDID。这个信号一定要做对我遇到过因为HPD电路问题导致显示器偶尔不识别的情况。第三块电源5V14脚和GND15脚这组电源来自显示器给显卡端的电路比如EDID存储器、HPD上拉供电。注意这个5V的电流能力通常有限规范要求至少55mA不要用它来驱动大负载。第四块模拟VGA信号仅DVI-I有C1红 C2绿 C3蓝 C4行同步 C5模拟地 以及8脚场同步这组信号就是标准的VGA信号。在显卡端需要一颗专用的数模转换芯片如常见的ADV7125将数字RGB信号转换成这三路模拟信号然后接到这些引脚上。基于以上一个完整的DVI输出端如显卡电路框架就出来了主控/GPU产生数字视频数据。DVI发送芯片接收主控的并行数据完成TMDS编码、并串转换输出差分信号到DVI接口的TMDS引脚。如果是DVI-I还需要一颗VGA DAC芯片来产生模拟信号。EDID存储器通常是一颗24C02这样的EEPROM挂在DDC总线上存储本设备的EDID信息对于输入设备如显示器或提供缓冲对于输出设备。HPD电路简单的上拉电阻和滤波电路。DVI连接器根据选择的类型I或D连接对应信号。电源电路为发送芯片、DAC芯片提供干净稳定的电源特别是模拟电源和数字电源的隔离。5. 硬件设计实战与避坑指南理论说再多不如动手画一画。这里我结合一个实际的双通道DVI-I输出电路设计案例分享几个最容易出问题的地方。案例为一块FPGA板卡设计DVI-I输出接口第一步芯片选型FPGA通常没有直接集成DVI发送器我们需要外接芯片。我常用的是Texas Instruments的TFP410。这是一颗纯数字发送芯片支持单/双通道最高165MHz像素时钟刚好满足1080P60Hz的需求。对于模拟部分选用Analog Devices的ADV7125三通道10位DAC来生成VGA信号。还需要一颗24C02作为EDID EEPROM。第二步原理图设计关键点电源去耦这是高速电路设计的生命线。TFP410和ADV7125都有数字电源DVDD 通常3.3V和模拟电源AVDD。必须在每个芯片的每个电源引脚附近放置一个0.1uF的陶瓷电容到地。同时在电源入口处增加一个10uF的钽电容或电解电容进行储能和低频去耦。模拟电源和数字电源要在源头就用磁珠或0欧电阻隔离然后分别进行滤波。参考时钟TFP410需要一个干净的像素时钟输入。这个时钟必须来自FPGA的专用时钟输出引脚并且走线要短远离其他高速信号。在芯片的时钟输入脚可以串联一个小电阻如22欧姆来阻尼反射并接一个对地的容值很小的电容如几皮法来滤除高频噪声。HPD电路处理HPD信号线需要上拉到来自显示器的5V即DVI接口的14脚。但要注意这个5V是在插上线后才有的。所以我们的电路上通常用一个电阻如10kΩ将HPD信号上拉到本板的3.3V上同时通过一个二极管如1N4148连接到接口的16脚。这样当外部5V存在时会通过二极管将HPD拉高外部电压高于内部二极管截止互不影响。这是标准的防倒灌和电平兼容设计。DDC总线DDC_CLK和DDC_Data是开漏的I2C总线必须各自通过一个上拉电阻通常4.7kΩ拉到本板的3.3V。这两根线速率不高但也要注意走线整洁远离TMDS等高速线。第三步容易忽略的坑坑1发送芯片的配置引脚。像TFP410有ISEL、DSEL等引脚用于选择输入数据格式如DE模式还是同步模式、输出强度等。一定要根据FPGA的输出格式和线缆长度仔细查阅数据手册通过电阻正确配置这些引脚的电平否则可能无输出或图像异常。坑2模拟部分的电源质量。ADV7125的模拟电源噪声会直接反映到画质的纯净度上。除了严格的滤波模拟地AGND和数字地DGND的单点连接位置要精心选择通常选在芯片下方或电源入口处。坑3ESD防护。DVI接口是暴露端口必须考虑静电防护。可以在TMDS差分对、DDC和HPD信号线上添加ESD保护二极管如USBLC6-2SC6将其钳位到电源和地防止芯片被静电打坏。6. PCB布局布线让信号完整“跑”起来原理图正确只是成功了一半PCB布局布线才是决定成败的战场。高速差分信号对布线极其敏感。1. 布局优先原则接口位置固定首先把DVI连接器放在板边合适位置。发送芯片紧挨接口DVI发送芯片TFP410必须尽可能靠近连接器放置优先保证TMDS差分走线最短。理想情况是芯片输出脚正对着连接器输入脚。DAC芯片靠近发送芯片对于DVI-IADV7125也应靠近TFP410放置减少数字视频信号传输路径。电源电路远离开关电源等噪声源务必远离这些模拟和高速数字区域。2. 差分线布线“军规”这是最核心的部分我把它总结成几条必须遵守的规则阻抗控制TMDS差分对的特性阻抗必须控制在100Ω ±10%。这需要你和PCB板厂沟通根据他们的叠层结构板材、层厚、介电常数来计算走线宽度和线间距。通常需要做阻抗仿真或参考板厂提供的参数。等长匹配一对差分线P和N的长度差要尽可能小建议控制在5mil0.127mm以内。长度不相等会导致信号时序偏移严重破坏差分信号的质量引起眼图闭合。PCB设计软件都有差分对布线及等长调节功能一定要用。间距规则对内间距一对差分线两根线之间的中心距一般保持为线宽的1.5-2倍并全程保持一致。对间间距不同的TMDS差分对之间比如时钟对和数据对间距至少保持20mil0.5mm以上最好能达到3倍线宽以减少对间串扰。与其他信号间距所有TMDS差分线应与板上的其他低速信号如GPIO、电源保持至少20mil的距离。参考平面差分线下方必须有一个完整、无分割的参考平面通常是地平面为高速信号提供清晰的返回路径。绝对禁止跨电源平面分割区如果不得不换层务必在换孔附近放置回流地孔。走线风格避免90度直角拐弯使用45度角或圆弧走线。尽量减少过孔使用如果必须打孔应P和N线对称打孔并使用小孔径的过孔。3. 模拟信号走线对于DVI-I的模拟RGB走线它们属于模拟信号要特别注意与数字信号的隔离。分区布局在PCB上划分出“模拟区域”和“数字区域”。模拟区域放置ADV7125、其滤波电路、以及通向连接器C1-C5的模拟走线。单独走线模拟走线应走在模拟区域内远离TMDS等高速数字走线。如果空间有限也要保证足够的间距并可以在中间增加地线进行隔离。电源隔离模拟电源AVDD从电源芯片输出后先经过磁珠过滤再进入模拟区域并在区域内进行充分的LC滤波。4. 接地与屏蔽DVI连接器的金属外壳必须通过多个过孔良好地连接到PCB的接地层以实现屏蔽。连接器上专门的屏蔽地针脚3 11 19 22要直接连接到干净的地平面。整个接口区域下方建议保持一个完整的地平面为所有信号提供稳定的参考。最后拿出你的PCB设计软件认真设置好这些差分线规则、间距规则然后耐心地一根根调整。布完线后用DRC设计规则检查功能彻底检查一遍特别是长度匹配和间距。有条件的话可以导出Gerber文件给有经验的同事或导师review一下。这些工作看似繁琐但能避免你投板后才发现图像有重影、闪烁甚至不显示的尴尬省下的是真金白银和时间成本。记住好的PCB设计是硬件稳定性的基石。