跳转到主要内容

Xilinx 7系列FPGA 高性能(HP)接口与2.5V/3.3V 外设IO接口设计考虑

judy 提交于

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/ZRpsIoUtAY7bm3wv-CqwCA">FPGA技术实战微信公众号</a></s…;

引言:Xilinx 7系列FPGA IO Bank分为HP Bank和HR Bank,HP IO接口电压范围为1.2V~1.8V,可以实现高性能,HR IO接口电压范围为1.2V~3.3V。当HR Bank与2.5V或者3.3V外设互联时,需要考虑接口电平的兼容性。

根据性能需求、功能和信号类型(输入、输出或双向),有不同的接口设计选项。本应用说明探讨诸如添加电阻器、场效应晶体管(FET)开关、电平转换器甚至其他Xilinx FPGA等选项。

<strong>1. 电阻分压设计</strong>

一个简单的电阻负载可以将过多的信号摆动截断到FPGA的可容忍水平。如图1所示,通过从传输线到GND放置电阻器,只有驱动高压被衰减。这种解决方案可能导致信号完整性低于理想,因为下拉电阻器通常不与传输线匹配。将该下拉电阻器放置在接收器附近有助于减少不必要的反射。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图1:下拉电阻技术</strong></p>

下拉电阻器可以通过知道输出驱动器阻抗/电阻和输出驱动电压(VCC)来确定。在所需的接收器输入电压定义为V<sub>RECEIVER</sub>的情况下,下拉电阻器使用等式1以及图2的有效示意图进行计算。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图2:带下拉电阻器的驱动器驱动逻辑1的有效示意图</strong></p>

带下拉电阻器的驱动器驱动逻辑1的有效示意图

表1显示了不同驱动器阻抗/电阻上2.5V和3.3V驱动器VCC的R<sub>PULLDOWN</sub>计算值。

表1:R<sub>PULLDOWN</sub>的计算值
<img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt="">

由于驱动器的潜在非线性,建议通过HSPICE进行模拟以将非线性考虑在内。此外,由于阻抗不匹配,必须考虑过冲和反射。HP I/O组的VCCO<sub>MAX</sub>为2.1V。

<strong>2. 图腾柱电阻分压器设计</strong>

双电阻图腾柱解决方案允许端接与传输线匹配,以最大限度地减少反射,但代价是连续直流电流。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图3:带Thevenin并联终端的驱动器示意图</strong></p>

电阻器的选择必须使其组合并联电阻尽可能接近Z0。此外,必须遵守接收器的VIH和VIL电平。如图3所示,V<sub>BIAS</sub>点的概念确保输入的高信号能够以足够的强度向下驱动,以匹配输入的低信号的驱动强度。知道这个V<sub>BIAS</sub>点可以计算上拉和下拉电阻值。将端接电阻器靠近接收器,以获得最佳信号完整性。

V<sub>BIAS</sub>(方程2)的计算更为复杂,并假设输出高和低驱动强度是平衡的。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

在获得V<sub>BIAS</sub>之后,可以计算R<sub>PULLUP</sub>和R<sub>PULLDOWN</sub>,如等式3所示:
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

表2显示了对于2.5V和3.3V的驱动器VCC的R<sub>PULLUP</sub>和R<sub>PULLDOWN</sub>的计算值。

表2:R<sub>PULLUP</sub>和R<sub>PULLDOWN</sub>的计算值
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

使用图3中的拓扑图,驱动器的输出阻抗必须足够小,才能达到接收器的V<sub>IH</sub>和V<sub>IL</sub>阈值。此外,输出阻抗必须足够大,以免过驱动接收器的推荐工作电压(V<sub>IHMAX</sub>)。在7个系列FPGA中,LVCMOS18的V<sub>IHmax</sub>为2.1V。Z<sub>DRIVER(MAX)</sub>和Z<sub>DRIVER(MIN)</sub>的计算分别如方程4和方程5所示。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

表3显示了对于2.5V和3.3V的驱动器VCC的Z<sub>DRIVER(MAX)</sub>和Z<sub>DRIVER(MIN)</sub>的计算值。

表3:Z<sub>DRIVER(最大值)</sub>和Z<sub>DRIVER(最小值)</sub>的计算值
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

在Z<sub>DRIVER(MAX)</sub>处,逻辑1和逻辑0正好有300mV的裕度。随着输出阻抗的减小,逻辑1裕度的增长速度快于逻辑0裕度。方程6和方程7根据实际驱动器阻抗计算精确的裕度水平。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

表4显示了2.5V和3.3V的驱动器VCC的逻辑0和逻辑1余量的计算值。

表4:逻辑0和逻辑1余量的计算
<img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt="">

使用等式8计算图腾柱终端每次I/O消耗的偏置功率,VCC表示上拉电压。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

表5:每个I/O的功率计算
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

通过使用V<sub>BIAS</sub>的并联端接,可以在没有直流偏置的情况下实现相同的性能,而需要额外的电源导轨(图4)。如果应用程序具有大量输入,则此解决方案可能是一个更节能的选项。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图4:示例:V<sub>BIAS</sub>拓扑的并行端接</strong></p>

<strong>3. 串联FET开关</strong>

串联FET开关可以保证从3.3V到1.8V的单向电压转换,并可以修改为从1.8V到3.3V工作。该器件的性能类似于与传输线串联的NMOS晶体管,如图5所示。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图5:串联FET开关</strong></p>

