为什么要在 FPGA 中实现微控制器?

电器工程 微控制器 FPGA 设计
2022-01-12 07:48:51

我目前正在“调查”FPGA,他们能做什么,他们是如何做到的等等。

在不止一个地方(例如这里),我看到了使用 FPGA 实现简单微控制器的项目。

所以我的问题是:
我想知道,做这样的实现的目的是什么?为什么使用在 FPGA 中实现的微控制器而不是板载微控制器?什么是好处?也许还有什么缺点?

4个回答

如果您的项目将使用 FPGA 来完成繁重的工作,并且它有多余的容量,那么当您可以在 FPGA 中实现它时,为什么还要花费额外的芯片呢?

对于许多程序控制环境,用 C 等语言实现所需的设置比尝试用 VHDL 或 Verilog 实现要容易得多。通过将微控制器添加到 FPGA 中,您可以获得两全其美的优势 - VHDL / Verilog 等用于逻辑和接口系统的功能,以及用于核心控制和管理系统的程序语言的简单性。

好处:

  • 微控制器与任何自定义接口或片上 I/O 逻辑之间的快速接口。
  • 可定制的处理器和调试接口
  • 此外,控制逻辑通常比使用 VHDL 编写控制代码更容易

缺点:

  • 与仅在 FPGA 上具有自定义逻辑相比,可能需要更昂贵的 FPGA 来适应微控制器和自定义逻辑
  • 可能比单独芯片上的现成微控制器更难实现,尤其是在内存和内核复杂的情况下。

扩展 Majenko 和 PkP 的答案:

这种将 CPU 嵌入到 FPGA 设计中的趋势导致了几个异构系统,例如:

  • Xilinx 的 Zynq-7000 系列
  • Altera 的 Arria/Cyclon/Stratix SoC FPGA
  • MicroSemi 的 SmartFusion FPGA

市场上还有一款 Intel Atom + Altera FPGA 芯片:http ://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

大多数免费的 FPGA 微控制器都受到不良工具链支持的影响。嵌入式 ARM CPU 带有跟踪/调试支持、编译器(gcc 工具链)和完整的 linux 支持。以下是 FPL 2014 上的一项调查:http: //dx.doi.org/10.1109/FPL.2014.6927482

编辑 1:
赛普拉斯还有一类 PSoC(可编程片上系统)器件。这些设备包括一个微控制器(M8C、8051、ARM Cortex M0 或 Cortex M3)和经典的 SoC 集成 I/O 控制器或设备(I²C、SPI、定时器、CAN、DAC、ADC、OpAmp ......)一个可编程的部分。这部分不像经典的 FPGA 那样精细可编程,但它可以用来实现额外的 I/O 控制器或内置的硬件加速器。PSoC 允许您在设计中使用模拟组件。
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

PSoC 概述:( 来源:electronicdesign.comPSoC

如果您只需要一个微控制器,而没有 FPGA,那么将 FPGA 与微控制器固件一起使用将是不寻常的。然而,并非所有项目都朝着这个方向发展。许多任务都明确需要 FPGA,但最终会遇到一个确实不适合 VHDL 解决方案的任务。有时,问题最好由通用 CPU 处理。或者,有时情况正好相反:某些任务根本不适合通用 CPU——它们需要并行性。

那个时候,你可以选择。您可以为您的设备添加一个额外的芯片,或者您可以意识到您在未使用的 FPGA 上有一堆备用门。许可一点 IP,您就可以立即拥有一个正常工作的通用 CPU!

另一个有趣的细节是您可以自定义一些微控制器固件。我知道嵌入 Power PC 的项目,但去掉了浮点支持所需的所有门,以及很大一部分分支预测。这使它足够小,可以与基于 VHDL 的固件并排安装。