K7 GTX在SDI中的使用解析

news/2025/1/11 10:51:47/

UG476是GTX的数据手册。
+++++++++++++++++++++++++++++++++++++++++++
详细解析xapp592
+++++++++++++++++++
先来看看kc705_sdi_demo.v
一方面,是进行各个时钟的BUFFER处理。
IBUFDS_GTE2用来缓冲MGTbank上的输入的两路时钟,
BUFG用来缓冲各个工作时钟。
例如ODIV2输出的时钟,用BUFG来缓冲,
GTXchannel输出的txoutclk和rxoutclk,用BUFG缓冲后,驱动txusrclk和txusr2clk,驱动rxusrclk和rxusr2clk。

k7_sdi_rxtx模块,是SDI协议的处理模块和GTX模块的控制模块。
+++++++++++++++++++++++++++++++++++++++++++
GTX模块的控制信号,连接到k7_sdi_rxtx模块上。
下面以SDI2和GT1为例,来看看这两个模块的互连信号。

clk----工作时钟,使用clk_74_25。

tx_usrclk----发送时钟,使用tx2_usrclk。
tx_gttxreset----tx复位控制信号,由SDI2输出给GT,
tx_txdata----tx的数据,由SDI2输出给GT,
tx_ratedone----tx的ratedone状态,由GT输出给SDI2.
tx_resetdone----txpll的reset状态,由GT输出给SDI2.
tx_pmareset----txpma的reset控制,由SDI2输出给GT.
tx_sysclksel----tx的sysclk的选择控制,由SDI2输出给GT。
tx_rate----tx的rate选择,由SDI2输出给GT。
tx_plllock----tx的PLL的lock状态,由QPLL和CPLL的lock状态信号,相与。
tx_slew----tx的摆率状态,由SDI2输出。未使用。
tx_userrdy----tx的usrrdy握手信号,由SDI2输出给GT。
tx_pllreset----tx的pll的reset控制信号,由top模块生成,并输出给SDI2和GT使用。这里,top生成的信号是gtxpllreset。
tx_txen----tx的使能信号,这里浮空。

rx_usrclk----接收时钟,使用rx2_usrclk。
rx_gtrxreset----rx复位控制信号,由SDI2输出给GT,
rx_resetdone----rxpll的reset状态,由GT输出给SDI2.
rx_rate----rx的rate选择,由SDI2输出给GT。
rx_ratedone----rx的ratedone状态,由GT输出给SDI2.
rx_cdrhold----rx的cdrhold控制信号,由SDI2输出给GT。
rx_rxdata----rx的数据,由GT输出给SDI2,
rx_locked----rx的lock状态信号,由SDI2输出。未使用。
rx_userrdy----rx的usrrdy握手信号,由SDI2输出给GT。
rx_pllreset----tx的pll的reset控制信号,由top模块生成,并输出给SDI2和GT使用。这里,top生成的信号是gtxpllreset。
rx_plllock----rx的PLL的lock状态,由QPLL的lock状态信号提供。

rx_mode----rx的mode指示信号,由SDI2输出,未使用。
rx_level_b----rx的level指示信号,由SDI2输出,未使用,
rx_t_family----rx的family指示信号,由SDI2输出,未使用,
rx_t_rate----rx的rate指示信号,由SDI2输出,未使用。
rx_t_scan----rx的scan指示信号,由SDI2输出,未使用。
rx_m----rx的m指示信号,由SDI2输出,未使用。

drpclk----drp的工作时钟,这里使用clk_74_25。
drprdy----drp的ready状态信号,由GT输出给SDI2.
drpaddr----drp的addr控制信号,由SDI2输出给GT。
drpdi----drp的di数据信号,由SDI2输出给GT。
drpen----drp的en控制信号,由SDI2输出给GT。
drpwe----drp的we控制信号,由SDI2输出给GT。

