为什么FPGA无处不在?


65

阅读关于FPGA的信息,如果我理解正确的话,它们基本上是完全可配置的逻辑门电路。因此,可以与他们一起设计任何东西。可以以最定制的方式设计一切,因此可以以微控制器更高效的方式达到相同的目的。有了它,看起来FPGA可以随时随地击败微控制器。所以我的问题是,如果FPGA确实如此出色,是什么使它们无法比微控制器流行得多?从这个角度来看,在我看来,FPGA应该早就淘汰了微控制器。那么为什么不这样呢?是成本,编程FPGA的困难还是完全其他?



您可能还需要阅读此线程:electronics.stackexchange.com/questions/4382/...
汤姆L.

43
直升机比汽车更灵活,那么为什么有人仍然使用汽车上下班呢?
奥林·拉斯特罗普

15
因为所有FPGA公司都为您提供了极为可怕的专有工具,这些工具具有巨大的学习曲线,大多数开发人员都无法使用。将其替换为完全开放的工具链,它们可能无处不在。
R..15

@R .. ...或至少不是绝对不得已的选择。
Dan Neely

Answers:


94

您会忽略很多影响设计选择的因素:

  1. 费用。对于相同的逻辑复杂度,FPGA比微处理器贵。

  2. 逻辑复杂度。与直接使用微控制器中的相同数量的门相比,可执行代码可以实现更为复杂的逻辑。

  3. 易于发展。编写可执行代码比为所有小问题定义逻辑要容易得多。即使是微不足道的微控制器项目也具有数千行代码。开发等效逻辑定义将花费更长的时间,并且调试和验证也将更加困难。

  4. 耗电量。由于FPGA旨在用于微处理机无法处理的高速操作(否则您将使用微处理机),因此它们并未针对低功耗进行优化。这使它们不适用于某些低功耗应用。一些微控制器的睡眠电流低于1 µA,并且在慢速时钟频率下仅能以几µA工作。尝试找到可以做到这一点的FPGA。

与微控制器相比,FPGA的主要优势在于它们速度更快,并且可以并行执行更多操作。除此之外,您宁愿使用微型。因此,在设计过程中,通常是从微型芯片开始,然后在确实需要速度和/或并发高速运行时勉强使用FPGA。即使这样,您也只能在FPGA中实现对速度要求严格的部件,而将较低的速度控制功能等保留在微控制器中。


2
“即使那样,您也只能在FPGA中实现对速度至关重要的部件,而将较低的速度控制功能等保留在微控制器中。” 那是因为FPGA的开发很痛苦,对吧?
Utku

2
@Utku:是的,尽管上面的原因1-2通常也适用,但这就是上面的原因3。对于同一任务,FPGA的成本效益不如微型处理器,除非该任务具有如此高的速度要求,以至于微型微处理器无法做到。
Olin Lathrop 2015年

4
很容易看出这个答案是从CPU用户的角度编写的。“当您确实需要速度和/或并发高速操作时,不情愿地使用FPGA”。他们不是不好。在有些应用中,甚至不会考虑通过FPGA使用CPU。
斯坦里

26
我通常的解释方式是:在CPU上并行执行操作很困难,在FPGA中串行执行操作很困难。
本杰克逊

14
关于FPGA要记住的一件事:逻辑的可重配置性是有代价的-FPGA实现的等效逻辑要比FPGA本身复杂得多。与硬逻辑中的等效实现相比,所有查找表,路由矩阵组件等消耗的硅面积和功耗要大得多。这意味着,与在微控制器,通用CPU和FPGA本身中直接在硅中构建相同的功能相比,FPGA在所有性能指标(活动和空闲功耗,密度,时钟速度等)上都更差。
alex.forencich

45

我在这里尚未详细说明的一个区别是,FPGA的使用和运行方式与处理器完全不同

FPGA确实擅长于一遍又一遍地执行完全相同的任务。例如,处理视频,音频或RF信号。或路由以太网数据包。或模拟流体流动。在任何情况下,您都会非常快速地抛出大量相同类型的数据,并且您希望以相同的方式处理所有这些数据。或者您想重复运行相同的算法。FPGA实际上没有启动和停止的“任务” [1],它的全部工作是对打开的所有数据执行相同的操作。它不会改变齿轮,也不会做其他任何事情。它是最终的生产线工人。它将永远重复尽可能快地重复同一件事。

