news 2026/4/16 4:33:26

GT高速口相关知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GT高速口相关知识

一.

1.0:FPGA高速口不需要配置电平标准,但是电平标准是CML

1.1不通系列fpga对高速口的叫法异同——统称GT

1.2外部结构如下:两个ibufds 表示可以同时跑两种接口(pcie,万兆网)

4对rx/tx对+1个时钟模块:包含4个cpll+1个Qpll(区别GTP是另外一种结构如下图)

这个是GTP的结构如下——

A:一对 tx、rx、加上 cpll 称之为一条通道称为channel

B:一个 bank有 4 对 tx 和 rx、两对差分时钟称为quad或者 bank

C:CPLL支持的最高线速度为6.6Gb/s,QPLL支持最高12.5Gb/s左右,QPLL的时钟更加精确

1.3内部结构如下:

A:PCS是数字处理部分,PMA是模拟处理部分, 。

1.4:如下图PCB如果接反了,可以用polarity 使P N颠倒过来。

二:时钟架构

2.0:在vivado约束界面都不显示 GT参考时钟的电平标准,小梅哥技术说:支持LVDS,也兼容LVPECL CML。

2.1如下图输入给GT的参考时钟一共可选择7路:

A: 本Quad的2路参考时钟.

B: 相邻2个Quad的共4路参考时钟.

C:全局时钟网络(如CMT)提供的1路备选时钟源.——(由于其经过了更多内部布线,抖动性能不如前6路,因此优先级最低。)

2.2:但是一个Quad的参考时钟源不能驱动超过3个Quad上的收发器(只能驱动当前Quad和南北方相邻 两个Quad )

三:我们以K7-325T为例来查找具体是哪个chanel

——————bank117的channel 0/1 对应x0y11 和 x0y10位置。

四:

4.1:高速口链路信号质量排查工具,一般在跑比如8B/10B之前都需要先确认眼图正常

———ibert排查问题时首先烧录示列工程看眼图确定高速口的链路信号质量。

4.2:ibert配置界面

Silicon Version:选择器件属性的,只有一种可选,默认即可。
number of protocols:选择协议的数量,根据需要选择;
LineRate:速率,根据工程选择;
DataWidth:数据宽度,根据工程选择;
Refclk:参考钟,根据工程选择;

TXUSRCLK sources:用户时钟源选择,由一个Quad中的四个通道共享,选择一个通道用作用户时钟来源。

将GTX输入的125MHz的时钟同时作为IBERT内部逻辑的工作时钟,这样就可以不使用额外的外部时钟。

4.3:打开示例工程

4.4:使能SFP如下

4.5:生成bit烧录进去

4.6:选择链路

4.7:按需选择5种环回方式中的一种


其实还是通过GUI界面去设置LOOPBACK信号的

000:ibert设置none 模式,主要验证单个GT口的外部线缆是否连接Ok------

001/010:主要验证不接外部线缆的条件下的单个GT口的内部信号-------

外部如下:

内部如下:

100/110:主要为了验证两个GT口的内部和外部线缆的Rx和TX全部链路的信号------GT1的TX到GT2的RX设置000,GT2的TX到GT1的RX链路设置100或者110

外部:

内部:

4.8:偶尔如果no-link 直接点TX_Reset/RX_Reset,看是否为没复位导致的。

4.9:本次测试默认是用的7bit的伪随机序列,也可以更改其他数据类型。

5.0:errors不是0吗,为啥ber 不为0呢?————BER=误码个数/发送总比特数误码个数​。

Errors是错误比特数,是整数计数器,显示为 0 就是真的没抓到错误。

BER(误码率)= (1+Errors)/总bit数,所以BER不会为零

eg:(并口125MHZ和串口2.5GHZ)

1000~1500秒没有错误,才算到1e-12的误码

5.1:可用如下组合进行发送高速数据

一:验证D+K组合,从00BC到FFBC。
二:空闲发00BC然后全D组合从0000到FFFF。
三:空闲发00BC然后全D组合在0000和FFFF之间切换。

五:GT常用技术协议

1:8B/10B的作用

A:8b/10b编码通过将8b数据编码为10b数据,避免连续出现0或者1,并拥有足够的位转换密度来保证时钟恢复。这种编码方式使数据传输不再需要分布时钟,避免并行传输的一些缺点,可以实现更高数据速率的串行传输

B:可参考如下博客连接

SERDES 之8B/10B-CSDN博客

2:64b/66b的作用

64b/66b编码技术是IEEE 802.3 工作组为10G 以太网提出的,目的是减少编码开销。64b/66b 编码将 64bit 数据或控制信息编码成 66bit 块传输,66bit 块的前两位表示同步头,主要由于接收端的数据对齐和接收数据位流的同步。同步头有“01”和“10”两种,“01“表示后面的 64bit 都是数据,“10”表示后面的 64bit 是数据和控制信息的混合

3:加扰和解扰的作用

避免传输信号具有周期性,否则在多路传输的通信系统中容易造成串扰。

4:

4.1D码:就是用户的发送数据。

