PAM4(4-Level Pulse Amplitude Modulation) 的全称是四电平脉冲幅度调制,通过种不同的电平进行信号传输,每个电平幅度分别对应 00、01、10 和11。每个周期可以传输两个 Bit 的信息,相比传统的 NRZ 模式,信号传输速率相当于原来的两倍,当前主流的 400G 光模块广泛采用 PAM4 技术。AMD Versal™ 自适应 SoC 的 GTM 支持 PAM4 电平,本文将介绍如何使用 GTM 仿真和观察 PAM4 信号。
新建 GTM Example Design:
1. 点击 AMD Vivado™ Design Tool 左侧导航栏 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,其余保持默认。
4. 右击 IP 选择 Open IP Example Design。
运行行为仿真
1. 在 Settings 页面的 Simulation 菜单中加入命令 -d SIM_SPEED_UP 可加速仿真结束的时间,如下图所示:
2. 单击 Run Simulation 进入到仿真界面,并且全速运行直到仿真结束。
TestBench 代码分析
1. 进入到仿真界面以后,首先会看到 GT_Serial_TX_rxp/n 和 GT_Serial_RX_rxp/n 都处于高阻(High-Z)状态,这是因为外部的端口信号只支持 0 和 1 两种状态,而 PAM4 信号有 0,1,2,3 四种状态,端口上无法显示出 4 种电平状态所导致。
2. 为了解决这个问题,需要把端口等效成 Integer。以 GTM Ch0 为例,在 Testbench 里面定义了两个 Integer 类型的信号名:gtm_ch0_p/n。
3. Testbench 中通过以下方式对信号赋值:
通过这个路径可以看到,在 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 信号的变化。
6. 当 Versal GTM 模式设置为 NRZ 时,也需要同样观察相关的 Integer 信号。
AMD 自适应 SOC 及 FPGA 中文技术支持社区