高速接口自用笔记:GT基础(三):IP配置
参考(搬运):
https://mp.weixin.qq.com/s/vsWvH7DS9b0ZBE3NM-e88A
Port Descriptions • 7 Series FPGAs Transceivers Wizard (PG168) • 阅读器 • AMD 技术信息门户
此外:
一般而言相同速率的GT都走同一个GT bank以保障速率;
但其实不同速率的也行;
例化多个GT收发器的时候,其中一个用于控制QPLL即可;
配置GT Selection界面
首先进入GT Selection配置界面,这个界面主要关注红框部分。
从前文对GT的时钟介绍可知,一个GT bank只有一个QPLL,红框部分表示把QPLL的代码放在IP外面实现,这样做的好处在于后续方便扩展收发器通道,便于二次开发。
Line Rate, Transceiver Selection界面
Line Rate, Transceiver Selection, and Clocki ng界面用于选择收发器位置和时钟,此页面左下图显示的可用收发器数量取决于所选的芯片型号和封装。
(1)、协议选择:在协议处可以选择各种协议
(2)、发送端口需要设置线速率、参考时钟频率、是否禁用接收通道。
在本次设计中发送通道的线速率(Line Rate)设置为10Gbps,参考时钟频率(Reference Clock)设置为156.25MHz,启用接收通道。
可选的频率非常多,不同协议需要不同的线速率,而不同的线速率就需求不同的时钟;
100,125,150,156.25都是比较常用的时钟频率;
例如:SATA协议,其所需求的线速率是6Gbps,需要使用150MHZ的时钟;
万兆网则需要156.25MHZ的时钟
(3)、接收端口需要设置的参数与发送通道类似,接收通道的线速率(Line Rate)设置为10Gbps,参考时钟频率(Reference Clock)设置为156.25MHz,启用发送通道。
(4)、用于选择高速收发器bank在FPGA内部的位置,是否启用QPLL的DRP接口。
Use Common DRP:勾选后,用户可以通过DRP接口动态配置QPLL,修改QPLL的参考时钟来源等等信息。
(5)、PLL选择对于GTX来说,如果发送通道和接收通道的线速率小于6.5Gbps,那么可以使用QPLL也可使用CPLL,否则只能使用QPLL。
由于2和3处将线速率设置为10Gbps,因此此处只能使用QPLL生成的时钟作为发送通道和接收通道的时钟信号。
(6)、收发器通道选择,在左下侧的框图中,可以选中相应的通道,然后在6中勾选Use GT XmYn,即可使用坐标为(Xm,Yn)的收发器。
但是这种方式对于设计者来说并不方便,需要用户知道后续要使用通道在芯片中的坐标。
还有另一种方式也可以对通道位置进行修改,就是通过约束发送和接收通道的引脚,来确定使用的通道,并且约束引脚的优先级大于此处IP设置的位置,因此常用的方式是通过约束引脚来确定使用具体的收发器资源。
通过UCF或XDC来配置收发器资源比此处具有更高的优先级;
由此处可知,可以在一个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输出时钟,因此设置需要保持一致。
Advanced Clocking Option:勾选后,可以把所有的参考时钟端口开放给用户,用于动态时钟切换。
PRBS pattern generator and check:伪随机序列(Pseudo-random bit sequences,PRBS),频谱接近白噪声,一般用于高速串行通信通道传输的误码率测试。相关的设置端口如下所示,原理与M序列类似。
PRBS模式产生和检测功能经常用来验证信道质量测试。(用于测试眼图和误码率等)
Encoding and Optional Ports界面
如下图所示,对Encoding and Optional Ports界面进行配置,主要完成接收端编码、接收端解码、发送通道内部和接收通道内部同步数据的方式。
(1)、发送通道的用户数据位宽及编码方式配置如果线速率大于6.5Gbps,
那么用户数据位宽(Extemal Data Width)可以设置为32或者64位,否则用户数据位宽可以设置为16、20、32、40、64、80位。
编码(Encoding)可以使用8B/10B、64B/66B、64B/67B,也可以不使用编码方式。
线速率也会影响通道内部数据传输位宽的设置,如果线速率大于6.5Gbps,那么内部数据位宽(Internal Data Width)只能设置成40位,否则可以设置位16、20、32、40位。(只有四字节模式可以满足需求)
(Extemal Data Width)与(Internal Data Width)的相关问题在讲解发送通道的时候讲解过,需要了解的可以前往查看。
(2)、接收通道的解码方式和数据位宽设置,与发送端保持一致即可,当然接收端和发送端的(Internal Data Width)不一致也不会影响数据传输,这个位宽是通道内部的一个位宽。
(3)、DRP System Clock Frequecy:设置DRP接口的时钟频率,这个时钟对来源没有要求,因为是配置端口嘛,对速率一般没有要求。因此选中常用的100MHz系统时钟即可。
(4)、与编码相关的可选端口
表1 编码相关的可选端口
端口 |
含义 |
TXBYPASS8B10B |
允许字节交错数据以每字节为基础旁路8B / 10B编码器,高电平有效。TX8B10BEN必须为高此信号才有用。(常用于Debug和查找错误) TXBYPASS8B10B [ x] = 1,字节x绕过编码器。 TXBYPASS8B10B [x] = 0,字节x使用编码器。 |
TXCHARDISPMODE |
(Debug和协议反转) 在启用8B/10B编码时,这两个选项同时勾选可以在字节编码前将运行不一致性强制为正;只勾选“TXCHARDISPMODE”选项可以在字节编码前将运行不一致性强制为负;只勾选“TXCHARDISPVAL”选项时可以在字节编码前将运行的差异性反转;不勾选“TXCHARDISPMODE”和“ TXCHARDISPVAL”时可以保持运行的差异性不变。
禁用 8B/10B 编码时,
TXCHARDISPMODE 用于扩展 20 位、40
位和 80 位 TX 接口的数据总线
当不使能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位 |
TXCHARDISPVAL |
|
RXCHARISCOMMA |
高电平有效,表示RXDATA上显示的相应字节是K码。comma,可能是特殊K码(此时断言) |
RXCHARISK |
高电平有效,当启用8B / 10B解码时,RXDATA上显示的相应字节为K字符。(都是检测K码)
8B/10B 解码包括常用于控制功能的特殊字符(K 字符)。当 RXDATA 为 K 字符时,解码器
会将 RXCHARISK 驱动为高电平。
如果 DEC_PCOMMA_DETECT 设置为 TRUE,则只要 RXDATA 为正 8B/10B 逗号,解码器
就会将相应的 RXCHARISCOMMA 位驱动为高电平。如果 DEC_MCOMMA_DETECT 设置
为 TRUE,则当 RXDATA 为负 8B/10B 逗号时,解码器会将相应的 RXCHARISCOMMA 位
驱动为高电平。
|
(5)、发送通道的同步设置在前文讲解发送通道时,
经过这部分内容,可以使用buffer或者对齐电路来同步数据,buffer的劣势在于延迟比较大,对齐电路需要用户自己设计这部分电路,难度比较大。
本文将发送端的buffer使能(勾选Enable TX Buffer),
将PCS并行时钟域的时钟源(TXUSRCLK Source)设置为IP输出的时钟TXOUTCLK,并且勾选TXOUTCLK来源于发送通道的PLL参考时钟信号。
(6)、接收通道的同步设置这部分内容与发送端也是类似的,只不过接收端的是弹性Buffer,相比发送端的buffer功能更多,详细内容可以查看接收通道弹性buffer部分。
注意接收通道PCS并行时钟域(RXUSRCLK Source)也可以设置为TXOUTCLK。
(7)、复位相关的可选端口
表2 复位相关的可选端口
端口 |
含义 |
TXPCSRESET |
发送通道PCS复位信号,高电平有效。 |
TXPMARESET |
发送通道PMA复位信号,高电平有效。 |
TXSYSCLKSEL |
选择驱动TX数据路径的参考时钟源。 |
TXRATE |
传输速率改变端口,该端口动态控制TX串行时钟分频器D的设置,并与TXOUT_DIV一起使用,具体含义参考发送通道的时钟讲解。 |
TXBUFSTATUS |
TX buffer的状态,TXBUFSTATUS[1]为高电平表示TX buffer溢出或下溢状态。TXBUFSTATUS [0]表示TX buffer充满度,高电平表示TX buffer至少半满。 |
TX8B10BEN |
高电平表示启用8B / 10B编码器。 |
RXPCSRESET |
接收通道PCS复位信号,高电平有效。 |
RXPMARESET |
接收通道PMA复位信号,高电平有效。 |
RXSYSCLKSEL |
选择驱动RX数据路径的参考时钟源。 |
RXRATE |
接收速率更改端口,类似于TXPATE。 |
RXBUFSTATUS |
指示接收通道弹性buffer的状态:当检测到错误条件时,建议RX弹性缓冲器复位。 000b:在正常范围内 001b:缓冲区中的字节数小于CLK_COR_MIN_LAT 010b:缓冲区中的字节数大于CLK_COR_MAX_LAT 101b:RX弹性缓冲器下溢 110b:RX弹性缓冲区溢出 |
RXBUFRESET |
接收通道弹性buffer复位信号,高电平有效。当接收通道弹性buffer被旁路时,不能勾选此选项。 |
RXCDRHOLD |
保持CDR控制循环冻结。 |
CPLLPD |
CPLL掉电接口。 |
QPLLPD |
QPLL掉电接口。 |
CLKRSVD |
OOB电路时钟信号。 |
PART
04Alignment, Termination界面
Alignment, Termination, and Equalization界面配置如下图所示,主要包括逗号对齐和均衡处理两个部分。
图5 配置Alignment, Termination, and Equalization界面
0
(转)xilinx 高速收发器Serdes深入研究-Comma码-CSDN博客
K28.5,0xBC,+0101_111100,-1010_000011; 为检测字节分割。
使用其它K码,作为帧开始,帧结束,时钟修正和数据对齐。
(1)、逗号相关设置Use Comma Detection:启用接收K码检测,用于标识数据流中的K码字符和SONET框架字符。
Decode Valid Comma Only:启用接收逗号检测时,只检测他所默认的K码,即K28.1或K28.5。
注意:decode valid comma only不要选,因为还可能发送其他的K码用于控制。反正8b10b是用的收发器硬核的资源,不用白不用。
Comma Value:选择标准逗号模式或用户定义的模式之一以输入自定义模式。
Plus Comma:表示要匹配的正差异K码的10位二进制模式(RD+),模式的最右边位是串行到达的第一位。
Minus Comma:表示要匹配的负视差K码的10位二进制模式,模式的最右边位是串行到达的第一位。
Comma Mask:10位二进制模式,表示逗号匹配模式的掩码。
1表示要匹配逗号模式中的相应位,0表示不关心逗号模式中的相应位。
ALIGN_COMMA_WORD:https://blog.csdn.net/waxieqina/article/details/126470256
Align to...可以选择Any Byte Boundary、Two Byte Boundary、FourByte Boundary等选项,一般保持默认设置即可。
Any Byte Boundary:检测到逗号时,使用逗号模式将数据流与最近的字节边界对齐。
Two Byte Boundary:检测到逗号时,使用逗号模式将数据流与2字节边界对齐。
FourByte Boundary:检测到逗号时,使用逗号模式将数据流与4字节边界对齐。
允许的对齐边界由ALIGN_COMMA_WORD定义。可能边界的间距由RX_DATA_WIDTH确定,边界位置的数量由RXDATA接口中的字节数确定(有关RX_DATA_WIDTH设置,请参阅表4-43,第214页)。图4-30显示了可以选择的边界。(Grey =可以出现在字节上)
Combine plus/minus commas:表示使用双逗号检测功能。如果使能该选项,则MCOMMA和PCOMMA模式将合并,comma对齐模块将在串行流中搜索两个K码,实现16b或20b的K码对齐功能。
在数据率比较高的时候,外部位宽可能是2字(16位)或者4字(32位)。
这是如果收发双方不约定好在高低哪个字发送comma码,这时是可以检测字边界,但接收端就会出现高低字节翻转的情况。
在任意对于单COMMA的数据对齐,选择偶数字节对齐。发送的时候 0x5ABC->2’b01。
下表是逗号检测可选的一下信号,作为辅助控制或者检测。
表3 逗号对齐可选端口
选项 |
含义 |
ENPCOMMAALIGN |
高电平有效,当检测到K码(RD+)模式时,启用字节边界对齐过程。 RXPCOMMAALIGNEN 为高电平,以激活
PCOMMA 模式对齐。
|
ENMCOMMAALIGN |
高电平有效,当检测到K码(RD-)模式时,启用字节边界对齐过程 将 RXMCOMMAALIGNEN
设置为高电平,可在 MCOMMA 模式下对齐。
|
RXSLIDE |
高电平有效,每次置位都会将字节对齐调整一位,优先于普通逗号对齐。 用于手动对齐的。 |
RXBYTEISALIGN |
高电平有效,表示接收端已经完成字节对齐。
当 MCOMMA 或 PCOMMA 对齐激活时,任何匹配的逗号模式都会导致数据块重新对齐到
最近的边界。成功对齐后,数据块将 RXBYTEISALIGNED 保持高电平。
此时,可将
RXMCOMMAALIGNEN 和 RXPCOMMAALIGNEN 驱动为低电平,
以关闭K码对齐功能并保持当前
的对齐位置。
|
RXBYTEREALIGN |
高电平有效,表示接收端正在进行字节对齐。 RXBYTEREALIGN是状态信号,用来表示对齐的K码是否发生变化或者说现在是否在对齐状态,=1表示字节对齐边界没有改变,=0表示字节对齐边界改变了。所以当RXBYTEREALIGN为0时我们可以重新使能字节对齐。 |
RXCOMMADET |
高电平有效,表示逗号对齐逻辑在数据流中检测到逗号模式。 当K码对齐模块检测到K码时该信号置一,该信号有效几个周期。 |
(2)发送端加重、接收端均衡设置
Differential Swing and Emphasis Mode表示选择加重的模式,xilinx提供了一些加重模式,本文选择自定义模式即可,如下图所示。
Equalization Mode:
设置接收通道的均衡模式,根据接收通道的讲解,一般设置为LPM就行。
Automatic Gain Control:设置接收器的自动增益控制,设置为自动即可。
Termination Voltage:此处需要阅读对方发射端的手册,并且结合眼图选择最合适的幅值;
需要设置比期望幅值稍低的幅值
发送端的幅值是可以调整的:TXDIFFCTRL
有GND、Floating、AVTT、可编程等几个选项。
其中GND会使内部终端网络接地,
Floating可隔离网络,
AVTT会将内部参考电压源应用于终端网络,
选择可编程选项后,可以通过更改Trim Value的值修改接收通道终端网络的电压。
之后就是一些可选的端口,一般会勾选极性翻转信号,
TXPRECURSOR、TXPOSTCURSOR、TXDIFFCTRL等信号。
这些可选信号的含义如下表所示。
表4 加重等可选信号含义
选项 |
含义 |
TXPOLARITY |
用于发送通道的差分引脚极性翻转,高电平有效。 |
TXINHIBIT |
强制变送器输出处于稳定状态,高电平有效。 |
TXDIFFCTRL |
发送通道的摆幅控制。(幅值电压是多少) |
TXPOSTCURSOR |
TXPOSTCURSOR端口。 |
TXPRECURSOR |
TXPRECURSOR端口。 |
TXMAINCURSOR |
高电平有效信号可启用QPI偏置。 |
TXQPISENN |
传输QPI端口(负极性)。 |
TXQPISENP |
传输QPI端口(正极性)。 |
TXQPIBIASEN |
高电平使能QPI偏置。 |
TXQPIWEAKUP |
QPI高电平有效信号发送器。 |
TXQPISTRONGPDOWN |
传输QPI掉电端口。 |
RXPOLARITY |
反转接收数据信号的极性,高电平有效。 |
RXDFELPMRESET |
复位接收DFE/LPM模块。 |
RXDFEAGCOVRDEN |
DFE AGC覆盖的高电平有效信号。 |
RXLPMLFKLOVRDEN |
接收低通覆盖使能端口。 |
RXQPIEN |
启用和禁用驱动感测输出端口
RXQPISENP 和 RXQPISENN 的缓冲器
|
RXQPISENN |
检测输出在MGTRX N引脚上的电平状态。 |
RXQPISENP |
检测输出在MGTRX P引脚上的电平状态。 |
RXLPMEN |
高电平启用带有自适应线性均衡器的LPM模式,低电平启用高性能DFE模式使能。 |
PCIE & SATA & PRBS
之后需要对PCIE,SATA,PRBS界面进行配置,如下图所示,这个页面多数功能与PCIE和SATA有关;当不使用这两种协议时,只需要将回环控制引出即可,其余设置保持默认即可。
图8 PCIE & SATA & PRBS
(1)PCIE和SATA协议相关的设置
Enable PCI Express:启用PCI Express特定的某些功能,包括启用PCI Express断电模式和PCIe通道绑定的选项。当收发器用于PCI Express时,应勾选此选项。
SATA COM Sequence的Bursts:表示声明COM匹配的突发序列数,取[0,7]的整数值,默认为4。
SATA COM Sequence的Idles:指示声明COM匹配的空闲序列的数量,取[0,7]的整数值,每个空闲信号都是一个OOB信号,其长度与COMINIT/ COMRESET或COMWAKE相匹配。
PCIE过渡时间(Transition Time)包含To P2、From P2、TO/From Non P2三个参数,但本工程并不会使用这些参数。
To P2:取值范围[0,65535],设置计数器以确定PCI Express到P2电源状态的转换时间,默认值为100。From P2:取值范围[0,65535],设置计数器以确定PCI Express从P2电源状态的转换时间,默认值为60。
TO/From Non P2:取值范围[0,65535],设置计数器以确定PCI Express进入或离开P2以外的电源状态的转换时间,默认值为25。其余的端口信号如下表所示。
表5 可选的端口信号
选项 |
含义 |
LOOPBACK |
回环模式的设置信号。 |
RXCOMWAKEDET |
唤醒检测信号,高电平有效。 |
TXDETECTRX |
PIPE接口,用于符合PCI Express规范的控制信号。功能取决于TXPOWERDOWN、RXPOWERDOWN、TXELECIDLE、TXCHARDISPMODE和TXCHARDISPVAL的状态。如果RXSTATUS编码格式设置为SATA,则此端口不可用。 |
RXSTATUS |
3位接收器状态信号,该信号的编码取决于RXSTATUS编码格式的设置。 |
TXCOMINIT |
传输初始化端口。 |
TXELECIDLE |
将变送器驱动至电气空闲状态(无差分电压)。在PCI Express模式下,用于电气空闲模式。功能取决于TXPOWERDOWN、RXPOWERDOWN、TXELECIDLE、TXCHARDISPMODE和TXCHARDISPVAL的状态。 |
RXVALID |
高电平有效PCI Express接收OOB/信标信号。指示RXDATA和RXCHARISK[3:0]上的符号锁定和有效数据。 |
TXCOMSAS |
OOB信号。 |
PHYSTATUS |
PCI Express接收检测支持信号,表示完成了几个PHY功能。 |
RXCOMINITDET |
高电平有效初始化检测信号。 |
TXCOMWAKE |
OOB信号。 |
RXCOMSASDET |
SATA的高电平有效检测信号。 |
TXCOMFINISH |
OOB的完成。 |
TXPOWERDOWN |
发送通道的掉电端口。 |
RXPOWERDOWN |
接收通道的掉电端口。 |
(2)、OOB功能相关设置
Use RX OOB Signal Detection:启用内部OOB信号检测器,
OOB信号检测用于PCIe和SATA。
Use PRBS Detector:启用内部PRBS检测器,应用程序可以使用该功能来实现内置自测。
Use Port TXPRBSSEL:选择PRBS传输控制端口。
Use Port TXPRBSFORCEERR:启用PRBS强制误差控制端口,将错误数据插入比特流。
RXPRBSERR_LOOPBACK:选择此选项将RXPRBS ERR位回送至同一收发器的TXPRBSFORCEERR。
该页面就配置完成了,可选的端口很多,但如果不使用PCIE和SATA协议,只需要勾选回环模式控制即可。
CB and CC Sequence页面配置
最后一个配置页面如下所示,主要包含通道绑定和时钟校准两部分,其中通道绑定是指同时使用多个通道时,多个通道之间需要同步数据,防止数据错位引发的错误,典型应用就是PCIE。
(1)通道绑定相关设置
Use Channel Bonding:使用唯一字符序列启用接收器通道绑定逻辑。
识别后,允许在接收缓冲器中添加或删除这些字符,以对多个数据收发器进行字节对齐。
Use Two Channel Bonding Sequences:激活可选的第二通道绑定序列,检测到任一序列都会触发通道绑定。
Sequence Max Skew:从下拉列表中选择通道绑定可以处理的最大字符倾斜。必须始终小于通道绑定序列之间最小距离的一半。
Sequence Length:从下拉列表中选择唯一通道绑定序列中的字符数。本文只使用了一个收发器,所以不需要使用通道对齐。
(2)、时钟校准
Use Clock Correction:使用唯一字符序列使能接收器时钟校正逻辑。
识别后,允许在接收通道的弹性buffer中添加或删除这些字符,以防止由于发送/接收时钟频率的微小差异而导致弹性buffer下溢或上溢。
PPM Offset:指示发送和接收时钟之间的PPM偏移。
Use Two Clock Correction Sequences:激活可选的第二时钟校正序列,检测到任一序列都会触发时钟校正。
Periodicity of the CC Sequence:指示在数据流中插入CC序列的间隔。
Sequence Length:从下拉列表中选择唯一时钟校正序列中的字符(子序列)数量。
当弹性buffer中数据过少时,可以将设置好的字符,存入弹性buffer,防止其下溢出。
IP操作:
1.引脚上的时钟处理;
Q2_CLK0_GTREFCLK_PAD_P_IN和Q2_CLK0_GTREFCLK_PAD_N_IN是来自引脚的差分时钟;
经过原语输出参考时钟q2_clk0_gtrefclk;
q2_clk0_gtrefclk会通过一个Gt_Trans_common的封装,来到GTXE2_COMMON中(输入到QPLL里)
//IBUFDS_GTE2 IBUFDS_GTE2 ibufds_instQ2_CLK0 ( .O (q2_clk0_gtrefclk), .ODIV2 (), .CEB (tied_to_ground_i), .I (Q2_CLK0_GTREFCLK_PAD_P_IN), .IB (Q2_CLK0_GTREFCLK_PAD_N_IN) ); //倘若这里因为内部的位宽需求不同导致userclk2和1的时钟频率不同,需要调用MMCM或PLL来实现对1的倍频; BUFG txoutclk_bufg0_i ( .I (gt0_txoutclk_i), .O (gt0_txusrclk_i) );
Gt_Trans Gt_Trans_init_i ( .sysclk_in ( sysclk_in_i ),// Drp时钟 .soft_reset_tx_in ( soft_reset_tx_in ), .soft_reset_rx_in ( soft_reset_rx_in ), .dont_reset_on_data_error_in ( dont_reset_on_data_error_in ),// 错误输入; .gt0_tx_fsm_reset_done_out ( gt0_tx_fsm_reset_done_out ),// TX状态机复位完成,可发送数据; .gt0_rx_fsm_reset_done_out ( gt0_rx_fsm_reset_done_out ), .gt0_data_valid_in ( gt0_data_valid_in ),// 当确认GT收发器工作正常时候需要拉高; //_____________________________________________________________________ //_____________________________________________________________________ //GT0 (X1Y8) //-------------------------- Channel - DRP Ports --------------------------Drp 配置端口 .gt0_drpaddr_in ( gt0_drpaddr_in ), // input wire [8:0] gt0_drpaddr_in .gt0_drpclk_in ( sysclk_in_i ), // input wire sysclk_in_i .gt0_drpdi_in ( gt0_drpdi_in ), // input wire [15:0] gt0_drpdi_in .gt0_drpdo_out ( gt0_drpdo_out ), // output wire [15:0] gt0_drpdo_out .gt0_drpen_in ( gt0_drpen_in ), // input wire gt0_drpen_in .gt0_drprdy_out ( gt0_drprdy_out ), // output wire gt0_drprdy_out .gt0_drpwe_in ( gt0_drpwe_in ), // input wire gt0_drpwe_in //------------------------- Digital Monitor Ports --------------------------数据窥探 .gt0_dmonitorout_out ( gt0_dmonitorout_out ), // output wire [7:0] gt0_dmonitorout_out //----------------------------- Loopback Ports -----------------------------回环 .gt0_loopback_in ( gt0_loopback_in ), // input wire [2:0] gt0_loopback_in //------------------- RX Initialization and Reset Ports --------------------眼图扫描和准备信号 .gt0_eyescanreset_in ( gt0_eyescanreset_in ), // input wire gt0_eyescanreset_in .gt0_rxuserrdy_in ( gt0_rxuserrdy_in ), // input wire gt0_rxuserrdy_in //------------------------ RX Margin Analysis Ports ------------------------眼图 .gt0_eyescandataerror_out ( gt0_eyescandataerror_out ), // output wire gt0_eyescandataerror_out .gt0_eyescantrigger_in ( gt0_eyescantrigger_in ), // input wire gt0_eyescantrigger_in //----------------- Receive Ports - Clock Correction Ports -----------------时钟纠错计数器 .gt0_rxclkcorcnt_out ( gt0_rxclkcorcnt_out ), // output wire [1:0] gt0_rxclkcorcnt_out //---------------- Receive Ports - FPGA RX Interface Ports ----------------- .gt0_rxusrclk_in ( gt0_rxusrclk_i ), // input wire gt0_rxusrclk_i .gt0_rxusrclk2_in ( gt0_rxusrclk2_i ), // input wire gt0_rxusrclk2_i //---------------- Receive Ports - FPGA RX interface Ports ----------------- .gt0_rxdata_out ( gt0_rxdata_out ), // output wire [31:0] gt0_rxdata_out //---------------- Receive Ports - RX 8B/10B Decoder Ports ----------------- .gt0_rxdisperr_out ( gt0_rxdisperr_out ), // output wire [3:0] gt0_rxdisperr_out .gt0_rxnotintable_out ( gt0_rxnotintable_out ), // output wire [3:0] gt0_rxnotintable_out //------------------------- Receive Ports - RX AFE ------------------------- .gt0_gtxrxp_in ( gt0_gtxrxp_in ), // input wire gt0_gtxrxp_in //---------------------- Receive Ports - RX AFE Ports ---------------------- .gt0_gtxrxn_in ( gt0_gtxrxn_in ), // input wire gt0_gtxrxn_in //------------ Receive Ports - RX Byte and Word Alignment Ports ------------字节对齐有效输出端口 .gt0_rxbyteisaligned_out ( gt0_rxbyteisaligned_out ), // output wire gt0_rxbyteisaligned_out //------------------- Receive Ports - RX Equalizer Ports -------------------均衡器端口 .gt0_rxdfelpmreset_in ( gt0_rxdfelpmreset_in ), // input wire gt0_rxdfelpmreset_in .gt0_rxmonitorout_out ( gt0_rxmonitorout_out ), // output wire [6:0] gt0_rxmonitorout_out .gt0_rxmonitorsel_in ( gt0_rxmonitorsel_in ), // input wire [1:0] gt0_rxmonitorsel_in //------------- Receive Ports - RX Fabric Output Control Ports ------------- .gt0_rxoutclk_out ( gt0_rxoutclk_i ), // output wire gt0_rxoutclk_i .gt0_rxoutclkfabric_out ( gt0_rxoutclkfabric_out ), // output wire gt0_rxoutclkfabric_out //----------- Receive Ports - RX Initialization and Reset Ports ------------接收复位和PMA复位 .gt0_gtrxreset_in ( gt0_gtrxreset_in ), // input wire gt0_gtrxreset_in .gt0_rxpmareset_in ( gt0_rxpmareset_in ), // input wire gt0_rxpmareset_in //--------------- Receive Ports - RX Polarity Control Ports ----------------极性反转 .gt0_rxpolarity_in ( gt0_rxpolarity_in ), // input wire gt0_rxpolarity_in //----------------- Receive Ports - RX8B/10B Decoder Ports -----------------K码则拉高电平 .gt0_rxcharisk_out ( gt0_rxcharisk_out ), // output wire [3:0] gt0_rxcharisk_out //------------ Receive Ports -RX Initialization and Reset Ports ------------复位完成 .gt0_rxresetdone_out ( gt0_rxresetdone_out ), // output wire gt0_rxresetdone_out //---------------------- TX Configurable Driver Ports ----------------------前加重 .gt0_txprecursor_in ( gt0_txprecursor_in ), // input wire [4:0] gt0_txprecursor_in //------------------- TX Initialization and Reset Ports --------------------复位和准备 .gt0_gttxreset_in ( gt0_gttxreset_in ), // input wire gt0_gttxreset_in .gt0_txuserrdy_in ( gt0_txuserrdy_in ), // input wire gt0_txuserrdy_in //---------------- Transmit Ports - FPGA TX Interface Ports ----------------用户时钟输入 .gt0_txusrclk_in ( gt0_txusrclk_i ), // input wire gt0_txusrclk_i .gt0_txusrclk2_in ( gt0_txusrclk2_i ), // input wire gt0_txusrclk2_i //------------- Transmit Ports - TX Configurable Driver Ports --------------发送端差分幅值控制:四位二进制 .gt0_txdiffctrl_in ( gt0_txdiffctrl_in ), // input wire [3:0] gt0_txdiffctrl_in //---------------- Transmit Ports - TX Data Path interface -----------------发送数据输入 .gt0_txdata_in ( gt0_txdata_in ), // input wire [31:0] gt0_txdata_in //-------------- Transmit Ports - TX Driver and OOB signaling -------------- 收发器差分对 .gt0_gtxtxn_out ( gt0_gtxtxn_out ), // output wire gt0_gtxtxn_out .gt0_gtxtxp_out ( gt0_gtxtxp_out ), // output wire gt0_gtxtxp_out //--------- Transmit Ports - TX Fabric Clock Output Control Ports ----------时钟输出 .gt0_txoutclk_out ( gt0_txoutclk_i ), // output wire gt0_txoutclk_i .gt0_txoutclkfabric_out ( gt0_txoutclkfabric_out ), // output wire gt0_txoutclkfabric_out .gt0_txoutclkpcs_out ( gt0_txoutclkpcs_out ), // output wire gt0_txoutclkpcs_out //------------------- Transmit Ports - TX Gearbox Ports --------------------K码指示信号 .gt0_txcharisk_in ( gt0_txcharisk_in ), // input wire [3:0] gt0_txcharisk_in //----------- Transmit Ports - TX Initialization and Reset Ports -----------复位完成 .gt0_txresetdone_out ( gt0_txresetdone_out ), // output wire gt0_txresetdone_out //--------------- Transmit Ports - TX Polarity Control Ports ---------------发送端的极性知识信号 .gt0_txpolarity_in ( gt0_txpolarity_in ), // input wire gt0_txpolarity_in // QPLL时钟 .gt0_qplllock_in ( gt0_qplllock_i ), .gt0_qpllrefclklost_in ( gt0_qpllrefclklost_i ), .gt0_qpllreset_out ( gt0_qpllreset_i ), .gt0_qplloutclk_in ( gt0_qplloutclk_i ), .gt0_qplloutrefclk_in ( gt0_qplloutrefclk_i ) );