前言
本文节选UG471的第三章,进行整理翻译,用于介绍高级SelectIO逻辑资源内部的OSERDESE2资源。
输出并串逻辑资源 (OSERDESE2)简介
7 系列器件中的 OSERDESE2 是专用的并串转换器,具有特定的时钟和逻辑资源,旨在促进高速源同步接口的实现。 每个 OSERDESE2 模块都包含一个用于数据和三态控制的专用串行器。 数据和三态串行器都可以配置为 SDR 和 DDR 模式。 数据序列化可高达 8:1(如果使用 OSERDESE2 宽度扩展,则为 10:1 和 14:1)。 三态序列化可高达 14:1。 有一个专用的 DDR3 模式来支持高速内存应用。
下图显示了 OSERDESE2 的框图,突出显示了该块的所有主要组件和特性。
数据并串转换器
一个 OSERDESE2 模块中的数据并串转换器从结构接收 2 到 8 位并行数据(如果使用 OSERDESE2 宽度扩展,则为 14 位),对数据进行串行化,并将其呈现给 IOB 通过 OQ 输出。 并行数据从最低位数据输入引脚串行化到最高位(即,D1 输入引脚上的数据是在 OQ 引脚上传输的第一位)。 数据并串转换器有两种模式:单数据速率 (SDR) 和双数据速率 (DDR)。
OSERDESE2 使用两个时钟 CLK 和 CLKDIV 进行数据速率转换。 CLK是高速串行时钟,CLKDIV是分频并行时钟。 CLK 和 CLKDIV 必须相位对齐。
使用前,必须对 OSERDESE2 进行复位。 OSERDESE2 包含一个控制数据流的内部计数器。 未能将复位取消断言与 CLKDIV 同步将产生意外的输出。
三态并串转换
除了数据的并串转换外,OSERDESE2 模块还包含一个用于对 IOB 进行三态控制的并串转换器。 与数据转换不同,三态转换器最多只能串行化四位并行三态信号。 三态转换器不能级联。
OSERDESE2 原语
OSERDESE2 原语框图如下图所示。
OSERDESE2 端口
下表列出了 OSERDESE2 原语中的可用端口。
数据路径输出 - OQ
OQ 端口是 OSERDESE2 模块的数据输出端口。 输入端口 D1 的数据将首先出现在 OQ。 该端口将数据并串转换器的输出连接到 IOB 的数据输入。 该端口不能驱动ODELAYE2; 必须使用 OFB 引脚。
OSERDESE2 的输出反馈 - OFB
输出反馈端口 (OFB) 是 OSERDESE2 的串行(高速)数据输出端口,用于 ODELAYE2 原语,或者 OFB 端口可用于向 ISERDESE2 发送串行数据。
三态控制输出 - TQ
此端口是 OSERDESE2 模块的三态控制输出。 使用时,此端口将三态并串转换器的输出连接到 IOB 的控制/三态输入。
三态控制输出 - TFB
如果用户需要,此端口是 OSERDESE2 模块的三态控制输出,发送到结构。 它表明 OSERDESE2 是三态的。
高速时钟输入 - CLK
该高速时钟输入驱动并串转换器的串行端。
分频时钟输入 - CLKDIV
该分频高速时钟输入驱动并串转换器的并行端。 该时钟是连接到 CLK 端口的时钟的分频版本。
并行数据输入 - D1 到 D8
所有传入的并行数据通过端口 D1 到 D8 进入 OSERDESE2 模块。 这些端口连接到 FPGA 架构,可以配置为 2 到 8 位(即 8:1 串行化)。 在 SLAVE 模式下使用第二个 OSERDESE2 可以支持大于八位(10 和 14)的位宽。
复位输入 - RST
置位时,复位输入会导致 CLK 和 CLKDIV 域中的所有数据触发器的输出异步驱动为低电平**。 当与 CLKDIV 同步取消断言时,内部逻辑会将此取消断言重新计时到 CLK 的第一个上升沿。** 因此,多位输出结构中的每个 OSERDESE2 都应由相同的复位信号驱动,异步断言,并与 CLKDIV 同步取消断言,以确保所有 OSERDESE2 元素同步退出复位。 仅当已知 CLK 和 CLKDIV 稳定且存在时,才应取消置位复位信号。
输出数据时钟使能 - OCE
OCE 是数据路径的有效高时钟使能。
三态信号时钟使能 - TCE
TCE 是三态控制路径的有效高时钟使能。
并行三态输入 - T1 到 T4
所有并行三态信号通过端口 T1 到 T4 进入 OSERDESE2 模块。 端口连接到 FPGA 架构。 它们可以配置为一位、两位或四位,或被绕过。 这些端口的行为由 DATA_RATE_TQ 和 TRISTATE_WIDTH 属性控制。
OSERDESE2 属性
下表列出并描述了可用于 OSERDESE2 原语的各种属性。 该表包括默认值。
DATA_RATE_OQ 属性
DATA_RATE_OQ 属性定义数据是以单数据速率 (SDR) 还是双数据速率 (DDR) 处理。 此属性的允许值为 SDR 和 DDR。 默认值为 DDR。
DATA_RATE_TQ 属性
DATA_RATE_TQ 属性定义是将三态控制作为单数据速率 (SDR) 还是双数据速率 (DDR) 进行处理。 此属性的允许值为 SDR、DDR 或 BUF。 默认值为 DDR。 在 SDR 和 DDR 模式下,使用四个 T 输入,它们的行为可以通过 TRISTATE_WIDTH 属性进行配置。 在 BUF 模式下,SDR 和 DDR 模式寄存器被旁路,因此应使用 T1 输入。 施加到 T1 输入的信号与所有其他信号异步,因为它只是通过 OSERDESE2。
DATA_WIDTH 属性
DATA_WIDTH 属性定义并串转换器的并行数据输入宽度。 此属性的可能值取决于 DATA_RATE_OQ 属性。
当 DATA_RATE_OQ 设置为 SDR 时,DATA_WIDTH 属性的可能值为 2、3、4、5、6、7 和 8。当 DATA_RATE_OQ 设置为 DDR 时,DATA_WIDTH 属性的可能值为 4、6、8 、 10 和 14。
当 DATA_WIDTH 设置为大于 8 的宽度时,一对 OSERDESE2 必须配置为主从配置。
SERDES_MODE 属性
SERDES_MODE 属性定义 OSERDESE2 模块在使用宽度扩展时是主模块还是从模块。 可能的值为 MASTER 和 SLAVE。 默认值为 MASTER。
TRISTATE_WIDTH 属性
TRISTATE_WIDTH 属性定义了三态控制并串转换器的并行三态输入宽度。 此属性的可能值取决于 DATA_RATE_TQ 属性。 当 DATA_RATE_TQ 设置为 SDR 或 BUF 时,TRISTATE_WIDTH 属性只能设置为 1。当 DATA_RATE_TQ 设置为 DDR 时,TRISTATE_WIDTH 属性的可能值为 1 和 4。
TRISTATE_WIDTH 不能设置为大于 4 的宽度。当 DATA_WIDTH 大于 4 时,将 TRISTATE_WIDTH 设置为 1。
下表显示使用 OSERDESE2 的有效设置和组合。
OSERDESE2 时钟方法
CLK 和 CLKDIV 的相位关系在并串转换过程中很重要。 CLK 和 CLKDIV(理想情况下)在容差范围内相位对齐。
FPGA 内有多种时钟安排可帮助设计满足 CLK 和 CLKDIV 的相位关系要求。 OSERDESE2 唯一有效的时钟安排是:
- CLK 由 BUFIO 驱动,CLKDIV 由 BUFR 驱动
- 由同一个 MMCM 或 PLL 的 CLKOUT[0:6] 驱动的 CLK 和 CLKDIV。
当使用 MMCM 驱动 OSERDESE2 的 CLK 和 CLKDIV 时,不能混合提供 OSERDESE2 的缓冲器类型。 例如,如果 CLK 由 BUFG 驱动,则 CLKDIV 也必须由 BUFG 驱动。