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.

[参考译文] TI-JESD204-IP:用于 TI-JESD204 IP 的 VHDL 包装器

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1503989/ti-jesd204-ip-vhdl-wrapper-for-ti-jesd204-ip

器件型号:TI-JESD204-IP

工具/软件:

您好:

我尝试将 JESD204内核集成到我的设计中。 作为我设计的主要语言是 VHDL、我试图围绕 IP 创建包装器。

我正在使用 Vivado 2022.2、因为我受到该设计的其他 IP 的限制。

在无法使系统正常工作后、我复制了提供的示例并开始从顶层到 TI_204C_IP_Ref 块使用 VHDL。 这是有效的。

请参见设计层次结构上的下图:

仿真日志显示以下设置:

我需要将 TI JESD204 IP 分开、并将其作为一个独立的块、以帮助我进行集成和验证。 所以我创建了一个 VHDL 包装器、它使用 SystemVerilog 包装器、它只实例化 SVP 文件。 我将其余的参考代码功能移至外部 VHDL 模块。  

我使用中间 SystemVerilog Wrapper 只是为了预防不更改加密 IP 上的语言域。

仿真层次结构如下(请注意、在本例中我使用的是 VHDL-2008)

问题在于、虽然第一个设计正确仿真、但带有包装器的第二个设计没有。

似乎 IP 的所有输出信号都是"U"、"Z"或"X"。 我尝试使用来自 GTH 包装程序的 MGT_GPIO 信号将其发送到顶层并观察信号是否达到顶层、但这也不起作用、因为信号继续处于"U"状态。 例如、未定义或 tri 状态的示例信号是 Q/CPLL 锁定信号(但似乎所有输出都处于相同的此类状态)。

在我看来、IP 由于某种原因未连接。 在这种失败的情况下、仿真也会更快地启动。

我还使用了相同的架构和一个小的测试块来为示例系统验证执行相同的缠绕方法、并且 I/O 似乎按预期工作。

另请参阅、在失败的设计中、Vivado 层次结构中、隐藏节点(包括 GTH 驱动程序)的第二层和下面是灰色的。 虽然我可以修改 GTH、但似乎有一些不同之处。 Vivado 没有任何抱怨。

包装器还将常量(通过通用)从 VHDL 传递到 SV。

如果我必须采用不同的方法、您能提供任何可能出错的见解吗?

提前感谢、

Ilias

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

    尊敬的 Ilias:

    我注意到您已将 TI IP 的实体文件添加到源列表中。 请告诉我、这有一个具体原因。 该实体文件仅供参考、不应包含在工具流程中(用户指南中对此进行了介绍)。

    除了这一点,我看不到任何明显的错误。 虽然我们内部不使用此功能、但我们有许多客户拥有基于 VHDL 的顶级流程、他们在核心文件周围创建一个包装器来传递参数并集成 IP。

    此致、
    阿米特

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

    尊敬的 Ameet:

    我很抱歉,我没有回复,但我是在出差的最后几个星期。


    我发现问题是 VHDL 和 SV 之间的字符串的传递参数问题。 我将大多数参数保留在 Verilog 标头中,例如 IP_Protocol (这是一个罪魁祸首)和其他带有字符串的参数(如"规范"、"否"等)。 我在 VHDL 泛型中只留下 影响接口的总线长度相关参数。 这创建了一种更简洁的方法来控制 JESD204内核、主要使用 Verilog 标头作为 JESD204参数、并保留与接口相关的通用项来控制 I/O 大小。

    我遇到的第二个问题与我测试台的一个错误有关、在这个错误中、IP 正在工作、但 GTH 收发器没有同步。 事实证明我使用了错误的时钟频率、因此 PLL 无法同步。 这些操作解决了所有问题、并且设置工作正常。

    感谢您的支持。