高速接口自用笔记: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

要设置数据块在输入数据流中搜索的逗号模式,需要使用 ALIGN_MCOMMA_VALUE、
ALIGN_PCOMMA_VALUE 和 ALIGN_COMMA_ENABLE 属性。逗号长度取决于
RX_DATA_WIDTH(参见第 298 页,表 4-55)。图 4-32 显示了 ALIGN_COMMA_ENABLE
如何屏蔽每个逗号值,以允许部分模式匹配。

(转)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码时该信号置一,该信号有效几个周期。

 

8B/10B编码方案中会有+1与-1两种状态,这就是所谓的极性偏差( running disparity,RD)。
所以在检测K码时,K28.5就会有两种K码,所以K码对齐功能有MCOMMA和PCOMMA模式,也就是plus comma 和Minus Comma。
将ENPCOMMALIGN和ENMCOMMALIGN两个打勾使能即可检测两种模式,可与其中一种模式对齐即可。
两个使能端口均为高电平,可按任一模式对齐。当ALIGN_COMMA_DOUBLE
为 TRUE 时,
两个使能端口必须始终驱动为相同的值。
 

(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里)

2.GT0_TXOUTCLK_IN是GT IP核产出的时钟gt0_txoutclk_out;
GT0_TXOUTCLK_IN就是这个:
经过BUFG输出的就是用户时钟了;
gt0_txusrclk2_out是用户使用的
gt0_txusrclk1_out需要给GT收发器IP核;

  //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           )
    );

 

posted @ 2024-07-19 17:42  NoNounknow  阅读(563)  评论(0编辑  收藏  举报