何时在机器人技术中使用FPGA?


12

FPGA有很多I / O点之类的优点,但您又需要使用触发器在非常低的水平上思考问题,并在事情还不成熟的领域率先使用-例如,在此处查看有关开发工具的问题FPGA-这是我目前的理解!现在,FPGA已被用于在此处的机器人手中创造出色的灵活性。现在有人在推销FPGA来实现快速原型设计和“前瞻性”设计,例如此处,我还不完全了解它们:如果您不需要很多IO点来处理诸如传感器之类的东西,那么为什么要为机器人选择FPGA?所以

什么时候应该为机器人技术项目选择FPGA?


如果您需要并行性,那么可以使用FPGA。另外,您可以定制自己的“芯片设计”并“轻松”升级某些功能,而无需使用新的硬件芯片。我看到了有关从摄像机实时检测多目标的示例。当然,对于较小的项目,这是开销。
Gossamer

Answers:


4

我不确定有关开发工具的链接问题中有什么使您认为它们还不成熟。确实,其中大多数是专有的而不是开源的。但是我认为,即使三年前问这个问题的时候,工具还是相当成熟的。如今,XilinxAlteraLattice都具有可免费使用的开发环境,它们可以在Windows和Linux上运行,并具有32位和64位支持。如果您坚持使用开源Icarus Verilog可以做很多事情。但是我个人会坚持使用特定于供应商的工具。

FPGA不仅仅是一堆可配置的触发器。考虑使用Altera NIOS II。一个能够运行Linux的32位软核处理器。混合和匹配来自OpenCoresXilinxAlteraLattice的通信和其他外围设备,您已经构建了一个定制的微控制器,其中包含了您所需的一切,而您不需要的一切。您甚至可以为NIOS II处理器编写C代码,并需要速度的情况下直接在FPGA硬件中实现某些功能。这么高的水平对您来说足够了吗?

FPGA具有很高的初始投资成本。但是在设计过程的后期添加功能更便宜,更容易。这就是“前瞻性”设计的意思。考虑一个项目,您想在该项目中向机器人添加一些其他电机,但您的微控制器上的PWM发生器已用完。你是做什么?添加另一个微控制器?购买单独的PWM芯片并将其连接到通信接口?如果您所有的通讯接口都在使用中怎么办?使用FPGA,几乎可以将其减少为复制和粘贴操作。无需额外购买FPGA额外的硬件即可轻松扩展设计,使其包含新功能,从而扩展设计。

但是使用FPGA的最大原因可能是速度。我不是在谈论纯时钟速度。但是,当您需要同时发生许多事情时。正如Gossamer所提到的,并行性是FPGA真正擅长的。滤波器设计特别受益于这种并行架构。如果您需要过滤并响应快速变化的传感器,则需要FPGA。他们也很擅长视频处理,因为这也得益于并行处理。

这个高速的手机器人为例。它需要处理来自高速(每秒1000帧)机器视觉摄像头和触觉传感器的视频,并通过在几毫秒内操纵多个执行器来做出响应。这种类型的项目是您需要选择FPGA的时候。

大规模并行视觉处理


您能否澄清一下“ FPGA的初始投资成本很高”?这里相关:价格看起来很低。您是说培训成本高还是其他数字?
hhh 2013年

1
@hhh我不是在谈论原始芯片成本。我说的是开发成本。考虑一下PandaBoard等微控制器开发套件。包含ARM Cortext A9,价格为181美元。可以容纳A9(如Cyclone V)的FPGA开发板的价格为1,099美元。
Embedded.kyle

@hhh当然还有便宜的FPGA开发套件。但是我试图找到一些度量标准,用以比较两个截然不同的事物。因此,具有(几乎)相同处理能力的开发套件大约要多10倍。
Embedded.kyle

@hhh Mouser上最便宜的ARM是$ 0.80。最便宜的FPGA为2.80美元
Embedded.kyle

2
@hhh这只手是最前沿的研究,可能运行着数十万(甚至数十万)美元的定制设备。通常,视频处理趋向于高端。看到这里这里。而且两者都可能无法处理1kfps的视频。更像是30-60fps。您列出的开发板没有任何视频输入。尽管它肯定可以控制执行器并处理触觉传感器。绝对可以模仿您链接的手。
Embedded.kyle

2

我认为对于FPGA实际上是什么以及在设计中何时使用FPGA可能会有误解。因此,让我先解释一下这一部分。

FPGA以及何时需要一个FPGA ...

冒着简化的风险,FPGA仅仅是碰巧是“可重新配置”的处理器。

为什么有人想要一个“可重新配置”的微处理器?好吧,因为制造一个硅处理器的成本太高了,以至于不能用一个,两个甚至两百个芯片来制造它。您需要批量运行数千个芯片才能使其在经济上可行。

由于没有设计在第一轮就没有漏洞,因此采用硅工艺有效地使一家公司至少要进行两次甚至更多的测试运行,而这一切都需要付出巨大的制造成本。

