FPGA - 7系列 FPGA内部结构之SelectIO -07- 高级逻辑资源之ISERDESE2

2023-12-09 05:30

本文主要是介绍FPGA - 7系列 FPGA内部结构之SelectIO -07- 高级逻辑资源之ISERDESE2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本文节选UG471的第三章,进行整理翻译,用于介绍SelectIO资源内部的ISERDESE2资源。输入串并转换器 (ISERDESE2) 和输出并串转换器 (OSERDESE2) 支持非常快的 I/O 数据速率,并允许内部逻辑运行速度降低 8 倍 比 I/O。

输入串并逻辑资源 (ISERDESE2)简介

7 系列 FPGA 中的 ISERDESE2 是专用的串并转换器,具有特定的时钟和逻辑功能,旨在促进高速源同步应用的实施。 ISERDESE2 避免了在 FPGA 架构中设计解串器时遇到的额外时序复杂性。

ISERDESE2 特性包括:

  • 专用解串器/串并转换器

    ISERDESE2 解串器可实现高速数据传输,无需FPGA 架构匹配输入数据频率。 该转换器支持单数据速率 (SDR) 和双数据速率 (DDR) 模式。 在 SDR 模式下,串并转换器创建一个 2 位、3 位、4 位、5 位、6 位、7 位或 8 位宽的并行字。 在 DDR 模式下,串并转换器在使用一个 ISERDESE2 时创建 4、6、8 位宽并行字模式,在使用两个级联 ISERDESE2 时创建 10 位或 14 位宽并行字模式。

  • Bitslip 子模块

    Bitslip 子模块允许设计人员重新排序进入FPGA 架构的并行数据流的序列。 这可用于训练包含训练模式的源同步接口。

  • 专门支持基于选通的内存接口

    ISERDESE2 包含专用电路(包括 OCLK 输入引脚)以完全在 ISERDESE2 模块内处理选通到 FPGA 时钟域交叉。 这允许更高的性能和简化的实现。

  • 专门支持网络接口

  • 专门支持 DDR3 接口

  • 专门支持 QDR 接口

  • 专门支持异步接口

下图显示了 ISERDESE2 的框图,突出显示了该模块的所有主要组件和功能,包括可选的逆变器。

image-20220618215033776

ISERDESE2 原语 (ISERDESE2)

7 系列器件中的 ISERDESE2 原语结构图如下图所示。

image-20220618215154926

下表列出了 ISERDESE2 原语中的可用端口。

Port NameTypeWidthDescription
Q1 – Q8Output1 (each)寄存的输出。
OOutput1组合输出。
SHIFTOUT1Output1进行数据宽度扩展。 连接到从 IOB 的 SHIFTIN1。
SHIFTOUT2Output1进行数据宽度扩展。 连接到从 IOB 的 SHIFTIN2。
DInput1来自 IOB 的串行输入数据。
DDLYInput1来自 IDELAYE2 的串行输入数据。
CLKInput1高速时钟输入。 时钟串行输入数据流。
CLKBInput1第二高速时钟输入仅适用于 MEMORY_QDR 模式。 除非在 MEMORY_QDR 模式下,否则始终连接到反相 CLK。
CE1, CE2Input1 (each)时钟使能输入。
RSTInput1高电平有效复位。
CLKDIVInput1分频时钟输入。 时钟延迟元件、反序列化数据、Bitslip 子模块和 CE 单元。
CLKDIVPInput1仅通过 MIG 工具支持。 在 MEMORY_DDR3 模式下由 PHASER_IN 分频 CLK 提供。 所有其他模式都接地。
OCLKInput1用于存储器应用的高速时钟输入。 (此时钟资源与 OSERDESE2 CLK 引脚共享。)
OCLKBInput1反相高速时钟输入。 (此时钟资源与 OSERDESE2 CLKB 引脚共享。)
BITSLIPInput1调用 Bitslip 操作。
SHIFTIN1Input1携带数据宽度扩展的输入。 连接到主 IOB 的 SHIFTOUT1。
SHIFTIN2Input1携带数据宽度扩展的输入。 连接到主 IOB 的 SHIFTOUT2。
OFBInput1来自 OLOGICE2 或 OLOGICE3 和 OSERDESE2 输出的反馈路径。
DYNCLKDIVSELInput1动态选择 CLKDIV 反转。
DYNCLKSELInput1动态选择 CLK 和 CLKB 反转。

