机器人技术项目何时应选择FPGA?
#1 楼
我不确定有关开发工具的链接问题中有什么使您认为它们还不成熟。确实,其中大多数是专有的而不是开源的。但是我认为,即使在三年前提出该问题时,这些工具还是相当成熟的。如今,Xilinx,Altera和Lattice都具有可免费使用的开发环境,这些开发环境可在Windows和Linux上运行,并具有32位和64位支持。如果您坚持使用开源Icarus Verilog可以做很多事情。但是我个人还是会使用供应商专用的工具。FPGA不仅仅是一堆可配置的触发器。考虑Altera NIOS II。一个能够运行Linux的32位软核处理器。混合和匹配来自OpenCores或Xilinx,Altera或Lattice的通信和其他外围设备,您已经构建了一个定制的微控制器,其中包含了您所需的一切,不需要的东西。您甚至可以为NIOS II处理器编写C代码,并在需要速度的情况下直接在FPGA硬件中实现某些功能。这样高的水平对您来说足够了吗?
FPGA的初始投资成本很高。但是在设计过程的后期添加功能更便宜,更容易。这就是“前瞻性”设计的意思。考虑一个项目,您想在该项目中向机器人添加一些额外的电机,但您的微控制器上的PWM发生器已用完。你是做什么?添加另一个微控制器?购买单独的PWM芯片并将其连接到通信接口?如果您所有的通讯接口都在使用中怎么办?使用FPGA,几乎可以将其减少为复制和粘贴操作。无需购买FPGA即可购买更多额外的硬件,将设计扩展到包括新功能的过程变得更加容易,便宜和快捷。
但是使用FPGA的最大原因可能是速度。我不是在谈论纯时钟速度。但是,当您需要同时进行很多事情时。正如Gossamer所提到的,并行性是FPGA真正擅长的领域。滤波器设计特别受益于这种并行架构。如果您需要过滤并响应快速变化的传感器,则需要FPGA。他们也很擅长视频处理,因为这也得益于并行处理。
以这种高速手持机器人为例。它需要处理来自高速(每秒1000帧)机器视觉摄像头以及触觉传感器的视频,并通过在几毫秒内操纵多个执行器来做出响应。这种类型的项目是您需要选择FPGA的时候。
评论
$ \ begingroup $
您能澄清一下“ FPGA的初始投资成本很高”吗?这里相关:价格看起来很低。您的意思是高昂的培训费用或其他数字吗?
$ \ endgroup $
– hhh
13年4月3日在16:27
$ \ begingroup $
@hhh我不是在谈论原始芯片成本。我说的是开发成本。考虑在PandaBoard上使用微控制器开发套件。包含ARM Cortext A9,价格为181美元。可以容纳A9(如Cyclone V)的FPGA开发板价格为1,099美元。
$ \ endgroup $
–embedded.kyle
13年4月3日在17:14
$ \ begingroup $
@hhh当然还有便宜的FPGA开发套件。但是我试图找到一些度量标准,用以比较两个截然不同的事物。因此,具有(几乎)相同处理能力的开发套件大约要多10倍。
$ \ endgroup $
–embedded.kyle
13年4月3日在17:16
$ \ begingroup $
@hhh Mouser上最便宜的ARM是$ 0.80。最便宜的FPGA为2.80美元。
$ \ endgroup $
–embedded.kyle
13年4月3日在17:22
$ \ begingroup $
@hhh那只手是最前沿的研究,可能运行着数十万甚至数十万美元的定制设备。通常,视频处理趋向于高端。看到这里和这里。而且两者都可能无法处理1kfps的视频。更像是30-60fps。您列出的开发板没有任何视频输入。尽管它肯定可以控制执行器并处理触觉传感器。绝对可以模仿您链接的手。
$ \ endgroup $
–embedded.kyle
13年4月3日在18:39
#2 楼
我认为对于FPGA的真正含义以及在设计中使用它的时间可能会有误解。因此,让我先解释一下这一部分。FPGA,当人们可能想拥有一个FPGA时...
冒着简化的风险,FPGA仅仅不过是碰巧是“可重新配置”的处理器。 br />
为什么有人想要一个“可重新配置”的微处理器?好吧,因为制造一个硅处理器的成本太高了,以至于不能用一个,两个甚至两百个芯片来制造它。您需要运行成千上万的芯片以使其在经济上可行。
由于第一次设计都不是没有错误的,因此进行硅布线有效地使一家公司至少要进行两次甚至更多的测试运行,而这一切都需要大量的制造成本。
从本质上讲,这意味着很少有商业公司会对设计和制造方面具有吸引力的芯片以外的任何其他事物感兴趣。
因此,如果您提出了出色的设计可以证明定制微处理器的合理性,那么您可以尝试通过在FPGA中实现将您的想法付诸实践,实际的芯片只是门的集合,而“程序”(通常是VHDL或Verilog)安排在FPGA中将这些门连接到实际的微处理器中。
但是,这完全是一条完全不同的(微处理器设计!)之路。...
这促使我建议
... FPGA对机器人技术不是必不可少的-至少在一开始时
机器人技术所需要的是一个过程要么。 FPGA只是一种特殊的处理器(可重新配置)。
您问您是否“应该”?那么这取决于您的知识以及您真正的兴趣所在-微处理器设计优先还是机器人技术优先?
如果微处理器是您的激情,那么请务必!对于定制微处理器而言,机器人技术是一个很好的应用领域-可能是视觉皮层,其中许多并行决策路径直接在硬件中处理,或者在硬件中具有特殊的张量乘法-基本上任何通用处理器都无法很好地处理现成的东西。
但是,如果您要进行FPGA中的微处理器设计,那么您当然需要具备您提到的所有低级知识,并且更多—因为从根本上讲,您将设计自己的处理器。即使您的目标应用程序可能是机器人技术,也与机器人技术没有任何关系。
大多数设计人员可能会找到一个可以满足他们大部分需求的现有处理器。
所以我认为您可能不需要FPGA。
入门路线图:从商用功能到(也许)FPGA ...
第一个目标我认为,是试图将所有创意概念构建到可以正常工作的机器人中(这本身就是一个艰巨的挑战)。
如果发现设计中存在特定且重要的处理瓶颈,那么下一个目标是优化处理器(仍然是商用芯片)的选择/设计。可能更大,更快(需要权衡功耗,散热)。也许较小的专用芯片可以处理特定任务并与大脑连接(在算法/逻辑复杂性之间进行权衡)。
只有当您只是无法使用商业芯片来处理功能时,您才可以考虑在FPGA内实现专用处理器,因为届时您将拥有非常明显的优势希望通过“自己动手”获得收益,并且您可以专注于实现这些功能,并为其余设计提供正确的接口。
否则,您很可能会偏离主要目标(我将假设实际上是要构建一个机器人!)
最重要的是:FPGA会干扰您的入门工作机器人技术-直到您步入机器人技术之路-并在此过程中的某个地方获得了数字电子/微处理器设计的强力支持。
评论
$ \ begingroup $
我可以想到许多示例,例如视频处理,其中FPGA的并行处理对于提高速度和获得更准确的结果至关重要。人们尝试使用单CPU实时实现嘈杂的虹膜检测的可见故障。否。FPGA有其自身的特定领域,例如高灵巧的机械手或精确/快速的视频处理。我不能那样理解FPGA和微处理器。它们是不同的兽,有着自己的好/坏方面。错误?知道FPGA的这种好地方是否在某处列出吗?
$ \ endgroup $
– hhh
13-4-6在23:09
$ \ begingroup $
您肯定是对的,FPGA在很多领域都有优势-我没有在我的回答中排除这些领域。问题在于您在经验曲线上的位置,以及对于要从使用FPGA获得的特定优势的了解程度如何。如果您不知道答案,那么您可能不需要一个答案! (这与下面雅各布的回答相呼应。)
$ \ endgroup $
–阿萨德·易卜拉欣
13年4月7日在9:43
#3 楼
我曾经在机器人项目中与FPGA和微控制器一起工作过,现在我要说的是:无论是执行任务的人还是最有经验的人。如果你们两个人都很好,那么您就不会问自己这个问题。如果您不太了解,那么接下来的要点是:I / O端口是否需要复杂的时序?三相电动机控制可以有这样的要求。 FPGA在这里有一点优势。
您可以并行化超低延迟算法吗?在这里,FPGA并不是真正与微控制器竞争,而是与嵌入式PC竞争。我将大多数东西用于嵌入式PC,但是对于某些特定应用,FPGA可能会带来优势。例如,密集立体声处理通常在FPGA中完成。许多相机都使用FPGA处理数据流。
混合解决方案也是经常使用的。要么有两个芯片,那么一个微控制器用于程序代码,而一个FPGA用于IO或其他任务。实际上,还有许多嵌入了微控制器的FPGA。
我不会像其他一些文章那样对FPGA如此苛刻,但通常也会争辩说,除非您对VHDL有很好的了解,使用微控制器或什至更好的嵌入式PC会更好。
评论
$ \ begingroup $
您能否展示一些示例项目,以帮助您了解使用FPGA进行哪种操作以及使用微控制器进行哪些操作?例如,假设有一个跟随行的机器人:它在平坦的清洁表面上与单个微控制器一起工作得很好,直到需要图像锐化/卷积/等的更多模糊行。如果在森林(或其他嘈杂的地面)上划一条线,那将是更加困难的挑战(我怀疑是否可以使用fpga处理)。您是否完成了使用fpga进行图像/视频实时处理的任何现实世界的机器人项目? VHDL +1。
$ \ endgroup $
– hhh
13-4-6在22:53
评论
如果您需要并行性,那么可以使用FPGA。此外,您可以定制自己的“芯片设计”并“轻松”升级某些功能,而无需使用新的硬件芯片。我看到了有关从摄像机实时检测多目标的示例。当然,对于较小的项目,这是开销。