如何理解GTX发送通道的用户接口?(高速收发器二)

  前文讲解了高速收发器的QPLL及CPLL和差分时钟相关内容,如下图所示。本文就打开高速收发器通道的内部结构,进行简要讲解。

在这里插入图片描述

图21GTXE2_CHANNEL原始拓扑

  收发器的内部框图如下所示,上半部分是发送通道,下半部分是接收通道,均包含PCS和PMA两部分。其中PMA的功能为:串并转换和模拟部分。PCS的功能为:并行的数字电路处理。

在这里插入图片描述

图2 GTXE2_CHANNEL原始拓扑

  本文先讲解发送通道,接收通道的很多内容相似,只有部分区别,下图是发送通道的内部框图,搞懂这张图,基本上发送通道的功能就了解的差不多了。

在这里插入图片描述

图3 GTX收发器TX框图

1. FPGA TX Interface

  GTX发送通道的用户接口,用户数据通过该接口的信号输入。用户输入的数据TXDATA与用户发送时钟TXUSRCLK2上升沿对齐,数据位宽可以设置为2、4、8字节,常用数据位宽4字节,即32位。

2、8B/10B Encoder

  对待发送的数据进行8B/10B编码,作用与前文DVI接口的TMDS编码一致,直流均衡,保证已传输的数据中1和0的个数长期相等。

  在配置IP时,可以选择发送/接收数据的编码/解码方式,如果把用户数据位宽设为32位,采用8B/10B编码,则编码后的数据位宽为40位,如下图所示。

在这里插入图片描述

图4 8B/10B编码

  这个数据的位宽大小其实与线速率和编码方式均有关,如下表所示,当使能8B/10B编码时,发送数据位宽TX_DATA_WIDTH只能设置为20、40、80。

  注意表中TX_DATA_WIDTH表示一个用户数据经过8B10B编码后的数据位宽,而FPGA Interface Width表示用户接口每次传输的数据位宽,该数据与后文的TXUSRCLK2对齐。Internal Data Width表示PCS内部并行数据一个时钟传输的数据位宽,该数据与后文的TXUSRCLK对齐。

  当TX_DATA_WIDTH与Internal Data Width相等时,表示PCS内部传输一个数据只需要一个时钟,此时TXUSRCLK的频率与TXUSRCLK2频率会相等。如果TX_DATA_WIDTH是Internal Data Width的二倍,则PCS内部需要两个时钟才能传输一个经过8B10B编码后的用户数据,那么TXUSRCLK的频率是TXUSRCLK2频率的2倍。可以在后文图12的时钟关系中进行验证。

  PCS内部每次可以传输2字节或者4字节数据,通过TX_IN_DATAWIDTH参数进行设置,TX_IN_DATAWIDTH为0时每次传输2字节数据,为1时每次传输4字节数据,当线速率大于6.6Gb/S时,每次必须传输4字节数据。

  因此由下表可知,当线速率为10Gb/S,使能8B/10B时,用户数据位宽只能为32或者64位,并且编码后的数据位宽均为40位。

在这里插入图片描述

图5 数据位宽

  当不使能8B/10B编码且线速率小于6.6Gb/S时,用户输入的数据位宽可以是16、20、32、40、64、80。此时如果TXDATA为16/32/64,TX_DATA_WIDTH为20/40/80,TXCHARDISPMODE和TXCHARDISPVAL端口用于将TXDATA端口从16位扩展到20位、32位扩展到40位或64位扩展到80位。如下图所示。

  通过下图可知GTX先发送低字节数据,后发送高字节数据。

在这里插入图片描述

图6 8B/10B编码器旁路时发送的TX数据

  在多数情况下都是要使用8B/10B编码或者64B/66B编码的,此时TXCHARDISPMODE和TXCHARDISPVAL可以用来控制极性,与TMDS编码类似,直流均衡,硬核模块可以自己实现,用户也可以通过这两个信号自己实现。

  采用8B/10B编码,每传输10bit数据,需要传输2bit无效数据。数据传输效率只有百分之八十,为了提高数据传输速率,同时保留编码方案的优势,可以使用64B/66B编码。

