我目前正在“研究” FPGA,它们可以做什么,如何做等。
在多个地方(例如在这里),我看到了使用FPGA实现一个简单微控制器的项目。
所以我的问题是:
我想知道,进行这种实现的目的是什么?为什么要使用在FPGA中实现的微控制器而不是板上的微控制器?有什么好处?也许还有缺点?
我目前正在“研究” FPGA,它们可以做什么,如何做等。
在多个地方(例如在这里),我看到了使用FPGA实现一个简单微控制器的项目。
所以我的问题是:
我想知道,进行这种实现的目的是什么?为什么要使用在FPGA中实现的微控制器而不是板上的微控制器?有什么好处?也许还有缺点?
Answers:
好处:
缺点:
如果您的项目要使用FPGA进行繁琐的工作,并且具有备用容量,那么为什么仅在FPGA中实现额外的芯片又为什么要花钱呢?
对于许多过程控制环境,用C之类的语言来实现所需的设置要比用VHDL或Verilog来实现要容易得多。通过将微控制器添加到FPGA中,您将获得两全其美的优势-VHDL / Verilog等的强大功能可用于逻辑和接口系统,而过程语言可简化用于核心控制和管理系统。
除了对马延科和PkP的回答:
将CPU嵌入FPGA设计的这种趋势导致了几种异构系统,例如:
市场上还有一种英特尔凌动+ 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概述:
如果您只需要一个微控制器,而没有FPGA,那么将FPGA与微控制器固件一起使用是不寻常的。但是,并非所有项目都朝这个方向发展。许多任务显然需要FPGA,但最终遇到了实际上不适合VHDL解决方案的任务。有时,仅由通用CPU最好地解决问题。或者,有时情况却相反:有些任务根本不适合通用CPU,它们需要并行处理。
那时,您可以选择。您可以在设备中添加一个额外的芯片,或者您可以意识到FPGA上没有使用一堆备用门。许可一点IP,就可以立即拥有一个可以工作的通用CPU!
另一个有趣的细节是您可以自定义一些微控制器固件。我知道一些嵌入式Power PC的项目,但这些项目剥夺了浮点支持所需的所有功能,并去除了分支预测的大部分内容。这使其足够小,可以与基于VHDL的固件并排安装。
在FPGA中实例化微处理器或微控制器有几个有效的理由。这是三个:
您只想了解处理器的操作。FPGA为您提供了无限的方法来探查处理器在执行代码时发生的情况。这只是为了学习。
您正在实现一个大型系统,该系统需要FPGA的硬件级速度(比在微处理器上执行的软件要快),但是您的设计需要一个复杂的状态机,而使用在Xilinx PicoBlaze等简单处理器上运行的软件则更容易实现该状态机。比硬件FSM中的要好。请注意,在最新的FPGA处理技术中,PicoBlaze的运行速度可高达240MHz,而且PicoBlaze处理器每两个时钟周期执行一条指令,因此您将获得一个快速,一致的状态机,该状态机可通过软件轻松编程。
扩展(2),您需要一个可以处理中断的状态机。处理器对此非常有帮助,因为它们已经知道如何在服务中断之前和之后安全地保存和恢复状态。
这是一个警告:如果您想要一个具有标准指令集和大型开发生态系统的快速处理器,那么您需要一个快速的,硬核的处理器,例如Xilinx Zynq SoC中的两个ARM Cortex-A9。Zynq SoC中的FPGA架构仍然允许您实例化可编程逻辑中的更多处理器内核,但是ARM Cortex-A9可以运行标准操作系统(例如Linux)和标准IDE(例如Android)。
在ARM Cortex-A9和PicoBlaze之间,可以使用许多来源的可编程逻辑来实现许多软处理器。有些人喜欢使用自己的处理器,这是一项很棒的教育活动。但是,微处理器需要软件开发工具,并且与创建处理器本身相比,创建/调试这些工具需要付出大量的工作量。您必须始终权衡定制微处理器的潜在优势与创建/调试处理器内核和工具所需的时间和精力。
全面披露:我为Xilinx工作,但我可以肯定地说我没有声明FPGA始终是解决方案。如果50美分的微控制器可以胜任,那么最好使用它。FPGA和Zynq SoC适用于需要超出微控制器能力的繁重工作的项目。
有时,您可能使用FPGA是因为您拥有要在已经过时且不可用的物理处理器上运行的软件,因此您需要将其复活。尽管不兼容引脚(尽管已经看到了DIP样式的安装座),但是这可以使您获得精确的周期。在商品微处理器上进行纯软件仿真的可能性不大。例如apple2fpga