FPGA器件需要有电源电压的能量供应才能工作。尤其对于规模较大的器件,其功耗也相对较高,其供电系统的好坏将直接影响到整个开发系统的稳定性。所以,设计出高效率、高性能的FPGA供电系统具有极其重要的意义。
不同的FPGA器件、不同的应用方式会有不同的电压电流的需求。如图2.4所示,简单的归纳,可以将FPGA器件的电压需求分为三类:核心电压、I/O电压和辅助电压。
核心电压是FPGA内部各种逻辑电路正常工作运行所需要的基本电压,该电压用于保证FPGA器件本身的工作。通常选定某一款FPGA器件,其核心电压一般也都是一个固定值,不会因为电路的不同应用而改变。核心电压值可以从官方提供的器件手册中找到。
I/O电压顾名思义便是FPGA的I/O引脚工作所需的参考电压。在引脚排布上,FPGA与ASIC最大的不同,便是FPGA所有的可用信号引脚基本都可以作为普通I/O使用,其电平值的高低完全由器件内部的逻辑决定。当然了,它的高低电平标准也受限于所供给的I/O电压。任何一片FPGA器件,它的I/O引脚通常会根据排布位置分为多个bank。同一个bank内的所有I/O引脚所供给的I/O电压是共用的,可以给不同的bank提供不同的I/O电压,它们彼此是不连通的。因此,不同bank的不同I/O电压为FPGA器件的不同接口应用提供了灵活性。这里举一个例子,Cyclone III系列器件的某些bank支持LVDS差分电平标准,此时器件手册会要求设计者给用于LVDS差分应用的bank的I/O电压供1.5V电压,这就不同于一般的LVTTL或LVCOMS的3.3V供电需求。而一旦这些用于LVDS传输的I/O bank电压供给为1.5V,那么它就不能作为3.3V或其他电平值标准传输使用了。
除了前面提到的核心电压和I/O电压,FPGA器件工作所需的其它电压我们通常都称为辅助电压。例如FPGA器件下载配置所需的电压,当然了,这里的辅助电压值可能与核心电压值或I/O电压值是一致的。很多FPGA的PLL功能块的供电会有特殊要求,也可以认为是辅助电压。由于PLL本身是模拟电路,而FPGA其他部分的电路基本是数字电路,因此PLL的输入电源电压也很有讲究,需要专门的电容电路做滤波处理,而它的电压值一般和I/O电压值不同。
目前比较常见的供电解决方案主要是LDO稳压器、DC/DC芯片或电源模块。LDO稳压器为电流输出要求不高的应用提供了简单廉价的解决方案;而基于DC/DC芯片的解决方案能够保证较高的电源转换效率,散热容易一些,输出电流也更大,是大规模FPGA器件的最佳选择;而电源模块简单实用并且能够有更稳定的性能,只不过价格通常比较昂贵,在成本要求不敏感的情况下,是FPGA电源设计的一种最为简单快捷的解决方案。总而言之,对于电源方案的选择以及电源电路的设计,一定要事先做好前期的准备工作,如以下几点是必须考虑的:
● 器件需要供给几档电压,压值分别是多少?
● 不同电压档的最大电流要求是多少?
● 不同电压档是否有上电顺序要求?(大部分的FPGA器件是没有此项要求的)
● 电源去耦电容该如何分配和排布?
● 电源电压是否需要设计特殊的去耦电路?
关于设计者需要确定的各种电气参数以及电源设计的各种注意事项,其实在器件厂商提供的器件手册(handbook)、应用笔记(application notes)或是白皮书(white paper)中一般都会给出参考设计。所以,设计者若希望能够较好的完成FPGA器件的电源电路设计,事先阅读大量的官方文档是必须的。
说到电源,也不能不提一下地端(GND)电路的设计,FPGA器件的地信号通常是和电压配对的。一般应用中,统一共地连接是没有问题的,但也需要注意特殊应用中是否有隔离要求。FPGA器件的引脚引出的地信号之间通常是导通的,当然也不能排除有例外的情况。如果漏接个别地信号,器件通常也能正常工作,但是笔者也遇到过一些特殊的状况,如Altera的Cyclone III器件底部的中央有个接地焊盘,如果设计中忽略了这个接地信号,那么FPGA很可能就不干活了,因为这个地信号是连接FPGA内部的很多中间信号的地端,它并不和FPGA的其它地信号直接导通。因此,在设计中也一定要留意地信号的连接,电源电路的任何细小疏忽都有可能导致器件的罢工。