为什么 FPGA 不普及?

电器工程 微控制器 FPGA
2022-01-06 00:17:37

阅读有关 FPGA 的信息,如果我理解正确的话,它们基本上是完全可配置的逻辑门电路。正因为如此,一个人可以用它们设计任何东西。一个人可以以最定制的方式设计所有东西,因此,可以使用微控制器以更有效的方式实现相同的目标。有了这个,它看起来就像 FPGA 在任何时候、任何一天都击败了微控制器。所以我的问题是,如果 FPGA 真的这么棒,是什么阻止了它们比微控制器更流行?从这个角度来看,在我看来,FPGA 似乎早就应该淘汰微控制器了。那么为什么不是这样呢?是成本、对 FPGA 进行编程的难度,还是完全是其他原因?

4个回答

您忽略了许多影响设计选择的因素:

  1. 成本对于相同的逻辑复杂性,FPGA 比 micros 更昂贵。

  2. 逻辑复杂性可执行代码可以实现比直接使用的微控制器中相同数量的门复杂得多的逻辑。

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

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

FPGA 与 micros 相比的主要优势在于它们速度更快,并且可以并行执行更多操作。除此之外,您宁愿使用微型。因此,在设计过程中,您通常从 micro 开始,然后在您真正需要速度和/或并发高速操作时不情愿地使用 FPGA。即使这样,您也只能在 FPGA 中实现速度关键部分,而将较低速度的控制功能等留在微控制器中。

我在这里没有详细说明的一个区别是 FPGA 的使用和行为方式与处理器完全不同。

FPGA 非常擅长一遍又一遍地完成完全相同的任务。例如,处理视频、音频或射频信号。或路由以太网数据包。或模拟流体流动。在任何情况下,您都会非常快地向您抛出大量相同类型的数据,并且您希望以相同的方式处理所有这些数据。或者您想重复运行相同的算法。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 的使用方式多种多样且复杂,这是对它们一般使用方式的简要概述。

正如 Olin 所说,像 micro 这样的东西对于许多任务来说效率更高,而且你几乎总能在任何出现 FPGA 的地方找到 micro 使用。所用硅的面积(以非线性方式转化为成本)和功耗要少得多。出于这个原因,在 FPGA 上实现“软”MCU 的情况并不少见——但这种微控制器的成本和性能并不令人印象深刻。

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

开发要困难得多,而且 IP 往往不像微型和专用 SOC 解决方案那样免费提供——例如 LCD 控制器、PCI 接口、以太网 MAC。部分原因是通过公开 HDL 逻辑描述,他们正在转移设计,而不仅仅是设计的实例化。另一个原因是性能取决于 FPGA 中的逻辑布局,这在开发过程中需要付出很多努力。

更复杂的情况是,大多数复杂的 FPGA 都是基于 RAM 进行配置的,并且工艺成本使得需要外部非易失性存储器来存储板上任何 MCU 的配置和程序存储器。该存储器必须在上电时加载到 RAM 中。

FPGA 是工具箱中非常有用的工具,但它们不会很快取代 MCU 或 ASIC。

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

有两种方法可以在芯片中构建灵活性。a) 拥有一个空间优化的 ALU,并在存储的数据上反复使用它。这被称为 MCU,需要大面积的“不做任何事情”的硅片、程序存储器、从一个单元到另一个单元运行的宽总线以及总线访问开关。b) 具有细粒度的逻辑,带有一些可选的空间优化部分,如乘法器、小型 RAM 和简单的 CPU。这被称为 FPGA,需要大面积的“不做任何事情”的硅片、可编程开关和连接线。

显然,对于这些结构,MCU 最适合可分解为串行块的任务,而 FPGA 最适合需要高速并行操作的任务。当应用重,成本以硅成本为主时,自然会采用这两种。

当应用是轻量级但大批量时,成本主要由封装而非硅决定,任何一种都是可行的。Altera 有一些非常小的非常低功耗的 FPGA 来与一美元一手的 MCU 竞争。

对于小批量应用程序,开发成本往往占主导地位,如果 MCU 有速度的话,MCU 会胜出