Intel FPGA权威设计指南:基于Quartus Prime Pro 19集成开发环境
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 I/O块

Cyclone 10 GX器件的I/O块支持下面的特性,包括:①单端、非参考电压和电压参考的I/O标准;②低电压差分信号(Low-Voltage Differential Signaling,LVDS)、RSDS、mini-LVDS、HSTL、HSUL和SSTL I/O标准;③串行化器/解串行化器(SERDES);④可编程的输出电流强度;⑤可编程的摆率;⑥可编程的总线-保持;⑦可编程的弱上拉电阻;⑧可编程的预加重 LVDS 标准;⑨可编程的 I/O 延迟;⑩可编程的差分输出电压(VOD);⑪开漏输出;⑫片上串行端接(RS OCT),包含/不包含标定;⑬片上并行端接(RT OCT);⑭片上差分端接(RD OCT);⑮带有动态断电的HSTL和SSTL输入缓冲区;⑯用于所有I/O组的动态片上并行端接。I/O组在I/O列内的分布如图1.56所示。

图1.56 I/O组在I/O列内的分布

1.4.1 I/O组的排列

通用I/O(General Purpose I/O,GPIO)由LVDS I/O和3V I/O组构成。

1.LVDS I/O组

支持高达1.8V的差分和单端I/O标准。LVDS I/O引脚构成一对真差分LVDS通道。每一对支持两个引脚之间的并行输入/输出端接。设计者可以使用每个 LVDS 通道仅作为发送器或接收器。每个LVDS通道支持传输SERDES并通过DAP电路接收SERDES。例如,设计者可以使用 24 个通道中的 10 个通道作为发送器。在剩余的通道中,可以使用 13 个通道作为接收器,使用一个通道作为参考时钟。

484引脚封装的器件不包含3B和3A I/O组,672引脚封装的器件不包含3B I/O组。

2.3V I/O组

支持高达3V的单端和差分SSTL、HSTL、HSUL I/O标准。除以下情况外,在该I/O组中的单端 I/O 支持所有可编程的 I/O 元件(I/O element,IOE),即可编程的预加重、RD 片上端接、校准的RS和RT OCT,以及产生内部VREF。

Gyclone 10 GX器件支持suoyou LVDS I/O组上的LVDS,包括:

(1)所有LVDS I/O组支持带有RD OCT真LVDS输入和真LVDS输出缓冲区;

(2)器件不支持对LVDS通道的模拟;

(3)器件支持驱动SERDES的I/O PLL单端和差分I/O参考时钟。

Cyclone 10 GX器件中的I/O引脚分组排列称为模块化I/O组,其中:

(1)模块化I/O组具有独立的电源,允许每个组支持不同的I/O标准。

(2)每个模块化I/O组都可以支持使用相同电压的多个I/O标准。

10CX085和10CX105器件的模块化I/O组如表1.20所示,10CX150和10CX220器件的模块化I/O组如表1.21所示。

表1.20 10CX085和10CX105器件的模块化I/O组

表1.21 10CX150和10CX220器件的模块化I/O组

1.4.2 I/O电气标准

Cyclone 10 GX器件的所有封装均可与不同电源电压的系统连接,其中:

(1)I/O缓冲区由VCC、VCCPT和VCCIO供电;

(2)每个I/O组都有自己的VCCIO供电,并且仅支持一个VCCIO电压;

(3)在所有的I/O组中,除2.5V和3.0V外,可以使用任何列出的VCCIO电压;

(4)仅在3V的I/O组上支持2.5V和3.0V的VCCIO电压。

(1)对于允许的最大和最小输入电压,请参见器件数据手册。

(2)VCC为FPGA的核心供电电压,典型值为0.9V。

(3)VCCPT 为可编程的电源技术和 I/O 预驱动器的供电电压,典型值为1.8V。

Cyclone 10 GX器件的I/O支持的标准电压如表1.22所示。

表1.22 Cyclone 10 GX器件的I/O支持的标准电压

续表

