《Xilinx可编程逻辑器件设计与开发(基础篇)》连载15:Spartan-6的SelectIO资源

2.1.6 SelectIO资源

Spartan-6有丰富的I/O资源,包括SelectIO和RocketIO。

Spartan-6每个I/O片(Tile)包含两个IOB、两个ILOGIC2、两个OLOGIC2和两个IODELAY2,见图2-37。

在这一小节里,分以下几个方面介绍Spartan-6的SelectIO资源。

  • SelectIO的电气特性。
  • SelectIO的逻辑资源(ILOGIC2、OLOGIC2)。
  • SelectIO的高级逻辑资源(ISERDES、OSERDES、Bitslip)。

     I/O片结构图

    图2-37 I/O片结构图

    一、 SelectIO IOB的电气特性

    所有的Spartan-6 FPGA有高性能的可配置SelectIO驱动器与接收器,支持非常广泛的接口标准。可以通过编程控制I/O的输出强度、斜率以及片上终端OCT。

    每个IOB包含输入、输出和三态SelectIO驱动器。这些驱动器可以按照各种I/O标准配置。

  • 单端I/O标准(LVCMOS、LVTTL、HSTL、SSTL、PCI)。
  • 差分I/O标准(LVDS、RSDS、TMDS、差分HSTL和SSTL)。

    注意:差分输入和VREF相关输入是由VCCAUX供电。

    Xilinx软件库提供了很多Spartan-6 I/O的原语,包括用于单端信号的IBUF(输入缓冲器)、IBUFG(时钟输入缓冲器)、OBUF(输出缓冲器)、OBUFT(三态输出缓冲器)和IOBUF(输入/输出缓冲器);以及用于差分信号的IBUFDS(输入缓冲器)、IBUFGDS(时钟输入缓冲器)、OBUFDS(输出缓冲器)、OBUFTDS(三态输出缓冲器)和IOBUFDS(输入/输出缓冲器)。

    二、 SelectIO的逻辑资源

    SelectIO的逻辑资源是指I/O驱动器与接收器之后的逻辑,包含了Spartan-6 FPGA的所有基本I/O逻辑资源,如图2-38所示。其中包括的资源如下。

  • 组合输入/输出。
  • 三态输出控制。
  • 寄存器输入/输出。
  • 寄存器三态输出控制。
  • 双倍数据速率(DDR)输入/输出。
  • DDR输出三态控制。
  • IODELAY2提供对高分辨率可调延迟单元的控制。
  • 支持NONE、C0和C1三种对齐模式的DDR输出。
  • 支持NONE、C0和C1三种对齐模式的DDR输入。
  • ISERDES。
  • OSERDES。

    I/O片内的SelectIO逻辑资源

    图2-38 I/O片内的SelectIO逻辑资源

    一个I/O片(IOI)管理两个IOB。IOI包含两个单端输入/输出,或者一个差分输入/输出的完整电路和一个内部互联模块。两个IOB组合在一起是为支持高速的差分接口。

    在单端模式下,主IOB驱动引脚P,从IOB驱动引脚N。在差分模式下,主从IOB组合在一起可以实现串并转换,其数据速率是单端模式下的1~2倍。每个I/O支持3种配置模式:锁存型I/O、非锁型I/O和寄存器型I/O。I/O还可以配置为2:1/3:1/4:1的SERDES。锁存/寄存器时钟来自GCLK驱动的全局时钟网络或者高速I/O时钟网络。

    IODELAY2是一种可选资源,设计者可以根据需要在输入/输出路径上加入此延时模块,IODELAY2的延时是可编程的,可以通过DRP指定或者通过例化IODELAY2原语指定。此延时可以是固定延时,也可以是可变延时。

    三、 ILOGIC2资源

    图2-39所示为ILOGIC2逻辑框图,它可支持以下功能。

  • 边沿触发D型触发器。
  • IDDR(NONE、C0或C1)模式。
  • 锁存器。
  • 异步/组合逻辑。

    ILOGIC2逻辑框图

    图2-39 ILOGIC2逻辑框图

    (1) 异步/组合逻辑。

    当有下列情况之一时,软件会自动生成组合通路,使输入驱动器与FPGA内部逻辑资源直接连接。

  • FPGA的输入数据与内部逻辑直接相连,而没有用寄存器。
  • “打包I/O寄存器/锁存器到IOB中”的属性设置为OFF。

    (2) IDDR模式。

    Spartan-6器件的ILOGIC2中有专用寄存器来实现输入双倍数据速率(DDR)寄存器。可以通过例化IDDR2的原语来使用此功能。

    IDDR2的属性DDR_ALIGNMENT有3种模式:NONE、C0和C1。

    在NONE模式下,输入DDR时序如图2-40所示。寄存器在C0上升沿将输入数据D寄存到Q0,C1上升沿将下一输入数据D寄存到Q1。

    DDR_ALIGNMENT=NONE时输入DDR时序示意图

    图2-40 DDR_ALIGNMENT=NONE时输入DDR时序示意图

    在某些情况下,输入数据必须同步到一个时钟域里,通常C0同步。但是在频率比较高的情况下,这种同步相对比较困难,因为有效时间仅为时钟周期的一半(50%占空比的情况下)。Spartan-6器件中的IDDR2包含了专用的逻辑,可以在ILOGIC2内部进行时钟域的同步。

    当DDR_ALIGNMENT为C0(或C1),信号Q0(Q1)在C1(C0)再次寄存,通过内部互联将输入数据同步到同一时钟域。时序图如图2-41所示。

    DDR_ALIGNMENT=C0\C1 的输入DDR

    图2-41 DDR_ALIGNMENT=C0\C1 的输入DDR

    IDDR 的原语如图2-42 所示。

     IDDR2 的原语

    图2-42 IDDR2 的原语

    四、 OLOGIC2 资源

    如图2-43所示,OLOGIC2主要由两部分组成,分别是输出数据路径和三态控制路径。

    这两个部分可以配置成以下模式。

  • 边沿触发D 型触发器。
  • DDR 模式(NONE、C0 或C1 同步方式)。
  • 电平敏感锁存器。
  • 异步/组合逻辑。

    OLOGIC2 逻辑模块

    图2-43 OLOGIC2 逻辑模块

    (1) 组合数据输出和三态控制路径。

    当有下列情况之一时,软件会自动生成组合通路,将FPGA 内部数据直接输出到输出驱动器或驱动器的控制端。

  • FPGA 内部逻辑数据直接输出到输出驱动器或驱动器的三态控制端,而没有经过寄存器。
  • “打包I/O 寄存器/锁存器到IOB 中”的属性设置为OFF。

    (2) ODDR模式。

    Spartan-6器件的OLOGIC2中具有专用寄存器,用来实现DDR输出寄存器。例化ODDR2原语可以使用此功能。当使用OLOGIC2时,会自动使用多路复用器,多路复用器的控制端产生于时钟信号,不需要手动控制。ODDR2 有两个时钟输入,相位差180°。

    ODDR2 支持以下操作模式。

  • NONE 模式:允许设计人员在C0 和C1 时钟的上升沿将两个数据通过DDR多路复用器送至输出引脚,如图2-44所示。

    DDR_ALIGNMENT=NONE 下的ODDR2

    图2-44 DDR_ALIGNMENT=NONE 下的ODDR2

  • C0模式:在时钟C0上升沿时,将两个数据通过DDR多路复用器送至输出引脚。
  • C1模式:在时钟C1上升沿时,将两个数据通过DDR多路复用器送至输出引脚。

    ODDR原语如图2-45所示。

    ODDR原语

    图2-45 ODDR原语

    五、 可编程延迟单元IODELAY2

    每个IOB包含一个延时单元,可以配置成输入延时或者输出延时,当引脚用作双向口时,还可以通过T端来控制输入/输出延时的切换。Spartan-6中IODELAY2的延时不会自动补偿温度或电压带来的延时差异,但是用户可以通过精确计算,来设置IODELAY2的具体延时值。

    图2-46所示为延时单元的结构图。8位延时值对应0~255个延时Tap,该延时值最低三位控制RING晶振的起始点。该晶振由输入信号触发,经过0~7个Tap的延时之后,其输出作为时钟,用来钟控5位计数器。5位计数器中装载了延时值的高5位,它会一直在0~31循环,直到它的输出翻转到最初输入到该模块时的输入值Data Input。延时精度范围为1~255TAP。

    延时单元的结构图

    图2-46 延时单元的结构图

    此延时单元有两个局限,第一,延时最大值为1个位周期,超过此限制,接收数据会出错;第二,在下一个边沿到来之前,必须完成对第一个边沿的处理,这种情况会发生在接收高速数据流时。

    如何避免上述两个局限呢?

    对于第一个限制,通过确保延时值小于一个输入数据的位周期(1UI)就可以避免,通常设置为0.5UI,使数据采样点位于眼图的中心。

    对于第二个限制,可以通过图2-47所示的两个延时链解决。一个延迟链延时输入数据的正值部分,另一个延时链延时输入数据的负值部分,这个处理机制的价值在于:通过设置两个延迟链的不同延时值,校正了输入数据的占空比。读者可以在设计中调用IODRP2原语使用此功能。

    每个延时模块使用两个延时链

    图2-47 每个延时模块使用两个延时链

    六、 SelectIO的高级特性

    除了上述SelectIO资源之外,Spartan-6还提供了更高级的逻辑特性,介绍如下。

    (1) 串并转换器ISERDES2。

    图2-48和图2-49分别为ISERDES2接收串行数据时的逻辑框图和时序图,利用ISERDES2将串行数据接收为4位并行数据。从时序图中可以看到,Bitslip为4位数据的同步使能控制信号。

    ISERDES2逻辑框图

    图2-48 ISERDES2逻辑框图

    ISERDES2时序图(1:4)

    图2-49 ISERDES2时序图(1:4)

    ISERDES2可以实现1:2、1:3或1:4串并转换器功能,而且通过级联的方式还可以实现1:5、1:6、1:7、1:8串并转换器功能。

    (2) 并串转换器OSERDES2。

    图2-50与图2-51分别为OSERDES2的逻辑框图和时序图,利用OSERDES2将4位并行数据转换为串行数据输出。
    一个OSERDES2可以实现2:1、3:1、4:1并口转换功能。当用差分输出时,相关的2个IOB中的OSERDES2可以级联,从而可以实现5:1、6:1、7:1和8:1并串转换功能。

    设计者可以在HDL设计中,例化ISERDES2/OSERDES2原语来实现输入数据解串和输出数据串行化操作。

    利用这些资源,可以很方便地实现高速串行数据的收发,例如用它实现LVDS接口。

    更多资料请参考附带光盘中的《Spartan-6 IO资源用户手册》。

    OSERDES2逻辑框图

    图2-50 OSERDES2逻辑框图

    OSERDES2时序图(4:1)

    图2-51 OSERDES2时序图(4:1)

  • 2 条评论

    (1楼)您好,如果我想用IDDR2,ODDR2和IOBUF来上下边

    LQVSHQ 在 星期五, 09/22/2017 - 15:00 发表。

    您好,如果我想用IDDR2,ODDR2和IOBUF来上下边沿采集从inout型端口通过的数据,是怎样做的呢?

    采集从inout型端口通过的数据啊

    zhou2017 在 星期四, 10/12/2017 - 21:14 发表。

    采集从inout型端口通过的数据啊