ISERDESE2 端口

寄存输出 – Q1 至 Q8

输出端口 Q1 至 Q8 是 ISERDESE2 模块的寄存输出。 一个 ISERDESE2 模块最多可支持 8 位(即 1:8 反序列化)。 仅在 DDR 模式下可以支持大于 8 位(最多 14 位)的位宽。 接收到的第一个数据位出现在最高阶 Q 输出上。
OSERDESE2 输入的位顺序与 ISERDESE2 模块输出的位顺序相反,如下图所示。

image-20220619145725405

例如,字 FEDCBA 的最低有效位 A 放置在 OSERDESE2 的 D1 输入端,但相同的位 A 出现在 Q8 输出端的 ISERDESE2 块中。 换句话说,D1 是 OSERDESE2 的最低有效输入,而 Q8 是 ISERDESE2 模块的最低有效输出。 当使用宽度扩展时,发送器 OSERDESE2 的 D1 是最低有效输入,而接收器 ISERDESE2 模块的 Q8 是最低有效输出。

组合输出 – O

组合输出端口 (O) 是 ISERDESE2 模块的未寄存的输出。此输出可以直接来自数据输入 (D),也可以来自通过 IDELAYE2 的数据输入 (DDLY)。

Bitslip 操作 - BITSLIP

BITSLIP 引脚在断言(高电平有效)时执行与 CLKDIV 同步的 Bitslip 操作。 随后,在 Q1 到 Q8 输出端口上看到的数据将移动,就像在桶形移位器操作中一样,每次调用 Bitslip 时移动一个位置(DDR 操作与 SDR 不同)。

时钟使能输入 - CE1 和 CE2

每个 ISERDESE2 模块都包含一个输入时钟使能模块。

image-20220619150102978

当 NUM_CE = 1 时,不使用 CE2 输入,CE1 输入是直接连接到 ISERDESE2 中的输入寄存器的有效高时钟使能。 当 NUM_CE = 2 时,同时使用 CE1 和 CE2 输入,CE1 启用 ISERDESE2 的 1/2 个 CLKDIV 周期,CE2 启用 ISERDESE2 的另一个 ½。 上图所示的内部时钟使能信号 ICE 来自 CE1 和 CE2 输入。

时钟使能模块用作 2:1 串并转换器,由 CLKDIV 提供时钟。当 ISERDESE2 配置为 DDR 模式下的 1:4 反序列化时,双向存储器接口需要时钟使能模块。 当属性 NUM_CE = 2 时,时钟使能模块使能并且 CE1 和 CE2 端口都可用。 当 NUM_CE = 1 时,只有 CE1 可用并用作常规时钟使能。

高速时钟输入 - CLK

高速时钟输入 (CLK) 用于为输入串行数据流提供时钟。

高速时钟输入 - CLKB

高速辅助时钟输入 (CLKB) 用于为输入串行数据流提供时钟。 在 MEMORY_QDR 以外的任何模式下,将 CLKB 连接到 CLK 的反相版本。 在 MEMORY_QDR 模式下,CLKB 应连接到唯一的相移时钟。

分频时钟输入 - CLKDIV

分频时钟输入 (CLKDIV) 通常是 CLK 的分频版本(取决于实现的解串的宽度)。 它驱动串并转换器、Bitslip 子模块和 CE 模块的输出。

来自 IOB 的串行输入数据 - D

串行输入数据端口 (D) 是 ISERDESE2 的串行(高速)数据输入端口。此端口仅与 7 系列 FPGA IOB 资源配合使用。

IDELAYE2 的串行输入数据 - DDLY

串行输入数据端口 (DDLY) 是 ISERDESE2 的串行(高速)数据输入端口。 此端口仅与 7 系列 FPGA IDELAYE2 资源一起使用。

