如何选择FPGA开发板。2020年指南

2020-09-12 00:05:11

让我们面对现实吧,如今要选择一台规格泛滥的PC并非易事,更不用说FPGA了。只有当需要非凡的性能时,才会出现使用FPGA来解决任何计算问题的问题。由于这一事实,FPGA在其功能规范和构建中可以非常特定于手头的应用。这导致FPGA内的逻辑结构以及与外部世界一起提供的接口的种类繁多。然而,本指南旨在根据您的经验和要求将您引向正确的方向(这并不意味着丢弃数百种不同选项的列表)。

还有其他的帖子提供了大量的表格,列出了详尽的FPGA开发板列表,让您(经过一年或两年的研究)做出选择。如果这是您喜欢的,我会附加一些链接来帮助您入门。

如果你已经熟悉了FPGA的各种花哨花哨,并且只是在寻找一些好的建议,你可能更喜欢跳到建议列表中。如果没有,请继续阅读,了解一些关于FPGA世界的非常重要的东西,以及如何选择更好的!

FPGA总体上已经有很多方面决定了它是否适合特定问题以及编程的简易性,现在再加上功能丰富的开发板的复杂性,该开发板具有各种外设、接口、连接器和内存选项,您手头有一项艰巨的任务,需要在数百种不同的型号之间做出选择。(编者注:这是一种功能丰富的开发板,功能丰富,具有各种外设、接口、连接器和内存选项,需要在数百种类型之间做出选择,这是一项艰巨的任务。

SoC代表片上系统(System-on-Chip),简单地说就是将各种交互技术构建在同一芯片(/芯片)上。您可以在您的手机、电视和计算机上随处可见SOC。在FPGA开发板的上下文中,基于SOC的系统意味着硬件具有两个组件,即可编程逻辑的海洋(FPGA)和以硅实现的独立于可编程FPGA逻辑的硬件处理器核心。在可编程逻辑和处理系统(Xilinx行话)之间创建接口,以实现两个区域之间的通信。

如果你是一个寻找方向的绝对初学者,你绝对应该选择基于SOC的系统,因为它增加了巨大的额外学习潜力。话虽如此,您最初的几个数字设计项目不应该涉及处理器核心或任何类型的软件编程。为此,您可以忽略处理器逻辑,将您的设计转储到可编程区域,以便将其用作普通FPGA。随着您的进步,您可以通过引入处理器内核来直接在可配置硬件中读取和写入数据,从而为您的设计增加更高级别的复杂性。您还可以尝试编写固件、驱动程序、Linux操作系统和更高级别的抽象,从而获得真正的嵌入式系统设计整体体验。即使是最简单的基于SOC的电路板也会让您忙碌很长一段时间。

由于处理器+FPGA结构非常适合于HLS、异构计算和算法的部分加速等范例,因此希望探索数字设计领域的软件工程师也会对这些电路板产生浓厚的兴趣。将FPGA逻辑视为SOC的扩展将是未来非常重要的事情,并且是对您的时间的一次很好的投资。

或者,如果您是初学者,但只想学习数字设计,或者您希望购买一块电路板来补充您在大学里的学习,您可以在实验室使用特定的电路板,在只有FPGA的基于非SOC的电路板上获得更多的基本FPGA资源(LUT、BRAM、DSP)。通过这种方式,您可以省钱,并且手头的系统不那么复杂,您可以更好地理解它。如果您计划实现一些占用大量资源的特定内容,情况也是如此,那么您最好选择只有FPGA和所需外围设备的开发板。

在这篇帖子的末尾,r/fpga用户u/ndBroadbent展示了几个开源项目的资源使用情况,这可以让你很好地了解通常有多大的项目。

对于初学者有一个重要的注意事项:拥有一块SOC电路板,所有的处理器逻辑都围绕在FPGA周围,这会让你偏离可编程逻辑的基本概念,以及你应该如何学习它。我强烈建议您在最初的几个项目中完全不考虑与处理器有关的任何事情,只使用设备的FPGA部分。还要注意,到今天为止,任何优秀的FPGA工程师都会告诉您,任何形式的HLS都不足以用于现实世界的项目。对于初学者来说更是如此。不要落入用C++/Python编写代码并在FPGA上运行的陷阱。这些天来,很多YouTube似乎都在为初学者推广这样的东西,这实在是太可悲了。如果你有钱花,最理想的(也是更有趣的)学习策略是先使用独立的FPGA板,然后再升级到SOC。

FPGA是在高速接口上工作的优秀工具。因此,您可能需要查看特定开发板提供的接口和IO选项。这一点很重要,因为如果电路板具有开箱即用的特定接口,供应商可能会为这些接口提供必要的文档和示例设计。作为初学者,这可以省去您无数的挠头和拉扯头发的麻烦(相信我,这在FPGA领域是很常见的)。这并不是说不能手动将较新的接口添加到主板上,但当涉及到以太网、HDMI、PCIe等高速接口时,可能很难自己添加它们并期望可靠的性能。SPI、UART等低速端口始终可以使用GPIO手动添加,因此不要让它们成为任何电路板的交易断路器。

您应该寻找一些常见的网络接口,如HDMI、VGA、以太网、PCIe等高速接口,以及SPI、CAN、I2C等低速外围设备。

虽然对于初学者来说不那么重要,但另一组可能有用的接口是模拟和传感器接口,如ADC、DAC、相机接口、音频编解码器等。如果特定项目依赖于从外部世界获取数据,这些都是非常小众的功能,可以决定项目的成败。

无论出于何种原因,如果您选择没有太多外围设备的主板,最好选择安装了行业标准的Pmod或FMC连接器的主板,这样当您将来确实需要其他接口时,可以非常容易地添加它们。这些标准连接器从本质上将FPGA载板与IO引擎(作为子卡插入)分离,使您能够将相同的FPGA板与多种IO设计一起使用,而无需重新设计板。

调试FPGA设计可能是一件困难的事情。与MCU不同,在MCU中,您可以在代码中的任何位置放置打印语句和断点,而在FPGA世界中没有这样的等价物,这通常会导致极大的挫折感。如果您的主板上有开关和LED,一种解决方法是可行的。它们提供了一种将信号提取到真实世界的简单方法,并为您提供了一些状态寄存器的状态指示,这些状态寄存器可以帮助您可视化和调试(如状态机的当前状态或CPU设计中的特定标志)。但是,这不应该是两个电路板之间的决定因素,因为使用GPIO连接器添加LED、按钮、开关和LCD非常容易,不需要太多努力。

资源计数是决定选择FPGA设备的另一个重要指标。我们所说的资源是指电路板上可用的可编程逻辑元件的数量。这些可以是LUT(Altera分配)、块RAM、DSP和IO块。更复杂、更华丽的设备,如Xilinx的Versal系列,可以有很多其他的东西,如AI、视频和音频内核等。注意这些资源编号很重要,因为它们决定了您可以成功安装到FPGA上的最大项目。由于不同供应商和不同家庭的底层CLB体系结构不同,很难为特定项目提供固定的计数。

FPGA将配置(位流)数据存储在FPGA内的SRAM(通常)单元上。由于SRAM是一种易失性存储器,所以每次重新打开电路板的电源时,程序都会丢失。需要PC支持才能在电源关闭后重新编程,为防止出现这种情况,供应商在板载提供基于闪存(在较旧的主板中为EEPROM)的存储。闪存是一种非易失性存储形式,即使在没有电源的情况下也可以保存位流数据。每次电路板在重新通电后出现时,FPGA都会检查闪存中的比特流,并用它对自己进行编程。在大多数董事会中,这通常是默认给出的,但也可能是需要注意的重要事项。

另一种重要的内存形式是外部板载易失性存储,它通常以DDR SDRAM的形式提供,如果您正在构建出于任何原因需要在本地存储数据的应用程序,这是非常有用的。由于FPGA结构内的块RAM存储非常少并且非常宝贵,因此具有可以在合理的时间量内写入和读取的DDR是非常必要的。越多越好!本教程和本教程可以让您开始使用需要编码以与DDR芯片通信的接口。

与软件或基于MCU的设计不同,数字设计和FPGA的通用资源在数量上要少得多,堆栈溢出也没有等价物。如果你完全被困在某件事情上,这可能意味着在随机论坛上问问题,希望有人也会面临类似的问题,或者放弃项目本身,直到你学到一些能让你摆脱困境的东西。作为初学者,最好由开发板的供应商或制造商提供参考设计、电路板原理图和学习指南。

-Xilinx的Zynq Book是一个非常好的学习资源的例子,不仅适用于主板,而且适用于SOC+FPGA生态系统。寻找这样的资源,因为它们可以通过提供通过随机谷歌搜索很难找到的高质量信息,让你的生活真的真的很容易。

-此外,一些主板和生态系统周围的社区比其他主板和生态系统更丰富,例如,DE10-Nano主板周围有一个庞大且不断增长的社区,这要归功于使用该主板模拟复古游戏机的Mister项目。

对于许多人来说,这可能是破坏交易的决定,因为有经验的人强烈喜欢一套工具而不是另一套工具。但对于初学者来说,这更多的是基于易用性的决定,而不是对特定公司的从属关系。话虽如此,Xilinx的工具在某些方面可以说比Intel/Altera的工具更好。对于初学者来说,Xilinx生态系统总体上有过多的问答论坛、白皮书和用户指南,它们总是引导您获得某种形式的帮助。其他工具链就不能这么说了。

另外,你可以从Xilinx得到很多东西,例如,MicroBlaze软CPU是免费的,即使是高性能的内核,高级综合是免费的,逻辑探针分析仪是免费的,等等。仅仅是免费的webpack软件,你真的可以走很长的路。其他生态系统就不能这样说了,尽管存在替代方案和变通办法。

在很大程度上,Xilinx和Altera提供了相同级别的低级控制,只是如果你想要的话,Xilinx有更多的高级选项可用,但是如果你不关心它们,它们可以被忽略。

近来,开源EDA世界也取得了相当大的进步。像IceStorm这样的工具流对一些FPGA的体系结构进行了逆向工程,并创建了比专有工具更快且在许多方面更好的工具链。与最小的Xilinx软件(ISE-16 GB)相比,整个IceStorm工具链的重量约为300MB,对于剥离版本来说甚至更小。Github上的这个回购似乎跟踪了所有这些用于FPGA的开源工具。但是,这些工具仅适用于其文档中提到的某些FPGA和电路板。所以在选择它们之前一定要考虑它们的缺点。

还有一件事需要注意,那就是来自最新工具的支持。例如,Xilinx中7系列以下的任何FPGA都仅受现已过时的ISE工具支持。最好事先避开这类问题。

应该有一种方法可以将最终的比特流从您的PC传输到FPGA板上。随着时间的推移,已经制定了几个标准来辅助这一过程。最常见的是。

对于初学者,请始终确保您的主板有USB接口。否则,您将被迫花钱购买JTAG程序员。这篇由Digilent撰写的文章更详细地解释了所有这些编程方法。供应商将提供有关如何使用USB接口的更多详细信息。

这不是初学者应该关心的事情,但对于从事有特定需求的项目的有经验的人来说,这真的很重要。时钟资源可能非常重要,特别是对于需要保持非常精确的数据速率并使用从数据本身恢复的时钟的基于网络的项目而言。运行频率和最大频率显著影响能量分布,即。最终项目的耗电、散热等。

此外,如果您要购买一块电路板来评估手头某个特定应用的特定FPGA,您应该深入研究一下规格,看看它是否完全符合您的需要。例如:

详细说明:机器学习、DSP、RF相关项目需要大量的LUT和DSP块来进行MAC操作。

-与机器人、仪器仪表和图像处理相关的项目可以真正使用基于SOC的系统,该系统允许您开箱即用地在硬件上运行常规软件,从而允许您使用RTOS之类的东西进行动态调整。

-数据采集、实时视频处理和基于数据包的通信项目可能需要您在本地存储大量数据,需要更大的DDR和更快的内存接口。

FPGA仍然是相当昂贵的设备,与MCU或软件相比,这对业余爱好者和初学者造成了更大的进入门槛。因此,找到一些你真正负担得起的东西是非常重要的,而且当你因为错误的连接而烧坏了别针时,你能够不哭。100-200美元的范围是一个相当不错的预算,会给你带来一些可以让你忙于探索很长一段时间的东西。有一些价格低至50美元的选择。

但您可能不得不在上面提到的部分或全部标准上做出重大妥协。

以下是对希望开始使用FPGA的初学者的建议。它们是在考虑了上述所有参数后列出的。但最重要的是,提供最多接口种类和价格最低的用户IO的主板都列在顶部。还考虑了来自最新工具集的支持。我还提到了其他竞争者,以及我没有将他们列在榜首的原因。如果这些原因对你无关紧要,你肯定也应该考虑一下。

至于预算,100到300美元是不花大价钱就能获得最佳性价比的黄金区间。对于那些可能感兴趣的人,我会在这张单子后面提到贵的和便宜的。

在200美元的预算下,最好的基于SOC的FPGA开发板必须是PYNQ-Z2(/Z1)。以下是原因:

PYNQ板提供了一系列出色的外设和Zynq SOC,以及大量的可编程逻辑。它没有给我们留下任何希望,也不会在钱包上炸出一个大洞。

Python环境和可编程逻辑之间非常彻底的内置集成。准备好所有的Jupyter笔记本和其他东西后,你就可以轻而易举地开始工作了。

如前所述,这个主板所基于的Zynq生态系统是一个非常成熟的生态系统,从教程到关于基于SOC的技术及其应用的完整书籍,应有尽有。

围绕PYNQ项目的一个繁忙的开源社区,以及YouTube上的大量示例项目和视频以下是他们官方网站上的功能列表:

如您所见,PYNQ-Z1和PYNQ-Z2之间唯一的区别是音频编解码器和报头。在这两个方面,Z2看起来都更好,但两者之间没有任何根本的区别。

另一个基于SOC的FPGA开发板脱颖而出的是TerASIC DE-10 Nano。这块板130美元(学术版110美元),简直是你能得到的最划算的交易。此外,非常流行的Mister项目使用现代FPGA板模拟复古游戏机硬件,完全基于DE10-Nano。这个项目在游戏和计算机工程爱好者中非常受欢迎,几乎不费力气就可以直接在电路板上运行。以下是DE10-Nano的规格:

提到DE10-Nano的一个也是唯一的原因是,在我看来,Altera的工具,尽管和Xilinx一样强大和成熟,但对于初学者来说可能会更难使用。这些工具糟糕的支持文档和社区论坛只会增加问题。这就是说,DE10-Nano在支持方面是不同的,因为前面已经提到了Mister项目。对于这块特殊的冲浪板,有成吨的教程可供选择。

例如,在此评论中,u/SixesThree非常出色地列出了开始使用此电路板所需的所有内容以及您可能面临的问题,此链接显示了为此电路板构建的过多兼容盾牌。

如果你真的是预算紧张,并且希望节省每一块钱,那么这个冲浪板可能是一个比PYNQ更好的选择!

另一个基于SOC的电路板是ZTurn电路板,我不能将目光从它身上移开。它很棒,但我看到的唯一问题是缺少USB-JTAG编程接口。对其进行编程的唯一方法是使用Micro SD卡或JTAG编程器。如果你对此感到满意,或者你已经拥有一个JTAG程序员,你绝对也应该考虑一下那块板。

如果你(不管出于什么原因)想买一块没有太多外围设备的电路板,把所有的GPIO都留给你自己决定,一定要看看这款庞然大物Ultra96。它为你提供了更多的东西,而且在引擎盖下有了Zynq UltraScale架构,它比列表中的任何其他东西都要强大得多。不过,对于初学者来说绝对没有必要这样做。

对于这一类别,来自Digilent的Arty A7无疑是所有车型中最好的。以下是原因:

由于Pmod连接器是由Digilent生产的,因此Garuntees外设可以很容易地与Pmod连接器连接。

来自Digilent的支持文档和参考设计的详尽列表,以及围绕它的丰富社区。这是Arty A7的完整规格清单。它有两个变种,Arty A7-35T和Arty A7-100T。根据你的预算,你可以买任何一个。选择较便宜的外围设备不会让您在任何外围设备上蒙受损失。

这一类别的另一个头号竞争者是Basy3板。它所在的唯一区域。

.