3. TX Gearbox

  支持使用64B/66B编码,由图3可知,8B/10B Encoder和TX Gearbox的输入、输出都是连接的同一个端口。

  因此在实际使用时,如果不使用编码,数据直接到达数据选择器输入端,然后输出。如果使用8B/10B编码,则会经过8B/10B Encoder到达数据选择器输入端。如果使用64B/66B则经TX Gearbox到达数据选择器输入端口。在使用64B66B编码时详细讲解该部分内容。

4. TX PIPE Control

  全称为Physical Interface for PCI Express,PCIe物理层接口。如果使能PCIE接口,则该通道是PCIE的数据通道,否则将不会被使用。

5. Pattern Generator

  伪随机序列(Pseudo-random bit sequences,PRBS),频谱接近白噪声,一般用于高速串行通信通道传输的误码率测试。相关的设置端口如下所示,原理与M序列类似。

在这里插入图片描述

图7 PRBS端口设置

  手册中显示提供了四种PRBS波形,分别是PRBS-7、PRBS-15、PRBS-23、PRBS-31,其中PRBS-7的表达式为x^7+x^6+1,输出数据每2^7-1个时钟循环一次,实现方式也很简单,几个移位寄存器加异或门就行了。

在这里插入图片描述

图8 TX PRBS码发生器模块

6和16、TX Phase Interpolator Controller

  TX相位插值器控制器模块,允许使用PCS中的TX相位插值器PPM(百万分之一)控制器模块来控制TX PMA中的TX PI,以优化高速数据传输过程中的信号质量,保持传输的稳定性和可靠性。

7. Phase Adjust FIFO

  相位调整FIFO缓冲器如下图是时钟域的划分,在发送端的PCS子层里面有两个并行时钟域,分别是PMA相连的并行时钟(XCLK)和TXUSRCLK时钟。要传输数据,XCLK速率必须与TXUSRCLK速率匹配,并且必须解决两个域之间的所有相位差。

  GTX的发送数据通道包括一个FIFO缓冲器和一个TX相位对准电路,用于解决XCLK和TXUSRCLK域之间的相位差。

在这里插入图片描述

图9 GTX收发器TX框图

  FIFO缓冲器优势就是设计比较简单,用户可以不用去管内部实现,只需要在调用IP时勾选下图中1处选项即可,缺点是FIFO的延迟比较大,导致用户把数据输入GTX到GTX输出数据的时间比较长.如果不考虑这部分延迟,推荐直接使用FIFO即可。

在这里插入图片描述

图10 跨时钟域及时钟处理

  如果对延时比较敏感,则可以使用相位对齐电路,只不过需要用户自己编写这部分控制代码,如果代码出现错误,将无法正常接收和发送数据。

  在图10中还可以设置用户发送端口TXUSRCLK和用户接收端口RXUSRCLK的时钟来源,首先应该了解下TXUSRCLK和TXUSRCLK2。

  TXUSRCLK是GTX发送通道中PCS逻辑的内部时钟,TXUSRCLK的速率取决于GTXE2_CHANNEL原语的内部数据路径宽度和GTX发送通道的线路速率,计算公式如下所示。

在这里插入图片描述

图11 TXUSRCLK频率计算

  TXUSRCLK2是GTX发送通道所有信号的主同步时钟。TXUSRCLK2和TXUSRCLK的频率关系与TX_DATA_WIDTH、TX_INT_DATAWIDTH有关,如下图所示。

在这里插入图片描述

