首页 > 其他分享 >Xilinx GTH高速收发器顺藤摸瓜篇(十一)

Xilinx GTH高速收发器顺藤摸瓜篇(十一)

时间:2025-01-12 18:58:17浏览次数:3  
标签:分频器 GTH RX 眼图 收发器 CDR Xilinx 2.2 时钟

目录

1 内容简介

2 Receiver

2.1 RX时钟恢复

2.1.1 功能描述

2.1.2 端口和属性

2.1.3 RX时钟锁定至参考

2.1.4 SATA 的 CDR 配置和速率变化重置序列 

2.2 RX结构时钟输出控制

2.2.1 功能描述

2.2.2 串行时钟分频器①

2.2.3 并行时钟分频器和选择器②

2.2.4 RX可编程分频器③

2.2.5 端口和描述

2.3 RX边界分析

2.3.1 功能描述

2.3.2 眼图扫描理论

2.3.3 眼图扫描结构

2.3.4 端口和属性

3 结束语


1 内容简介

        本章主要介绍GTH IP核接收端(Receiver)的功能部分,包括GT的RX时钟恢复(RX CDR),RX结构时钟输出控制(RX Fabric Clock Output Control)和RX边界分析(RX Margin Analysis,Let's go!

Receiver 目录描述
1.RX CDRRX时钟恢复
2.RX Fabric Clock Output ControlRX结构时钟输出控制
3.RX Margin AnalysisRX边界分析

2 Receiver

2.1 RX时钟恢复

2.1.1 功能描述

        每个 GTHE3/4_CHANNEL 收发器中的 RX 时钟数据恢复 (CDR) 电路从传入数据流中提取恢复的时钟和数据。图2.1说明了 CDR 模块的架构。为清晰起见,时钟路径以虚线显示。

图2.1

        GTHE3/4_CHANNEL 收发器采用相位旋转器 CDR (phase rotator CDR )架构。传入数据首先经过接收器均衡阶段。均衡后的数据由边缘和数据采样器捕获。数据采样器捕获的数据被馈送到 CDR 状态机和下游收发器块。

        CDR 状态机使用来自边缘和数据采样器的数据来确定传入数据流的相位并控制相位插值器 (PI)。边缘采样器(E)的相位锁定到数据流的过渡区域,而数据采样器(D)的相位位于数据窗口的中间。

        CPLL 或 QPLL 为相位插值器提供基准时钟。相位插值器则产生精细、间隔均匀的采样相位,使 CDR 状态机能够进行精细的相位控制。CDR 状态机可以跟踪可能与本地 PLL 参考时钟存在频率偏移的传入数据流。

2.1.2 端口和属性

         注:端口和属性过多,该部分不再展示,具体可参考UG576 目录Receiver - RX CDR - Ports and Attributes的描述

2.1.3 RX时钟锁定至参考

        要使 CDR 锁定到参考,请设置 RXCDRHOLD = 1'b1 和 RXCDROVRDEN = 1'b0。

2.1.4 SATA 的 CDR 配置和速率变化重置序列 

        SATA 协议要求设备以电气空闲状态进行初始化。在此状态期间,没有数据被驱动到 RX,并且 CDR 可能会拾取 RX 轨道上的噪声。因此,为了防止 CDR 在 RXELECIDLE = 1'b1 时拾取噪声,在此期间应将 RXCDRHOLD 设置为 1'b1。

        SATA 协议还对速率变化期间必须完成的复位持续时间有时序要求。为了满足此要求,需要使用 RXPMARESET 来复位收发器。有关更多详细信息,请参阅图2.2中的时序图 

图2.2

        与上图相关的注意事项:

        1. 在 OOB 序列期间,将 RXCDRHOLD 保持在 1'b1。
        2. 在取消断言 RXCDRHOLD 后,使用 RXPMARESET 进行速率更改。
        3. 在启动 RXPMARESET 后,保持 RXUSRRDY 至少 40 µs。
        4. 在 RXPMARESET 发出收发器已完成重置的信号后,断言 RXRESETDONE。
        上述过程可用于类似方式使用 RXELECIDLE 和 RXOOB 的任何协议。涉及 RXPMARESET 的重置序列也适用于对速率更改有严格时间要求的协议,例如 SAS。

2.2 RX结构时钟输出控制

2.2.1 功能描述

        RX 时钟分频器控制块有两个主要组件:串行时钟分频器控制和并行时钟分频器及选择器控制。时钟分频器和选择器的详细信息如图2.3所示。

图2.3

        与图2.3相关的注意事项:

        1. RXOUTCLKPCS 和 RXOUTCLKFABRIC 是冗余输出。新设计请使用 RXOUTCLK。

        2. 通过 BUFG_GT,RXOUTCLK 用作互连逻辑时钟源。
        3. GTHE3/4_CHANNEL 中只有一个 CPLL。如果适用,也可使用来自 GTHE3/4_COMMON 的 QPLL。
        4. /4 或 /5 分频器块的选择由来自 GTHE3/4_CHANNEL 原语的 RX_DATA_WIDTH 属性控制。当 RX_DATA_WIDTH = 16、32 或 64 时,选择 /4。当 RX_DATA_WIDTH = 20、40 或 80 时,选择 /5。
        5. /2 或 /4 分频器块的选择由来自 GTHE3/4_CHANNEL 原语的 RX_INT_DATAWIDTH 属性控制。当 RX_INT_DATAWIDTH = 0(2 字节内部数据路径)时选择 /2,当 RX_INT_DATAWIDTH = 1(4 字节内部数据路径)时选择 /4。
        6. 有关布局约束和时钟资源限制(IBUFDS_GTE3/4、BUFG_GT、BUFG_GT_SYNC 等)的详细信息,请参阅《UltraScale 架构时钟资源用户指南》(UG572)。
        7. IBUFDS_GTE3/4 的时钟输出应仅在 GTPOWERGOOD 置为高电平后延迟 250 µs 后使用。对于 UltraScale+ FPGA,向导版本 1.7 或更高版本会自动门控 GTPOWERGOOD 以满足此要求

        以下为个人理解,仅供参考:

       注意:首先上面是以GTHE3/4_CHANNEL作为主体来分析的

         ①参考时钟选择,MGT REFCLK[0/1]P/N是外来的两个差分参考时钟,通过IBUFDS_GTE3/4处理后方能给到IP使用,REFCLK_HROW_CK_SEL用于选择ODIV2的输出与时钟O的关系,REFCLK Distribution用于选择多个参考时钟源,包括但不限于本地和南北路由的,RXSYSCLKSEL选择PLL参考时钟源来驱动RXOUTCLK

        ②RXPLLCLKSEL用来选择时钟来驱动RX路径,参考下图

        ③通过BUFG_GT可用作内部的时钟源

        ④根据GT的配置生成对应的时钟频率,完成时钟恢复和串转并的功能等

        ⑤选择互连逻辑的时钟源,可以是GTH 收发器之一的 RXOUTCLK,也可以是 MGTREFCLK 直接带到互连逻辑并用作互连逻辑时钟。

2.2.2 串行时钟分频器①

        每个发射器 PMA 模块都有一个 D 分频器,可将来自 PLL 的时钟分频以支持较低的线速。此串行时钟分频器 D 可以静态设置以用于具有固定线速的应用,也可以动态更改以用于具有多种线速的协议。串行分频器的控制如表2.1所示。有关每个速度等级的线速范围的详细信息,请参阅数据表。
        要在固定线速应用中使用 D 分频器,必须将 RXOUT_DIV 属性设置为适当的值,并且需要将 RXRATE 端口绑定到 3'b000。有关详细信息,请参阅表2.1中的通过属性进行静态设置列。
        要在多种线速应用中使用 D 分频器,可使用 RXRATE 端口动态选择 D 分频器值。在设备配置时,RXOUT_DIV 属性和 RXRATE 端口必须选择相同的 D 分频器值。在设备配置后,可使用 RXRATE 动态更改 D 分频器值。

表2.1

2.2.3 并行时钟分频器和选择器②

        根据线路速率和协议要求,RX 时钟分频器控制块的并行时钟输出可用作互连逻辑时钟。
        互连逻辑的推荐时钟是来自 GTH 收发器之一的 RXOUTCLK。也可以将 MGTREFCLK 直接带到互连逻辑并用作互连逻辑时钟。RXOUTCLK 是一般应用的首选,因为它具有输出延迟控制,可用于绕过 RX 缓冲区以实现恒定数据路径延迟的应用。有关更多详细信息,请参阅 RX 缓冲区旁路。
        RXOUTCLKSEL 端口控制输入选择器并允许这些时钟通过 RXOUTCLK 端口输出: 

     (1)RXOUTCLKSEL = 3'b001:不建议使用 RXOUTCLKPCS 路径,因为它会产生来自 PCS 块的额外延迟。
     (2)RXOUTCLKSEL = 3'b010:RXOUTCLKPMA 是可带出到互连逻辑的恢复时钟。恢复时钟由没有时钟补偿机制且需要使用与数据同步的时钟(恢复时钟)的协议使用,以对下游互连逻辑进行计时。它也由 RX PCS 模块使用。当 PLL 或 CDR 被相关复位信号之一复位时,此时钟会中断。
     (3) RXOUTCLKSEL = 3'b011 或 3'b100:RXPLLREFCLK_DIV1 或 RXPLLREFCLK_DIV2 是 CPLL 或 QPLL 的输入参考时钟,具体取决于 RXSYSCLKSEL 设置。对于不需要将恢复时钟输出到互连逻辑的用途,RXPLLREFCLK_DIV1 或 RXPLLREFCLK_DIV2 可用作系统时钟。但是,RXOUTCLK 通常用作系统时钟。

2.2.4 RX可编程分频器③

        图2.3所示的 RX 可编程分频器使用来自 CDR 的恢复时钟生成并行输出时钟。通过使用恢复时钟、RX 可编程分频器和 BUFG_GT,RXOUTCLK(RXOUTCLKSEL = 101)可用作互连逻辑的时钟源,而无需消耗互连逻辑 PLL 或 MMCM。可编程分频器的输出时钟也可输出到收发器参考配置为输出的时钟引脚。支持的分频器值为 4、5、8、10、16、16.5、20、32、33、40、64、66、80 和 100。表2.2显示了可编程分频器端口和属性。

2.2.5 端口和描述

        注:端口和属性过多,该部分不再展示,具体可参考UG576 目录Receiver - RX Fabric Clock Output Control - Ports and Attributes的描述

        收发器具有一个内部 25 MHz 时钟,该时钟源自 [TX/RX]_CLK25_DIV 设置的参考时钟。25 MHz 时钟用作各种收发器操作(如复位、电源管理、速率更改、OOB 和信标)的同步器和计时器。设置 [TX/RX]_CLK25_DIV 以达到 25 MHz 或尽可能接近 25 MHz。对于 SATA OOB,此内部时钟必须是 25 MHz。

2.3 RX边界分析

2.3.1 功能描述

        随着线路速率和信道衰减的增加,接收器均衡器更经常被启用以克服信道衰减。这对系统启动提出了挑战,因为无法通过测量接收器引脚处的远端眼图开度来确定链路的质量。在高线路速率下,即使接收器均衡器后的内部眼图是打开的,在印刷电路板上测量的接收眼图也可能看起来完全闭合。

        GTH 收发器 RX 眼图扫描提供了一种机制,用于测量和可视化均衡器后的接收器眼图余量。附加使用模式支持多种其他方法来确定和诊断均衡设置的影响。

图2.4

2.3.2 眼图扫描理论

        RXDATA 是由 RX 均衡器之后采样,从均衡后的差分波形中恢复出来的,水平采样位置由 CDR 功能决定,垂直位置为差分零点。为了实现眼图扫描功能,提供了一个附加采样器,其具有可编程(水平和垂直)的数据采样点偏移量。

        一个眼图扫描测量包括累计数据样本数量(样本计数)和偏移样本与数据样本不一致的次数(错误计数)。编程的垂直和水平偏移处的误码率 (BER) 是错误计数与样本计数的比率。样本计数的范围可以从数万到大于 10^14。

        对整个水平和垂直偏移阵列(或一组子采样的偏移)重复此类 BER 测量,将生成如图2.4 所示的 BER 图,通常称为统计眼图,其中颜色图表示 log10(BER)。在此视图中,眼图显然比传统示波器视图2.4小,因为它已被非常低概率的抖动和噪声所遮挡,而这些抖动和噪声不会出现在示波器的低得多的样本数中.

        由于此功能对接收的数据模式没有任何限制,也不需要对 RX 设置进行任何更改,因此可以在接收应用程序数据时执行此功能而不会出错。此外,不需要互连逻辑 - 只需要读取和写入属性的能力。

2.3.3 眼图扫描结构

        图2.5中灰色阴影块描述了 PMA 架构中支持眼图扫描的部分。水平偏移 (HORZ_OFFSET) 提前或延迟偏移样本相对于数据样本的采样时间。垂直偏移 (VERT_OFFSET) 提高或降低与均衡波形进行比较的差分电压阈值。数据样本被反序列化到 Rdata 总线中,偏移样本被反序列化到 Sdata 总线中

图2.5

        当处于 DFE 模式 (RXLPMEN=0) 时,由于展开了第一个 DFE 抽头,需要进行两次单独的眼图扫描测量,一次在 +UT,一次在 –UT,以测量给定垂直和水平偏移下的总 BER。
        图2.6描述了支持眼图扫描的 PCS 架构部分。40 位 Rdata 总线包含数据样本,并且当且仅当相应的数据样本和偏移样本不相等时,40 位 Sdata 总线的每一位都是 1。(请参阅第 229 页表 4-20 中的 ES_ERRDET_EN。)

图2.6

       两个连续周期的 Sdata 被 ES_SDATA_MASK[79:0] 屏蔽(即逐位 Sdata[i] AND NOT mask[i])。此结果的位 [39:0] 的代数和是要添加到错误计数器中的错误数。

        将两个连续周期的 Rdata 与 ES_QUALIFIER[79:0] 中的模式进行比较,并将结果通过 ES_QUAL_MASK[79:0] 进行屏蔽(即逐位或运算)。此结果的逻辑与决定预分频器/采样计数器是否递增以及错误是否添加到错误计数器。对于统计眼图,ES_QUAL_MASK 为 80 个 1,因此采样计数器和错误计数器在每个周期都会累积。ES_SDATA_MASK 仅取消屏蔽当前数据(位 39 及以下;参见 RX_INT_DATAWIDTH 的描述),以避免重复计数错误,因为它们首先出现在低 40 位,然后在下一个周期出现在高 40 位

        替代使用模式通过取消屏蔽一系列 Rdata 位(最多 40 位)来产生类似示波器的显示,只有当 Rdata 与该位范围内的 ES_QUALIFIER 匹配时,才会产生错误和样本累积。在这些使用模式下,每次测量只有一个 Sdata 位被取消屏蔽。在诊断使用模式下,Rdata 和 Sdata 被冻结,可以在以下情况下通过 DRP 接口读出:

        (1)发生错误

        (2)发生计数限定符

        (3)互连逻辑端口导致触发

        (4)通过属性写入强制触发

        例如,可以使用诊断使用模式来检查由于 DFE 行为导致的突发错误模式。

图2.7

        ES_CONTROL[1:0] 分别是 arm 和 run 信号。从 WAIT 状态开始,run 启动 BER 测量循环(左),arm 启动诊断循环(右)。

        RESET 状态将错误和样本计数器归零,然后进入 COUNT 状态或 ARMED 状态(取决于运行或 arm 是否处于活动状态)。
        在 COUNT 状态下,样本和错误在计数器中累积。当任一计数器饱和时,两个计数器都会停止并转换到 END 状态。通过轮询 es_control_status[3:0] 可以检测到这种到 END 状态的转换。位 0(完成)仅在 END、READ 和 WAIT 状态下设置为活动状态。位 [3:1] 显示状态机的当前状态。
        当运行被重新设置为零时,END 状态转换到 WAIT 状态。es_sample_count[15:0] 和 es_error_count[15:0] 可以在 END 或 WAIT 状态下读取。
        在 ARMED 状态下,当发生触发事件时,FIFO(Rdata 和 Sdata 的连续循环)会停止。触发事件可以是计数限定符脉冲、所有位进入错误计数器的逻辑或,也可以是 DRP 数据输入或端口提供的手动触发。这四个选项之一由 trig[3:0] = ES_CONTROL[5:2] 选择。
        在 READ 状态下,可以从 DRP 只读寄存器 es_rdata[79:0] 读取 Rdata 的最后两个周期,也可以从 DRP 只读寄存器 es_sdata[79:0] 读取 Sdata 的最后两个周期。

2.3.4 端口和属性

注:端口和属性过多,该部分不再展示,具体可参考UG576 目录Receiver - RX Margin Analysis - Ports and Attributes的描述

3 结束语

        本章主要介绍GTH IP核接收端(Receiver)的RX时钟恢复(RX CDR),RX结构时钟输出控制(RX Fabric Clock Output Control)和RX边界分析(RX Margin Analysis),下一期更新内容为GT的RX Polarity Control,RX Pattern Checker,RX Byte and Word Alignment和RX 8B/10B Decoder。

        大家如果发现有问题的地方欢迎批评指证,畅所欲言地交流。如果觉得本期内容对您有用,希望获得您的点赞,收藏和关注,感谢各位。

标签:分频器,GTH,RX,眼图,收发器,CDR,Xilinx,2.2,时钟
From: https://blog.csdn.net/qq_44631312/article/details/145079830

相关文章

  • xilinx_petalinux-踩坑报错处理总结
    报错libtinfo.so.5isrequiredbymeta-xilinx-tools.Thislibrarymustbeinstalledbeforethebuildsystemcanusexsct.Itisoftenpartofanncurses5package.解决:把libtinfo.so.X链接到libtinfo.so.5sudoln-s/lib/x86_64-linux-gnu/libtinfo.so.6.4/li......
  • FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )
    以Xilinx公司Virtex-II系列FPGA为例,其基本结构由下图所示。它是主要由两大部分组成:可编程输入/输出(ProgrammableI/Os)部分和内部可配置(ConfigurableLogic)部分。可编程输入/输出(I/Os)部分主要提供芯片与外界电路的交互接口,完成不同电气特性下对输入输出信号驱动与匹配的要......
  • MifareClassic.getMaxTransceiveLength
    MifareClassic.getMaxTransceiveLength(Objectobject)基础库2.11.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持微信iOS版:不支持微信Android版:支持相关文档:近场通信(NFC)功能描述获取最大传输长度参数Objectobject属性......
  • SQLSER中使用DATALENGTH 函数返回字符串的字节长度
    DATALENGTH函数返回字符串的字节长度,这对于varchar类型的字段非常有用,因为varchar类型的字段存储的是变长字符串,其实际占用的字节数可能小于定义的最大长度。示例假设有一个表Articles,其中有一个varchar类型的字段Content,你想查询每篇文章内容的实际占用字节数,可以使用......
  • Xilinx GTH高速收发器顺藤摸瓜篇(十)
    目录1内容简介2Receiver2.1RX概述2.2RX模拟前端2.2.1功能描述2.2.2端口和属性2.2.3GTH使用模型-RX终端2.3RX带外信号2.3.1功能描述2.3.2端口和属性2.3.3GTH使用模型2.3.4 OOB和电气空闲使用模式2.4RX均衡器2.4.1功能描述2.4.2端口和属性2.4.3......
  • 论文阅读:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
    Transformer可以接收一整段序列,然后使用self-attention机制来学习它们之间的依赖关系,但其在语言建模时受到固定长度上下文的限制(固定长度的输入、绝对位置编码的限制、注意力机制的计算复杂度)。Transformer-XL以此为基础,引入一个片段级递归机制和一种新的位置编码方案,从而可以在......
  • 006---Xilinx Vivado DDR3 (一)---MIG IP核生成与配置
    文章目录摘要一、简要说明二、MIGIP的配置1.PinCompatibleFPGAsBar2.MemorySelectionBar3.MemorySelectionBar4.AXIParameterBar4.MemoryOptionsBar5.FPGAOptionsBar6.ExtendedFPGAOptionBar7.IOPlanningOptionBar8.PinSelectionBar9.SystemSigna......
  • 数组[1,2,3,4,5]有5个元素,直接给它的length属性赋值结果会怎么样?
    在JavaScript中,如果你尝试改变一个数组的length属性,这将会影响数组的大小和内容。具体来说,如果你减小数组的length,那么数组将被截断,超出新长度的元素将被删除。相反,如果你增加数组的length,那么新的元素位置将被创建,但这些新位置的值将是undefined。例如,对于数组[1,2,3,4,5],如果我......
  • Xilinx GTH高速收发器顺藤摸瓜篇(七)
    目录1内容简介2Transmitter2.1TXBuffer2.1.1功能描述2.1.2端口和属性​编辑2.1.3使用TX缓冲2.1.4 总结归纳2.2TXBuffer旁路2.2.1功能描述2.2.2端口和属性2.2.3TX缓冲旁路使用模式2.2.4在单通道自动模式下使用TX缓冲器旁路2.2.5在单通道手动模......
  • Git之git push报错protocol error: bad line length 8192怎么处理
    故障现象gitpull报错$gitpushCountingobjects:40,done.Deltacompressionusingupto32threads.Compressingobjects:100%(38/38),done.fatal:protocolerror:badlinelength819247.18MiB/sfatal:sha1file'<stdout>'writeerror:Bro......