4.2K码:K码是8B/10B编码体系中的控制字符集合,Comma是嵌入K码里面的。

4.3帧对齐(Word Alignment):

4.31:当发送端的字符指示(如txcharisk=0001)与接收端检测到的指示(如rxcharisk=0100)不匹配时,就说明多字节帧的字节顺序发生了偏移,需要用户通过逻辑设计来调整对齐,确保整个数据帧的正确拼接。——bc码的多少和数据是否对齐没有关系,数据不对齐不能完全避免。

4.32:0001的bc码偏移位(比如偏移到0100)是随机的吗还是有规律的呢?是不是都是会偏移成0100,有没有可能偏移成0010——随机,最好把4种情况的对其都做一下。

6:为了增加传输带宽我可以在两个bc 码之间尽可能多的增加正式数据(D码)的传输吗?——可以,但这个需要调试。不知道2个板子上的晶振误差是多少,参考时钟的晶振偏差越大,bc插入的越多。

六:Xilinx 的GT配置

1:图1和图2的区别是,图1更加傻瓜不灵活,图二直接在GT上面加协议比较推荐灵活。

2:参考时钟就是实际接入gt里面的参考时钟频率。

2.1:上图这个就是如下图GT的位置

3:

3.a先确定 FPGA逻辑的接口位宽需求如下32bit————FPGA Interface WItdth

3.b选择使能arrora 8B/10

3.c通过查阅数据手册————得出TX_DATA_WIDTH=10*4=40和internal data width=20(为啥数据位宽减半,是因为时钟是2倍)

3.d配置如下:

3.a先确定 FPGA逻辑的接口位宽需求如下16bit————FPGA Interface WItdth 16bit

3.b选择使能arrora 8B/10

3.c通过查阅数据手册————得出TX_DATA_WIDTH=10*2=20和internal data width=20(为啥数据位是一倍关系,是因为时钟是1倍)

3.d:配置如下

3.1:(RX同理)TXUSRCLK2频率= 线速率/ TX_DATA_WIDTH

TXUSRCLK和TXUSRCLK2 的时钟倍数关系如下图所示(RX同理)

4.1:

DRP时钟:绝不能用gt的参考时钟实测会报错的。如下——应该gt的参考时钟只能局限使用

数据不管是从时钟TSUSRCLK到XCLK还是从时钟XCLK到RSUSRCLK 都经过了时钟域的转换,所以TX端和RX端都需要一个缓存区缓存下,因此把ip核中的Enable TX Buffer 和Enable RX Buffer 这 2 个选项给勾上.

4.2:推荐逗号码用K28.5

Two byte boundaries 和 Any byte boundaries 在仿真上结果是一样的

4.3:最终产生的示列工程如下结构框图(如果选取另一种所有结构都会包含在IP里面用户就不太方便修改)

4.4实际作用可以这样用:

测试工程项目1:

项目2:(空白方框里面放置图二的IP,一般千兆网用网口,万兆网就直接用光口了。

4.5:

有时候在XDC里面找不到约束信息.

有可能就在IP核里面的

还有可能约束的是坐标信息

4.6:

发射第一张图,接收端第二张图BC会出现移位的情况。-----这是正常的现象。

五:基于GT的AC电容

1:gt时钟口

一般晶振输出的差分时钟的P/N端会分别串接两个电容接GT:AC电容主要作用是去除晶振的直流和其他干扰分量变成交流信号,后GT自己会用一个直流电压分量把晶体信号抬高进入电平识别范围。

2:gt数据口

看人家原理图是加了AC电容的,

——

1:但自己实测在(光纤通信和8b_10b和2711seders芯片外回环不加电容,功能也正常)

2:(GT和2711seders芯片)的rx和tx确实都会自己提供直流电压分量。

六:带宽计算

1:txclk=125mhz,16bit数据,8b/10b编码————线束率=125M*16*(10/8)=2.5Gbit/s

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 4:28:03

手写一个简单的内存池:C语言动态内存管理实战

前言在上篇文章中,我们提到了动态内存分配的四大金刚:malloc、calloc、realloc、free。然而,频繁调用这些函数会带来两个问题:1. 性能开销:系统调用涉及用户态/内核态切换,频繁分配小块内存时效率低下 2. 内…

作者头像 李华
网站建设 2026/4/16 4:22:48

Google-10000-English:自然语言处理的终极词频数据集

Google-10000-English:自然语言处理的终极词频数据集 【免费下载链接】google-10000-english This repo contains a list of the 10,000 most common English words in order of frequency, as determined by n-gram frequency analysis of the Googles Trillion Wo…

作者头像 李华
网站建设 2026/4/16 4:18:10

如何快速掌握TX-LCN分布式事务框架:从理论到实践的完整指南

如何快速掌握TX-LCN分布式事务框架:从理论到实践的完整指南 【免费下载链接】tx-lcn codingapi/tx-lcn: 一个基于 Java 的分布式事务框架,用于解决分布式系统中的事务问题。适合在分布式系统中需要处理事务的场景,可以实现高性能、高可用性的…

作者头像 李华