如果晶体管的栅极被设置为1.8V+VT,则来自3.3V驱动器的信号仅高达1.8V传递到接收器。德州仪器SN74TVC16222ADGVR提供23个具有公共栅极的并联NMOS传输晶体管,如图6所示。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图6:德州仪器SN74TVC16222ADGVR的简化示意图</strong></p>

为了确保从2.5V/3.3V驱动器通过的电压不超过1.8V,可以使用23个NMOS晶体管中的一个作为参考晶体管,将所有栅极电压偏置到1.8V+VT,如图7所示。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图7:1.8V参考晶体管示例设置</strong></p>

2.5/3.3V的电阻器应足够高(数百kΩ) 以限制到1.8V轨道的电流。

<strong>1.8V至2.5V/3.3V带FET开关的接口</strong>

仅通过FET开关将1.8V驱动到2.5V或3.3V接收器,留下非常少或没有V<sub>IHmargin</sub>。例如,在1.8V驱动到V<sub>IH</sub>为1.7V的Spartan®-6 FPGA LVCMOS25接收器的情况下,只有100 mV的裕度可用。在1.8V驱动到VIH为2.0V的Spartan-6 FPGA LVCMOS33接收器的情况下,根本没有余量。

如图8所示,接收器输入端的上拉电阻器可用于为低至高转换信号增加裕度。将R<sub>PULLUP</sub>放置在接收器附近,以获得最佳信号完整性。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图8:FET开关上拉拓扑</strong></p>

在确定该电阻器的尺寸时必须特别小心,因为使其更强有助于以牺牲高-低转换信号为代价的低-高转换信号。此外,该电阻器影响低到高和高到低转换信号的定时。

将线路从FPGA驱动器的VCC充电到VIH所需的额外时间(T)(加上裕度)可以在等式9中合理估计,拓扑图如图8和图9所示。V<sub>IH</sub>是接收器的,并且Vm是高于V<sub>IH</sub>的期望裕度。t 是时间常数RPULLUP x(C<sub>FET</sub>+C<sub>LOAD</sub>)。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>

表6:通过上拉电阻器充电的额外时间
<img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt="">
<img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt="">
<p align=<strong>图9:场效应管3.3V侧的示意图</strong></p>

上拉电阻器的存在会影响高到低的转换信号,因此驱动器阻抗必须足够低,以确保仍然满足VIL电平,减去一定量的裕度。公式10计算最大驱动器阻抗,并使用图10中的示意图作为参考。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图10:带上拉电阻器的驱动器驱动逻辑0的示意图</strong></p>

表7显示了基于各种上拉电阻值的最大驱动器阻抗值。

<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>表7:最大驱动器阻抗与上拉电阻器</strong></p>

<strong>I2C兼容性</strong>

使用具有适当电阻器上拉值的FET开关可以成功地对I2C信号进行电平转换。

<strong>4. 自动电平转换器</strong>

图11中的德州仪器TXB0108框图是一个自动方向感应转换器。自动感知传输方向的能力很容易进入双向系统。没有额外的控制信号,因为每个比特都有一个独立的方向传感器。该设备加起来为7.6ns

电路的传播延迟(3.3V至1.8V)。由于该设备的性质,如果线路上存在终端或其他重负载,可能会导致逻辑故障。终端和总线负载必须大于50 kΩ 以避免逻辑中断。因此,I2C和1Wire等开漏总线与这种类型的电平转换器不兼容。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图11:自动电平转换器拓扑</strong></p>

<strong>5.定向电平转换器</strong>

德州仪器SN74AVC20T245是一个20位双向电平转换器,根据DIR的逻辑将数据从A电平转换到B电平或从B电平转换到A电平(图12,第10页)。

SN74AVC20T245分为两条10位总线,每条总线具有独立的DIR控制。每个块还有一个输出使能,用于将端口A与B隔离。通过设备存在高达4.6ns的引脚到引脚传播延迟。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图12:20位双向电平转换器拓扑</strong></p>

<strong>6. CPLDs and FPGAs转换</strong>

各种Xilinx器件具有2.5V和3.3V的耐受性,可适用于双向电平移动应用。Xilinx CPLD非常适合。

Xilinx CPLD非常适合在3.3V之间进行电平转换,并且可提供多达117个I/O,以支持多达58位的总线。Spartan-6 FPGA也非常适合3.3V电平转换,可提供高达530个I/O。Virtex-6 FPGA也是可行的选择,可以从2.5V切换到2.5V。非易失性Spartan-3AN系列是另一个可行的选择。

使用CPLD或FPGA可以卸载7系列FPGA的其他逻辑和任务。通过Xilinx CPLD的引脚到引脚传播延迟为5ns,而对于FPGA,这取决于通过设备的路由。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>图13:CPLD或FPGA设计示例示意图</strong></p>

在CPLD或Spartan设备(图13)中,IOBUF被实例化以与7系列设备接口,而另一个IOBUF用于与2.5V/3.3V逻辑接口。信号从7系列FPGA或3.3V逻辑引入设备,以识别业务方向。

<strong>7.设计指导</strong>

表8给出了几种电平转换方法的比较。7系列FPGA中的高性能I/O组能够通过一系列选项适应更高电压的接口,这些选项几乎可以满足所有设计、成本和性能需求。
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570925-3024…; alt=""></center>
<p align="center"><strong>表8:设计指南比较</strong></p>