来自 OSERDESE2 的串行输入数据 - OFB

串行输入数据端口 (OFB) 是 ISERDESE2 的串行(高速)数据输入端口。 此端口仅与 7 系列 FPGA OSERDSE2 端口 OFB 配合使用。

基于选通的存储器接口和过采样模式的高速时钟 - OCLK

OCLK 时钟输入同步基于选通的存储器接口中的数据传输。 OCLK 时钟仅在 INTERFACE_TYPE 设置为 NETWORKING 时不使用。
OCLK 时钟输入可用于将基于选通的存储器数据传输到自由运行的时钟域。 OCLK 是一个自由运行的 FPGA 时钟,其频率与 CLK 输入上的选通脉冲相同。 从 CLK 到 OCLK 的域传输如图 3-5 框图所示。 域传输的时序由用户通过调整选通信号到 CLK 输入的延迟来设置(例如,使用 IDELAY)。 内存接口生成器 (MIG) 中给出了为 MEMORY_DDR3 和 MEMORY_QDR 模式设置此域传输时序的示例。 当 INTERFACE_TYPE 为 NETWORKING 时,此端口未使用。

复位输入 - RST

置位时,复位输入会导致 CLK 和 CLKDIV 域中的大多数数据触发器的输出被异步驱动为低电平。 例外情况是输入结构中的前四个触发器,其复位后的值可通过组件上的属性进行选择。 当与 CLKDIV 同步取消断言时,内部逻辑会将此取消断言重新计时到 CLK 的第一个上升沿。 因此,多位输入结构中的每个 ISERDESE2 都应由相同的复位信号驱动,与 CLKDIV 同步置位和置低,以确保所有 ISERDESE2 元件同步退出复位。 仅当已知 CLK 和 CLKDIV 稳定且存在时,才应取消置位复位信号,并且应至少有两个 CLKDIV 脉冲宽度。 复位无效后,输出在两个 CLKDIV 周期后才有效。

ISERDESE2 属性

下表总结了所有适用的 ISERDESE2 属性, 每个属性的详细说明如下表。

Attribute NameDescriptionValueDefault Value
DATA_RATE允许将传入数据流作为 SDR 或 DDR 数据进行处理。String: SDR or DDRDDR
DATA_WIDTH定义串并转换器的宽度。 合法值取决于 DATA_RATE 属性(SDR 或 DDR)。Integer: 2, 3, 4, 5, 6, 7, 8, 10 or 14.
DATA_RATE = DDR, value is limited to 4, 6, 8, 10, or 14.
DATA_RATE = SDR, value is limited to 2, 3, 4, 5, 6, 7, or 8.
4
DYN_CLKDIV_INV_EN当 TRUE 时启用 DYNCLKDIVSEL 反转,并禁用 CLKDIV 引脚上的 HDL 反转。Boolean: TRUE or FALSEFALSE
DYN_CLK_INV_EN当 TRUE 时启用 DYNCLKSEL 反转并禁用 CLK 和 CLKB 引脚上的 HDL 反转。Boolean: TRUE or FALSEFALSE
INTERFACE_TYPE选择 ISERDESE2 使用模式。String: MEMORY, MEMORY_DDR3, MEMORY_QDR, OVERSAMPLE, or NETWORKINGMEMORY
NUM_CE定义时钟使能的数量。Integer: 1 or 22
OFB_USED启用从 OLOGICE2/3、 OSERDESE2 OFB 引脚到 ISERDESE2 OFB 引脚的路径。 禁用 D 输入引脚。Boolean: TRUE or FALSEFALSE
SERDES_MODE定义使用宽度扩展时 ISERDESE2 模块是主模块还是从模块。String: MASTER or SLAVEMASTER
INIT_Q1设置第一个样本寄存器的初始值。Binary: 0 or 10
INIT_Q2设置第二个样本寄存器的初始值。Binary: 0 or 10
INIT_Q3设置第三个样本寄存器的初始值。Binary: 0 or 10
INIT_Q4设置第四个样本寄存器的初始值。Binary: 0 or 10
SRVAL_Q1设置第一个采样寄存器复位后的值。Binary: 0 or 11
SRVAL_Q2设置第二个采样寄存器复位后的值。Binary: 0 or 11
SRVAL_Q3设置第三个采样寄存器复位后的值。Binary: 0 or 11
SRVAL_Q4设置第四个采样寄存器复位后的值。Binary: 0 or 11
IOBDELAY设置输入延迟是否适用于寄存和/或非寄存输出。NONE, IBUF, IFD, or BOTHNONE

