Xilinx GT学习
一、GT的概念
Xilinx FPGA的GT意思是Gigabyte Transceiver。通常称呼为Serdes、高速收发器。GT在xilinx不同系列有着不同的产品,从7系列到UltraScale系列分别有GTP、GTX、GTZ、GTH、GTY和GTM。不同GT整体结构上类似,为了支持越来越高的line rate,在细节上有着不同的差异。
Blog:FPGA Xilinx 高速串行收发器横向比较_搞FPGA开发的Tony老师的博客-CSDN博客_xilinx高速串行收发器https://blog.csdn.net/wuyanbei24/article/details/118310132 对Xilinx GT各系列进行了横向的比较,本文章主要以UltraScale系列里面的GTH为例做介绍:
二、GT Quad
Xilinx FPGA中的GT资源以Quad为单位
一个GT Quad包含一个GTHE3/4_COMMON 和 4个 GTHE3/4_CHANNEL。
每个GTHE3/4_COMMON包含两个QPLL,在设计中,只有需要使用QPLL时,才需要例化GTHE3/4_COMMON。
每个GTHE3/4_CHANNEL包含一个CPLL和一个transmitter和一个reciever
Reference Clock Selection and Distribution
一个GT Quad包含一个GTHE3/4_COMMON 、 4个GTHE3/4_CHANNEL、2对专用外部参考时钟pin、专用参考时钟routing。每个transceiver都需要例化对应的GTHE3/4_CHANNEL,但只有需要使用高性能QPLL时才需要例化GTHE3/4_COMMON。
通常Quad(Q(n))的参考时钟可以由其他Quad(最多上/下2个相邻Quad)的输入管脚输入
三、GT Channel
整个GT channel可以分为两层:
PMA:Physical Media Attachment,物理媒介附加层
PCS:Physical Coding Sublayer,物理编码子层
下面根据收发链路分别讲解:
3.1 Transmitter
3.1.1 TX Interface
TX Interface分成内部数据位宽和FPGA接口位宽,其中内部数据归属于TXUSRCLK时钟域,FPGA接口数据归属于TXUSRCLK2时钟域,而内部数据位宽支持2byte/4byte,FPGA接口数据位宽支持2byte/4byte/8byte,因此,决定了TXUSRCLK和TXUSRCLK2有一定的时钟倍数关系,TXUSRCLK和TXUSRCLK2的时钟倍数关系如下表所示,其中TX_INT_DATAWIDTH属性设置为“0”,表示内部数据位宽为2byte,如果设置为“1”,则表示内部数据位宽为4byte
线速率大于8.1875Gb/s的时候TX_INT_DATAWIDTH应当置1
3.1.2 TX 8B/10B Encoder
8B/10B的编码理论参考blog:
8B/10B Encode/Decode详解https://www.cnblogs.com/YINBin/p/11011232.html 8B/10B编码的目的1是保证数据有足够的切换提供给时钟恢复电路(CDR),2提供一种将数据对齐到字的方法,3.同时线路可以保持良好的直流平衡。为什么要做直流均衡,参考blog:Serdes高速收发器和CDR技术https://blog.csdn.net/qq_16423857/article/details/110135690
3.1.3 TX Gearbox(速率变换箱)
8B/10B编码使得带宽利用率80%。一些高速数据速率协议使用64B/66B编码来减少8B/10B编码的开销,同时保留编码方案的优点。TX Gearbox提供了对64B/66B和64B/67B编码支持(header和payload的combining)。TX Gearbox支持2字节、4字节和8字节接口定义,但是数据scrambing是在FPGA逻辑内实现的。
3.1.4 TX Buffer
为了解发送的TXBuffer的作用,首先得搞清楚TX发送端的时钟域,TX发送端的时钟域如图所示。
图中红色方框就是TXBuffer, TX Buffer连接着两个不同的时钟域XCLK和TXUSRCLK,在发送端的PCS子层内部包含两个时钟域,XCLK(PMA并行时钟域)TXUSRCLK时钟域,为了数据发送的稳定,XCLK和TXUSRCLK必须是速率匹配,相位差可以消除的,TX Buffer主要用于匹配两时钟域的速率和消除两时钟域之间的相位差。
TX Buffer也可以被旁路,TX发送端提供了一个相位对齐电路,可以解决XCLK和TXUSRCLK时钟域之间的相位差,但是TX_XCLK_SEL需设置为“TXUSR”来保持XCLK时钟域和TXUSRCLK保持同频。
3.1.4 TX PMA
发送PMA包含并串转换(PISO)和模拟部分的控制(差分电压控制、发送器预加重、校准端接电阻,用于满足SI等)
3.2 Reciever
接收链路从PMA-->PCS
3.2.1 RX Equalizer (DFE and LPM)
传输介质和通道是带宽受限的,通过它的信号会衰减和失真。均衡器主要用于补偿由于频率不同而引起的阻抗或者衰减差异。
GTH收发器,基于系统级的功耗和性能的权衡,有两种类型的自适应滤波可用:
功耗优化和低通道损耗的低功耗模式(LPM):
均衡更低损耗通道的判决反馈均衡模式(DFE):
3.2.2 RX CDR
CDR:Clock Data Recovery
CDR FSM使用来自边缘和数据采样器的数据来确定传入数据流的相位并控制相位插值器(PIs)。边缘采样器的相位锁定在数据流的过渡区域,而数据采样器的相位则位于数据眼的中间。
CPLL或QPLL为相位内插器提供基准时钟。相位内插器依次产生精细的、均匀分布的采样相位,以允许CDR状态机具有精细的相位控制。CDR状态机可以跟踪传入的数据流,这些数据流可以与本地PLL参考时钟存在频率偏移。
3.2.3 RX Fabric Clock Output Control
与发送一样,使用RXOUTCLK作为RXUSECLK的基准时钟
3.2.4 RX Byte and Word Alignment
输入到FPGA收发器的串行数据在解串(串并转换)之前必须进行符号边界对齐。为了保证数据对齐,发送器发送一个通常称为comma码(K码)的字符,接收器在输入的数据里查找comma码。当发下comma码后,则将comma移动到字符边界,这样使得接收到的并行数据匹配发送的并行数据。
3.2.5 RX Elastic Buffer
RX Elastic Buffer:GTH收发器内部包括两个内部并行时钟域:PMA并行时钟域XCLK和RXUSRCLK时钟域。为了正确接收数据,PMA并行速率必须匹配RXUSRCLK时钟速率,并且解决跨时钟域问题。
RX接收端弹性缓冲器是一个重要的功能,和TX接收端缓冲相比,RX多出了一个“弹性”属性,意味着和TX发送端相比,RX弹性缓冲器有更多的功能(RX时钟纠正和RX通道绑定)
RX Clock Correction:RX弹性缓冲器的“弹性”反映在可以通过时钟纠正来调整XCLK和RXUSRCLK的频率差。对于RX接收端来说,即便XCLK和RXUSRCLK运行在同一个时钟频率,但往往存在一定的差异,这种差异很容易导致RX弹性缓冲器写满或者读空,时钟纠正功能应运而生。时钟纠正功能如图所示。
通俗的讲,在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发送端发送的数据一样,功能如图所示,左边是未对齐数据,右边是对齐的数据。
RX channel bonding支持8B/10B编码,但是不支持64B/66B、64B/67B、128B/130B和扰码数据。
3.2.6 others
Rx 8B/10B Decoder、RX Interface等与TX端类似
Rx 8B/10B Decoder预设K码
结束语
本文主要是对官方手册的学习笔记,对应GT的详细细节没有过多的深挖。GT作为FPGA内的一种资源,对于我们使用者来说更多的是对其有一个大致了解,其具体细节不用太过深挖,一个是GT资源随着升级其细节也有很多变化,但大体结构是换汤不换药;二是随着FPGA厂商IP的完善,针对不同的应用都有各种底层使用GT资源的更上层的IP core,比如Aurora、PCIe、以太网、interlaken等等,如果只是站在使用者的角度来说的话,可能很少会接触到GT底层。当然,通过对GT资源的理解也更加方便我们上层应用的开发和调试。如果涉及到太底层的问题可以在需要的时候再翻手册查询。
Xilinx GT学习相关推荐
- xilinx SoC学习笔记之PetaLinux
一. PetaLinux概述 PetaLinux 工具提供在 Xilinx 处理系统上定制.构建和调配嵌入式 Linux 解决方案所需的所有组件.该解决方案旨在提升设计生产力,可与 Xilinx 硬件 ...
- XILINX GTX学习笔记
关于GTX接口网上理论的介绍有很多,以及IP核的配置介绍也有,但是没有人介绍说怎么封装用户的接口,我这里简单的说一种方法: 下面是网上搜集的一些GTX的相关资料链接: https://blog.csd ...
- xilinx fpga学习笔记5:Xst综合属性
第六章:设计综合和行为仿真 6.1 设计综合 本节将详细介绍设计综合的概念,综合属性的设置,综合过程的实现,并且通过查看原理图符号更加直观的建立HDL高级描述和FPGA底层源语之间的联系. 6.1.1 ...
- xilinx AXI-CDMA 学习笔记
此文是笔者记录的 AXI Central Direct Memory Access (CDMA)相关学习笔记及参考例程仿真说明. 仿真环境 win10 64bit vivado 2017.4 mode ...
- xilinx fpga学习笔记2
第二章:Xilinx FPGA的结构和分类 目前主流的FPGA都采用基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构. 1.查找表的结构和功能 ...
- xilinx soc学习笔记之在Ubuntu上安装Qt 5
介绍 这是将Qt 5.7.0安装到Ubuntu 12.10的教程.它可能用于某些较新版本的Qt和Ubuntu.作为反例,Ubuntu 16.04 LTS使用独立的系统来控制Qt版本.遵循以下针对Ubu ...
- 小梅哥Xilinx FPGA学习笔记2——三八译码器
三八译码器 〇.功能介绍 1.功能描述 2.真值表 一.代码编写 1.设计文件 2.激励文件 3.仿真图 二.总结 三.课后作业 1.设计文件 2.激励文件 3.仿真图 〇.功能介绍 1.功能描述 译 ...
- 小梅哥Xilinx FPGA学习笔记1——二选一多路器
二选一多路器 〇.功能介绍 1.功能描述 2.原理图 一.代码编写 1.设计文件 2.激励文件 3.仿真图 二.总结 〇.功能介绍 1.功能描述 sl为控制信号,a,b为两个输入信号,out为输出信号 ...
- Xilinx 学习笔记1---新建工程和创建源代码文件
最近终于有空可以记录一些之前学习的内容,本博客系列记录笔者Xilinx ISE学习之旅,当然现在Vivado是学习热门,一步一步来.搞定 ISE,Vivado上手也会很快. 1.安装软件 软件部分的下 ...
最新文章
- Js传递数组参数到后台controller的方式
- afe模拟前端的重要性_UCD3138模拟前端(AFE)模块:模拟前端模块(AFE)简介
- 图马尔可夫网络:融合统计关系学习与图神经网络
- laravel mysql增删改查_Laravel框架数据库操作的增删改三种方式 阿星小栈
- 把javascript中的json对象传到action的list里的方法
- 男孩子也是要护肤的!!!
- 【Java笔记】【Java核心技术卷1】chapter3 D4变量
- 学到了!程序员大神用这招让开发效率直接提升10倍!!
- 小程序源码:全新独立后台月老办事处一元交友盲盒-多玩法安装简单
- matlab验证dtft移位性质,7.DTFT的Matlab实现.ppt
- 如何通过供应商分类来提高采购绩效?
- MySql 8.0对应的驱动包
- Wordpress关闭所有评论
- 移动地图定位软件完成了
- WebBowser 实现淘宝网自动登录
- 互联网时代带给我们什么好处
- 1、DirectX 系列之 Direct 2D
- 达内教育python培训
- 怎样免费翻译整篇英文Word文档
- 能率S2系列零冷水燃气热水器,让沐浴再无痛点
热门文章
- 我们为什么需要光纤配线架
- 直立代码分析__两轮平衡小车原理
- QGIS离线GeoJSON数据,使用Cesium加载并根据楼层高度拉伸(weixin公众号【图说GIS】)
- 飞畅科技V.35协议转换器指示灯告警说明详细介绍
- 【深入理解RabbitMQ】RabbitMQ exclusive和mandatory的理解
- 地下城与勇士(DNF)天空之城副本(龙人之塔、人偶玄关、石巨人塔、黑暗玄廊、悬空城、城主宫殿)(童年的回忆)
- 中国液晶面板王者为何被小弟超越了?
- error: insufficient permission for adding an object to repository database .git/objects
- Beta阶段事后诸葛亮分析
- 凯文·米特尼克 安全建议 十条经验