FPGA与MCU:您应该使用哪种处理器?

已创建:June 18, 2020
已更新:July 1, 2024
fpgavcmu 宽屏

我最近为一位客户组装了一个高功率电压转换器,在整个设计过程中,我一直试图避免使用MCU。一旦客户想要在电路板上添加调光功能,我不得不添加一个带有100,000次循环EEPROM的小组件。对我来说,这并不是什么大问题,因为在每块电路板上花费$0.33来添加这个功能是一件简单的事情,同时也允许系统以后重新配置。这让我思考了一个有趣的问题:什么时候应该选择FPGA而不是MCU?

我合作的设计师们生活和呼吸着Arm、STM、TI和Nordic的MCU模块/SoCs,这主要得益于制造商通过SDKs的支持。那么FPGA呢?你可以期待同样级别的支持吗,你应该选择FPGA作为嵌入式组件吗?这类问题的答案并不总是那么简单。以下是你在选择FPGA与MCU时应该考虑的事项,以及你在哪里可以为你的电路板找到新组件。

FPGA与MCU的能力

我记得当我第一次开始认真从事电子设计工作,并开始阅读不同组件的首字母缩写汤时,起初很难看出一些数字处理器之间的区别,但理解每个组件在不同应用中的限制对我有很大帮助。你可以编程进这些处理器的限制也对于理解何时选择每种类型的组件至关重要。

我将立即讨论这些方面,但我有时仍然会收到来自年轻设计师的偶尔问题:FPGA和MCU是什么?它们都提供计算能力,所以它们一定是完美的替代品,对吗?这取决于你需要执行的应用。

为了了解FPGA与MCU组件之间的区别,将它们与ASICs进行比较会有所帮助。ASIC中的“A”告诉你该组件是为更大系统中的特定应用而设计的。示例包括:

列表还在继续。任何ASIC都会为一系列狭窄的任务提供非常具体、有时是可编程的功能。ASIC中的集成级别也因芯片而异。微控制器在某种程度上也是可编程的,尽管可以执行的任务比ASIC的固件中内置的任务范围更广。MCU旨在适应性强,可以执行你能够使用制造商的SDK编程到设备中的任何任务。

FPGA的乐趣和复杂性在于其可定制性。我喜欢将FPGA视为可定制的ASIC。如果这个悖论让你感到困扰,只需知道在设计ASIC时,你可以将FPGA作为原型设计的一部分。这是因为FPGA上的所有逻辑块都是可配置的(它们基本上是SRAM单元)。你从头开始构建固件,并且可以定义任务在设备上的硬件级别如何执行。这是你无法通过MCU或ASIC做到的。

比较FPGA与MCU组件

FPGA vs. MCU vs. ASICs:特定与通用的光谱。

那么SoCs/SiPs/SoMs呢?

SoCs的有趣之处在于它们在计算能力上可以从特定到通用。组件制造商会将“SoC”、“SoM”或“SiP”这样的术语附加到新的集成电路上,只要这些任务过去需要多个分离的集成电路来执行。这些组件高度集成,并且它们可以在特定与通用的光谱上任何位置。

MPUs:更加通用

在上述图形中,FPGA右侧的位置将是MPUs。这些设备运行操作系统,与多个外设接口,并且是通用计算的主力。有些人可能会争论MCU和FPGA在通用性方面应该交换位置(见下文原因),但无论是FPGA还是MCU都不是为与MPU相同类型的通用计算设计的。

选择FPGA还是MCU

下表简要比较了MCUs和FPGAs的一些最重要的方面。每种类型的组件都有其优势,由设计师决定哪种最适合他们的系统。就我个人而言,我更喜欢MCUs,因为我有一些使用C语言的经验,而我从未学习过HDL。然而,只要你知道如何编码,FPGAs可以被编程以具有一些特殊ASICs的相同功能。

| | FPGA | MCU | | ---------- | ---------- | ---------- | | 重新编程| 在硬件级别完全可重新编程 | 变化:依赖于嵌入式操作系统,动态 | | 编程时间 | 较长:需要重新编码和重新编译一切到机器代码 | 较短:得到制造商SDK和库的帮助 | | 编程难度 | 视为学习曲线较陡 | 简单:任何熟悉常见语言的人都可以编码 | | 功耗 | 较高 | 较低 | | 并行化 | 可在编程期间配置 | 受硬件架构限制 | | 定点与浮点 | 配置为定点,但浮点可以在编程期间实现 | 两者都可访问 | | 语言 | 硬件描述语言(HDL) | C/汇编语言,如果RTOS支持则还有其他语言(例如Python) |

因为FPGA对于新手开发者来说通常被认为难以编程,所以MCU通常被视为嵌入式设备最佳处理器。这在很大程度上得益于开源社区的帮助,一些开源项目可以作为新产品的基本架构或概念验证使用。再加上制造商的支持,你就拥有了大量用于编程MCU的工具。

尽管编程FPGA存在学习曲线,但在固件架构的可配置性方面,它们要灵活得多。根据可用的查找表(LUTs)和算术逻辑单元(ALUs)的数量,可以将并行化编程到设备中。这使得FPGA在固件需要为非常特定的应用设计时成为一个很好的选择。例子包括人工智能中的推理、图像处理、硬件控制算法以及其他需要重复(或并行)计算的任务。

如果没有正确的组件,你的下一个嵌入式系统将无处可去,你可以使用像Octopart这样的电子零件搜索引擎找到所需的组件。高级过滤功能可以帮助你缩小到所需的组件,并且可以帮助你快速在FPGA与MCU之间为你的下一个系统做出选择。你可以在Octopart上找到FPGAMCU

通过订阅我们的新闻通讯,保持与我们最新文章的同步。

相关资源

返回主页
Thank you, you are now subscribed to updates.