图12 时钟关系

  **TXUSRCLK和TXUSRCLK2必须正边沿对齐,并且源时钟必须相同,两者之间的偏斜尽可能小。**一般使用BUFG、BUFH、BUFR来驱动TXUSRCLK和TXUSRCLK2。

  因此一般将GTX IP输出的TXOUTCLK时钟信号作为TXUSRCLK和TXUSRCL源时钟信号,用户其实只需要关注TXUSRCLK2和RXUSRCLK2即可,其余两个用于IP内部,与用户关系不大。

  如果IP设置为图10所示,那么时钟关系如下所示,GTX IP输出的TXOUTCLK通过一个MMCM生成RXUSRCLK、RXUSRCLK2、TXUSRCLK、TXUSRCLK2时钟信号,全部输入GTX IP内部,其中RXUSRCLK2和TXUSRCLK2分别输出作为用户接收、发送的时钟信号。

在这里插入图片描述

图13 时钟信号

  图10的设置好处在于TXUSRCLK2和RXUSRCLK2信号是同一个信号,那么用户的发送端和接收端使用的是同一时钟信号,不需要跨时钟处理。

  前文讲解了GTX的QPLL和CPLL等时钟信号,本文对外部时钟与发送、接收通道内部时钟的关联做简要介绍,下图是发送通道的时钟架构。

  下图是发送通道内部的串行和并行时钟分频器,部分内容可以与前文的外部时钟相互对应。

在这里插入图片描述

图14 TX串行和并行时钟分频器

  下图是前文讲解QPLL和CPLL出现的图,上下两图中1处其实都是同一个器件,上图中IBUFGDS输出信号可以通过REFCLK_CTRL控制引脚输出到BUFG、BUFH、CMT,这是什么意思?

  这就意味着GT bank的差分时钟转换为单端时钟后,可以作为其他bank的时钟信号,毕竟BUFG能够驱动FPGA内部所有时钟资源吧,不了解的可以查看前文对7系列FPGA时钟资源的讲解。但REFCLK_CTRL这个信号由软件自动生成,用户无法控制。

  上图中的3处其实与下图的4处是相同结构,均是数据选择器、CPLL,上图4是QPLL的输出时钟和参考时钟,其中QPLL的输出时钟QPLLCLK和CPLL的输出时钟通过TXSYSCLKSEL[0]的选择作为TX PMA的输入时钟。

在这里插入图片描述

图15 时钟信号

  该时钟输入TX PMA之后,需要经过 “Phase Interp”后被D分频,然后分为两路,一路直接作为并串转换模块的串行时钟,另一类继续经过两次分频作为并串转换模块并行时钟,并且输出到PCS侧作为其时钟,还输入到下半部分的数据选择器中。

  这里并串转换为什么会配置一个D分频的分频器?

  首先要明确这个时钟的频率能够影响什么?作为并串转换的串行时钟,毫无疑问直接影响的就是转换后的数据的线速率,通过控制该分频器能够在一定范围内调节该通道的线速率。

  这样就好回答具体原因了,每个GT bank有四个通道,但是却共用同一个QPLL,那如果四个通道的线速率均大于6.6Gb/S,但是线速率却不等,该如何实现?此时只能使用QPLL输出时钟,而QPLL输出时钟只有一个,此时就只能通过调节每个通道内部的D分频器,来实现不同通道不同线速率的目的。

  但是D分频器只能实现1、2、4、8分频,分频系数可以动态设置也可以静态设置。当静态设置时,必须把分频系数TXOUT_DIV设置为固定值,并且将TXPATE设置为3’b000。

  如果要实现动态线速率,需要在生成IP时勾选TXRATE信号,TXOUT_DIV和TXRATE必须在器件配置时选择相同的D分频器值,器件配置后,通过TXRATE动态更改D分频器值。

在这里插入图片描述

图16 TXRATE设置

  分频系数设置如下图所示,静态时通过TXOUT_DIV的值进行设置,动态时根据TXRATE的值进行设置,默认分频系数为1。

在这里插入图片描述

