本文节选UG471的第二章,进行整理翻译,用于介绍SelectIO资源内部的OLOGIC资源。
OLOGIC 块位于 I/O 块 (IOB) 旁边。 OLOGIC 是一个专用的同步块,通过 IOB 从 FPGA 发送数据。 OLOGIC 资源的类型是 OLOGICE2(HP I/O bank)和 OLOGICE3(HR I/O bank)。 除非明确说明,否则 OLOGICE2 和 OLOGICE3 在功能上是相同的,它们的端口也是如此。
OLOGICE2 和 OLOGICE3 不是原语,因为它们不能被实例化。 它们在布局和布线之后包含用户实例化的元素,例如输出触发器 (OFD) 或输出 DDR 元素 (ODDR)。
OLOGIC 由两个主要模块组成,一个用于配置输出数据路径,另一个用于配置三态控制路径。 这两个模块有一个共同的时钟 (CLK) 但不同的使能信号,OCE 和 TCE。 两者都具有由独立 SRVAL 属性控制的异步和同步设置和复位(S/R 信号)。
输出和三态路径可以独立配置为以下模式之一。
边沿触发 D 型触发器
DDR 模式(SAME_EDGE 或 OPPOSITE_EDGE)
电平敏感锁存器
异步/组合
下图 2-17 说明了 OLOGIC 块中的各种逻辑资源
下面讨论使用 OLOGIC 资源可用的各种功能。
组合输出路径创建从 FPGA 逻辑到输出驱动器或输出驱动器控制的直接连接。 在以下情况下,软件会自动使用这些路径:
7 系列器件在 OLOGIC 中有专用寄存器来实现输出 DDR 寄存器。 实例化 ODDR 原语时可访问此功能。 使用 OLOGIC 时,DDR 多路复用是自动的。 不需要手动控制多路选择。 这个控制是从时钟产生的。
ODDR 原语只有一个时钟输入。 下降沿数据由输入时钟的本地反相版本提供时钟。 输入 I/O 块的所有时钟都是完全多路复用的,即 ILOGIC 或 OLOGIC 块之间没有时钟共享。
ODDR 原语支持以下操作模式:
SAME_EDGE 模式允许设计人员在 ODDR 时钟的上升沿将两个数据输入呈现给 ODDR 原语,从而节省 CLB 和时钟资源,并提高性能。 此模式使用 DDR_CLK_EDGE 属性实现。 它也支持三态控制。 以下部分详细介绍了每种模式。
在 OPPOSITE_EDGE 模式下,时钟 (CLK) 的两个边沿都用于以两倍的吞吐量从 FPGA 逻辑捕获数据。 两个输出都提供给 IOB 的数据输入或三态控制输入。 使用 OPPOSITE_EDGE 模式的输出 DDR 时序图如下图所示。
在 SAME_EDGE 模式下,数据可以在同一个时钟边沿提供给 IOB。在同一时钟沿向 IOB 提供数据可避免设置时间违规,并允许用户以最小的寄存器到寄存器延迟执行更高的 DDR 频率,而不是使用 CLB 寄存器。 下图显示了使用 SAME_EDGE 模式的输出 DDR 的时序图。
DDR 可以将时钟的副本转发到输出。 这对于传播具有相同延迟的时钟和 DDR 数据以及多时钟生成非常有用,其中每个时钟负载都有一个独特的时钟驱动器。 这是通过将 ODDR 原语的 D1 输入连接为高电平和 D2 输入为低电平来实现的。 Xilinx 建议使用此方案将时钟从 FPGA 逻辑转发到输出引脚。
下图显示了 ODDR 原语框图。 不支持同时设置和重置。
下表 列出了ODDR 端口信号。
Port Name | Function | Description |
---|---|---|
Q | Data output (DDR) | ODDR 寄存器输出 |
C | Clock input port | CLK 引脚代表时钟输入引脚。 |
CE | Clock enable port | CE 代表时钟使能引脚。 当置为低电平时,此端口禁用端口 Q 上的输出时钟。 |
D1 and D2 | Data inputs | ODDR 寄存器输入 |
S/R | Set/Reset | 同步/异步设置/复位引脚。 置位/复位被断言为高电平。 |
下表描述了 ODDR 原语的各种可用属性和默认值。
Attribute Name | Description | Possible Values |
---|---|---|
DDR_CLK_EDGE | 设置相对于时钟边沿的 ODDR 操作模式 | OPPOSITE_EDGE (default), SAME_EDGE |
INIT | 设置 Q 端口的初始值 | 0 (default), 1 |
SRTYPE | 相对于时钟 © 的设置/复位类型 | ASYNC, SYNC (default) |
本节讨论与 OLOGIC 模块相关的所有时序模型。 下表描述了 7 系列 FPGA 数据手册中 OLOGIC 开关特性的功能和控制信号。
Setup/Hold
Symbol | Description |
---|---|
TODCK/TOCKD | D1/D2 pins Setup/Hold with respect to CLK |
TOOCECK/TOCKOCE | OCE pin Setup/Hold with respect to CLK |
TOSRCK/TOCKSR | S/R pin Setup/Hold with respect to CLK |
TOTCK/TOCKT | T1/T2 pins Setup/Hold with respect to CLK |
TOTCECK/TOCKTCE | TCE pin Setup/Hold with respect to CLK |
Clock to Out
Symbol | Description |
---|---|
T OCKQ | CLK to OQ/TQ out |
T RQ | S/R pin to OQ/TQ out |
下图说明了 OLOGIC 输出寄存器时序。时序类似OLOGIC输入寄存器时序。
时钟事件 1
在时钟事件1 之前的时间TOOCECK 处,输出时钟使能信号在输出寄存器的OCE 输入处变为有效高电平,从而为输入数据启用输出寄存器。
在时钟事件 1 之前的时间 TODCK 处,输出信号在输出寄存器的 D1 输入处变为有效高电平,并在时钟事件 1 之后的时间 TOCKQ 处反映在 OQ 输出上。
时钟事件 4
在时钟事件 4 之前的时间 TOSRCK,S/R 信号(在这种情况下配置为同步复位)变为有效高电平,复位输出寄存器并在时钟事件 4 之后的时间 T RQ 反映在 OQ 输出。
下图说明了 OLOGIC ODDR 寄存器时序,此时OLOGIC 工作在OPPOSITE_EDGE 模式。
时钟事件 1
在时钟事件1 之前的TOOCECK 时间,ODDR 时钟使能信号在ODDR 的OCE 输入处变为高电平有效,从而为传入数据启用ODDR。 必须注意在 CLK 的上升沿和下降沿之间切换 ODDR 寄存器的 OCE 信号,并满足相对于两个时钟沿的寄存器建立时间。
在时钟事件 1 之前的时间 TODCK(CLK 的上升沿),数据信号 D1 在 ODDR 寄存器的 D1 输入变为有效高电平,并在时钟事件 1 之后的时间 T OCKQ 反映在 OQ 输出上。
时钟事件 2
在时钟事件 2 之前的时间 TODCK(CLK 的下降沿),数据信号 D2 在 ODDR 寄存器的 D2 输入变为有效高电平,并在时钟事件 2 之后的时间 T OCKQ 反映在 OQ 输出上(无 在这种情况下改变 OQ 输出)。
时钟事件 9
在时钟事件 9 之前的时间 TOSRCK(CLK 的上升沿),S/R 信号(在这种情况下配置为同步复位)变为有效高电平复位 ODDR 寄存器,在时钟事件之后的时间 TRQ 处反映在 OQ 输出 9(在这种情况下 OQ 输出没有变化)和复位 ODDR 寄存器,反映在时钟事件 10 之后的时间 TRQ 处的 OQ 输出(在这种情况下 OQ 输出没有变化)。
下图说明了 OLOGIC 三态寄存器时序。
时钟事件 1
在时钟事件1 之前的时间TOTCECK,三态时钟使能信号在三态寄存器的TCE 输入处变为有效高电平,从而使三态寄存器能够接收输入数据。
在时钟事件 1 之前的时间 TOTCK,三态信号在三态寄存器的 T 输入变为有效高电平,在时钟事件 1 之后的时间 TOCKQ 使焊盘返回高阻抗。
时钟事件 2
在时钟事件 2 之前的时间 TOSRCK,S/R 信号(在这种情况下配置为同步复位)变为有效高电平,在时钟事件 2 之后的时间 TRQ 复位三态寄存器。
此时图说明了 IOB DDR 三态寄存器时序。 此示例显示在对边模式下使用 DDR。 对于其他模式,添加适当的延迟。
时钟事件 1
在时钟事件1 之前的时间TOTCECK,三态时钟使能信号在三态ODDR 寄存器的TCE 输入处变为有效高电平,从而使它们能够用于输入数据。 必须注意在 CLK 的上升沿和下降沿之间切换三态 ODDR 的 TCE 信号,并满足相对于两个时钟沿的寄存器建立时间。
在时钟事件 1 之前的时间 TOTCK(CLK 的上升沿),三态信号 T1 在三态寄存器的 T1 输入处变为有效高电平,并在时钟事件 1 之后的时间 T OCKQ 反映在 TQ 输出上。
时钟事件 2
在时钟事件 2 之前的时间 TOTCK(CLK 的下降沿),三态信号 T2 在三态寄存器的 T2 输入处变为有效高电平,并在时钟之后的时间 T OCKQ 反映在 TQ 输出上 事件 2(在这种情况下 TQ 输出没有变化)。
时钟事件 9
在时钟事件 9 之前的时间 TOSRCK(CLK 的上升沿),S/R 信号(在这种情况下配置为同步复位)变为有效高电平复位三态寄存器,在时间 TRQ 处反映在 TQ 输出 在时钟事件 9 之后(在这种情况下 TQ 输出没有变化)并复位三态寄存器,在时钟事件 10 之后的时间 TRQ 处反映在 TQ 输出上(在这种情况下 TQ 输出没有变化)。