详解Xilinx JESD204B PHY层端口信号含义及动态切换线速率

文章来源:数字站

Xilinx官方提供了两个用于开发JESD204B的IP,其中一个完成PHY层设计,另一个完成传输层的逻辑,两个IP必须一起使用才能正常工作。

7系列FPGA只能使用最多12通道的JESD204B协议,线速率为1.0至12.5 Gb/s;而UltraScale和UltraScale+系列FPGA还可以使用最多8通道的JESD204C协议,线速率为1.0至32 Gb/s。
PHY层的IP是在GTX/H的基础上封装得到的,因此GTX/H的很多原理在该IP中依旧可以使用,包含共享逻辑的内核框图如下所示。

图1 包含共享逻辑的内核.png

图片图1 包含共享逻辑的内核

下图是该IP的一个使用场景,包含三路JESD204B的收发通道,此处使用了三个PHY IP,其实可以只使用一个三通道的PHY,通过AXI接口调节各个通道的线速率。

图2 IP示例设计.png

图2 IP示例设计

端口信号

手册对该IP的讲解比较简单,没有其内部详细的框图,因此从端口信号出发,分析其功能。图1是包含三个收发器通道的端口信号框图,端口信号的含义如下表所示:

表1.JPG

我在网上发现很多人对tx_core_clk的频率为什么是线速率除以40不理解,一些博主给出的答案是手册上这么写的,手册确实是这么写的,没有什么毛病。

但是前面我们已经详细分析了GTX的时钟架构,要知道这个原因还不是易如反掌吗?
首先JESD204B的PHY是在GTX/H的基础上封装得到的,并且tx_core_clk就是GTX/H的txusrclk2,那只需要知道txusrclk2的频率计算方式即可。
JESD204B采用8B10B编码,则如下图可知,输入数据为32位,编码后的数据位宽为40,则txusrclk2的频率为线速率除以40。不管PCS内部并行数据位宽是20位还是40位,都不会影响txusrclk2的频率,这个参数只会影响txusrclk的频率。图片
图3 GTXH数据位宽.png

图3 GTX/H数据位宽

7系列FPGA该IP的复位框图如下所示,sys_reset和reset_gt两个复位的范围不一样,reset_gt只对GTX/H进行复位,而sys_reset会同时复位QPLL、CPLL以及内部的逻辑部分,范围更大。
图4 7系列FPGA复位控制.png

图4 7系列FPGA复位控制

其余端口信号都比较简单,是GTX的8B10B编码方式的简化端口信号,不再赘述其含义。该IP还可以通过一组axi_lite端口去配置其内部的寄存器,这部分信号上表并没有列出。还可以把调试接口引出,调试接口相关信号也与GTX的信号基本一致,所以不再赘述。

寄存器

该IP内部提供了很多寄存器,用户可以通过axi_lite总线进行配置,如下图所示,很多只读寄存器,通过这些寄存器可以获取IP的一些配置参数。
图5 只读寄存器.png

图5 只读寄存器

内部还有很多配置GTX/H的寄存器,比如回环模式、预加重、去加重、均衡器等等,如下图所示。
图6 GTXH的相关寄存器配置.png

图6 GTX/H的相关寄存器配置

上述这些寄存器要么在GTX/H中经常出现,要么就是一些只读的状态寄存器,用户一般会使用到的其实是更改线速率的相关寄存器,其实就是更改QPLL/CPLL的分频系数。

更改QPLL参数配置线速率

QPLL内部框图如下所示,首先外部时钟信号从5处输入,经过M倍分频后到达4处,4和3一起输入鉴相器,然后经过环路滤波器,当3和4的相位频率相同时,QPLL输出锁定。
GTX的压控振荡器VCO可以输出两种频率范围,Lower Band的范围是5.93~8GHz,Upper Band的范围是9.8~12.5GHz。而GTH QPLL的VCO频率范围是8~13.1GHz。
图片图7 QPLL原理图.png

图片图7 QPLL原理图

上图2处是输出时钟信号,1处是VCO输出信号,3处是VCO输出信号经过N分频后的反馈信号。
因为QPLL锁定的条件是鉴相器输入信号频率相位保持一致,因此会有如下公式fPLLClkin / M = fPLLClkout * 2 / N,最终计算得到fPLLClkout = (fPLLClkin * N) / (2 * M)。
如下图所示,QPLL或者CPLL的输出时钟经过数据选择器作为CDR的参考时钟信号,CDR调整该时钟和接收数据的相位后,经过D分频后作为串并转换(SIPO)的串行时钟信号。
图8 GTX接收端的内部时钟架构.png

图8 GTX接收端的内部时钟架构

在前文分析GTX内部时钟架构的时候推测出SIPO和ISPO模块是双沿传输数据的,因此可以计算得到线速率为f(LineRate)=f(pllClkOut)*2/D。
因此可以通过设置M、N、D和VCO的输出频段等几个参数达到更改线速率的效果,比如参数M与QPLL_REFCLK_DIV寄存器的值对应。图片
图9 设置有效分频参数.png

图9 设置有效分频参数

上图中M和N参数对应的寄存器地址和设置如下所示,QPLL需要注意VCO的频段设置,超出范围则无法得到正确的输出时钟频率。图片
图10 M和N参数的设置.png

图10 M和N参数的设置

由于参数D是位于PMA内部,与QPLL和CPLL没有关系,因此不管使用QPLL还是CPLL,分频系数D的寄存器均如下所示,因为两个通道均有该结构,因此都需要设置该参数。
图11 参数D的设置.png

图11 参数D的设置

更改CPLL参数配置线速率

CPLL比QPLL会简单一点,GTX的VCO输出频率范围1.6~3.3GHz,GTH的VCO输出频率范围1.6~5.16GHz。

图12 CPLL内部框图.png

图12 CPLL内部框图

CPLL锁定条件为鉴相器的两个输入频率和相位保持一致,最终得到如下公式:

公式1.png

QPLL和CPLL的输出时钟与线速率关系是一样的,因此不再赘述;最终也只需要配置N1、N2、M、D这几个参数,就可以改变线速率。CPLL这几个参数对应的寄存器名和取值范围如下图所示。

图13 CPLL分频系数与寄存器对应关系.png

图13 CPLL分频系数与寄存器对应关系

参数D的配置与图11一致,一般情况下不需要去修改这些参数,在配置IP时vivado会自动计算出这些寄存器的数值。但是如果在系统运行时,想要去更改某路收发器的线速率,就必须了解这些寄存器的配置原理。
配置这些参数时,首先要考虑VCO的频率范围,如果存在多组参数能够满足要求的情况,则选中数值较小的分频参数那一组。
上述通过axi_lite配置高速收发器内部的参数,因为该IP可以包含多个高速收发器通道。因此在配置具体的高速收发器之前,需要通过地址为0x24的寄存器写入后续需要配置的高速收发器通道。否则将会对默认的高速收发器通道进行配置,导致其余收发器的参数没有配置。
图14 选择高速收发器通道.png

图14 选择高速收发器通道

该IP其实比较简单,只是对GTX/H进行了简单封装,接收端连对齐都没有实现,必须配合JESD204B的发送或接收模块一起使用才行。后面先单独仿真一下该模块,在与上层IP一起使用。

最新文章

最新文章