图17 TX PLL输出分频器设置

  之后还要讲解下图14中后两个分频器的作用,这两个分频的输入作为并串转换模块的串行时钟,而输出作为并串转换模块的并行时钟,分频系数毫无疑问与并行数据位宽有关。

  两个分频器能够组成的分频系数有8、10、16、20,由图5可知,PCS内部传输数据位宽只有16、20、32、40这几种,即并串转换的并行数据位宽取值为16、20、32、40。

  可以推测串行数据是在串行时钟的双沿完成转换的,在8倍频率的时钟下将16位并行数据转换为串行数据输出,其他分频系数转换道理类似。

  下图中的TXOUTCLKPCS和TXOUTCLKFABRIC用户不需要关注,没有输出到用户接口。

在这里插入图片描述

图18 TX串行和并行时钟分频器

  重点在于TXOUTCLK,时钟来源可以是TXOUTCLKPCS、TXOUTCLKPMA、QPLL或者CPLL参考时钟或参考时钟二分频,还可以选择是否对时钟来源进行延迟。

  TXOUTCLK输出到BUFG,就处于“GTPE2_CHANNEL”外部了,根据用户的数据位宽,生成对应的参考时钟信号,下图是2字节或者4字节数据位宽时,可以使用的时钟结构。

在这里插入图片描述

图19 单通道TXOUTCLK驱动txusrclk 2(2字节或4字节模式)

  用的比较多的应该是下图所示的时钟结构,TXOUTCLK输出到BUFG,然后通过MMCM生成TXUSCLK和TXUSCLK2,其中TXUSCLK2作为用户接口的时钟信号。图13就是使用的该结构生成用户时钟信号。

在这里插入图片描述

图20 单通道TXOUTCLK驱动txusrclk 2(4字节或8字节模式)

  下图是单通道的TXOUTCLK通过MMCM生成TXUSRCLK和TXUSRCLK2驱动多个通道的时钟信号,这样做的好处应该是多个通道的数据都处于同一时钟域下,便于数据同步。

在这里插入图片描述

图21 多通道TXOUTCLK驱动txusrclk 2(4字节或8字节模式)

  通过FIFO缓冲器引出了内部时钟的相关讲解,接下来回归正文,继续讲解下图中的其余资源, 将图在贴一遍,不然文章过长不好阅读。

在这里插入图片描述

图22 GTX收发器TX框图

8 .SATA OOB

  SATA是硬盘接口,建立通信主要是通过检测OOB(Out Of Band)实现的,并且向上层传输连接情况,因此只有在使用SATA协议时,才会使用该模块,否则不用考虑。

9. PCIE Beacon

  PICE唤醒功能,只有在使用PCIE协议时才会用到,否则不考虑。

10. Polarity

  极性控制,这个作用比较大,主要时针对PCB设计时将差分对设计反了,模块内部可以将极性反转,从而解决PCB设计问题。

  在生成IP时一般会勾选极性控制选项,后续如果PCB设计或者其他板卡引脚极性相反时,只需要将该信号设置为1’b1,将板卡内部的极性输出也翻转即可,如下图所示。

在这里插入图片描述

图23 极性翻转勾选

11. PISO

  并串转换模块(parallel input Serial output),在前面讲解时钟分频时已经讲解过作用了,就是在时钟双沿将PCS发送的并行数据转换为串行数据。

12及14、 TX Pre/Post Emp和TX Driver

  GTX的TX驱动器是高速电流模式差分输出缓冲器,如下图所示。为了最大限度地提高信号完整性,具有差分电压控制、光标前和光标后传输预加重、校准终端电阻功能。

在这里插入图片描述

图24 TX可配置驱动器框图

  需要明白一个道理,高速信号在长距离、线速率较高的传输时,损耗是很严重的。经过损耗衰减之后,为了让接收端还能检测到数据,在发送端会做预加重和去加重处理,增大差分输出信号的摆幅等等,让其经过传输损耗之后差分信号的幅值变为零。

  用户只需要调节两个参数的值就可以调节预加重和去加重了,在配置IP时勾选下面两个选项即可。至于参数具体应该设置为多少,要根据实际的电路进行眼图扫描,然后确定最佳参数,关于眼图在接收通道的章节进行讲解。

在这里插入图片描述