(1)VREF为输入参考电压;

(2)VTT为板端接电压。

1.4.3 I/O架构和特性

每个 I/O 组包含它自己的 PLL、DPA 和 SERDES 电路。在每个 I/O 组中,有 4 个 I/O通道(Lane),每个通道有12个I/O引脚。不同于I/O通道,每个I/O组有专用的电路,包括I/O PLL、DPA块、SERDES、硬核存储器控制器和I/O序列器。

1.I/O缓冲器和寄存器

I/O 寄存器用于处理从引脚到内核数据的输入路径、用于处理从内核到引脚数据的输出路径,以及用于处理 OE 信号到输出缓冲区的输出使能(OE)路径构成。这些寄存器允许更快的源同步寄存器到寄存器的传输和重新同步。使用 GPIO 来利用这些寄存器实现 DDR电路。输入和输出路径包含以下块。

1)输入寄存器

支持从外设到 FPGA 内核的半速率/全速率的数据传输,并支持从 I/O 缓冲区捕获双速率/单速率的数据。

2)输出寄存器

支持从 FPGA 内核到外设的半速率/全速率的数据传输,并支持到 I/O 缓冲区的双速率/单速率的数据传输。

3)OE寄存器

支持从FPGA内核到外设的半速率/全速率的数据传输,并支持将单速率数据传输到I/O缓冲区。

输入和输出路径也支持下面的特性,包括时钟使能、同步/异步复位、用于输入和输出路径的旁路模式,以及在输入和输出路径上的延迟链。Cyclone 10 GX器件内IOE的架构如图1.57所示。

一个关于寄存器的Verilog HDL描述如代码清单1-18所示。

图1.57 Cyclone 10 GX器件内IOE的架构

代码清单1-18 一个关于寄存器的Veriog HDL描述

在该设计中,在Quatus软件的“Advanced Fitter Settings”对话框中,将Optimize IOC Register Placement for Timing设置为Pack All IO Registers。设计适配后的网表结构如图1.58所示。

图1.58 设计适配后的网表结构

在Chip Planner中,找到该设计在I/O中的布局,如图1.59所示。通过观察可知,设计中的触发器使用了I/O内的触发器资源,这样改善了时序,并节省了所使用的ALM资源。

图1.59 设计在I/O中的布局

2.I/O引脚的特性

I/O引脚的特性包括:开漏输出、总线保持和弱上拉电阻。

1)开漏输出

每个 I/O 引脚可选的开漏输出相当于集电极开路输出。如果将其配置为开漏,则输出的逻辑值为高阻或逻辑低。使用一个外部电阻将信号拉到逻辑高电平。

2)总线保持

每个 I/O 引脚提供一个可选的总线保持特性,仅在配置后才有效。当器件进入用户模式时,总线保持电路捕获配置结束后出现在引脚上的值。

总线保持电路使用一个带有标称电阻值(RBH)的电阻,大约为7kΩ,将信号电平弱拉至引脚最后驱动状态。总线保持电路保持这个引脚状态,直到出现下一个输入信号。因此,当公共总线是三态时,不需要外部上拉或下拉电阻来保持信号电平。

对于每个 I/O 引脚,可以单独指定总线保持电路将没有驱动的引脚拉离输入的阈值电压(此处噪声可能导致意外的高频切换)。为了阻止过驱动信号,总线保持电路将 I/O 引脚的电平驱动低于VCCIO电平。

如果使能总线保持特性,则无法使用可编程上拉选项。为了差分信号配置 I/O 引脚,禁止总线保持特性。

3)弱上拉电阻

在用户模式下,每个 I/O 引脚提供了一个可选的上拉电阻。典型地,上拉电阻为25kΩ,将I/O弱保持在VCCIO电平。Cyclone 10 GX器件支持可编程的弱上拉电阻仅用于用户I/O引脚,而不再专用配置引脚、专用时钟引脚或JTAG引脚。

如果使能该选项,则无法使用总线保持功能。

1.4.4 可编程的IOE特性

