今天,小月月带来了一个超级小的FPGA开发板——FOMU,基于ICE40UP5K
FPGA芯片。它的设计理念有些像闪迪酷豆U盘,把PCB做成只有USB接口那么大,这样就可以藏进USB端口里了。
FOMU带有一个USB接口和4个输入接口(焊盘形式引出)和1个LED输出。
FOMU可除了以像常规FPGA那样跑RISC-V软核,还完全兼容FμPy(一种Python语言开发平台)。 这归功于FOMU具有128KB
RAM和1MB存储空间 ,这使它本地跑Python也游刃有余。
Python解释器基于一个运行于FPGA结构上的RISC-V软核,RISC-V是最近几年新兴的处理器体系结构,有可能占领嵌入式市场代替51和ARM芯片。
前面已经说过,这个FOMU可以藏进USB端口里。当你要做开发时,只需要通过USB加载代码就可以。USB上载支持RISC-
V代码、Python代码和HDL。另外交叉工具量完全开源,入门无忧。
说到开源的工具链,这在FPGA界真的是个很大的福利。
FPGA是一种很专业的硬件,直到最近,开发工具链依然非常封闭。通常要求你签署各种保密协议,然后下载一个非常巨大的工具量,一般都超过5GB。另外,由于工具链是由销售FPGA的同一家公司开发的,有时候出于商业目的,该公司会故意降低工具链的执行效率,这样就逼迫你不得不升级到该公司更高规格的FPGA芯片,这样它们就能从你手里坑走更多的钱。
FOMU使用的FPGA芯片和开发工具链是完全开源的。另外,多亏了Yosys、Icestorm和Nextpnr等项目,现在的工具链免费又高效
特性规格:
- FPGA: Lattice ICE40UP5K 具有5280个LUT
- Speed: 48 MHz external oscillator
- RAM: 128 kB RAM for a soft CPU¹
- Storage: 1 MB SPI flash²
- Connectivity: USB 2.0 FS (12 Mbps)
- Buttons: Four³
- LEDs: One RGB
这里可能有些新手小朋友玩过CPU,但是还不知道什么是FPGA和为什么学FPGA,小月月解释一下。FPGA芯片是一组可现场编程的门。而CPU内部的逻辑单元都是固定的。CPU想做外来的事情时,需要根据想做的事情创建软件,这个软件受限于CPU内部固定的逻辑单元,跑起来效率可能并不高。
举个例子: 有些项目中会使用WS2812
LED(一种带驱动的但是需要专用定时信号的RGB全彩LED芯片)。虽然CPU可以在软件中生成这个信号,但是在与WS2812对话时,它不能在后台做任何事情。如果要控制很多WS2812,那么CPU会浪费大量的时间来产生定时信号。
如果有了FPGA,就可以创建一个基于WS2812硬件协议的LED硬件驱动,让CPU解放出来做其他更适合CPU来干的工作。
FPGA可编程的特性使它可以构建“CPU”, 这个“CPU”里面的逻辑单元可以现场编程改变,随时修改或替换,这时候我们称这个“CPU”为软核。
必要时候,甚至可以自创一种牛逼的CPU指令,比如128位处理器乘法运算指令。如果你想要更快的64位乘法运算、或者更快的sha256算法运算,可以考虑一下用FPGA。