图25 预加重及去加重选项

13. TX OOB and PCIE

  使用PCIE、SATA协议时才会使用的功能,否则不会用到。

15. TX Clock Dividers

  这个就是时钟的分频模块,在前半段讲解的D分频及后续两个分频时已经详细讲解了,此处不再赘述。

  终于写完GTX发送通道的相关内容了,手册这部分内容大概有接近70页,我只用了不到13页,部分暂时不会使用的内容暂时忽略,重点在于时钟的讲解,很多模块都是针对SATA、PCIE这些协议的,忽略这些,其实也还是比较简单的。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/602795.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Matlab实现分段函数拟合(分段点未知)| 源码分享 | 视频教程 | 三种分段函数拟合方法

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例完整源码;2.…

STM32 VS Code 扩展用户指南

系列文章目录 前言 一、视频教程快速入门 通过我们简单易学的视频教程,快速掌握新版本的使用方法: 二、功能描述 2.1 创建/导入项目 STM32 VS Code 扩展提供两种不同的项目创建选项: STM32CubeMX 项目: 这是一个依靠 CMake 作为…

(三十六)第 6 章 树和二叉树(二叉树的顺序存储表示实现)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? str…

web前端学习笔记7-iconfont使用

7. iconfont的使用流程 字体图标使用较多的是阿里巴巴iconfont图标库,它是阿里巴巴体验团队推出的图标库和图标管理平台,提供了大量免费和可定制的矢量图标,以满足网页设计、平面设计、UI设计、应用程序开发和其他创意项目的需求。 官方网站:https://www.iconfont.cn/ 使用…

可视化数据报道:Kompas.ai如何用图表和动态效果讲述故事

在数字化时代&#xff0c;数据无处不在&#xff0c;而如何将这些数据转化为易于理解且吸引人的故事&#xff0c;成为信息传递的关键。数据可视化作为一种强有力的工具&#xff0c;能够帮助观众快速把握复杂信息的要点&#xff0c;增强记忆&#xff0c;并激发情感共鸣。本文将深…

【BUUCTF】[RoarCTF 2019]Easy Java1

工具&#xff1a;hackbar发包&#xff0c;bp抓包。 解题步骤&#xff1a;【该网站有时候send不了数据&#xff0c;只能销毁靶机重试】 这里的登录界面是个天坑【迷魂弹】 直接点击help&#xff0c;然后进行打开hackbar——通过post请求&#xff0c;再通过bp抓包&#xff0c;…

2. 外婆都称赞的基于Jaeger的Span模型改造

前言 我们的目标是基于Jaeger来实现分布式链路追踪的Java客户端工具包&#xff0c;实际就是一个Springboot的Starter&#xff0c;在1. 看完这篇文章我奶奶都懂Opentracing了一文中我们详细的学习了一下Opentracing的相关概念以及阅读了相关的源码&#xff0c;同时特别重要的是…

深度剖析Comate智能产品:科技巧思,实用至上

文章目录 Comate智能编码助手介绍Comate应用场景Comate语言与IDE支持 Comate安装步骤Comate智能编码使用体验代码推荐智能推荐生成单测注释解释注释生成智能问答 Comate实战演练总结 Comate智能编码助手介绍 市面上现在有很多智能代码助手&#xff0c;当时互联网头部大厂百度也…

2024年5月软考,别再傻傻啃书了!

备考2024年软考&#xff0c;不听课也不刷题&#xff0c;只是看教材的话&#xff0c;想要考试通过&#xff0c;几乎是不可能的&#xff0c;特别是基础比较薄弱的考生。 为什么只看教材通不过&#xff1f; 如果只是把教材从头到尾看一遍&#xff0c;毫无目的地看书&#xff0c;…

神经网络与深度学习--网络优化与正则化

文章目录 前言一、网络优化1.1网络结构多样性1.2高维变量的非凸优化1.鞍点2.平坦最小值3.局部最小解的等价性 1.3.改善方法 二、优化算法2.1小批量梯度下降法&#xff08;Min-Batch&#xff09;2.2批量大小选择2.3学习率调整1.学习率衰减&#xff08;学习率退火&#xff09;分段…