Cyclone 10 GX器件的可编程特性的设置和分配如表1.23所示。

表1.23 Cyclone 10 GX器件的可编程特性的设置和分配

Cyclone 10 GX器件支持的可编程的IOE特性I/O标准和缓冲区类型如表1.24所示。

表1.24 Cyclone 10 GX器件支持的可编程IOE特性的I/O标准和I/O缓冲区类型

续表

1.可编程的电流强度

可以使用可编程的电流强度以减轻由长传输线或传统背板引起的高信号衰减的影响。要使用可编程的电流强度,必须在 Quartus 软件中指定当前的强度分配。如果没有明确的分配,Quartus软件将使用这些预定义的默认值:

(1)所有的HSTL和SSTL Class I,以及所有没有参考电压的I/O标准-50Ω RS OCT,无须标定;

(2)所有HSTL和SSTL Class II I/O标准-25ΏRS OCT,无须标定;

(3)POD12 I/O标准-34ΩRS OCT,无须标定。

2.可编程的压摆率控制

每个常规和双功能I/O引脚的输出缓冲器中的可编程压摆率控制允许配置如下。

(1)Fast:为高性能系统提供高速跳变;

(2)Slow:降低系统噪声和串扰,但会在上升沿和下降沿增加延迟;

设计者可以为每个引脚指定压摆率,这是因为每个I/O引脚都包含压摆率控制。

3.可编程的IOE延迟

设计者可以激活可编程的 IOE 延迟,以确保零保持时间,最小化建立时间或者增加时钟到输出的时间。这个特性有助于读取和写入的时间余量,因为它可以最大限度地减少总线中信号之间的不确定性。

每个引脚可以有从引脚到输入寄存器不同的输入延迟或从输出寄存器到输出引脚值的延迟,以保证总线内的信号具有进出器件的相同延迟。

4.可编程的开漏输出

当输出缓冲区的逻辑为高电平时,可编程的开漏输出在输出端提供高阻态。如果输出缓冲区的逻辑为低电平,则输出为低电平。

可以将几个开漏输出连接到一个线。这种连接类型类似于逻辑“或”功能,通常称为低有效线或电路。如果输出中至少有一个为逻辑“0”状态(有效),则电路吸收电流并使线路进入低电压。

如果要将多个设备连接到总线,则可以使用漏极开路输出。例如,可以将开漏输出用作系统级控制信号,这些信号可以由任何器件置为有效或作为中断。

可以使用下面其中一种方法启用漏极开路输出分配:

(1)使用OPNDRN原语设计三态缓冲区;

(2)打开Quartus软件中的Auto Open-Drain Pins选项。

可以在不启用选项分配的情况下设计漏极开路输出。但是,设计不会使用 I/O 缓冲区的开漏输出功能。I/O缓冲区的漏极开路输出功能将提供从OE到输出的最佳传播延迟。

5.可编程的预加重

VOD 的设置和驱动器的输出阻抗设置高速传输信号的输出电流限制。在高频率时,压摆率可能不够快,无法在下一个边沿之前达到 VOD 电平,从而产生与模式相关的抖动。通过预加重,在切换期间瞬间提升输出电流,以提高输出压摆率。

预加重增加了输出信号高频分量的幅度,因此有助于补偿在传输线上与频率相关的衰减。由额外电流引入的过冲仅发生在状态切换变化期间,以增加输出压摆率并且没有振铃,这不像由信号反射引起的过冲。所需要的预加重的数量取决于沿传输线的高频分量衰减。

6.可编程的差分输出电压

可编程的 VOD 设置允许设计者调整输出眼图开度,以优化走线长度和功耗。一个较高的VOD摆幅可改善接收器端的电压余量,较少的VOD摆幅可降低功耗。通过在Quatus软件Assignment Editor中的VOD设置来静态调整差分信号的VOD。

1.4.5 片上端接

使用Cyclone 10 GX器件内的片上端接,可以显著减少FPGA芯片外使用端接元器件的数量,以及降低了PCB板的布线难度。

