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.

[参考译文] AFE7950:4T4R2F 8b10b 2.4576Gbps SERDES JESD 链路并非始终正确初始化

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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1460074/afe7950-4t4r2f-8b10b-2-4576-gbps-serdes-jesd-link-not-always-initializing-properly

器件型号:AFE7950

工具与软件:

您好!

我的配置过程和设置与我之前的论坛帖子相同: https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1452860/afe7950-4t4r2f-8b10b-2-4576-gbps-config-not-synchronizing :

JESD204B、8b10b SERDES
4 Rx
2 FB
4个发送
ADC fs = 2949.12、 抽取因子为48
ADCFb FS = 2949.12、 抽取因子为24
DAC FS = 11796.48、内插96
串行器/解串器速率= 2457.6.

使用 AFE7950EVM 板载振荡器/PLL
更新了 jesd_link_params.vh 以匹配配置和 ZCU102 SERDES 映射

尝试按照 TI204c-Setup.docx 启动设计后、我将遵循以下操作顺序:

  1. 打开 ZCU102电源
  2. 打开 AFE7950EVM 的电源
  3. 打开 Latte
  4. 运行 setup.py
  5. 运行 devInit.py
  6. 运行4T4R2F_2p4576.py
  7. 对 FPGA 进行编程
  8. 释放 MASTER_RESET_n -> 1
  9. 释放 TX_RESET -> 0
  10. 运行 ConfigAfe.py
  11. 释放 RX_RESET -> 0

有时只能使 JESD 链路双向同步、我通常需要发出一个或多个 Latte JESD 重新同步命令(TI_IP_AfeJesdReSync.py)、并使用 VIO 模块将 FPGA 复位一次或多次。

我将 AFE7950EVM 连接到 Xilinx ZCU102开发板的 J4时进行设置。  源基准代码为 TI 参考设计:C:\Users\jhobart_reliate\Downloads\TI_AFE7950\TI204C-IP-Release-v1.12-Latest\reference_designs\zcu102_8b10b、TI204C-IP-Release-v1.12-Latest\TI-204C-CoreIP\Vivado_2022_and_new\RTL\TI_204C.SVP、修改了以下参数:

184.32 MHz
SYS_PLL 输出184.32 MHz sys_clk 和30.72 MHz mgt_freerun_clk
管理速率2.4576 Gbps

我修改了 jesd_link_params.vh、使 zcu102到 afe7950evm 接口与 F、K 值匹配、以匹配我的配置。

我的 jesd_link_params.vh、约束条件和脚本文件已随附。  请告诉我、在此设计中、将 RESET 取消置位时是否需要考虑其他因素。

e2e.ti.com/.../files_5F00_e2e_5F00_1452860.zip

在 TI_IP_ConfigAfe.py 之后:
###########Device DAC JESD-RX 0 Link Status###########

lane0 Errors=0b1111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values;

lane1 Errors=0b1111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values;

lane2 Errors=0b1111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values;

lane3 Errors=0b1111; Got errors: 8b/10b disparty error; 8b/10b not-in-table code error; code synchronization error; elastic buffer match error. The first no-/K/ does not match 'match_ctrl' and 'match_data' programmed values;

CS State TX0: 0b10001001 . It is expected to be 0b10101010

FS State TX0: 0b00000000 . It is expected to be 0b01010101

重新同步没有帮助、因此我将 FPGA 恢复到复位状态(MASTER_RESET_n=0、TX/Rx_SYNC_RESET=1)并再次运行配置:

###########Device DAC JESD-RX 0 Link Status###########

CS State TX0: 0b10101010 . It is expected to be 0b10101010

FS State TX0: 0b01010101 . It is expected to be 0b01010101

Could get the link up for device RX: 0

###################################

###########Device DAC JESD-RX 1 Link Status###########

CS State TX0: 0b10101010 . It is expected to be 0b10101010

FS State TX0: 0b01010101 . It is expected to be 0b01010101

Could get the link up for device RX: 1

###################################

然后、我将 Rx_SYNC_RESET 设置为"0"、但 Rx_lmfc_to_buffer_release_delay[9:0]不会更改值、并且 Rx_LANE_DATA_VALID 始终为低电平。  我再次切换了 Rx_SYNC_RESET 几次、最终看到 Rx_LANE_DATA_VALID 开始切换。

注意: 在两个方向上建立链路后、JESD 链路保持稳定。