从本质上讲,只有极少数的商业公司会对设计和制造制造感兴趣,而不是具有足够商业吸引力的芯片。

因此,如果您提出了一个出色的设计来证明定制微处理器的合理性,那么您可以尝试通过在FPGA中实现这一想法来实现小额预算,其中实际的芯片只是门的集合, “程序”(通常是VHDL或Verilog)将这些门安排到实际的微处理器中。

但这是一条完全不同的(微处理器设计!)道路。

这使我建议

... FPGA 对机器人技术不是必不可少的-至少在一开始

机器人需要的是处理器。FPGA只是一种特殊的处理器(可重新配置)。

您问您是否“应该”?那么这取决于您的知识以及您真正的兴趣所在-微处理器设计优先还是机器人技术优先?

如果微处理器是您的激情,那么请务必!机器人技术是自定义微处理器的重要应用领域-可能是视觉皮层,其中许多并行决策路径直接在硬件中处理,或者特殊的张量乘法在硬件中-基本上,任何通用处理器都无法很好地处理现成的东西。

但是,如果您要使用FPGA进行微处理器设计,那么您当然需要具备您提到的所有低级知识,以及更多的知识-因为从根本上说,您将设计自己的处理器。即使您的目标应用程序可能是机器人,这也与机器人无关。

大多数设计人员可能会找到可以满足他们大部分需求的现有处理器。

所以,我想你也许并不需要一个FPGA。

入门路线图:从商业功能到(也许)FPGA ...

我认为首要目标是尝试将所有创意概念构建到可以正常工作的机器人中(这本身就是一个艰巨的挑战)。

如果发现设计中存在特定且重要的处理瓶颈,那么下一个目标是优化处理器(仍然是商用芯片)的选择/设计。可能更大,更快(需要权衡功耗,散热)。也许较小的专用芯片可以处理特定任务并与大脑连接(在算法/逻辑复杂性之间进行权衡)。

仅当您拥有某些功能而无法处理商用芯片时,您才可以考虑在FPGA内部实现专用处理器,因为届时您将希望通过“自行开发”获得非常明显的优势。 ”,您可以专注于实现这些功能,并为其余设计提供正确的界面。

否则,您很可能会偏离主要目标(我要假设的是实际制造机器人!)

底线:FPGA是机器人技术入门的分心者-直到您步入机器人技术之路-并在此过程中已经在数字电子/微处理器设计中获得了一些突破。


我可以想到许多示例,例如视频处理,其中FPGA的并行处理对于提高速度和获得更准确的结果至关重要。人们尝试使用单CPU实时实现嘈杂的虹膜检测的失败。不会。FPGA有其自身的特定领域,例如高灵巧的机械手或精确/快速的视频处理。我不能那样理解FPGA和微处理器。它们是不同的兽,有着自己的好/坏方面。错误?知道FPGA的这种好地方是否在某处列出吗?
hhh 2013年

您肯定是对的,FPGA在很多领域都有优势-我没有在我的回答中排除这些领域。问题在于您在经验曲线上的位置,以及对要从使用FPGA获得的特定优势的了解中有多清晰。如果您不知道答案,那么您可能不需要一个答案!(这与下面雅各布的回答相呼应。)
阿萨德·易卜拉欣

1

我曾经在机器人项目中同时使用过FPGA和微控制器,现在我要说的是:无论是执行任务的人都是经验最丰富的人。如果您对两者的了解都很好,那么您就不会问自己这个问题。如果您对这两个都不很了解,那么以下几点将成为您的重点:

  • I / O端口上是否需要复杂的时序?三相电动机控制可以有这样的要求。FPGA在这里有一点优势。
  • 您可以并行化超低延迟算法吗?在这里,FPGA并不是真正与微控制器竞争,而是与嵌入式PC竞争。我将大多数东西用于嵌入式PC,但是对于某些特定应用,使用FPGA可能会占优势。例如,密集立体声处理通常在FPGA中完成。许多相机使用FPGA来处理数据流。

还经常使用的是混合解决方案。要么有两块芯片,那么一个微控制器用于程序代码,而一个FPGA用于IO或其他任务。实际上,还有许多嵌入了微控制器的FPGA。

我不会像其他一些文章那样对FPGA如此苛刻,但通常也会争论,除非您非常了解VHDL,否则最好使用微控制器甚至更好的嵌入式PC。


您能否展示一些示例项目,以帮助您了解使用FPGA做什么事情以及使用微控制器做什么事情?例如,假设有一个跟随行的机器人:它在平坦的清洁表面上与单个微控制器一起工作得很好,直到需要图像锐化/卷积/等的更多模糊行。如果在森林(或其他嘈杂的地面)上划一条线,那将是困难得多的挑战(我怀疑是否可以使用fpga处理)。您是否完成了使用fpga进行图像/视频实时处理的任何现实世界的机器人项目?VHDL +1。
hhh 2013年
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.