F-Tile动态重配置设计示例用户指南

ID 710582
日期 3/28/2022
Public
文档目录

4.1.1. PMA/FEC Direct PHY Multirate设计示例:仿真测试台

PMA/FEC Direct PHY Multirate设计示例支持下表中显示的配置。
表 11.  PMA/FEC Direct PHY Multirate设计示例配置
基本类别(base variant) 可用于动态重配置的类别(variant)
50G-1 53.1250Gbps (PAM4) PMA Direct
53.1250Gbps (PAM4) FEC Direct (544,514)
25.7812Gbps (NRZ) PMA Direct
24.3302Gbps (NRZ) PMA Direct
10.3125Gbps (NRZ) PMA Direct
10.1376Gbps (NRZ) PMA Direct
9.8304Gbps (NRZ) PMA Direct
4.9152Gbps (NRZ) PMA Direct
2.4576Gbps (NRZ) PMA Direct
PMA/FEC Direct PHY Multirate示例设计仿真测试台结构图如下。
图 13. 50G-1 Base Variant的仿真测试台结构图

测试台程序通过 Avalon® memory-mapped interface访问信号,状态信号和控制信号对测试台组件进行控制。 Avalon® memory-mapped interface仲裁器(arbiter)用于将从测试台程序的 Avalon® memory-mapped interface访问解码成多个 Avalon® memory-mapped interface slave。

testwrap模块中包含PRBS generator和PRBS verifier。有2种类型的testwrap模块:
  • PMA testwrap – 用于PMA direct配置。
  • FEC testwrap – 用于FEC direct配置。
对于50G-1 base variant中的25.7812Gbps和更低的数据速率,此设计共享一个25G PMA testwrap。

有两个参考时钟提供给50G-1 base variant的F-Tile Reference and System PLL Clocks Intel FPGA IP。156.25 MHz的参考时钟用于Ethernet协议数据速率,而122.88 MHz的参考时钟用于CPRI协议数据速率。

仿真流程:

  • PMA/FEC Direct PHY Multirate IP根据基本配置文件(base profile)进行上电。
  • 根据上电配置文件(power-up profile)对测试台变量进行初始化。位于top_tst.sv文件中的参数设置是:
    • DR_NUM:表示动态重配置转换的数量(number of dynamic reconfiguration transition)。
    • DR_SEQ:表示动态重配置序列(dynamic reconfiguration sequence)。
  • 根据参数设置中的序列执行动态重配置。
  • 检查测试台错误标志(error flag)并确定测试台是通过了还是失败了。动态重配置流量测试之后,如果有任何错误,那么此错误标志被设为1。

若要进行自定义(customization),您可以通过修改top_tst.sv文件中的DR_NUMDR_SEQ本地参数对测试流程进行配置。profile ID被传递到IP以配置原定的动态重配置任务。

动态重配置序列示例:53.1G > 25.7G > 53.1G FEC > 24.3G > 10.1G > 9.8G > 53.1G

若要实现此动态重配置序列,您必须执行六次动态重配置转换,然后指定重配置序列。更新以下本地参数设置文件:
// Available Modes
localparam DR_MODE_50G_1      = 4'b0000; // ETH
localparam DR_MODE_25G_1      = 4'b0001; // ETH
localparam DR_MODE_24G_1      = 4'b0010; // CPRI
localparam DR_MODE_10p1G_1    = 4'b0011; // CPRI
localparam DR_MODE_9p8G_1     = 4'b0100; // CPRI
localparam DR_MODE_4p9G_1     = 4'b0101; // CPRI
localparam DR_MODE_2p4G_1     = 4'b0110; // CPRI
localparam DR_MODE_10G_1      = 4'b0111; // ETH
localparam DR_MODE_50GKP_1    = 4'b1000; // ETH

// DR from base variant (DR_MODE_50G_1) to other variants in the following order, starting from left.
localparam DR_NUM = 6;
localparam [3:0] DR_SEQ [0 : DR_NUM-1] = {DR_MODE_25G_1,DR_MODE_50GKP_1,DR_MODE_24G_1,DR_MODE_10p1G_1,DR_MODE_9p8G_1,DR_MODE_50G_1};