DATA_RATE 属性

DATA_RATE 属性定义传入数据流是作为单数据速率 (SDR) 还是双数据速率 (DDR) 处理。 此属性的允许值为 SDR 和 DDR。 默认值为 DDR。

DATA_WIDTH 属性

DATA_WIDTH 属性定义串并转换器的并行数据输出宽度。 此属性的可能值取决于 INTERFACE_TYPE 和 DATA_RATE 属性。 有关支持的数据宽度,请参见下表。

image-20220619151430728

当 DATA_WIDTH 设置为大于 8 的宽度时,一对 ISERDESE2 必须配置为主从配置。 内存模式下不允许宽度扩展。

INTERFACE_TYPE 属性

INTERFACE_TYPE 属性确定 ISERDESE2 是在内存模式还是网络模式下配置。 此属性的允许值为 MEMORY、MEMORY_DDR3、MEMORY_QDR、OVERSAMPLE 或 NETWORKING。 默认模式是内存。

图 3-5 说明了在 MEMORY 模式下的 ISERDESE2 内部连接。

image-20220619151652899

NUM_CE 属性

NUM_CE 属性定义使用的时钟使能数(CE1 和 CE2)。 可能的值为 1 和 2(默认值 = 2)。

SERDES_MODE 属性

SERDES_MODE 属性定义在使用宽度扩展时 ISERDESE2 模块是主模块还是从模块。 可能的值为 MASTER 和 SLAVE。 默认值为 MASTER。

ISERDESE2 时钟方法

NETWORKING 接口类型

CLK 和 CLKDIV 的相位关系在串并转换过程中很重要。 CLK 和 CLKDIV(理想情况下)在容差范围内相位对齐。FPGA 内有多种时钟安排可帮助设计满足 CLK 和 CLKDIV 的相位关系要求。

CLK 和 CLKDIV 输入必须标称相位对齐。 例如,如果设计人员在 ISERDESE2 输入端将下图中的 CLK 和 CLKDIV 反相,那么尽管时钟安排是允许的 BUFIO/BUFR 配置,但时钟仍会异相。 这也禁止使用 DYNCLKINVSEL 和 DYNCLKDIVINVSEL。

image-20220619152149995

使用网络接口类型的 ISERDESE2 模块唯一有效的时钟安排是:

  • 由 BUFIO 驱动的 CLK,由 BUFR 驱动的 CLKDIV。
  • CLK由MMCM或PLL驱动,CLKDIV由同一个MMCM或PLL的CLKOUT[0:6]驱动。

当使用 MMCM 驱动 ISERDESE2 的 CLK 和 CLKDIV 时,不能混合为 ISERDESE2 提供的缓冲器类型。 例如,如果 CLK 由 BUFG 驱动,则 CLKDIV 也必须由 BUFG 驱动。 或者,MMCM 可以通过 BUFIO 和 BUFR 驱动 ISERDESE2。

存储器接口类型

使用存储器接口类型的 ISERDESE2 模块的唯一有效时钟安排是:

  • 由 BUFIO 驱动的 CLK、由 BUFIO 驱动的 OCLK 和由 BUFR 驱动的 CLKDIV。
  • CLK由MMCM或PLL驱动,OCLK由MMCM或PLL驱动,CLKDIV由同一个MMCM或PLL的CLKOUT[0:6]驱动。
  • BUFG 驱动的 CLK、BUFG 驱动的 OCLK、不同 BUFG 驱动的 CLKDIV。

