基于xilinx vivado的GTX/GTP ip核设置与例程代码使用详解

1 概述

本文是用于总结GTX例程的学习成果。主要是从IP的设置,IP核的例程代码构成与引用两方面介绍GTX的使用情况。

2 参考文档

《pg168-gtwizard》

《ug476_7Series_Transceivers》

3 GTX的IP设置

3.1 本例程使用环境

编译环境:vivado 2017.4

选用FPGA:XC7K325T-2FFG900I

3.2 GTX IP界面的设置情况

本例程使用GTX主要是实现光纤传输,而不是PCIE,SATA等特殊协议。采用的编码形式为8B/10B,对齐字符为K码。

本例程的IP设置情况如下所示:

3.2.1 GTX IP设置第1页

在这里插入图片描述

第1页设置主要是GT的类型,这个一般根据器件会确定默认选择,高端器件可能有两种根据自己需要的速率设置即可。

3.2.2 GTX IP设置第2页

在这里插入图片描述

第2页设置比较重要,是设置想要的line rate以及GTX上的参考输入时钟。

3.2.3 GTX IP设置第3页

在这里插入图片描述

第3页设置也比较重要,涉及到外部其他模块与IP对接的数据位宽、编码方式、内部数据位宽,系统时钟等信息。

此外还有一些可选端口,其功能如下所示:

表 1 可选端口功能列表

OptionI/ODescription
TXPCSRESETInputActive-High reset signal for the transmitter physical coding sublayer (PCS) logic.
TXBUFSTATUSOutput2-bit signal monitors the status of the TX elastic buffer. This option is not available when the TX buffer is bypassed.
TXRATEInputTransmit rate change port.
RXPCSRESETInputActive-High reset signal for the receiver PCS logic.
RXBUFSTATUSOutputIndicates condition of the RX elastic buffer. Option is not available when the RX buffer is bypassed.
RXBUFRESETInputActive-High reset signal for the RX elastic buffer logic. This option is not available when the RX buffer is bypassed.
RXRATEInputReceive rate change port.
QPLLPDInputVisible only when GTX or GTH transceiver is selected. Powerdown port for QPLL.
CPLLPDInputVisible only when GTX or GTH transceiver is selected. Powerdown port for channel PLL (CPLL).
PLL0PDInputVisible only when GTP transceiver is selected. Powerdown port for PLL0.
PLL1PDInputVisible only when GTP transceiver is selected. Powerdown port for PLL1.

3.2.4 GTX IP设置第4页

在这里插入图片描述

IP第4页是需要关心的,主要涉及到接收时编码对齐方式,接收均衡模式的选择。

编码值一般选择K28.5,且对齐选择双字节对齐。对齐方式的定义如下所示:

在这里插入图片描述

在这里插入图片描述

均衡模式的选择即是DFE模式与LPM的选择,一般速率小于10G,8B/10B编码的都选DFE模式。其依据如下所示:

在这里插入图片描述

3.2.5 GTX IP设置第5页

在这里插入图片描述

第5页设置主要是针对PCIE,SATA,PRBS等特殊运用,若不需要则不用关心,本例程没有使用,若需要使用的请看参考文档。

3.2.6 GTX IP设置第6页

在这里插入图片描述

第6页的设置一般情况下可以不用关心,默认即可。

这里说下clock correction 时钟校准的设置:

表 2 clock correction设置

OptionDescription
Use Clock CorrectionEnables receiver clock correction logic using unique character sequences. When recognized, these sequences allow for adding or deleting characters in the receive buffer to prevent buffer underflow/overflow due to small differences in the transmit/ receive clock frequencies.
Sequence LengthSelect from the drop-down list the number of characters (subsequences) in the unique clock correction sequence. The XAUI example uses 1.
PPM OffsetIndicates the PPM offset between the transmit and receive clocks.
Periodicity of the CC SequenceIndicates the interval at which CC sequences are inserted in the data stream.
Use Two Clock Correction SequencesActivates the optional second clock correction sequence. Detection of either sequence triggers clock correction.

Channel Bonding and Clock Correction Sequences如下所示:

在这里插入图片描述

3.2.7 GTX IP设置第7页

在这里插入图片描述

​ 第7页主要是本次设计的信息汇总,这里需要注意TXUSRCLK2与RXUSRCLK2,这两个时钟分别是接口上最终与用户数据对接时的时钟。

4 GTX IP例程代码情况

GTX IP的例程对于使用来说主要是分为3大块,gtwizard_0_support、gtwizard_0_GT_FRAME_GEN与gtwizard_0_GT_FRAME_CHECK。如下图所示代码结构:

在这里插入图片描述

4.1 gtwizard_0_exdes模块

本模块是例程的顶层,用于整合其他模块的,也是与FPGA管脚上的GTX,参考时钟对接的地方。

在实际使用中,可直接在这个模块中修改,去掉FRAME_GEN模块与FRAME_CHECK模块的对接信号。再把gtwizard_0_support的输入输出数据相关的信号引到端口上即可使用。需要引到端口上的信号如下所示:

表 3 gtx最终使用信号

序号信号名I/O说明
1Q0_CLK0_GTREFCLK_PAD_N_INIGTX的参考时钟,来源于GTX bank 的时钟管脚
2Q0_CLK0_GTREFCLK_PAD_P_INI
3drpclk_in_iI内部全局时钟,可由PLL产生
4RXN_INIGTX输入高速信号
5RXP_INI
6TXN_OUTOGTX输出高速信号
7TXP_OUTO
8gt0_tx_system_reset_cOTX系统复位信号,高有效
9gt0_rx_system_reset_cORX系统复位信号,高有效
10gt0_txusrclk2_iOTX的数据时钟
11gt0_rxusrclk2_iORX的数据时钟
12gt0_rxdata_iORx的数据
13gt0_rxcharisk_iORx的K码
14gt0_txdata_iITX的数据
15gt0_txcharisk_iITX的K码

​ 此外需要修改一个常数:EXAMPLE_SIM_GTRESET_SPEEDUP的值由TRUE修改为FALSE,因为实际使用时不是拿来仿真。如下图所示:

在这里插入图片描述

4.2 gtwizard_0_support模块

本模块是GTX的核心模块,即实际使用时也需要用的,不用修改,直接照用就行。其中包含了对GTX的时钟管理、复位管理,通用处理等对GTX IP的驱动处理。

4.3 gtwizard_0_GT_FRAME_GEN模块

本模块是测试数据产生的模块,是按一定时序输出”gt_rom_init_tx.dat”中存储的数据。

在实际使用时不需要这个模块,需要用自己的数据源(gt0_txdata_i)替换。

4.4 gtwizard_0_GT_FRAME_CHECK模块

本模块是数据检测模块,按一定的时序解析出收到的有效数据,然后与"gt_rom_init_rx.dat"中存储的数据进行对比,看是否接收到的数据是否和预期一致。

在实际使用时不需要这个模块,把数据(gt0_rxdata_i)引出去自己另外解析。

5 编码方式与line rate 的选择参考

Line rate与编码方式的选择,一般是根据想要通信的协议相关。其具体规范可参考《ug476_7Series_Transceivers》,一般将GTX分为CPLL低速使用,QPLL高速使用。

CPLL的驱动设置与编码格式如下所示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
​ QPLL的驱动设置与编码格式如下所示:

在这里插入图片描述

  • 47
    点赞
  • 435
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风中月隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值