This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMDS181:

Guru**** 2773145 points

Other Parts Discussed in Thread: TMDS181

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/755846/tmds181

器件型号:TMDS181

尊敬的 TI 支持团队:

我有一些与 TMDS181相关的问题。 我在接收端将此芯片与 Kintex7 FPGA 结合使用、用作支持 HDMI 2.0/1.4的接收器。 由于 HDMI 连接器、TMDS181和 FPGA 在 PCB 上的位置、我必须交换通道以及通道的极性。 问题是、为了实现 HDMI1.4b 和 HDMI2.0兼容性、我必须如何通过 I²C 对 TMDS181进行编程:

问题:

1) 1) 根据数据表、当我交换通道的极性时、只有重定时器模式是可能的。 因此、我假设我不能使用自动交叉。 我能否在250Mbps 至6Gbps 的全时钟范围内使用重定时器模式? 在数据表中、存在有关范围的不一致声明。 请比较第35页(DEV_FUNC_MODE)和第31页的第8.4.1章。 请您对此进行澄清吗?   

2) 2)假设我必须在整个时钟范围内使用重定时器模式、我是否仍然可以实现 HDMI1.4b 和 HDMI2.0兼容性?

3) 3)假设我必须在全时钟范围内使用重定时器模式、我不清楚我必须编程哪个序列。 在其中一个其他线程(请参阅下面的链接)中、您必须将寄存器 DEV_FUNC_MODE 设置为"11"、然后在后面执行 PD_EN。 但是、如果我在设置 DEV_FUNC_MODE 寄存器后执行 PD_EN 操作、则所有 I2C 寄存器都将复位为其默认值。 这意味着 DEV_FUNC_MODE 将重置为"01"=自动转接驱动器以1Gbps 的速率重定时器交叉。 这对我来说是不合逻辑的。 请您对此进行澄清吗?

https://e2e.ti.com/support/interface/f/138/t/736159?tisearch=e2e-sitesearch&keymatch=TMDS181

此致

