通过不支持 TMDS 的 FPGA 传输 HDMI/DVI

电器工程 FPGA 微分 斯巴达人 hdmi LVDS
2022-01-15 10:02:23

我希望能够为我的下一个 FGPA 项目输出 HDMI/DVI-D,但我的 FPGA 没有对 TMDS 输出的本机支持。FPGA 是 Spartan 3E,我相信它只支持 LVDS 差分信号。

我在网上阅读了很多关于差分信号的内容,并且对它的工作原理有一个大致的了解,但我对不同的标准感到困惑。我也浏览了 HDMI 的规范,但它非常枯燥,似乎预先假定对这些概念有一定的了解,而我没有。

例如,TMDS 与 LDVS 到底是什么?TMDS 只是一种在 LVDS 上运行的编码方案吗?TMDS 和 LVDS 是否只是差分信号的标准,但具有不同的电气特性?没有 LVDS 到 TMDS 转换器芯片的搜索结果表明我的理解在这里被打破了。

实际上,我想知道是否可以简单地将 HDMI 分线板直接连接到我的 FPGA 的输入引脚,将这些引脚配置为 LVDS IO 标准并期望它能够工作(假设软件端编写正确)。一些网站暗示我可以,但似乎他们的 FPGA 都内置了 TMDS 驱动程序,而我没有。其他网站说我需要 TMDS 支持,但接着说 LVDS 也可以工作。维基百科似乎暗示 LVDS 正在被逐步淘汰,作为通过 DVI 或 HDMI 传输数据的标准。

任何人都可以帮助我消除对这一切如何运作的任何误解吗?

2个回答

好问题。我自己最近一直在研究这个话题,并会在这里尝试提供一些简短的答案。

TMDS 与 LDVS 到底是什么?

LVDS(低压差分信号)只是差分信号接口的电气规范,而 TMDS(最小转换差分信号)既是电气规范又是特定的 8b/10b 编码方案。不幸的是,电气规范不是直接兼容的,尽管在某些情况下有多种方法可以将一种“适应”到另一种。

在电气方面,LVDS 使用图腾柱驱动器和差分端接 (100-120Ω),而 TMDS 使用 CML(电流模式逻辑)集电极开路驱动器和单独的 50Ω 端接至 +3.3V。Spartan-3E IOB 不直接支持 CML。

然后是TMDS编码的问题。Spartan-3E IOB 支持 DDR,数据速率高达 628 Mb/s,但没有专用的高速 SERDES 逻辑。您必须在 FPGA 架构中进行 TMDS 编码和解码,使用 IOB 中的 DDR 支持来获得最终比特流。这会将您的像素速率限制为 62.8 Mp/s 或更低。

实际上,我想知道我是否可以简单地将 HDMI 分线板直接连接到我的 FPGA 的输入引脚,将这些引脚配置为 LVDS IO 标准并期望它工作

不,不是在输入端,至少在不费吹灰之力就可以正确终止 TMDS,然后用适当的偏置将其交流耦合到 FPGA 上的 LVDS 接收器(所有这些同时保持准确的 100Ω 差分阻抗)。请注意,您链接到的示例项目都是仅输出示例。从 LVDS 输出驱动 DVI/HDMI 似乎要宽容得多。他们似乎没有在其 PCB 上添加任何偏置或端接电阻。

最好的办法是使用外部 DVI/HDMI 输入和输出芯片,并通过它们的并行总线连接到 FPGA。我过去曾使用过Analog Devices 的零件

TMDS 使用在接收端终止于 Vcc 的 CML(电流模式逻辑)。标准 (IEEE644) 中的 LVDS 是一种电压模式驱动器,在接收端也终止于线对。但事情并非如此简单,因为 LVDS 驱动器通常控制转换时的压摆率以防止振铃和其他不良影响,并且在此模式下,驱动器更像是电流源。

然而,仔细阅读,这两个标准是不同的且不兼容的。此物理层之上的编码方案(8b/10b DDR 等)是逻辑操作。

有翻译芯片(来自 TI 的一个是 SN65CML100),因此您可以将其添加到板上。有趣的是,该芯片也可以是 CML 到 CML 的桥接器,因此该数据表中可能有一些很好的阅读资料,可以让您进一步了解。

有趣的是,该数据表(警告以 pdf 格式打开)表明电容器耦合 LVDS 可以驱动 CML 输入。第 14 页“交流耦合 LVDS 驱动器通常可用作 CML 驱动器。”

鉴于您正在考虑将 TDMS 接收到 DVI 输入中,它可能会起作用。理想情况下,您会将该对端接至 Vcc,但 LVDS 可能会在设备中内置一个无法移除的端接交叉相位。所以这很复杂,因为端接将是错误的值,并且您的输入端会有一个电阻分压器。

最后,这里是来自 Ti 的应用说明的链接(又是另一个 pdf),它表示上述终止。但有一个注意事项:

通常,在使用 CML 驱动 LVDS 接收器时,建议使用交流耦合。如果 LVDS 接收器具有可以接受 CML 输入的宽共模范围(共模范围必须达到 VCC 轨),则直流耦合连接是直接连接。

因此 LVDS 接收器的共模范围很重要。它们也没有显示内部终止,这可能是 FPGA 的问题。这是该应用笔记中的截图。

在此处输入图像描述

如果 LVDS 输入适应多个电压摆幅范围,那么您可能会很幸运。例如,一些“LVDS”仅在 500 mV 摆幅下工作。