OCLK 和 CLKDIV 输入必须标称相位对齐。 预计 CLK 和 OCLK 之间没有相位关系。 必须执行校准以实现从 CLK 到 OCLK 域的可靠数据传输。 基于选通的存储器接口和过采样模式的高速时钟 - OCLK 提供了有关在 CLK 和 OCLK 之间传输数据的更多信息。

MEMORY_QDR 接口类型

由于 QDR 内存要求,MEMORY_QDR 模式具有复杂的时钟结构。 仅在使用 MIG 工具时才支持此 INTERFACE_TYPE 属性设置。

OVERSAMPLE 接口类型

OVERSAMPLE 模式用于采集两相 DDR 数据。 图 3-7 显示了 ISERDESE2 的更详细逻辑表示,以及如何在 CLK 和 OCLK 的上升沿和下降沿捕获数据。 如图 3-7 所示,CLK 和 OCLK 之间必须存在 90° 偏移相位关系,因为数据在 CLK 和 OCLK 上都被捕获,但在 CLK 域上从 ISERDESE2 时钟输出。 在这种模式下不使用 CLKDIV。 OVERSAMPLE 接口类型的唯一有效时钟安排是:

  • CLK 和 CLKB 由 BUFIO 驱动。 OCLK 和 OCLKB 由相移 90° 的 BUFIO 驱动。 两个 BUFIO 由单个 MMCM 驱动。
  • CLK 和CLKB 由BUFG 驱动。 OCLK 和 OCLKB 由相移 90° 的 BUFG 驱动。 BUFG 由单个 MMCM 驱动。 在任何一种情况下,有效时钟为:
    • CLK:0°
    • OCLK:90°
    • CLKB:180°
    • OCLKB:270°

image-20220619153136763

MEMORY_DDR3 接口类型

由于DDR3 内存要求,MEMORY_DDR3 模式具有复杂的时钟结构。 仅在使用 MIG 工具时才支持此 INTERFACE_TYPE 属性设置。

ISERDESE2 宽度扩展

两个 ISERDESE2 模块可用于构建大于 1:8 的串并转换器。在每个 I/O 块中都有两个 ISERDESE2 模块; 一主一从。 通过将主 ISERDESE2 的 SHIFTOUT 端口连接到从 ISERDESE2 的 SHIFTIN 端口,串行到并行转换器可以扩展到高达 1:10 和 1:14(仅限 DDR 模式)。

下图显示了使用主从 ISERDESE2 模块的级联 DDR 串并转换器的框图。 在 1:10 SERDES 的情况下,从端口 Q3-Q4 用于并行接口的最后两位。对于差分输入,主 ISERDESE2 必须位于差分输入对的正极(_P 引脚)侧。 当输入不是差分时,与从 ISERDESE2 关联的输入缓冲器不可用,因此不能使用级联。

image-20220619153359237

扩展串并转换器位宽的指南

  1. 两个 ISERDESE2 模块必须是相邻的主从对。 两个 ISERDESE2 模块都必须处于 NETWORKING 模式,因为宽度扩展在 MEMORY 模式下不可用。

  2. 将主 ISERDESE2 的 SERDES_MODE 属性设置为 MASTER,从属 ISERDESE2 设置为 SLAVE。

  3. 用户必须将 SLAVE 的 SHIFTIN 端口连接到 MASTER 的 SHIFTOUT 端口。

  4. SLAVE 使用端口 Q3 到 Q8 作为输出。

  5. DATA_WIDTH 适用于上图中的 MASTER 和 SLAVE。

ISERDESE2 延迟

当 ISERDESE2 接口类型为 MEMORY 时,通过 OCLK 阶段的延迟为一个 CLKDIV 周期。 然而,通过 ISERDESE2 的总延迟取决于 CLK 和 OCLK 时钟输入之间的相位关系。 当 ISERDESE2 接口类型为 NETWORKING 时,延迟为两个 CLKDIV 周期。

