前言

原文中的图片有所缺失,现根据Xilinx官方手册 <7 Series FPGAs GTX/GTH Transceivers User Guide[UG476] >进行补齐。


上一篇博文介绍了GTX的发送端,这一篇将介绍GTX的RX接收端,GTX RX接收端的结构和TX发送端类似,数据流方向相反,不过和发送端也有一些区别,GTX的RX接收端结构图如图1所示:

图1

下面将根据数据流方向介绍一下RX接收端各个电路部分的功能。

RX Equalizer (DFE and LPM): RX信号从AFE(模拟前端)进来之后,首先经过RX均衡器,均衡器的主要作用是用于补偿信号在信道传输过程中的高频损失,因为信道是带宽受限的,所以信号经过它必将造成衰减甚至遭到破坏。

RX接收端的均衡器有两种,分别是LPM和DFE,两者功耗和性能有所不同,其中LPM功耗较低,DFE能提供更精确的滤波器参数,从而可以更好的补偿传输信道损失,因此性能更好。

RX CDR (Clock Data Recovery): RX的时钟数据恢复电路是图1的绿色圆圈部分,因为GTX传输不带随路时钟,因此在接收端必须自己做时钟恢复和数据恢复,时钟数据恢复电路具体过程如图2所示:

图2

首先外部数据进来之后经过均衡器,紧接着均衡器出来的数据就进入时钟数据恢复电路。GTX使用相位旋转CDR结构,从DFE进来的数据分别被边缘采样器和数据采样器捕获,然后CDR状态机根据两者决定数据流的相位并反馈控制相位内插器(PI),当数据采样器的位置位于眼图中央的时候边缘采样器锁定到数据流的传输域。其中CPLL或者QPLL为相位内插器提供基础时钟,使CDR状态机能很好进行相位控制。

RX Fabric Clock Output Control: RX接收端的时钟结构和TX发送端的很类似,如图3所示,图中红色方框的CDR部分是和TX端最大的区别。

图3

和TX发送端一样,RX接收端的时钟结构也主要分为串行时钟分频器和并行时钟分频器,D分频器是串行时钟分频器,用于降低PLL时钟速率以支持较低的线速率,后面的并时钟分频器主要根据设置的位宽和是否使用8b/10b生成不同的并行数据时钟。

RX Polarity Control: 和TX发送端一样,RX接收端也拥有极性控制功能,可用于实现数据翻转,在PCB设计时RXP和RXN接反时使用这个功能。

RX Pattern Checker: GTX包含一个内嵌的PRBS检查器,如图4所示,有四种不同的伪随机序列生成器可以选择,检查器是自同步的,且工作在边界对齐和解码之前,这个功能可以用来测试信号的完整性。

图4

RX Byte and Word Alignment: 串行数据在被并行化之前,比如找到一个合适的特征边界,这个特征边界或者字符边界是由TX发送端发送的一个可识别序列,通常称为标识符(comma)或者K码,接收端在到来的数据中搜索这个标识符,当找到这个标识符之后,后面接收的数据都已这个标识符为边界进行并行化,其工作原理如图5所示。

图5

如图5所示,当在串行数据中搜索到comma之后(红色方框),后面的数据都已此为边界对齐数据。

RX 8B/10B Decoder: 如果发送端发送的数据是8B/10B编码的,那么在接收端就需要8B/10B解码,否则的话可以旁路,这一功能在TX发送端介绍时有说明,这里就不再做介绍。

RX Elastic Buffer: RX接收端弹性缓冲器是一个重要的功能,和TX接收端缓冲相比,RX多出了一个“弹性”属性,意味着和TX发送端相比,RX弹性缓冲器有更多的功能(RX时钟纠正和RX通道绑定)。RX弹性缓冲器在RX接收端的位置如图6绿色方框所示。

图6

从图6可以知道,RX接收端PCS子层主要有两个时钟域,分别是XCLK和RXUSRCLK时钟域,RX弹性缓冲器功能主要用来匹配两个时钟相位差。

如果旁路掉这个RX弹性缓冲器,那么为了保证数据的稳定接收,需要满足一定的条件,首先需要一个相位对齐电路处理SIPO电路时钟和XCLK时钟的相位差,其次XCLK需要配置成RXUSRCLK时钟,保证XCLK和RXUSRCLK同一个时钟域,不存在相位差。

RX Clock Correction: RX弹性缓冲器的“弹性”反映在可以通过时钟纠正来调整XCLK和RXUSRCLK的频率差。对于RX接收端来说,即便XCLK和RXUSRCLK运行在同一个时钟频率,但往往存在一定的差异,这种差异很容易导致RX弹性缓冲器写满或者读空,时钟纠正功能应运而生。时钟纠正功能如图7所示。

图7

通俗的讲,在TX发送端的时候,我们会定期的发送K码用于保证接收端边界对齐,在RX弹性缓冲器里面数据不足的时候,接收到的K码数据将被复制写入RX弹性缓冲器,以保持RX弹性缓冲器处于半满。当RX弹性缓冲器数据过多的时候,接收到的K码数据将被舍弃不写入RX弹性缓冲器,以保持RX弹性缓冲器处于半满。

RX Channel Bonding: 通道绑定功能同样体现RX弹性缓冲器的“弹性”之处,对于像PCIE和SRIO等协议,可以支持多lane传输来提高传输总带宽。因为传输信道的原因,TX发送端同一时刻发送的数据在RX接收端不能被所有的lane同一时刻接收,每一个lane接收存在时间差,那么在恢复数据的时候就要重新对齐,因此需要在RX接收端执行通道绑定功能。

