FPGA有很多I / O点之类的优点,但您又需要使用触发器在非常低的水平上思考问题,并在事情还不成熟的领域率先使用-例如,在此处查看有关开发工具的问题FPGA-这是我目前的理解!现在,FPGA已被用于在此处的机器人手中创造出色的灵活性。现在有人在推销FPGA来实现快速原型设计和“前瞻性”设计,例如此处,我还不完全了解它们:如果您不需要很多IO点来处理诸如传感器之类的东西,那么为什么要为机器人选择FPGA?所以
什么时候应该为机器人技术项目选择FPGA?
FPGA有很多I / O点之类的优点,但您又需要使用触发器在非常低的水平上思考问题,并在事情还不成熟的领域率先使用-例如,在此处查看有关开发工具的问题FPGA-这是我目前的理解!现在,FPGA已被用于在此处的机器人手中创造出色的灵活性。现在有人在推销FPGA来实现快速原型设计和“前瞻性”设计,例如此处,我还不完全了解它们:如果您不需要很多IO点来处理诸如传感器之类的东西,那么为什么要为机器人选择FPGA?所以
什么时候应该为机器人技术项目选择FPGA?
Answers:
我不确定有关开发工具的链接问题中有什么使您认为它们还不成熟。确实,其中大多数是专有的而不是开源的。但是我认为,即使三年前问这个问题的时候,工具还是相当成熟的。如今,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的时候。
我认为对于FPGA实际上是什么以及在设计中何时使用FPGA可能会有误解。因此,让我先解释一下这一部分。
FPGA以及何时需要一个FPGA ...
冒着简化的风险,FPGA仅仅是碰巧是“可重新配置”的处理器。
为什么有人想要一个“可重新配置”的微处理器?好吧,因为制造一个硅处理器的成本太高了,以至于不能用一个,两个甚至两百个芯片来制造它。您需要批量运行数千个芯片才能使其在经济上可行。
由于没有设计在第一轮就没有漏洞,因此采用硅工艺有效地使一家公司至少要进行两次甚至更多的测试运行,而这一切都需要付出巨大的制造成本。
从本质上讲,只有极少数的商业公司会对设计和制造制造感兴趣,而不是具有足够商业吸引力的芯片。
因此,如果您提出了一个出色的设计来证明定制微处理器的合理性,那么您可以尝试通过在FPGA中实现这一想法来实现小额预算,其中实际的芯片只是门的集合, “程序”(通常是VHDL或Verilog)将这些门安排到实际的微处理器中。
但这是一条完全不同的(微处理器设计!)道路。
这使我建议
... FPGA 对机器人技术不是必不可少的-至少在一开始
机器人需要的是处理器。FPGA只是一种特殊的处理器(可重新配置)。
您问您是否“应该”?那么这取决于您的知识以及您真正的兴趣所在-微处理器设计优先还是机器人技术优先?
如果微处理器是您的激情,那么请务必!机器人技术是自定义微处理器的重要应用领域-可能是视觉皮层,其中许多并行决策路径直接在硬件中处理,或者特殊的张量乘法在硬件中-基本上,任何通用处理器都无法很好地处理现成的东西。
但是,如果您要使用FPGA进行微处理器设计,那么您当然需要具备您提到的所有低级知识,以及更多的知识-因为从根本上说,您将设计自己的处理器。即使您的目标应用程序可能是机器人,这也与机器人无关。
大多数设计人员可能会找到可以满足他们大部分需求的现有处理器。
所以,我想你也许并不需要一个FPGA。
入门路线图:从商业功能到(也许)FPGA ...
我认为首要目标是尝试将所有创意概念构建到可以正常工作的机器人中(这本身就是一个艰巨的挑战)。
如果发现设计中存在特定且重要的处理瓶颈,那么下一个目标是优化处理器(仍然是商用芯片)的选择/设计。可能更大,更快(需要权衡功耗,散热)。也许较小的专用芯片可以处理特定任务并与大脑连接(在算法/逻辑复杂性之间进行权衡)。
仅当您拥有某些功能而无法处理商用芯片时,您才可以考虑在FPGA内部实现专用处理器,因为届时您将希望通过“自行开发”获得非常明显的优势。 ”,您可以专注于实现这些功能,并为其余设计提供正确的界面。
否则,您很可能会偏离主要目标(我要假设的是实际制造机器人!)
底线:FPGA是机器人技术入门的分心者-直到您步入机器人技术之路-并在此过程中已经在数字电子/微处理器设计中获得了一些突破。
我曾经在机器人项目中同时使用过FPGA和微控制器,现在我要说的是:无论是执行任务的人都是经验最丰富的人。如果您对两者的了解都很好,那么您就不会问自己这个问题。如果您对这两个都不很了解,那么以下几点将成为您的重点:
还经常使用的是混合解决方案。要么有两块芯片,那么一个微控制器用于程序代码,而一个FPGA用于IO或其他任务。实际上,还有许多嵌入了微控制器的FPGA。
我不会像其他一些文章那样对FPGA如此苛刻,但通常也会争论,除非您非常了解VHDL,否则最好使用微控制器甚至更好的嵌入式PC。