++++++++++++++++++++++++++++++++++++++++++
k7gtx_sdi_wrapper模块,是GTX的收发模块。
这是本文的解析重点。
在这个模块内,将4个GT和1个COMMON的接口引出,使得一个MGTbank可以和外部其他模块对接。
下面看看COMMON的接口。
GT0_GTREFCLK0_COMMON_IN----QPLL的refclk的输入参考时钟,这里使用mgtclk_148_5。
GT0_QPLLLOCK_OUT----QPLL的lock状态信号,由GT输出给SDI2。
GT0_QPLLLOCKDETCLK_IN----QPLL的lockdetect的输入工作时钟,这里使用clk_74_25。
GT0_QPLLREFCLKLOST_OUT----QPLL的refclk的lost状态信号,由GT输出,这里浮空。
GT0_QPLLRESET_IN----QPLL的reset控制信号,由top生成,并输出给GT。

下面以GT1为例,分析GT的接口。
GT1_DRPADDR_IN----drp的addr控制信号,由SDI2输出给GT。
GT1_DRPCLK_IN----drp的工作时钟,这里使用clk_74_25。
GT1_DRPDI_IN----drp的di数据信号,由SDI2输出给GT。
GT1_DRPDO_OUT----drp的do数据信号,这里浮空。
GT1_DRPEN_IN----drp的en控制信号,由SDI2输出给GT。
GT1_DRPRDY_OUT----drp的ready状态信号,由GT输出给SDI2.
GT1_DRPWE_IN----drp的we控制信号,由SDI2输出给GT。

GT1_GTREFCLK0_IN----CPLL的refclk的输入参考时钟,这里使用mgtclk_148_35。
GT1_CPLLFBCLKLOST_OUT----CPLL的fbclk的lost状态信号,这里浮空。
GT1_CPLLLOCK_OUT----CPLL的lock状态信号,由GT输出给SDI2。
GT1_CPLLLOCKDETCLK_IN----CPLL的lockdetect的输入工作时钟,这里使用clk_74_25。
GT1_CPLLREFCLKLOST_OUT----CPLL的refclk的lost状态信号,这里浮空。
GT1_CPLLRESET_IN----CPLL的reset控制信号,由top生成,并输出给GT。

GT1_EYESCANDATAERROR_OUT----GT的eyescan的dataerror状态信号,这里浮空。

GT1_RXUSERRDY_IN----rx的usrrdy握手信号,由SDI2输出给GT。

GT1_GTRXRESET_IN----rx的reset控制信号,rx复位控制信号,由SDI2输出给GT,
GT1_RXDATA_OUT----rx的接收数据信号,由GT输出给SDI2。

GT1_RXOUTCLK_OUT–rx的输出时钟,在外部由BUFG驱动后,作为rxusrclk和rxusr2clk使用。
GT1_RXUSRCLK_IN----rx的输入的rxusrclk。
GT1_RXUSRCLK2_IN----rx的输入的rxusr2clk。

GT1_GTXRXN_IN----rx的接收串行数据信号。
GT1_GTXRXP_IN----rx的接收串行数据信号。

GT1_RXCDRHOLD_IN----rx的cdrhold控制信号,由SDI2输出给GT。
GT1_RXCDRLOCK_OUT----rx的cdrlock状态信号,由GT输出,这里浮空。
GT1_RXELECIDLE_OUT----rx的elecidle状态信号,由GT输出,这里浮空。

GT1_RXBUFRESET_IN----rx的rxbuf的reset控制信号,由外部输入,这里拉低。
GT1_RXBUFSTATUS_OUT----rx的rxbuf的status状态信号,由GT输出,这里浮空。

GT1_RXRATE_IN----rx的rxrate控制信号,由SDI2输出给GT。
GT1_RXRATEDONE_OUT----rx的rxratedone状态信号,由GT输出给SDI2。
GT1_RXRESETDONE_OUT----rx的resetdone状态信号,由GT输出给SDI2。

GT2_TXPOSTCURSOR_IN----tx的postcursor输入控制信号,由外部输出给GT。这里控制码使用5’b00000。
GT2_TXPRECURSOR_IN----tx的precursor输入控制信号,由外部输出给GT。这里控制码使用5’b00000。
GT1_TXSYSCLKSEL_IN----tx的sysclk的选择控制,由SDI2输出给GT。
GT1_TXUSERRDY_IN----tx的usrrdy握手信号,由SDI2输出给GT。
GT1_TXBUFSTATUS_OUT----tx的txbuf的status状态信号,由GT输出,根据status来控制自身的复位。
GT1_GTTXRESET_IN----tx的reset控制信号,由SDI2输出给GT,
GT1_TXDATA_IN----tx的输入数据信号,由SDI2输出给GT。

