一.
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