串行(RS)和并行(RT)OCT提供了I/O阻抗匹配和端接功能。OCT可以保证信号的质量,节省电路板空间并降低外部元件成本。

Cyclone 10 GX器件支持所有FPGA I/O组中的OCT。对于3V I/O,I/O仅支持OCT而无须校准。

1.4.6 SERDES和DPA

Cyclone 10 GX器件内提供的高速差分I/O接口和DPA功能优于单端I/O的优势,并有助于实现整体系统带宽。Cyclone 10 GX 器件支持 LVDS、mini-LVDS 和降低摆幅差分信号(Reduced Swing Differential Signaling,RSDS)差分I/O标准。

1.SERDES架构

Cyclone 10 GX 器件内的每个 LVDS I/O 通道都有内建的串行化器/解串行化器(SERDES)电路,支持高速 LVDS 接口。串行化器负责将 FPGA 内部的并行数据转换为串行数据,解串行化器负责将接收到的串行数据转换为并行数据。设计者可以配置 SERDES电路以支持源同步的通信协议,如RapidIO、XSBI、SPI和异步协议。

SERDES电路的LVDS内部结构如图1.60所示。图中给出LVDS发送器和LVDS接收器的框图,其中包含 LVDS 发送器和 LVDS 接收器数据路径的接口信号。从图中可知,在LVDS发送器和LVDS接收器之间共享PLL。如果LVDS发送器和LVDS接收器不共享相同的 PLL,则需要两个 PLL。在单速率(Single Data Rate,SDR)和双数率(Double Data Rate,DDR)模式中,数据宽度分别为1位和2位。

图1.60 SERDES电路的内部结构

LVDS发送器和LVDS接收器要求来自I/O PLL的各种时钟和加载使能信号。Quartus软件自动配置 PLL 设置。根据输入参考时钟和所选择的数据率,该软件还负责生成各种时钟和负载使能信号。

2.差分发送器

Cyclone 10 GX器件的发送器包含专用的电路,用以支持高速差分信号。差分发送器缓冲区支持下面的特性:

(1)LVDS信令,支持驱动LVDS、mini-LVDS和RSDS信号;

(2)可编程的VOD和可编程的预加重。

如图1.60所示,LVDS发送器模块是专用的电路,它由一个真正的差分缓冲区、一个串行器和I/O PLL构成,可以在LVDS发送器和LVDS接收器之间共享它。串行化器从FPGA架构中得到高达 10 位宽的并行数据,然后在时钟的作用下送到加载寄存器。并且,在将数据送到差分缓冲区之间,使用由I/O PLL时钟驱动的移位寄存器将其串行化。注意,首先发送并行数据的MSB。

驱动LVDS SERDES通道的PLL必须工作在整数模式。如果旁路掉串行化器,则不需要PLL。

在 IOE 中有两个数据输出寄存器,它们可以工作在 DDR 或 SDR 模式。设计者可以旁路掉解串行化器,以支持DDR和SDR操作,以分别实现串行化因子2和1。通过GPIO,也支持旁路解串行化器。

在 SDR 模式下,其特性包括:①IOE 的数据宽度为 1 位;②寄存的输出路径要求一个时钟;③数据直接通过IOE传递。

在 DDR 模式下,其特性包括:①IOE 的数据宽度为 2 位;②GPIO IP 核要求一个时钟;③tx_inclock驱动IOE寄存器。

3.差分接收器

如图1.60所示,LVDS接收器由可以在LVDS发送器和LVDS接收器之间共享的差分缓冲器和I/O PLL、DPA块、同步器、位滑动(数据重对齐块)和解串行化器构成。差分缓冲器可以接收 LVDS、mini-LVDS 和 RSDS 信号电平。在 Quartus 软件中,可以将接收器引脚静态设置为LVDS、mini-LVDS或者RSDS。

用于驱动LVDS SERDES通道的PLL必须工作在整数PLL模式。如果旁路掉解串行化器,则不需要PLL。