另一方面,CPU是灵活性的缩影。可以对它们进行编程以完全执行任何操作,并且可以对它们进行编程以同时执行多种不同的操作。它们具有启动和停止的任务,它们变速,多任务,不断切换和改变功能。

FPGA和CPU完全相反。CPU的商品是时间-它必须更快地完成工作。您的应用程序运行得越快越好。

FPGA的商品就是空间。您的FPGA很大,只有太多可用的门来执行您想要的任务。在大多数情况下,问题不仅仅是速度[2]。

可以使FPGA像CPU一样工作。您可以将CPU IP核放入FPGA中,但是由于其他人已描述的原因,很难证明其合理性[3]。FPGA和CPU是对立的,两者各有优缺点,因此各有千秋。


笔记:

1)FPGA可以设计为执行不同的任务,但是即使那样,它也将是为其预先设计的特定编号。

2)速度也是FPGA设计规范。这实际上是速度和大小之间的权衡。

3)将CPU放入FPGA的操作比较频繁,但是要根据具体应用情况,视情况而定。例如,如果您需要一个非常小的微控制器并具有额外的FPGA空间。

最后:答案很简单-FPGA的使用方式千差万别,非常复杂,这是对它们一般使用方式的简要概述。


1
“或者路由以太网数据包。或者模拟流体流动。” 尽管据我所知,ASIC通常用于前者(至少在批量生产中),而GPU更快,更便宜,功耗更低,并且后者更容易编程。
reirab 2015年

1
@reirab这些都是FPGA可以很好完成的操作的例子,之所以想到这些是因为它们都是我个人为FPGA编写的应用程序。剥猫的方法不止一种。设备的选择取决于许多设计因素。
斯坦里2015年

5
使用FPGA可以执行ASIC的任何操作都可以降低功耗和降低边际生产成本。FPGA的优势在于原型设计和小批量生产,因为ASIC的前期成本要高得多。这意味着只有在完成设计后,您才需要进行大量设计,后者才有意义。
Dan Neely

奇怪的是,考虑到您可以在FPGA内轻松实现CPU(任何认真的CS学生至少应该这样做一次),所以说CPU比FPGA更灵活。FPGA的概念比CPU低得多,因此直接比较它们并没有多大意义。
Voo

这个答案真的困扰我。“ CPU的商品就是时间”,“ FPGA的商品就是空间”。??ASIC和CPU是截然相反的,而FPGA位于中间,两者兼有。
令人愉快的

20

正如Olin所说,诸如Micro之类的东西在许多任务上效率更高,而且几乎总是可以找到FPGA出现在任何地方使用的Micro。所用硅的面积(以非线性方式转化为成本)和功耗要小得多。因此,在FPGA上实现“软” MCU并不少见,但是这种微控制器的成本和性能却难以承受。

一些现代的FPGA包含一个或多个“硬”核,例如无处不在的ARM系列。而且,它们可能包含专用的内存块,因为从门外制作内存确实效率很低。在典型的FPGA中,32位微核仅占硅片面积的一小部分,因此您可以了解相对成本。

开发非常困难,并且IP往往不如Micros和专用SOC解决方案那样自由可用,例如LCD控制器,PCI接口,以太网MAC。部分原因是通过公开HDL逻辑描述,他们转移了设计,而不仅仅是设计的实例。另一个原因是性能取决于FPGA中逻辑的布局,这在开发过程中需要付出很多努力。

更为复杂的是,大多数复杂的FPGA均基于RAM进行配置,并且处理成本高昂,因此需要外部非易失性存储器来存储板载任何MCU的配置和程序存储器。上电时必须将该内存加载到RAM中。

FPGA是工具箱中非常有用的工具,但它们不会在短期内普遍取代MCU或ASIC。


10

硅在工作中的最佳用途是ASIC,没有浪费,但是它们具有巨大的学习曲线,NRE和灵活性。

