FPGA这东西,真不是谁都能搞懂的(Fpga) ypxx.net

最近看到好几个做硬件的年轻人拿着一块FPGA开发板发愁,我就想起了当年自己刚入行那会儿。今天想跟你聊聊这个听起来很高端的玩意儿,其实也没那么神秘。

现场可编程逻辑阵列,英文缩写FPGA,是个能让你把芯片当乐高玩的器件。说得好听点叫"现场可编程",说人话就是这芯片买回来之后,还能根据需要改变它的内部结构。

很多人一听就懵了,芯片不就是出厂就定死的东西吗?没错,传统芯片确实是这样,但你要是把FPGA想象成一个空房子,你自己进去砌墙搭隔断,想怎么布局就怎么布局,是不是就容易理解多了。

FPGA到底是什么东西

FPGA里有很多逻辑单元,你可以把它们当成小开关和小门电路的组合体。通过这些单元之间的连接,你可以搭出任何你想要的数字电路。

就像你小时候玩的积木一样,给你一堆模块,你可以搭房子、搭车子,全看你想做什么。FPGA就是这样,给你一堆基础逻辑块,你自己决定怎么连。

这玩意儿最厉害的地方在于并行处理。你想啊,CPU处理任务是按顺序来的,一条一条指令往下跑。但FPGA可以同时开很多条路,大家一起干活。

所以有些场合,比如处理视频信号或者通信数据,用FPGA做比用CPU快得多。这不是吹的,是实打实的硬件优势。

FPGA和别的芯片有啥不一样

很多人会把FPGA和CPU、GPU混为一谈,其实它们仨完全是三个路子。CPU是通用处理器,啥都能干但都不精。GPU是图形处理器,专门干并行计算的活。

FPGA则是另一种存在,它介于两者之间,既有硬件的速度,又有软件的可编程性。这种定位让它有个独一无二的优势,就是灵活性和效率兼得。

说到灵活性的话,FPGA有个绝活叫在线重构。什么意思呢?就是芯片在工作的时候,你可以换个配置继续干活,不用关机重启。

这个能力在航空航天领域特别值钱,一个卫星发射上去,你没法派人去修,只能通过远程刷新FPGA的配置来升级功能。

FPGA到底能用在哪里

FPGA的应用其实挺广的,但主要集中在一些对实时性要求很高的场景。通信基站就是典型例子,5G信号处理速度太快了,软件根本跟不上,只能用硬件来处理。

还有工业自动化,机器人在产线上干活,每个动作都要精确到毫秒级,FPGA在这里面表现非常出色。

军工和科研领域也是FPGA的大户。卫星、雷达、粒子加速器,这些高精尖设备里都能看到FPGA的身影。说白了,凡是追求极致速度和确定性的地方,FPGA都能派上用场。

当然啦,FPGA也不是万能的。价格贵,功耗大,设计门槛高,这些都是它的短板。所以有些场合虽然理论上能用FPGA,但综合考虑成本,最终可能还是选了其他方案。