GT1_TXOUTCLKFABRIC_OUT----tx的txoutclkfabric输出时钟,这里不使用,浮空。
GT1_TXOUTCLKPCS_OUT-----tx的txoutclkpcs输出时钟,这里不使用,浮空。
GT1_TXPCSRESET_IN----tx的pcs的reset控制信号,这里使用txbuf的status状态信号来实现自控,
这里使用tx2_bufstatus[1]。
GT1_TXPMARESET_IN----tx的pma的reset控制信号,由SDI2输出给GT。

GT1_TXOUTCLK_OUT----tx的txoutclk输出时钟,在外部经过BUFG驱动后,作为txusrclk和txusr2clk使用。
GT1_TXUSRCLK_IN----tx的txusrclk,由BUFG缓冲后,作为输入时钟。
GT1_TXUSRCLK2_IN----tx的txusr2clk,由BUFG缓冲后,作为输入时钟。

GT1_GTXTXN_OUT----tx的发送串行数据信号。
GT1_GTXTXP_OUT----tx的发送串行数据信号。

GT1_TXDIFFCTRL_IN----tx的diffterm控制信号,这里使用控制码4’b1011。

GT1_TXRATE_IN----tx的txrate控制信号,由SDI2输出给GT。
GT1_TXRATEDONE_OUT----tx的txratedone状态信号,由GT输出给SDI2.
GT1_TXRESETDONE_OUT----tx的txresetdone状态信号,由GT输出给SDI2.

+++++++++++++++++++++++++++++++++++++++++
来看看k7gtx_sdi_wrapper模块的具体实现。
其中的4个GT,是例化了k7gtx_sdi_wrapper_GT模块来实现的。
其中的COMMON,是例化了GTXE2_COMMON原语来实现的。

GTXE2_COMMON原语的例化实例,
主要是将输入的mgtclk_148_5倍频10倍,作为QPLL的qplloutclk输出。
然后是将mgtclk_148_5经过mux后,作为QPLL的qplloutrefclk输出。

来看看GT的具体实现。
k7gtx_sdi_wrapper_GT模块。
例化了一个GTXE2_CHANNEL原语。
QPLLCLK----输入的QPLLCLK高速时钟,作为PISO的工作时钟Q,
QPLLREFCLK----输入的QPLLREFCLK时钟,作为GT的输入QREF。
GTREFCLK0----输入的CPLLREFCLK时钟,作为GT的输入CREF。
CPLLLOCKDETCLK----输入的CPLL的lockdetect的时钟,作为GT的工作时钟。

GTXRXN----GT的接收串行信号,
GTXRXP----GT的接收串行信号,

RXDATA----GT接收的数据,
RXCHARISK----GT接收的数据,
RXDISPERR----GT接收的数据,

assign rxdata_out_i = {rxdisperr_i[1],rxcharisk_i[1],rxdata_i[15:8],rxdisperr_i[0],rxcharisk_i[0],rxdata_i[7:0]};

RXCDR_CFG----rx的CDR的配置参数,这里参数是72’h03000023ff40080020,即,使用CPLL或者QPLL,在LPM或者DFE模式,速率在1.56G以下,RXOUT_DIV设置为8,REFCLK频偏在200ppm。

RXOUTCLKSEL----rx的rxoutclk的选择控制信号,这里控制码是3’b010,即,选择的是rxoutclkpma。由PMA时钟作为基准时钟。

RXSYSCLKSEL----rx的sysclk的选择控制信号,这里控制码是2’b11,即,选择的是Q和QREF。

TXSYSCLKSEL----tx的sysclk的选择控制信号,这里是由SDI2输出给GT的。TXSYSCLKSEL[0]用来选择QPLLCLK还是CPLLCLK,为1则为Q,为0则为C。