网络模式下额外的 CLKDIV 延迟周期(与内存模式相比)是由于 Bitslip 子模块。MEMORY_QDR 和 MEMORY_DDR3 中的延迟是两个 CLKDIV 周期。

动态时钟反转

动态时钟反转引脚 DYNCLKSEL 和 DYNCLKDIVSEL 分别与 DYN_CLK_SEL_EN 和 DYN_CLKDIV_SEL_EN 一起使用时,可以使用户动态切换各自时钟源的极性。 此操作导致进入 ISERDESE2 的时钟异步切换,并可能导致 ISERDESE2 产生错误数据,直到 ISERDESE2 复位。 此操作只能在 MEMORY_QDR 和 MEMORY_DDR3 模式下支持。

ISERDESE2 来自 OSERDESE2 的反馈

ISERDESE2 和 OSERDESE2 中的 OFB 端口可用于将 OSERDESE2 上传输的数据反馈回 ISERDESE2(图 3-9)。 当属性 OFB_USED = TRUE 时启用此功能。 OSERDESE2 和 ISERDESE2 必须具有相同的 DATA_RATE 和 DATA_WIDTH 设置,以便反馈提供正确的数据。 仅在宽度扩展模式下使用 ISERDESE2 和 OSERDESE2 时,将主 OSERDESE2 连接到主 ISERDESE2。

通过使用 ISERDESE2 作为反馈端口,它不能用作外部数据的输入。

image-20220619153940100

在 ISERDESE2 中使用 D 和 DDLY

D 和 DDLY 引脚是 ISERDESE2 的专用输入。D 输入直接连接到 IOB。 DDLY 引脚直接连接到 IDELAYE2。 这允许用户对已寄存的(Q1-Q8) 或组合路径 (O) 输出的输入具有延迟或非延迟版本。属性 IOBDELAY 确定应用于 ISERDESE2 的输入。

下表显示了 D 和 DDLY 都连接时 IOBDELAY 值的每次设置结果。当 D 和 DDLY 都连接到 ISERDESE2 时,关联 IOBDELAY 块上的 IOBDELAY 属性值。

IOBDELAY ValueCombinatorial Output (O)Registered Output (Q1-Q8)
NONEDD
IBUFDDLYD
IFDDDDLY
BOTHDDLYDDLY

ISERDESE2 时序模型和参数

下表描述了 7 系列 FPGA 数据手册中 ISERDESE2 开关特性的功能和控制信号。

image-20220619154252550

时序特性

下图显示了 ISERDESE2 输入数据到 ISERDESE2 的时序图。

不同模式 (SDR/DDR) 的时序参数名称会有所不同。 但是,当总线输入宽度不同时,名称不会改变,包括当两个 ISERDESE2 级联在一起形成 10 位或 14 位时。 在 DDR 模式下,数据输入 (D) 在每个 CLK 边沿(上升和下降)切换。

image-20220619154358182

时钟事件 1

在时间 TISCCK_CE,在时钟事件 1 之前,时钟使能信号变为有效高电平并且 ISERDESE2 可以采样数据。

时钟事件 2

在时间 TISDCK_D,在时钟事件 2 之前,输入数据引脚 (D) 变为有效并在下一个时钟正沿采样。

ISERDESE2 VHDL 和 Verilog 实例化模板在所有原语和子模块的库指南中都可用。

BITSLIP 子模块

7 系列设备中的所有 ISERDESE2 块都包含一个 Bitslip 子模块。 该子模块用于源同步网络类型应用程序中的字对齐目的。Bitslip 对 ISERDESE2 模块中的并行数据重新排序,允许将解串器接收到的重复串行模式的每个组合呈现给 FPGA 架构。这种重复的串行模式通常称为训练模式(许多网络和电信标准都支持训练模式)。 在某些接口中,这可能是一个慢速转发时钟,可以认为是重复位模式。

Bitslip 操作

