Versal GTM如何用XSIM仿真和观察PAM4信号

作者:Zhang Cheng,AMD工程师;来源:AMD开发者社区

PAM4(4-Level Pulse Amplitude Modulation) 的全称是四电平脉冲幅度调制,通过种不同的电平进行信号传输,每个电平幅度分别对应00、01、10和11。每个周期可以传输两个bit的信息,相比传统的NRZ模式,信号传输速率相当于原来的两倍,当前主流的400G光模块广泛采用PAM4技术。Versal器件的GTM支持PAM4电平,本文将介绍如何使用GTM仿真和观察PAM4信号。

1. 新建GTM example design

1)点击Vivado左侧导航栏Create Block design新建bd文件。

2)在bd的空白处右击,选择Add IP,在弹出的对话框种选择Versal ACAPs Transceivers Wizard。

3)配置Transceiver Wizard

  • Transceiver Type选择GTM

  • Transceiver Configs Protocol页面可以选择多种preset的模板,这里选择GTM:(PAM4) Ethernet 53G,其余保持默认

1.png

         4) 右击IP选择Open IP Example Design

2. 运行行为仿真

1) 在Settings页面的Simulation菜单中加入命令-d SIM_SPEED_UP可加速仿真结束的时间,如下图所示:

2.png

2) 单击Run Simulation进入到仿真界面,并且全速运行直到仿真结束。

3. TestBench代码分析

1) 进入到仿真界面以后,首先会看到GT_Serial_TX_rxp/n和GT_Serial_RX_rxp/n都处于高阻(High-Z)状态,这是因为外部的端口信号只支持0和1两种状态,而PAM4信号有0,1,2,3四种状态,端口上无法显示出4种电平状态所导致。

3.png

2) 为了解决这个问题,需要把端口等效成integer。以GTM Ch0为例,在Testbench里面定义了两个integer类型的信号名:gtm_ch0_p/n。

3) Testbench中通过以下方式对信号赋值:

force gtm_ch0_p = wrapper_inst.gt_quad_base_0_exdes_bd_i.gt_quad_base_0.inst.quad_inst.CH0_GTMTXP_integer;

force gtm_ch0_n = wrapper_inst.gt_quad_base_0_exdes_bd_i.gt_quad_base_0.inst.quad_inst.CH0_GTMTXN_integer;

force wrapper_inst.gt_quad_base_0_exdes_bd_i.gt_quad_base_0.inst.quad_inst.CH0_GTMRXN_integer = gtm_ch0_n;

force wrapper_inst.gt_quad_base_0_exdes_bd_i.gt_quad_base_0.inst.quad_inst.CH0_GTMRXP_integer = gtm_ch0_p;

通过这个路径可以看到,在GTM的Quad中已经对TXP/N定义了一个integer,通过force的方式直接把Integer赋值到gtm_ch0_p/n,再赋值给底层GTM的CH0_GTMRXP/N_integer,从而模拟外部回环。

4) 因此,需要在Watch窗口中观察gtm_ch0_p/n或者底层的CH0_GTMTXP/N_integer和CH0_GTMRXP/N_integer。

5) 对信号名右击,在弹出的Waveform Style中选择Analog,然后在Analog Settings中把Interpolation Style设置为Hold。这样就可以更加直观的查看PAM4信号变化了。

4.png

6) 当Versal GTM模式设置为NRZ时,也需要同样观察相关的integer信号。

最新文章

最新文章