ogv转mp4怎么转?只需3个步骤~

OGV&#xff08;Ogg Video&#xff09;是一种开源的视频文件格式&#xff0c;起源于对数字媒体领域的开放标准的需求。作为Ogg多媒体容器的一部分&#xff0c;OGV的设计初衷是提供一种自由、高质量的视频编码方案&#xff0c;以满足多样化的应用需求。 支持打开MP4文件格式的软…

Windows+clion+protobuf+cmake实现protobuf的使用(被折磨了两天半)

针对protobuf源码和protoc的编译有很多博客写了,这里就不说了。但是很少看到在clion上配置的,因为这个要写cmake文件,本人是小白,学习了cmake之后才懂怎么搞。出现众多链接错误,这次展示一下有效的配置文件。(protobuf 3.21.6,当前最高版本是26.1我也不知道这个版本是怎…

XSKY SDS 6.4 重磅更新:NFS 性能飙升 3 倍,对象多站点等 10 多项功能强势升级

近日&#xff0c;XSKY星辰天合发布了 XSKY SDS V6.4 新版本&#xff0c;该版本在文件的性能提升、对象容灾能力完善方面改进异常显著&#xff0c;同时也大幅提高了存储系统的安全特性&#xff0c;适配更多的信创软硬件生态。 近来&#xff0c;软件定义存储&#xff08;SDS&…

win11更新过后偶尔出现网卡详细信息为空

鼠标右键网卡属性&#xff0c;看下是不是多了一个Network LightWeight Filter 前面对号取消然后确定就能获取到IP了 详情请自行查看百度文库

细胞自动机与森林火灾与燃烧模拟

基于 元胞自动机-森林火灾模拟_vonneumann邻域-CSDN博客 进行略微修改&#xff0c;解决固定方向着火问题&#xff0c;用了一个meshv2数组记录下一状态&#xff0c;避免旧状态重叠数据失效。 参数调整 澳洲森林火灾蔓延数学建模&#xff0c;基于元胞自动机模拟多模式下火灾蔓延…

Saving Environment to FAT... Card did not respond to voltage select!

在移植uboot到全志H3时&#xff0c;出现了错误&#xff1a; Saving Environment to FAT… Card did not respond to voltage select! 判定与MMC有关。 同时还有报错&#xff1a; Error: ethernet1c30000 address not set. No ethernet found. 查看源码发现这与环境变量有关&am…

2024蓝桥杯CTF writeUP--爬虫协议

Dirsearch扫描网站 发现robots.txt文件 访问 直接去最后一个接口 到手

市场公关人的日常工作是什么?

作为一个从事多年的市场公关人&#xff0c;每到别人放假的时候就是我们最忙的时候&#xff0c;手上几个KOL项目安排探店&#xff0c;同时还要筹备品牌VIP活动。扎堆的事情每天忙得睁眼就是工作。 基本上来说&#xff0c;公关人是挺苦逼的&#xff0c;并没有大家看上去那么光鲜…

超级大转盘!(html+less+js)(结尾附代码)

超级大转盘&#xff01;&#xff08;结尾附代码&#xff09; 网上看到有人用转盘抽奖&#xff0c;怀疑是不是有问题&#xff0c;为什么每次都中不了&#xff0c;能不能整个转盘自己想中啥中啥&#xff0c;查阅了网上写得好的文章&#xff0c;果然实现了只中谢谢参与&#xff0…

Unity如何使用adb工具安装APK

1、下载adb工具 SDK 平台工具版本说明 | Android Studio | Android Developers (google.cn) 2、配置环境变量 把platform-tools的路径添加进去就行 打开cmd&#xff0c;输入adb&#xff0c;即可查看版本信息 3、使用数据线连接设备&#xff0c;查看设备信息&#xff08;…
最新文章