有两种将灵活性构建到芯片中的方法。a)拥有一个空间优化的ALU,并一遍又一遍地用于存储的数据。这就是所谓的MCU,它需要大面积的“无所事事”的芯片,程序存储器,从单元到单元运行的宽总线以及总线访问开关。b)具有细粒度的逻辑,并具有一些可选的空间优化部件,例如乘法器,小型RAM和简单CPU。这就是所谓的FPGA,它需要“不做任何事情”的大量硅片,可编程开关和连接线。

显然,采用这些结构,MCU最适合可分解为串行块的任务,而FPGA最适合需要高速并行操作的任务。当应用程序繁重且成本由硅成本决定时,这就是自然使用这两种类型的方式。

当应用重量轻但体积大时,成本主要由封装而不是硅决定,并且任何一种都是可行的。Altera具有一些非常小的非常低功耗的FPGA,可以与极少数的MCU竞争。

对于小批量的应用程序,开发成本往往占主导地位,并且只要它们具有速度,MCU就可以胜出。


9

在功耗和芯片利用率方面,FPGA与微处理器相比非常差。

FPGA在逻辑配置电路中消耗了大部分硅面积,这不适用于微控制器。可用的互连必须比微处理器的专用实现所需的互连更多。

FPGA的功耗比诸如微处理器之类的专用ASIC的功耗更高,因为逻辑的实现效率不高。

在专用ASIC中,可以在FPGA中实现的任何功能都可以更高效,更便宜,功耗更低,电路板空间更小等方式完成。假设卷的大小足以抵消NRE。


如果目标是实现微处理器的全部功能,请确定。一旦完成一项特定任务,就可以在微控制器中识别出很多浪费的硅片-可能是加密引擎在项目中浪费了空间。还是CAN外设?还是浮点单位?FPGA的最佳利用率较低,但是您也不会像微控制器那样在大范围内遭受0%的利用率。(另一方面,从功率的角度来看,使用时钟门控时,使用0%的大型电路是非常理想的)
Ben Voigt 2015年

8

基于微处理器的dsystem,以及后来的微控制器,已经能够通过使用其中的许多独立电路来在不同的时间完成许多不同的任务而实现极大的功能。我认为将1976年设计的街机机Tank与在世界第二台微处理器控制的游戏机Atari 2600上运行的Combat游戏进行比较很有启发。以最低的成本实施类似Tank的游戏;可以通过插入不同的ROM盒来玩不同的游戏,这是一个很好的奖励。

游戏Tank允许两名玩家在屏幕上驾驶坦克并向对方开枪。它具有每个坦克X和Y位置的“滑点”计数器,每个球员的射击X和Y位置的“滑点”计数器,每个球员的角度和每个球员的射角的向上/向下计数器,每个球员的得分的计数器,X和Y光栅光束位计数器,以及在这些东西之上的许多控制电路。它具有从ROM提取比赛场数据并显示它的硬件,还具有从两个ROM提取两个玩家的坦克的形状并从ROM显示分数的硬件。

Atari 2600拥有一个滑动计数器,用于分别记录两个玩家对象,两个导弹对象中每个对象的水平位置,以及一个称为“球”的附加对象,该对象在Combat中不使用,但在其他一些游戏中使用。对于每个播放器对象,它都具有输出存储在8位锁存器中的模式的硬件以及每个播放器的“延迟”八位锁存器,每当其他播放器的播放器被复制到主8位锁存器时,它就会输出。形状已更新。它还具有一个水平光束位置计数器,以及一个20位运动场形状的锁存器,该锁存器每条扫描线输出到屏幕两次,右侧副本显示为左侧的重复或反射。它具有检测碰撞的硬件,但由于碰撞而无法执行任何操作。它 没有任何对象的垂直位置的硬件,也没有光栅束的垂直位置(!),也没有与得分保持,得分显示,游戏时间等相关的任何硬件。

2600省略了硬件的所有功能都由墨盒中的软件处理。每条扫描线只需要对照光栅的位置检查每个对象的垂直位置一次,每帧最多更新一次玩家的得分和剩余游戏时间即可,玩家的得分存储在运动场上方的扫描线上因此可能共享用于运动场等的相同硬件。