通过置位 ISERDESE2 模块的 Bitslip 引脚,传入的串行数据流在并行端重新排序。 重复此操作,直到在 ISERDESE2 输出中看到所需的训练模式。 下图中的表格说明了 SDR 和 DDR 模式下 Bitslip 操作的效果。 (输入 ISERDESE2 的第 8 位是接收到的第一位。)出于说明目的,数据宽度为 8。 Bitslip 操作与 CLKDIV 同步。 在 SDR 模式下,每个 Bitslip 操作都会使输出模式左移一位。 在 DDR 模式下,每个 Bitslip 操作都会导致输出模式右移一位,左移三位。 在此示例中,在第八次 Bitslip 操作中,输出模式恢复为初始模式。 这假设串行数据是八位重复模式。

尽管重复模式似乎表明位滑是桶形移位操作,但事实并非如此。 位滑操作将一位添加到输入数据流并丢失输入数据流中的第 n 位。 这导致对重复模式的操作看起来像桶式移位器操作。

image-20220619154805401

Bitslip 子模块使用指南

在 NETWORKING 模式下,Bitslip 子模块可用。 在所有其他模式下,该模块不可用。

要调用 Bitslip 操作,BITSLIP 端口必须在一个 CLKDIV 周期内置为高电平。

Bitslip 不能在两个连续的 CLKDIV 周期内被断言;Bitslip 必须在两个 Bitslip 断言之间至少一个 CLKDIV 周期内解除断言。

在 SDR 和 DDR 模式下,从 ISERDESE2 捕获断言的位滑输入到“位滑” ISERDESE2 输出 Q1-Q8 被 CLKDIV 采样到 FPGA 逻辑时的总延迟为两个 CLKDIV 周期。 从应用的角度来看,一个 Bitslip 命令必须仅针对一个 CLKDIV 周期发出。 在分析接收到的数据码型并可能发出另一个 Bitslip 命令之前,用户逻辑应在 SDR 模式下等待至少两个 CLKDIV 周期或在 DDR 模式下等待三个 CLKDIV 周期。 如果 ISERDESE2 复位,Bitslip 逻辑也会复位并返回到其初始状态。

Bitslip 时序模型和参数

下面讨论与 1:4 DDR 配置中的 Bitslip 控制器相关的时序模型。

数据 (D) 是重复的 4 位训练模式 ABCD。 ABCD 可以四种可能的方式出现在 ISERDESE2 的并行输出 Q1-Q4 上:ABCD、BCDA、CDAB 和 DABC。 并行字的这四个对齐中只有一个对从 ISERDESE2 的 Q1-Q4 输出读取数据的用户下游逻辑有意义。 在这种情况下,假定 ABCD 是有意义的单词对齐方式。 断言 Bitslip 允许用户查看输入数据的所有可能配置,然后选择所需的对齐方式 (ABCD)。 下图显示了 Bitslip 操作的时序以及 ISERDESE2 并行输出 Q1-Q4 的相应重新对齐。

image-20220619155006176

时钟事件 1

整个第一个字 CDAB 已被采样到 ISERDESE2 的输入侧寄存器。 Bitslip 引脚未置位; 该词通过 ISERDESE2 传播,无需任何重新对齐。

时钟事件 2

Bitslip 引脚被置位,这导致 Bitslip 控制器在内部将所有位向右移动一位。 Bitslip 在一个(仅一个)CLKDIV 周期内保持高电平。

时钟事件 3

时钟事件 3 置位 Bitslip 后三个 CLKDIV 周期,Bitslip 操作完成,新的移位数据在输出上作为 BCDA 可用。

时钟事件 3 之后

当 ISERDESE2 配置为 1:4 时,Bitslip 最多可以有效地断言两次。 在第二个班次之后(这个 DDR 剩下三个位置),(必需的)输出 ABCD 在 Q4-Q1 可用。 在第三次移位(右一个位置)之后,输出 DABC 在 Q4-Q1 可用。 在第四次移位后(左三个位置),原始输出 CDAB 在 Q4-Q1 可用,并且 Bitslip 已完成所有四个输入的循环。

reference

  1. UG471

这篇关于FPGA - 7系列 FPGA内部结构之SelectIO -07- 高级逻辑资源之ISERDESE2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472622

相关文章

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(