在SDR和DDR模式下,来自IOE的数据宽度分别为1位和2位。解串行化器包括移位寄存器和并行加载寄存器,并且将最宽为10位的数据发送给FPGA的内部逻辑。

1)DPA块

DPA 块从差分缓冲器接收高速串行数据,并从 I/O PLL 生成的 8 个相位(0°、45°、90°、135°、180°、225°、270°和 315°)中选择其中一个相位来采样数据。DPA 选择最接近串行数据相位的相位。接收数据和所选择相位之间最大的相位偏移是 1/8 单位间隔(注:单位间隔是指运行在串行数据率时的时钟周期),这是DPA的最大量化误差。

DPA 块持续监视输入串行数据的相位,并在需要时选择新的相位。通过设置用于每个通道可选的rx_dpa_hold端口来阻止DPA选择新的时钟相位。

DPA 块不要求固定的训练模式来锁定 8 个相位中最佳的相位。在复位或上电后,DPA块要求接收到的数据有跳变,从而锁定最佳相位。可选的输出端口 rx_dpa_locked 用于指示在复位或上电后初始的 DPA 锁定条件达到了最佳相位。使用数据检查器,如循环冗余校验(Cyclic Redundancy Check,CRC)或对角交织奇偶校验(DPI-4)来验证数据。

一个单独的复位端口rx_dpa_reset用于复位DPA块。复位后,必须重新训练DPA块。

在非DPA模式下,旁路DPA块。

2)同步器

同步器是 1 比特宽度和 6 位深度的 FIFO 缓冲区,用于补偿 dpa_fast_clock(DPA 模块选择的最佳时钟)与 I/O PLL 产生的 fast_clock 之间的相位差。同步器只能补偿数据和接收器输入参考时钟之间的相位差,而不是频率差。

可选的端口rx_fifo_reset可用于内部逻辑对同步器复位。当DPA首次锁定到传入的数据时,同步器会自动复位。当数据检查器指示接收的数据已经损坏时,Intel 建议使用rx_fifo_reset复位同步器。

在非DPA和软-CDR模式下旁路同步器。

3)位滑动(数据重对齐模块)

传输数据中的偏斜,以及链路所增加的偏斜会引起所接收串行数据流上信道到信道的偏斜。如果使能 DPA,则在每个通道上用不同的时钟相位捕获所接收到的数据。这种差异可能导致从通道到通道接收的数据不对齐。为了补偿这种通道到通道的偏移并在通道建立正确的接收字边界,每个接收器通道都有专用的数据重对齐电路,通过在串行数据流中插入位延迟来重对齐数据。

可选的 rx_bitslip_ctrl 端口控制每个接收器的位插入,其由内部逻辑独立控制。在rx_bitslip_ctrl上升沿时,数据滑动一位。rx_bitslip_ctrl信号的要求包含以下选项:

① 最小脉冲宽度是逻辑阵列中并行时钟的一个周期;

② 脉冲之间的最小低电平时间是并行时钟的一个周期;

③ 信号是边沿触发的信号;

④ 在rx_bitslip_ctrl的上升沿后,有效数据在4个并行周期可用。

4)解串行化器

在 Quartus 软件中,可以静态设置解串行化因子为×3、×4、×5、×6、×7、×8、×9 或×10。IOE 包含两个可在 DDR 或 SDR 模式下运行的数据输入寄存器。通过旁路解串行化器,以支持DDR(×2)和SDR(×1)操作。通过GPIO IP内核,支持旁路解串行化器。

在旁路解串行化器的 SDR 模式下,其特性包括:①IOE 的数据宽度为 1 位;②寄存的输入路径要求一个时钟;③数据直接通过IOE传递。

在旁路解串行化器的DDR模式下,其特性包括:①IOE的数据宽度为2位;②GPIO IP核要求一个时钟;③rx_inclock驱动IOE寄存器,时钟必须同步到rx_in;④必须控制数据到时钟的偏移。