在FPGA中实现类似“坦克”这样的游戏的通常方法是使用单独的电路来实现不同的功能,这与1976年的街机游戏机几乎相同。这种方法可行,但要使用大量的硬件。基于微处理器的方法可以消除一半以上的硬件,而增加一个微处理器,这可能比其替换的硬件包含更少的电路(2600可以实现比Tank更复杂的游戏,而Tank需要更多的硬件如果他们不使用微处理器)。

在需要一种可以同时执行许多简单任务的设备的情况下,FPGA非常有用。但是,在需要执行许多任务但不需要同时处理它们的情况下,基于微处理器(或基于微控制器)的系统通常会更好一些,因为它们使少量使用变得容易电路以实现大量不同的目的。


你也不能埋雷吗?;-)
Scott Seidman

@ScottSeidman:街机上有一些位于硬接线位置的地雷,它们被标记为X。对于2600来说,在同时显示玩家和导弹的同时将地雷显示为X会非常困难。如果您不介意地雷以60Hz的频率闪烁,则可以使用后来发现的一些技巧,但是需要更多代码(COMBAT是一个2K盒式磁带,几乎已经装满了,即使未使用的两个字节也是如此) $ FFFE / FFFF的BRK / IRQ向量用于保存两个字节的表!)。
超级猫

如果Combat愿意放弃弹跳射击等其他选择,则Combat可能有可能将这些地雷作为闪烁的方块来实现。但是我认为Joe Decuir(程序员)在选择可玩选项方面做得很好。我的一个疑惑是,如果轰炸机是2倍而不是4倍的精灵,双翼飞机与轰炸机可能会更有趣。
超级猫

5

这完全是成本。当微型器件的价格低至30美分时,便宜的FPGA的价格就在5美元左右。成本似乎并不高,但是当您制作一百万个放屁的新颖玩具以10美元的价格出售时,FPGA的价格扼杀了您的底线。


6
成本当然是一个问题,但是说完全不同的是成本太幼稚,就像认为所有微控制器都可以被FPGA取代一样。
Olin Lathrop 2015年

@OlinLathrop如果成本不是问题,那么微控制器可以做的任何事情都可以由FPGA完成。FPGA具有容纳软微控制器内核的能力已证明了这一点。问题在于,可以容纳这种内核的FPGA至少要比仿真微内核的内核昂贵,而且数量级要昂贵。
vini_i 2015年

成本可能意味着比单位价格高得多,但这就是您要投入此分析的全部内容。
Scott Seidman 2015年

2
我不知道你是故意假装错过了重点,还是只是密密麻麻。无论哪种方式,您都在回应没人说的话。所有人都认为FPGA成本更高,而成本是一个问题。但是,再次宣称这是唯一的问题只是错误的。如果我给您提供了许多免费的Micros和FPGA,那么仍然有很多重要的原因,为什么您会在许多设计中在FPGA上使用Micros。
Olin Lathrop 2015年

4
@sleb:不,成本差异不仅仅取决于数量。在FPGA中,每个交付的门所需的硅面积比在微控制器等定制芯片中要大得多。栅极互连层的所有可配置性都占用了硅片面积。批量生产时,芯片的成本全都与其硅面积有关。
奥林·拉斯特罗普

5

只是要补充其他非常好的答案,我认为FPGA的采用也要解决问题:例如,对于神经形态设备,FPGA板变得无处不在,因为对并行性的需求非常大,这很重要。 FPGA。

如果您推断神经形态设备的趋势,您可以想象并行化基于或迫切需要的其他领域可能会更多地采用FPGA。因此,也许FPGA不会在消费级产品中变得无处不在,但它可能适用于特定领域,因为它似乎正在出现在神经形态设备中。


虽然这可能是正确的,但对于完整的答案来说似乎还不够。也许将其作为评论会更好,或者您可以对此进行扩展。

这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论。
Funkyguy 2015年

3
@Funkyguy,这确实回答了问题。他们实质上是在说FPGA并非无处不在,因为普通的消费类应用不需要并行性,而并行性正是FPGA的强项。
斯坦里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.