为了实现这个功能,TX发送端在发送的数据流中加入一个同样的通道绑定序列,子啊RX接收端根据每一个lane检测到的通道绑定序列在各自的RX弹性缓冲器做相应的调整和延迟,最终使得各个lane的数据不存在偏移,在FPGA RX Interface的输出能和TX发送端发送的数据一样,功能如图8所示,左边是未对齐数据,右边是对齐的数据。

图8

FPGA RX Interface: 用户通过FPGA RX Interface接收数据,和TX发送端相似,在RXUSRCLK2的上升沿接收数据(TX发送端是在TXUSRCLK2上升沿发送数据),该用户端口可以设置成16/20/32/40/64/80bit位宽,RXUSRCLK2的速率由RX线速率、RXDATA位宽和8B/10B是否使能决定。具体端口如表1所示,和TX相似,就不再描述。

表1

到这里,RX接收端就介绍完毕,下一篇博客将介绍7-Series Transceivers IP如何使用。

转载出处:Xilinx-7Series-FPGA高速收发器使用学习—RX接收端介绍

Xilinx-7Series-FPGA高速收发器使用学习—RX接收端介绍相关推荐

  1. UG476-Xilinx-7Series-FPGA高速收发器使用学习—RX接收端介绍

    上一篇博文介绍了GTX的发送端,这一篇将介绍GTX的RX接收端,GTX RX接收端的结构和TX发送端类似,数据流方向相反,不过和发送端也有一些区别,GTX的RX接收端结构图如图1所示: 图1 下面将根 ...

  2. Xilinx 系列 FPGA 高速收发器的一些知识

    目录 1.GTX概念 1.1  GT定义 1.2 GTX的分布 1.3 GTX结构 2 . ibert 3. DRP端口 1.GTX概念 1.1  GT定义 GT的意思是Gigabyte Transc ...

  3. FPGA Xilinx 7系列高速收发器GTX通信

    Xilinx 7系列高速收发器GTX 说明: FPGA: TX端_zynq(7z035) RX端_zynq(7z100). 两个FPGA通过SFP(光纤)接口相连进行GTX的通信. 环境:Vivado ...

  4. FPGA高速收发器GTX/GTH关于外部参考时钟MGTREFCLK的设计

    FPGA高速收发器GTX/GTH关于外部参考时钟MGTREFCLK的设计 0  背景 最近在调试多片FPGA基于GTX高速收发器的芯片间接口通信,FPGA型号为Kintex7-325T.硬件板卡是直接 ...

  5. XILINX FPGA 高速收发器 GTP设计初探

    XILINX 高速收发器GTP之配置 FPGA内嵌收发器相当于以太网中的PHY芯片,但更灵活更高效,线速率也在随着FPGA芯片的发展升级.本文对7系列FPGA内部高速收发器GTP IP核的配置和使用做 ...

  6. Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念

    本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致文章过于冗长.所以单独写一篇基本概念的介绍,基于Xilinx 7系列的GTX ...

  7. zynq中mgtx应用_Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念

    本来写了一篇关于高速收发器的初步调试方案的介绍,给出一些遇到问题时初步的调试建议.但是发现其中涉及到很多概念.逐一解释会导致文章过于冗长.所以单独写一篇基本概念的介绍,基于Xilinx 7系列的GTX ...

  8. XILINX Ultrascale/Ultrascale+ 高速收发器时钟MGTHREFCLK原语调用

    1.概述 2.高速收发器 字面意思专用于收发高速数据,UltraScale架构中的GTY收发器是功率高效的收发器,在UltraScale FPGA中支持500Mb/s到30.5Gb/s的线速率,在Ul ...

  9. UG476-Xilinx-7Series-FPGA高速收发器使用学习

    TX端 每一个收发器拥有一个独立的发送端,发送端有PMA(Physical Media Attachment,物理媒介适配层)和PCS(PhysicalCoding Sublayer,物理编码子层)组 ...

最新文章

  1. Winform窗体初始化Combox控件并模糊查找内容
  2. python list去掉引号_最新的python面试题集170之三(基础性学习)
  3. Eureka服务器端启动时报错:Connection refused :connect
  4. access开发精要(3)-子数据表
  5. 部署LAMP-mysql 安装
  6. Duilib教程-控件练习
  7. 淘宝开放API,很不错
  8. vue打包后出现一些map文件的解决方法
  9. 明年起Polkascan不再为Kulupu提供服务
  10. mysql 事务原子性_数据库事务原子性、一致性是怎样实现的?
  11. java jdk7 环境变量设置_Java JDK7在Windows 8下的环境变量配置
  12. ScheduledThreadPoolExecutor之scheduleWithFixedDelay和scheduleAtFixedRate的区别
  13. opencv 模式识别学习
  14. Java 爬虫系列丨(一)爬虫介绍
  15. 超级详细的iptables介绍
  16. Qt 之转盘实现C++语言
  17. 使用SpringBoot报错:Inferred type ‘S‘ for type parameter ‘S‘ is not within its bound。【解决办法】
  18. chrome浏览器替换code.jquery.com CDN的加速URL
  19. Kali 开机报错解决方案
  20. HTTP1.1协议-RFC2616-中文版

热门文章

  1. 渲染器 render
  2. 特种机械车辆控制器SPC-CFMC-D24N20资料
  3. python输入十个数用冒泡排序_python 冒泡排序法
  4. 小型服务器的容量能无限扩充吗,揭秘1U服务器无限扩充能力
  5. 虚拟同步发动机(VSG)多机并联系统频率稳定性分析
  6. 乳业何以自信?来自呼和浩特的48小时观察
  7. 如何将本地仓库代码推到远程仓库
  8. TMS320F28335 实现printf在调试终端打印
  9. 51单片机的串口通信
  10. 1814 简单的字符串查找