通过前面的学习,我们对GTX的内部结构和工作原理已经有了一定的了解,但是通过文字的描述我们只能掌握一些基础知识,想要真正熟悉GTX还要通过具体的使用。
对于GTX的使用,第一步就是打开IP catalog然后搜索GT,找到下面的7 Series FPGAs Transcelvers Wizard之后双击打开,进入配置界面。
- GT Selection
此界面中的GT Type是固定的,我用的是K7的板子,因此固定就是GTX,而红框中的部分就是需要我们设置的,通过前面的学习,我们已经知道一个Qaud只有一个QPLL,红框中的上面一个选项表示将QPLL的控制放在IP的内部,用户不能自行控制,而下面一个选项表示将QPLL的代码放在IP核外面,方便后续扩展收发通道。
- Line Rate , RefClk Selection
Procotol : 协议选择,可以选择一些常见的上层协议,比如Auraro 8b/10b,SATA等,由于本次实验是对GTX的使用,因此不选择任何上层协议。
TX : 这部分需要设置发送端的线速率,可以看到最高速率为8Gbps,因此将线速率设置为最高速率,参考时钟设置为125MHz,并且启用接收通道,即后面的TX off不打√。
RX : 接收端的配置与发送端的配置相同。
Qaud Column : 用于选择高速收发器在FPGA内部的位置,我的芯片固定在右侧,因此不用对齐进行更改。
Use Common DRP:勾选后,用户可以通过DRP接口动态配置QPLL,修改QPLL的参考时钟来源等等信息。
PLL Selection:由于线速率超过了6.6Gbps,因此选择QPLL作为发送通道和接收通道的时钟信号。
Advanced Clocking Option:勾选后,可以把所有的参考时钟端口开放给用户,用于动态时钟切换。
PRBS pattern generator and check:PRBS模式产生和检测功能经常用来验证信道质量测试。
在左下侧的框图中,可以选中相应的通道,然后勾选Use GT X0Y0,即可使用坐标为(X0,Y0)的收发器。但是这种方式对于设计者来说并不方便,需要用户知道后续要使用通道在芯片中的坐标。
还有另一种方式也可以对通道位置进行修改,就是通过约束发送和接收通道的引脚,来确定使用的通道,并且约束引脚的优先级大于此处IP设置的位置,因此常用的方式是通过约束引脚来确定使用具体的收发器资源。
由此处可知,可以在一个IP中勾选多个通道,这种方式也行,但是更加常用的方法是生成单通道的IP,需要使用多通道时,多次例化该IP即可,这也是为什么需要把QPLL放在IP外部,防止将QPLL多次例化。其中TX Clock Source用于确定发送通道的时钟来源,在前文分析过QPLL和CPLL的时钟只能来自GT bank的差分时钟引脚,因此TX Clock Source只能来自参考时钟0管脚或者参考时钟1管脚输入的差分时钟。
RX Clock Source和TX Clock Source是来自同一个QPLL或者CPLL输出时钟,因此设置需要保持一致。
- Encoding and Clocking
Extemal Data Width:用户数据位宽,如果线速率大于6.6Gbps,那么用户数据位宽可以设置为32或者64位,否则用户数据位宽可以设置为16、20、32、40、64、80位。
Encoding:编码方式可以选择8B/10B,64B/66B,64B/67B,也可以选择不编码
Internal Data Width:内部数据位宽,即编码后的数据位宽,由于线速率大于6.6Gbps,因此此处的内部数据位宽只能设置为40。
接收通道与发送通道配置相同即可。
DRP System Clock Frequecy:默认即可。
TXBYPASS8B10B:允许字节交错数据以每字节为基础旁路8B / 10B编码器,高电平有效。TX8B10BEN必须为高此信号才有用。TXBYPASS8B10B [ x] = 1,字节x绕过编码器。TXBYPASS8B10B [x] = 0,字节x使用编码器。
TXCHARDISPMODE、TXCHARDISPVAL:在启用8B/10B编码时,这两个选项同时勾选可以在字节编码前将运行不一致性强制为正;只勾选TXCHARDISPMODE选项可以在字节编码前将运行不一致性强制为负;只勾选TXCHARDISPVAL选项时可以在字节编码前将运行的差异性反转;不勾选TXCHARDISPMODE和TXCHARDISPVAL时可以保持运行的差异性不变。当发送通道不启用8B/10B编码时,可以利用TXCHARDISPMODE和TXCHARDISPVAL扩展端口位宽。
RXCHARISCOMMA:高电平有效,表示RXDATA上显示的相应字节是K码。
RXCHARISK:高电平有效,当启用8B / 10B解码时,RXDATA上显示的相应字节为K字符。
将发送端的buffer使能(勾选Enable TX Buffer),将PCS并行时钟域的时钟源(TXUSRCLK Source)设置为IP输出的时钟TXOUTCLK,并且勾选TXOUTCLK来源于发送通道的PLL参考时钟信号。
同步模块的端口如下所示:一般不需要对该部分的端口进行更改,默认即可。
- Alignment Termination and Equalization
Use comma detection:启用接收端K码检测,用于标识数据流中的K码字符。
Decode valid comma only:启用接收逗号检测,将检测限制在特定的已定义逗号字符,即K28.1或K28.5。
Comma Value:选择标准逗号模式或用户定义的模式之一以输入自定义模式。
Plus Comma:表示要匹配的正差异K码的10位二进制模式(RD+),模式的最右边位是串行到达的第一位。
Minus Comma:表示要匹配的负差异K码的10位二进制模式,模式的最右边位是串行到达的第一位。
Comma Mask:10位二进制模式,表示逗号匹配模式的掩码。1表示要匹配逗号模式中的相应位,0表示不关心逗号模式中的相应位。
Align to:根据自己的设计选择。
ENPCOMMAALIGN:高电平有效,当检测到K码(RD+)模式时,启用字节边界对齐过程。
ENMCOMMAALIGN:高电平有效,当检测到K码(RD-)模式时,启用字节边界对齐过程
RXSLIDE:高电平有效,每次置位都会将字节对齐调整一位,优先于普通逗号对齐。
RXBYTEISALIGN:高电平有效,表示接收端已经完成字节对齐。
RXBYTEREALIGN:高电平有效,表示接收端正在进行字节对齐。
RXCOMMADET:高电平有效,表示逗号对齐逻辑在数据流中检测到逗号模式。Differential Swing and Emphasis Mode:选择加重的模式,选择自定义模式即可。
Equalization Mode:设置接收通道的均衡模式,一般设置为LPM就行。
Automatic Gain Control:设置接收器的自动增益控制,设置为自动即可
Termination Voltage:有GND、Floating、AVTT、可编程等几个选项。其中GND会使内部终端网络接地,Floating可隔离网络,AVTT会将内部参考电压源应用于终端网络,选择可编程选项后,可以通过更改Trim Value的值修改接收通道终端网络的电压。
其余端口的含义如下所示,根据自己的需求选择即可。
其余两页配置保持默认即可,但要注意打开回环模式。
- 仿真
生成好IP之后打开官方提供的例程即可进行仿真验证。仿真的时候遇到几个问题,首先就是接收端和发送端的用户时钟均为未知态,不知道是什么原因。
还有就是最开始仿真的时候接收端的数据没有对齐,我改了半天才发现问题出现在了IP核配置的第四页,即字节对齐那一页,
最开始我选择的是任意字节做为边界,就出现是上述问题,改为四字节后问题得到解决。
具体原因如下:因为每次接收的数据是32位也就是4字节,因此选择第三种对齐方式刚好可以满足字节对齐。
最终仿真结果如下:
本篇文章结合了网上的资源与一些自己的理解,如有问题请联系博主。
标签:字节,高电平,IP,QPLL,收发器,高速,对齐,时钟 From: https://blog.csdn.net/qq_69315815/article/details/141107922