几年前,我上大学时买过几块基于不同微控制器的开发板。我记得,虽然开发板本身不贵,但我还得在板子价格之外加上运费和税费,这些加起来超过了板价的50%。但如果我想测试那款微控制器,就别无选择。当我想测试其他功能时,又得买一块不同的板子——比如我想设计某种音频算法,就需要一款带I2S接口的微控制器。几年后,我开始使用FPGA,做的第一件事就是买了一块FPGA开发板。如今7年过去了,我仍然在用这块板子开发新算法、实现不同的外设。在这篇文章中,我想告诉你购买FPGA开发板而非微控制器开发板的优势。
第一,FPGA很酷,英特尔和AMD都深知这一点。是什么让这些巨头公司对FPGA产生了兴趣?FPGA相比微控制器和微处理器有一个巨大优势,那就是能够同时执行多项任务,数量按需而定——我们可以通过PCIe接口接收数据,同时通过SPI发送DAC的配置,还能以高精度时序闪烁LED。神经网络、数字信号处理算法、加密货币或硬件加速器都有一个共同点:它们需要并行化才能高效运作,甚至才能存在。这些显然是你在使用FPGA的第一个月不会去做的复杂任务,但几周之内你就会开始编写并行算法。
现在,也许你会想,市面上已有具备多个内核的微控制器或微处理器。你说得没错,但你知道如何通过IPC与TI双核DSP通信吗?与TI ARM呢?与Microchip SAMD呢?如果你使用的是微控制器开发板,你就只能用那颗微控制器,也只能学那颗微控制器的用法,但未来你入职的公司未必会用到那颗微控制器,你将需要重新学习其他厂商的寄存器以及如何管理其中间件——而这正是FPGA开发板的第二个优势:只要你学会使用其中一款,你就能使用任何一款。这里没有专有的寄存器名称,也没有配置各异的特定外设……你可以用同一份代码适配任何FPGA。
确实存在一些例外,例如当你使用FPGA的特定硬件(如PLL)时,但你只需知道如何在新FPGA上实例化PLL,其余代码将完全一致,这不是很棒吗?好吧,但你得学习一门不同于第一门课程中所学C语言的编程语言……是的,你得学习VHDL或Verilog,而Verilog基于C,所以整个代码对你来说会非常熟悉,因此这算不上一个正当的借口;此外还有像fpga4fun这样的网站,你可以在那里找到许多代码示例来实现自己的外设,因此你无需学习如何使用它们,因为你会自己设计它们。
至此,我希望你已经被说服去购买一块FPGA开发板而不是微控制器开发板。但如果你喜欢微控制器,喜欢它们的优点,并且它们的缺点对你来说不是什么大问题,那么你也可以拥有一块FPGA,并在其中实例化一个微控制器,或者更好的做法是,实例化任何微控制器。有许多微控制器可以实例化到FPGA中,例如ARM Cortex M1就是专为实例化到FPGA中而设计的。此外,如果你已经有一个使用流行的Cortex M3运行的设计,最近ARM已将其发布用于FPGA内部使用,并且它们使用传统方法进行编程。
不仅可以实例化ARM微控制器到FPGA中,你还可以实例化许多其他采用RISC架构的微控制器,如Microblaze或OpenRISC,而且显然,最酷的架构RISC-V也可以通过SeRV、VexRiscv、Rocket等项目实例化到FPGA中,而所有这些设计都可以使用Litex来创建——Litex是一个用于生成FPGA设计的框架,只需使用Python配置将加载到FPGA中的镜像,即可使用多个RISC-V。
关于价格,几年前FPGA开发板非常昂贵,因为它们是为特定应用而设计的。现在我们可以找到非常实惠的FPGA开发板。在速卖通上,你可以花15美元买到Sipeed Tang Nano 1k,或者花不到20美元买到它的大姐Sipeed Tang Nano 9k。如果你需要更多的资源,可以花不到100美元从Digilent购买Arty S7,或者花不到50美元购买SMF2000。
说到这里,你肯定想买一块FPGA开发板,因为它有所有的优点,而且,通过FPGA开发板你将学习硬件是如何工作的,你将理解为什么DDR内存被称为DDR等等。如果你决定购买FPGA开发板,但不知道买哪一个,联系我,我会帮助你。
本页摘要由 AI 辅助整理,经编辑审核后发布;AI 仅用于提炼与分类,原文均附来源链接。