Steffen Gräßle í a

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steffen

    要在 HDMI1.4和2.0之间切换、您可能需要考虑设置 DEV_FUNC_MODE = 10。 在 DEV_FUNC_MODE = 10时:当 HDMI2.0基于 TMDS_CLK_Ratio_STATUS 时、如果禁用 DDC 传动、TMDS181不会监控 SCL_SNK/SDA_SNK、但会根据 TMDS_CLK_Ratio_STATUS 进行自我配置。 在 TMDS_CLK_Ratio_STATUS 中写入正确的值、然后切换 PD_EN 和 TMDS181将在 HDMI1.4和 HDMI2.0之间切换。 对于 TMDS_CLOCK 比率状态、该位对于 HDMI1.4需要为0、对于 HDMI2.0需要为1。

    除了 DEV_FUNC_MODE、还请考虑 HDMI 1.4和2.0在 TX 端接和 TMDS_CLOCK 比率状态方面的差异。

    Ω HDMI1.4b、当数据速率高于2Gbps 时、允许发送器端接150 Ω 至300 μ s 以补偿反射。 对于 HDMI2.0a、需要75 Ω 至150 Ω 的发送器终端、如果未设置、则链路将不工作。

    谢谢
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    感谢您的回答、但我认为讨论的方向是错误的。 请查看我的以下评论:

    [DAV]要在 HDMI1.4和2.0之间切换、您可能需要考虑设置 DEV_FUNC_MODE = 10...

    [Steffen]也许您没有注意到、由于 PCB 上的给定布线、我必须交换通道极性。 如数据表中所述、在获取通道极性时、转接驱动器模式不工作、或者换句话说、当您使用自动交叉时、从重定时器模式切换到转接驱动器模式时、SWaP 极性寄存器会自动置位。 请仔细阅读我的第一封邮件以了解我的问题。 我无法使用 DEV_FUNC_MODE = 10! 从我的角度来看、覆盖整个时钟范围的唯一方法是使用仅重定时器模式。

    [DAV]除了 DEV_FUNC_MODE 之外、还请考虑 HDMI 1.4和2.0在 TX 端接和 TMDS_CLOCK 比率状态方面的差异。

    [Steffen]再次请仔细阅读我的第一封邮件。 TMDS 181在灌电流侧工作、而不是在拉电流侧工作。 当 TMDS181位于接收端时、我认为 TX 端接不会对 HDMI1.4/2.0标准产生任何影响。 TMDS181的原理图与数据表44页图36中所示的原理图类似。 尽管 TX 端接仅影响 TMDS181输出与 FPGA 输入之间的短路传输。

    David、有了这一反馈、您能在第一封邮件中回答我的问题吗?

    谢谢、此致
    Steffen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steffen

    是的、为了保持极性和通道交换功能、您需要将 DEV_FUNC_MODE 设置为 b'11。

    但我还想强调一下之前响应中 HDMI1.4和2.0之间的主要差异、即 TX 端接和时钟输出。 HDMI1.4未定义终端、但 HDMI2.0定义终端、因此在 HDMI1.4和2.0之间切换时、必须考虑终端。 您还需要考虑时钟状态、否则 TMDS181会向接收器输出错误的时钟频率。

    谢谢
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    请查看我的以下评论和问题:

    [戴维]
    是的、为了保持极性和通道交换功能、您需要将 DEV_FUNC_MODE 设置为 b'11。

    [听声]
    到目前为止、我了解到必须使用以下编程序列来初始化 TMDS181:
    1) 1)设置 DEV_FUNC_MODE = b'11
    2) 2)设置 llan_swap = b'1
    3) 3)设置 lane 极性= b'1

    此外、当使用 DEV_FUNC_MODE = b'11时、我在数据表中找到以下注释:

    11–全范围250Mbps 至6Gbps 的重定时器模式
    更改交叉点时、需要切换 PD_EN 或切换外部 HPD_SNK。

    因此、除了初始化序列之外、我还必须切换 PD_EN、例如、每当超过交叉点时。

    您能否定义交叉点的确切含义?

    此致
    Steffen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steffen

    11–全范围250Mbps 至6Gbps 的重定时器模式
    更改交叉点时、需要切换 PD_EN 或切换外部 HPD_SNK。

    这两句话之间应该有一个空格、交叉是在转接驱动器和重定时器之间。

    谢谢
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    在数据表中、当 DEV_FUNC_MODE = b'01时、我找到了有关自动交叉事件的以下句子:

    '当启用此选项(默认)时、如果需要清除抖动以实现稳健运行、则重定时器会在大约100MHz 的像素时钟上自动激活。'

    在上面的文本中、当 TMDS 时钟超过100MHz 时、检测到交叉事件。 根据 TMDS_CLOCK 比率_STATUS 位中的定义、只使用 TMDS 时钟频率进行比较是否正确、或者我是否应该更好地使用1Gbps 的位速率进行比较、方法是将 TMDS 时钟乘以时钟比率(x10、x40)?

    那么、我是否应该使用测量的 TMDS 时钟频率或测量的比特率来检测交叉事件?
    请注意、如果我们决定其中一个、这会有所不同。

    此致
    Steffen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steffen

    TMDS181使用 TMDS 时钟频率、而不是交叉的位速率。

    谢谢
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    好的、我明白了。 我必须监控 TMDS 时钟频率、当它超过100Mhz 时、我必须切换 PD_EN。 现在可以清楚地看到交叉事件是如何定义的。

    我想知道如何检测 FPGA 中的交叉事件。 HDMI 接收器子系统(IP 内核)附带相应的驱动程序文件。 在名为 xV_hdmirxss.c 的驱动程序文件中,我找到了名为 xV_HdmiRxss_RefClockChangeInit()的 API 函数,每当 TMDS 时钟频率发生变化时,就会调用该函数。 因此、我可以在这里挂钩一些代码以检测交叉事件。 您是否同意、或者我是否有更好的方法来实现交叉事件检测?

    此致
    Steffen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steffen

    这取决于 API 函数 xV_HdmiRxSs_RefClockChangeInit()的实现方式,但一般概念是正确的。

    谢谢
    David