任何想法都将受到赞赏。  我将重点介绍慢的 mgt_freerun_clock、然后查看是否使用较慢的时钟意味着我需要以不同的方式处理复位。

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

    一个附带的问题: 为什么在该配置中 TX_LANE_DATA_READY 始终为高电平?  我预计 TX_LANE_DATA_READY 将为高电平1/6:
    注-我已将信号显式添加到 ILA_LINK_TX_INSTRMS:

    ila_link_tx_inst (
    .sys_clock (tx_sys_clock),
    .tx_lane_data (tx_lane_data),
    .tx_lane_data_ready (tx_lane_data_ready),
    ...

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

    尊敬的 Jesse:

    这里的一个潜在问题是 sys_clk 频率。 DAC JESD 链路有严格的要求、其中 TX_SYSCLK 必须等于 LaneRate/80。 在这种情况下、您使用的频率是6倍、您可以将 PLL 更改为  sys_clk 的输出30.72MHz、看看这是否有助于解决链路启动问题?

    此致、

    David Chaparro  

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

    David、

    感谢您快速回答。  这的确通过一条警告修复了初始化问题。  10次尝试中有8次、我必须 AFE.deviceBringup ()之后将 MASTER_RESET_n 置为无效、因为将 Rx_SYNC_RESET 置为无效未启动 AFE->FPGA 链路(数据有效保持低电平)。 在另外两次尝试中、将 Rx_SYNC_RESET 置为无效确实建立了 AFE->FPGA 链路。 我的完整过程:

    运行 setup.py、devInit.py、4T4R2F_2p4576.py
    对 FPGA 进行编程
    将 MASTER_RESET_n 置为无效
    将 TX_SYNC_RESET 置为无效
    运行 TI_IP_ConfigAfe.py (现在每次都出现 FPGA->AFE 链接)
    将 Rx_SYNC_RESET 置为无效(通常不会建立 AFE-FPGA 链路。  Rx_lmfc_to_buffer_release_delay[9:0]保持0、数据有效保持低电平、Rx_sync_n 变为高电平、但一个或多个通道具有错误)
    置为有效、然后置为无效 MASTER_RESET_n
    AFE->FPGA 链接出现、运行无错误

    我真的很感激能够提供快速解决方案!

    Jesse

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

    尊敬的 Jesse:

    很高兴这部分问题得到了解决。 我想问的一个问题是、您的系统是否需要确定性延迟? 如果是这样、我们不建议在 sys_clk 上设置 PLL、相反、我可以帮助您设置 LMK 设置、从而使您能够生成正好需要的 FPGA 频率。  

    对于另一个问题、您能否共享"TI_204C_IP_Ref.SV"文件? 我想查看几种设置、看看是否有任何因素可能导致这个问题。

    此致、

    David Chaparro  

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

    尊敬的 David:

    是的、我们的设计确实需要确定性延迟、因此最好听取您的建议。  需要注意的一点是、我们已经制造了 PCB 并且还在等待组装、因此、除非重新制造、否则可能无法增加另一个时钟输入。

    以下是我的  TI_204C_IP_Ref.sv 文件:

    e2e.ti.com/.../TI_5F00_204c_5F00_IP_5F00_ref.zip

    谢谢!

    Jesse

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

    尊敬的 Jesse:

    对于时钟建议、我建议为 LMK 提供外部时钟、并在分频器模式下使用 LMK 来提供频率较低的时钟。

    TI_204C_ip_ref 文件看起来可能已过时。 您能否使用  TI204C-IP-Release-v1.12文件夹中的文件替换您的文件? 您需要进行的唯一额外更改就是更新"8B/10B 协议相关参数"部分文件。  

    此致、

    David Chaparro  

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

    尊敬的 David:

    感谢您提供这些信息。  我使用 TI204C-IP-Release-v1.12-Latest/Reference_Designs/zcu102_8b10b/RTL/TI_204C_IP_Ref.sv 开始了我的设计、它包含一个 SYS_PLL 实例。  我相信您的建议是移除 sys_PLL 并直接获得 LaneRate/80时钟源。  是这样吗?

    谢谢!

    Jesse

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

    尊敬的 Jesse:

    我建议更新 LMK 以生产 LaneRate/80。 如果无法实现、则 可进行另一项测试、即将 TX_SYS_CLOCK 的源从"sys_clock"更改为"gt_tx_usrclk2"。 请注意、这仅用于测试设计、就像您使用该时钟时不支持源确定性延迟一样。

    此致、

    David Chaparro  

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

    尊敬的 David:
    感谢您的答复。  目前、我们没有额外的时钟源来为定制板上的 FPGA 提供。  我们将按照您的建议继续进行测试、并在重新旋转模块时添加 LaneRate/80时钟。

    我仍然不理解为什么 Rx 在将 Rx_SYNC_RESET 置为无效后 ADC/ADC 侧不能完全运行、而是需要额外的将 MASTER_RESET_n 置为有效/置为无效才能运行。  请注意、我们将使用 PLL 锁定250 MHz 源以1/8数据有效节奏从 JESD 内核中提取样本。

    谢谢!
    Jesse

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

    尊敬的 Jesse:

    额外复位的原因是使用较旧版本的"TI_204_IP_Ref.SV"文件。 如果您在文件中进行了以下更改、则应该不再存在问题。 请注意、TI204c IP 文件夹中的参考设计已更新为进行此修复。

    将第380行"assign mgt_gpio_in = 16 'd0;"替换为以下行:

    分配 mgt_gpio_in[0]= rx_sync_reset;
    分配 Mgt_GPIO_IN[1]= TX_SYNC_RESET;

    分配 Mgt_GPIO_IN[15:2]= 14 'd0;

    此致、

    David Chaparro