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.

[参考译文] TMS320C6678:PCIe 链接问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664575/tms320c6678-pcie-linkup-problem

器件型号:TMS320C6678

您好!

我们希望在 C6678和"符合 RoHS 标准的 SmartFusionRegistered2 SoC FPGA 安全评估套件(M2S090TS-EVAL-KIT)"之间构建 PCIe 接口。 为了测试接口、我们使用 了 TMDSEVM6678L 评估板。 和适配器板、用于将两个评估板连接在一起。 我们连接了一个通道并希望在 Gen2模式下使用它。 DSP 将是 RC、FPGA 将是 EP。 为了测试连接、我们在 pdk_c667x_2_0_7中使用 TI 示例。

测试代码总是会在链接中出现残桩。 当我检查 LTSSM 状态时、它始终为0或1。 如果我强制链接状态为2、有时它会变为3、但有时它会再次降至零。 我尝试使用 Gen1或改变极性、但没有改变。  

注:

PCIe_SERDES_STS = 0x201 ->(LOSDTCT1 = 1、我们不使用此通道)(PLL LOCK = 1、OK)

DEBUG1 = 0x08200000 ->(PIPE_TXELECIDLE = 1)(training _RST_N = 1)

DEBUG0没问题、

CMD_STATUS = 0x7 ->确定

实际上、我不知道 DEBUG1寄存器中的值是否有问题。 如果有问题、解决方案是什么? 如果不是、问题的原因是什么?

谢谢你

Omer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    您好!

    PCIe_SERDES_STS = 0x201 ->(LOSDTCT1 = 1、我们不使用此通道)(PLL LOCK = 1、OK)、对于单通道连接来说这看起来是可以的。

    在 PCIe RC 侧软件中、您是否配置了 PCIe x1信道而不是 x2信道? 您可以参考

    5 PCIe 编程示例

    本节包括 RC 模式和 EP 模式的 PCIe 编程示例。

    这两个示例可在两个器件上用于完成中的写入事务

    RC 至 EP。

    示例5 RC 模式的编程示例

    /*初始化序列如下*/

    /*假设 PCIe 模块已禁用(PCIESSEN=0)*/

    /*启用 PCIe 模块的电源/时钟域*/

    enable_module (pciex_pdctl、pciex_mdctl);//请参阅 PSC 用户指南

    /*将 PCIe 操作模式设置为 RC */

    /*如果在*/之前锁定,则通过设置 KICK0&1来首先解锁引导配置

    DEVSTAT[PCIESSMODE]= 0x10;

    /*根据参考时钟编程和启用 SerDes PLL */

    PCIe_SERDES_CFGPLL = 0x1C9;//假设基准时钟为100MHz

    /*等待 PLL 锁定*/

    while (PCIe_SERDES_STS[LOCK]!= 1);

    /*禁用链接培训*/

    CMD_STATUS[LTSSM_EN]= 0;

    /*设置配置寄存器*/

    switch (lane num){

    案例1://单通道

    PL_LINK_CTRL[LINK_MODE]= 0x1;//启用 x1通道

    案例2://two 通道

    PL_LINK_CTRL[LINK_MODE]= 0x3;//启用 x2通道

    此外、FPGA 和 DSP 是否使用相同的参考 PCIe 时钟?

    此致、Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    -在 PCIe RC 侧软件中、您是否配置了 PCIe x1信道而不是 x2信道? 您可以参考
    是的、我配置了0x1通道

    此外、FPGA 和 DSP 是否使用相同的参考 PCIe 时钟?
    它们使用自己的时钟源。 C6678使用100MHz 时钟、FPGA 使用125MHz 时钟。 两个 EVM 都没有时钟输出、因此我使用了单独的时钟源。 并且我配置了 LINK_STAT_CTRL.COMMON_CLOCK_CFG = 0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!

    来自 PCIe 用户指南:

    如果未使用通用时钟架构、则必须设置软件驱动程序
    PCI 中适当的位(LINK_STAT_CTRL 寄存器中的 COMON_CLK_CFG 位)
    配置寄存器来向系统指示这种情况。 培训序列的数量
    如果 PCIe 链路上的器件之间不共享参考时钟、则会显著增加。

    如果以下任何一项有助于您的设计、请尝试:
    1) 1)是否可以使用100MHz 内部参考时钟配置 FPGA
    2) 2)减少到两侧的 PCIe Gen1
    3)在 TI PCIe RC 上、在启用链路训练(CMD_STATUS.LTSSM_EN = 1)之前、设置 LINK_STAT_CTRL.EXT_SYNC = 1和 PL_Gen2.NUM_FTS = 0xFF (您可以在 API 调用中更改它们或在 CCS 存储器窗口中插入)。

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

    3)在 TI PCIe RC 上、在启用链路训练(CMD_STATUS.LTSSM_EN = 1)之前、设置 LINK_STAT_CTRL.EXT_SYNC = 1和 PL_Gen2.NUM_FTS = 0xFF (您可以在 API 调用中更改它们或在 CCS 存储器窗口中插入)。

    我们尝试了这种配置,但它不起作用。

    我们是否必须将外部时钟推送到两侧以获得相同的时钟频率? İs 这是常见的方法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    在 RC 侧、您使用了 TI C6678 EVM、对吧? 默认情况下、C6678 PCIe 使用100MHz 板载 PCIe 时钟作为基准。 可以从板载晶体或 PCIe AMC 边缘连接器切换时钟源、这由 EVM 上的 FPGA 进行控制。 我们在 EP 模式下通过第二引导加载程序(SBL)和 PCIe (其中 Linux PC 是 PCIe RC 并从 AMC 边缘连接器提供时钟)对此进行了试验。

    我们还使用其自己的100MHz 时钟对 RC 和 EP 进行了试验。 因此、我认为试用的最佳方法是:尽可能使用100MHz 内部时钟来配置 FPGA。

    我们是否必须将外部时钟推送到两侧以获得相同的时钟频率? İs 通用方法?=== >根据 Keystone PCIe 用户指南、PCIe 仅接受100MHz 时钟。 FPGA 是否还接受100MHz 时钟? 此外、RC 侧需要更改 FPGA 控制、以使时钟来自 AMC 边缘连接器、而不是板载。

    另外、请告诉我们第1代是否适用于这种情况?

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

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我们正在考虑外部时钟源的硬件预处理。
    如果我们从 AMC 向 C6678应用125MHz 时钟、它是否起作用? 为此、我们应该做什么 SerDes 配置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们对 C6678 EVM 使用了100MHz、125MHz 也应该起作用。 在 PCIe 用户指南中、请查看2.3.3参考时钟乘法和 PCIe 串行器/解串器配置寄存器(PCIe_SERDES_CFGPLL)。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我们采用相同的配置(DSP = 100Mhz、FPGA = 125MHz)。 我们刚刚对硬件进行了改进、现在、lsm 状态有时变为6。 实际上、它现在始终在1、2和6之间变化。 这有什么意义吗? 有什么建议?

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

    如果存在信号完整性问题、您可以尝试 PCIe 第1代模式吗?

    此致、Eric