TXCHARDISPMODE----GT要发送的数据,
TXCHARDISPVAL----GT要发送的数据,
TXDATA----GT要发送的数据,

	input   [19:0]  TXDATA_IN,assign txdata_in_i =   TXDATA_IN;assign txchardispmode_i = {tied_to_ground_vec_i[5:0],txdata_in_i[19],txdata_in_i[9]};assign txchardispval_i  = {tied_to_ground_vec_i[5:0],txdata_in_i[18],txdata_in_i[8]};assign txdata_i         = {tied_to_ground_vec_i[47:0],txdata_in_i[17:10],txdata_in_i[7:0]};

TXOUTCLKSEL----tx的txoutclk的选择控制信号,这里控制码是3’b010,即,选择的是txoutclkpma。由PMA时钟作为基准时钟。

GTXTXN----GT的发送串行信号,
GTXTXP----GT的发送串行信号,

TXDIFFCTRL-----tx的txdiffctrl控制信号,由上层模块提供控制码。这里使用的是4’b1011。
++++++++++++++++++++++++++++++
补充,RX CDR
The GTXE2_CHANNEL/GTHE2_CHANNEL transceiver employs phase rotator CDR
architecture.
The CDR state machine uses the data from both the edge and data samplers to determine
the phase of the incoming data stream and to control the phase interpolators (PIs).
The CPLL or QPLL provides a base clock to the phase interpolator.
The CDR state machine can track incoming data streams that can
have a frequency offset from the local PLL reference clock.


http://www.ppmy.cn/news/452377.html

相关文章

驱动——K7-DMA-PCIe

在做Windows系统PCIe驱动时,遇到的一些硬件驱动有关的问题总结一下: 一、K7 K7处理器:信号采集卡 K7系列CPU是AMD公司推出的高性价比CPU。 结构 3个并行的X86指令解码器;9个为高频率优化的超标量微结构;动态推测时…

C6678+K7+AD9253/AD9783 8路AD高速信号处理板

C6678K7AD9253/AD9783 8路信号处理板介绍 功耗≤35W 重量≤150g 尺寸105mm*180mm 供电电压:5V 所选用器件都是进口工业级 A /D: 2片AD9253(125MHz采样,共8路同轴电缆SSMA) (与AD9653兼容,16bits&#x…

XILINX FPGA K7配置启动流程(官方手册整理)

1.在配置过程中,7系芯片需要的电压有,Vcco0,Vccaux,Vccbram和Vccint。 所有的Jtag配置引脚在一个独立的专用bank上,使用的电源也是专用电源Vcco0。多功能pin在14和15bank。bank0,14和15上的专用输入输出引脚…

K7 IDELAY2 仿真实验

FPGA类型 xilinx K7 仿真记录 模块例化 IDELAYE2 #(.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE).DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN).HIGH_PERFORMANCE_MODE("FALSE"…

Flink状态编程:为什么不建议在ValueState里面存Map?

文章目录 先说结论性能:TTL: State需要存什么数据Heap 模式 ValueState 和 MapState 如何存储StateBackend模式 如何存储和读写State 数据1. RocksDB 模式 ValueState 和 MapState 如何存储1.1 ValueState如何映射为RocksDB的kv1.2 MapState如何映射为Ro…

【WebPack】前端工程化

文章目录 前端工程化一、前端工程化概念二、前端工程化优点三、前端工程化解决方案四、webpack 的基本使用4.1 什么是 webpack4.2 创建列表隔行变色项目4.3 安装 webpack4.4 配置 webpack4.5 自定义 打包入口与出口 五、webpack 的插件使用5.1 webpack 常见插件5.2 webpack-dev…

2023年护网常见面试题汇总!看过的都通过面试啦!

​时间过得很快,回想起去年的这个时候,我也正在准备秋招,今天的我刚刚结束培训。 我的个人情况就读于某双非大学,信息与计算科学(大数据方向,校企合作,一个介于数学与计算机之间的专业&#xf…

LLM系列 | 09: 基于ChatGPT构建智能客服系统(query分类安全审核防注入)

简介 竹斋眠听雨,梦里长青苔。门寂山相对,身闲鸟不猜。小伙伴们好,我是卖热干面的小女孩。紧接前面几篇ChatGPT Prompt工程系列文章: 04:ChatGPT Prompt编写指南05:如何优化ChatGPT Prompt?06:ChatGPT Prompt实践&am…