目录
电源供电看似微不足道,但对于特定的FPGA应用来说却并非如此。如果FPGA周围缺乏足够退耦,将会显著降低FPGA设计的可靠性。更为糟糕的是,大部分问题都不是那种可以容易复现且在实验环境下也很难发现的(尤其是在没有很好理;解故障本质时出现的问题)。最可怕的故障就是那种无法复现的故障。
1、供电要求
现代FPGA的封装都非常小,而且通常都需要多种供电电压和复杂的供电要求。虽然可以找到很多关于供电方面的应用文档和白皮书,但目前还没有针对每一个FPGA应用都非常完美的供电和退耦方案。原因就在于FPGA本身可以被广泛地配置成各种不同的功能、I/O标准以及系统时钟速率,对应这些不同配置的电源要求可能会不同。处于电磁屏蔽环境下的小型低速器件将不会对供电有显著影响,而且过多的退耦将只会增加不必要的成本。相反,那些有高电磁干扰或由高速信号产生过度瞬变的应用对系统供电会产生重大影响,而且如果对这些影响考虑不周将会导致器件出现故障。
不同器件之间,FPGA对于供电的整体要求会有差异,但是除了这些不同要求外,还有单调性、软启动、电压爬升控制(最小和最大爬升时间)、峰峰值纹波、变化波动率、用于时钟管理的干净电源以及上电顺序和跟踪等供电要求是值得在此进行讨论的。
单调性(或线性)要求,是指在上电过程中,电源轨是单调爬升而不会掉头往下掉(也称单调非负特性)。也就是说,电源必须始终具有正斜率(或零斜率)。例如,图1-8显示了一个电源的时域曲线。从图中可以看到,该电源就违反了上述原则。作为比较,再看图1-9中的曲线,该曲线显示此电源具有个单调爬升曲线,曲线斜率总是正的(或者更精确地说是非负斜率,或曲线具有非减特性)。
软启动要求是指在FPGA上电时定义了可以提供给FPGA的浪涌电流,或者说定义了电源上电时的输出浪涌电流。目前市面上很多电源模块都内置了软启动功能,如果所选择的电源内部并无此功能,那么可以在PCB.上添加一个外部电路来满足这一要求。
图1-10所示为一个典型的软启动电路,如果电源电压爬升太快,导通晶体管栅极_上的极性将会自我调整以增大供电电源的输出阻抗,从而可以降低电源电压的爬升速度。该功能模块也直接关系到FPGA对电源的爬升时间的要求。
最大和最小爬升时间要求定义了FPGA上电过程中供电电压的上升速率。电压爬升太快将会导致前述的浪涌状况:而如果爬升太慢,则会使电压长时间徘徊在阈值电压附近,从而可能使器件无法正确复位,如图1-11所示。
对于一些如时钟控制等敏感的模拟元件来说,有时候对供电电压纹波的变化率有一定的要求,如图1-12所示。换句话说,电源输出必须足够干净,必须滤除某个阈值范围以上的所有高频分量
敏感的模拟电路要求干净的供电,通常需要使用线性电源,尤其是那些在电源轨上滤除了主要高频分量的电源器件( 整个带宽内只剩线性电压自身)。举例来说,FPGA的PLL、Transceiver等 模块中模拟部件都要求单独使用线性电源供电。
通常来说,一个好的设计应该像图1-13那样,给电源供电设计加入电压上电顺序和电源跟踪。这来源于FPGA的I/O电压必需要在核心电压上电以后才能上电的基本规律。大部分IC包括FPGA都会有内置的电路以防止未知逻辑值被驱动到输出的灾难性故障发生,但是这些问题不会总是能被成功消除(不管器件手册怎么说),而且作为一个好的设计行为,FPGA核心电压就应该在I/O上电之前上电。
2、PCB设计的电源和地叠层分布
3、退耦电容
退耦电容可以在电源轨波动时为其提供少量的瞬态能量。大部分PCB设计者在培训的时候都被告知要为电源添加电容,而且要考虑将这些电容放到靠近IC电源引脚位置。问题是,很多时候设计者(特别是FPGA设计者)并未完全理解如何添加这些电容,所以电源退耦策略并未被正确执行,且浪费了并未给电路带来任何实际好处的电容。举例来说,很多设计者只是简单地给供电电源添加一种类型的电容,然后在PCB上所有的电源引脚附近复制这种动作。通常大家会在PCB周围广布o.1μF的电容,这样就为电源稳压器输出放置了大容量电容。还有-些其他PCB设计者会使用各种尺寸的电容,但是却没有理解为什么要添加这些电容,他们只是按照经验以一定比例使用这些电容,而不是比较恰当地使用这些电容以获取最佳的退耦效果。
Xilinx已经发布了一个关于电源分配系统(PDS)设计的应用手册,即XAPP623。同样,Altera也发布了类似的PCB电源分配网络(PDN)设计应用手册,即AN574。建议读者学习这些手册以深入理解本节主题。后面将详细描述可能会发生在FPGA设计者身上的这些问题。
本文来自《FPGA设计实战演练》