当前位置: 首页 > news >正文

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

  点击进入高速收发器系列文章导航界面


  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 包含共享逻辑的内核

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

在这里插入图片描述

图2 IP示例设计

1、端口信号

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

表1 IP端口信号
信号I/O含义
txoutclkO收发器的输出时钟,该时钟来自TX主通道,一般不会使用。
rxoutclkO收发器的输出时钟,该时钟来自RX主通道,一般不会使用。
tx_core_clkI用于驱动收发器txusrclk2的内核时钟,频率为发送通道线速率/40。
rx_core_clkI用于驱动收发器rxusrclk2的内核时钟,频率为接收通道线速率/40。
drp_clkI动态重新配置端口(DRP)时钟。
cpll_refclkI收发器通道PLL的参考时钟。
qpll_refclkI7系列四通道QPLL的参考时钟。
tx_reset_gtITX通道复位信号。
rx_reset_gtIRX通道复位信号。
tx_reset_doneOTX通道复位完成指示信号。
rx_reset_doneORX通道复位完成指示信号。
tx_sys_resetITX通道收发器及PLL复位信号。
rx_sys_resetIRX通道收发器及PLL复位信号。
gtN_txdata[31:0]I发送通道的用户数据接口,N取值范围[0,lane-1]。
gtN_txcharisk[3:0]I发送通道的K码指示信号,N取值范围[0,lane-1]。
gt_prbssel[2:0]I设置发送通道的PRBS模式。
gtN_rxdata[31:0]O接收通道的用户数据接口,N取值范围[0,lane-1]。
gtN_rxcharisk[3:0]O接收通道的K码指示信号,N取值范围[0,lane-1]。
rxencommalignI逗号对齐指示信号,高电平有效。
txp_out[N:0]O正差分串行数据输出, N取值范围[0,lane-1]。
txn_out[N:0]O负差分串行数据输出, N取值范围[0,lane-1]。
rxp_in[N:0]I正差分串行数据输入, N取值范围[0,lane-1]。
rxn_in[N:0]I负差分串行数据输入, N取值范围[0,lane-1]。

  我在网上发现很多人对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 GTX/H数据位宽

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

在这里插入图片描述

图4 7系列FPGA复位控制

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

2、寄存器

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

在这里插入图片描述

图5 只读寄存器

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

在这里插入图片描述

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

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

2.1、更改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原理图

  上图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接收端的内部时钟架构

  在前文分析GTX内部时钟架构的时候推测出SIPO和ISPO模块是双沿传输数据的,因此可以计算得到线速率为f(LineRate)=f(pllClkOut)*2/D。

  因此可以通过设置M、N、D和VCO的输出频段等几个参数达到更改线速率的效果,比如参数M与QPLL_REFCLK_DIV寄存器的值对应。

在这里插入图片描述

图9 设置有效分频参数

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

在这里插入图片描述

图10 M和N参数的设置

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

在这里插入图片描述

图11 参数D的设置

2.2、更改CPLL参数配置线速率

  CPLL比QPLL会简单一点,GTX的VCO输出频率范围1.63.3GHz,GTH的VCO输出频率范围1.65.16GHz。

在这里插入图片描述

图12 CPLL内部框图

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

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

在这里插入图片描述

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

  参数D的配置与图11一致,一般情况下不需要去修改这些参数,在配置IP时vivado会自动计算出这些寄存器的数值。但是如果在系统运行时,想要去更改某路收发器的线速率,就必须了解这些寄存器的配置原理。

  配置这些参数时,首先要考虑VCO的频率范围,如果存在多组参数能够满足要求的情况,则选中数值较小的分频参数那一组。

  上述通过axi_lite配置高速收发器内部的参数,因为该IP可以包含多个高速收发器通道。因此在配置具体的高速收发器之前,需要通过地址为0x24的寄存器写入后续需要配置的高速收发器通道。否则将会对默认的高速收发器通道进行配置,导致其余收发器的参数没有配置。

在这里插入图片描述

图14 选择高速收发器通道

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

  该手册可以在公众号后台回复“xilinx手册”(不包括引号),在其的JESD204B文件夹中获取。

http://www.lryc.cn/news/456429.html

相关文章:

  • Java面试——场景题
  • xss-labs靶场第一关测试报告
  • 微软PowerBI认证!数据分析师入门级证书备考攻略来啦
  • 上海AI Lab视频生成大模型书生.筑梦环境搭建推理测试
  • 3D看车如何实现?有哪些功能特点和优势?
  • Pytorch中不会自动传播梯度的操作有哪些?
  • 【设计模式】软件设计原则——开闭原则里氏替换单一职责
  • 项目完整开发的流程
  • 性能测试学习6:jmeter安装与基本配置/元件/线程组介绍
  • 大数据ETL数据提取转换和加载处理
  • 物理与环境安全技术
  • 手把手教你如何配置好VS Code的WEB基础开发环境(保姆级)
  • 高性能、编译器编写语言、编程语言的高低贵贱
  • Python安装库时使用国内源pip install -i
  • Linux 再入门整理:详解 /etc/fstab 文件
  • 2.8 双绞线、同轴电缆、光纤与无线传输介质
  • OBOO鸥柏:布局于为无人机展厅行产业提供LCD液晶显示终端
  • win10状态栏中 “音量” 符号丢失,而在“打开或关闭系统图标”中音量开关无法调节的解决方法
  • Mysql 学习——项目实战
  • Springboot 整合 logback 日志框架
  • Hugging face简要介绍
  • A股知识答题pk小程序怎么做?
  • 单细胞转录组 —— kb-python 原始数据处理
  • 全同态加密算法概览
  • leetcode 刷题day38动态规划Part07 打家劫舍(198.打家劫舍、213.打家劫舍II、337.打家劫舍III)
  • C0010.Qt5.15.2下载及安装方法
  • 制造企业MES管理系统的应用策略与实施路径
  • Halcon 3D应用 - 胶路提取
  • 【Redis】Redis线程模型
  • Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...