现代FPGA是有史以来最复杂的集成电路之一,它们采用最先进的晶体管技术和顶尖的架构,以实现令人难以置信的灵活性和最高的性能。随着时间的推移和技术的进步,这种复杂性决定了,在用FPGA设计和实现系统时,需要做出某些妥协。这一点在电源中最为明显,FPGA每次更新换代,电源都要提高精度、灵活性、可控性、效率和故障感知能力,还要减小体积。
可能有些读者会质疑本文的标题,乍一看,说FPGA的护理和喂养(careandfeeding)似乎完全不合适。然而,对于这种反对意见的答案很简单:英语是一个有趣的语言。虽然人们对于careandfeeding这一说法何时开始流行莫衷一是,但人们都知道,这个说法起源于简单的农业时代,目前已经被人们普遍使用(滥用),指任何脆弱或不稳定的东西。在本文中,这一说法可谓一针见血。虽然对于FPGA是否需要喂养,人们充满争议,但我们可以肯定的是,FPGA的确需要护理!
FPGA电源要求(解读数据手册)
工程师应该将大部分时间用于编程他们不希望花费时间和精力去考虑如何设计合适的电源。实际上,最佳供电方案就是采用一种既能满足项目当前需求,又能达到项目升级发展需求的,强大、灵活且行之有效的设计方案。在此,我们将仔细考察一些重要的电源规格及其含义。
电压精度
内核电源电压是平衡FPGA功耗和性能的、最重要的关键要素之一。规格文档给出了一系列可接受的电压,但总的电压范围并不是问题的全部。与所有事物一样,需要进行权衡和优化。
表1是当下流行的AlteraArria10FPGA的内核电压规格示例。虽然这些数字是Arria10特有的数据,但它们代表了其他FPGA内核电压要求。电压范围为标称电压另加3.3%的容差。在此电压窗口内,FPGA会正常运行,但问题的全貌要复杂得多。
表1.AlteraArria10内核电压规格
注意标有SmartVID的行,其电压范围为0.82V至0.93V。这表示,当FPGA通过SmartVID2接口(详见后文)请求自身的内核电压时,FPGA可以接受的各种电压。该SmartVID规格表明了有关FPGA的一个基本事实:FPGA可以在不同电压下运行,具体取决于其特定的制造容差以及采用的特定逻辑设计。FPGA的静态电压可能各不相同。电源必须具备响应和适应能力。
设计目标是产生恰好能满足编程功能需求的性能水平,不消耗不必要的功率。根据半导体的物理特性以及Altera、Xilinx(图1)和其他公司公布的数据可知,动态和静态功率会随着内核VDD的增加而显著提高,因此我们的目标是确保,给FPGA提供的电压刚好达到其时序要求即可。功耗过大无助于提高性能。实际上,功耗过多会使情况变得更糟,因为晶体管泄漏电流随着温度的升高而增加,从而消耗更多不必要的功率。由于这些原因,当务之急是优化设计和工作点的电压。
图1.XilinxVirtexV功率与内核VCC。
这种优化过程需要非常精确的电源才能获得成功。必须将调节器误差纳入误差预算,并从可用于优化的可用电压范围中减去。如果内核电压降至要求电压以下,则FPGA可能因时序错误而发生故障。如果内核电压漂移至最大规格值以上,结果可能会损坏FPGA,或者可能会在逻辑中形成保持时间故障。为了防止所有这些情况,必须考虑电源容差范围,并且指令电压必须保持在规格限值以内。
问题是大多数电源调节器都不够准确。调节电压可能是指令电压容差范围内的任何电压,可能随负载条件、温度和老化而漂移。保证2%容差的电源可以在4%的电压窗口内任意调节电压。为了补偿电压可能比下限值低2%的问题,必须将指令电压提高到比时序要求2%的水平。如果调节器然后漂移到比指令电压高2%的水平,它将在比该工作点所需的最小电压高4%的水平运行。这仍然符合FPGA的指定电压要求,但却浪费了大量功率(图2)。
图2.电源调节器容差权衡。
解决办法是选择能支持更严格的电压容差的电源调节器。容差为0.5%的调节器可以在要求工作频率下,在更接近最小规格要求的范围内工作,并且保证与所需电压的偏离幅度小于1%。这种情况下,FPGA会正常工作,并且其功耗将达到该工作条件下的最低水平。
LTC388x系列电源控制器可在较宽的可配置电压范围内,保证调节输出电压容差优于0.5%。LTC297x系列电源系统管理器可保证调整后的电压调节器容差优于0.25%。在这些精度条件下,对于FPGA,显然都能使其功耗与性能之间达到最佳平衡。
热管理
就电源精度而言,一个更微妙的意义体现在热预算当中。由于静态功耗远远没有达到可以忽略不计的程度,因此FPGA即使在无所事事的情况下也会升温。温度升高会导致更多的静态功耗,从而进一步提高工作温度(图3)。向电源添加不必要的电压只会使该问题变得更加糟糕。不准确的电源需要工作电压保护段,确保有足够的电压来完成此项工作。由容差、系统组件变化和工作温度的变化引起的电源电压不确定性可能产生明显高于所需最小值的电压。当施加到FPGA时,这种额外的电压可能导致热效应,甚至可能在高处理负载下导致热失控。
图3.电源电流与工作温度的关系。
补救措施是选择一种非常精确的电源,该电源仅产生恰当且不超过必要的电压,这正是ADI电源系统管理(PSM)器件所擅长的。
SmartVID
SmartVID是Altera公司出品的一种技术,该技术用于按照FPGA本身的要求,为每个FPGA提供最佳电压。FPGA内部有一个寄存器,其中包含一个因器件而异的电压(已在出厂中编程),可保证FPGA高效运行。FPGA内部编译的一项IP功能可以读取该寄存器,并通过外部总线向电源发出请求,要求提供这个精确的电压(图4)。一旦达到电压要求,它就会在运行期间保持静止。
图4.AlteraSmartVID结构。
SmartVID应用对电源的要求包括特定的总线协议、电压精度和速度。总线协议是FPGA用于将其所需电压传送到功率调节器的几种方法之一。在可用的方法中,PMBus最为灵活,因为它可以满足最广泛的电源管理IC的需求。SmartVIDIP使用两个PMBus指令:VOUT_MODE和VOUT_COMMAND,用于命令符合PMBus标准的功率调节器达到正确的电压。
调节器的电压精度和速度要求包括自主引导电压(在PMBus激活之前),能每10毫秒接受一个新电压指令,在电压调整阶段每10毫秒能步进10mV,并且能在10毫秒的步进时间内稳定在目标电压30mV(~3%)范围内,最终升至指令电压并在FPGA工作期间保持静止。
虽然Altera使用的是SmartVID技术,但业界使用的其他类似技术也可以完成相同的任务。一种最简单的方法是在工厂测试每块电路板,并在电源的非易失性存储器中编程一个精确的电压,优化该特定电路板的性能。使用该技术时,不需要进一步干预,电源就能在正确的电压下工作。这是搭载EEPROM的电源管理器或控制器的优点之一。
LTC388x系列电源控制器可满足AlteraSmartVID的所有要求。此外,LTM4675/LTM4676/LTM4677Module调节器可以轻松满足这些要求,而且通过单一紧凑的形式提供了完整的解决方案。
时序收敛
任何逻辑模块的计算速度均取决于其电源电压。在限值范围内,电压越高,性能越快。我们已经看到,为什么不能采用简单的办法,即在最高电压下运行,保证获得最佳速度。另一方面,我们必须使工作电压足够高,能满足应用需求,如图5所示。
图5.FPGA工作频率与VDD之间的平衡关系。
图5的一个重要启示是,当特定设计达不到其逻辑时序要求并处于故障区域时可以采取哪些措施。通常,在将设计转化成硬件之前,很难准确定义正常工作与故障之间的界限,也无法预先确定它将在哪个特定电压下超过时序要求。唯一的选择是提前确定一个远高于最小值的电压,以浪费功率为代价来保证功能;或者设计一种灵活的电源,以在测试时适应硬件需求,甚至在采用SmartVID技术的情况下,能在加电时适应硬件需求。适应未知需求的能力使得ADIPSM器件的精度更具价值,因为FPGA设计师可以在实际设计阶段和任何开发阶段在功耗与性能之间进行权衡。