FPGA是什么呢,通透讲解单片机和FPGA的区别

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

一.单片机和FPGA的区别

单片机又称单片微控制器(Single-chip
MCU),它其实就是集成在1个硅片上的计算机系统。现在市场上主流的单片机基本都使用的是ARM核,51单片机基本上已经退出历史舞台了,只有在一些特定场合还有使用。严格来说,单片机是没有I/O设备的,这也是它和计算机最大的区别。然而,我们常说的单片机往往指的是单片机开发板,这种开发板不仅包含单片机,还包含厂商开发设计的外围电路和各种外设。最常见的ARM单片机是STM32系列,它的内核是Cortex-M3/M4,外设则包含LED灯、蜂鸣器、LCD显示屏、摄像头、片上内存和各种IO口等。图1给出的是正点原子的STM32F1开发板,最中间的那个黑色的、上面写着ARM三个字母的芯片就是STM32F1芯片(即单片机),只占板子的很小一部分,芯片周围则是外围电路和外设。一般来说,我们买到的STM32开发板往往就自带有LED灯、蜂鸣器等外设,而摄像头、LCD显示屏则需要额外购买,厂商只在开发板上预留相应的接口。

图1正点原子STM32F1开发板

那么,FPGA又是什么呢?FPGA英文全称为Field Programmable Gate
Array,它的中文名是现场可编程逻辑门阵列。FPGA主要是由可编程逻辑阵列和各种外设组成的,它是一种半定制电路。通过使用quartus或vivado这些开发软件编写verilog或VHDL程序,我们可以实现并综合出各式各样的数字电路,并可以把电路“烧”进FPGA器件,完成电路在物理层面上的实现。FPGA是可以进行无限次“擦写”的,只有逻辑资源足够,FPGA理论上可以实现所有的数字电路,哪怕是CPU这样复杂的超大型电路。然而,FPGA的逻辑资源往往是很匮乏的,哪怕是在今天,也难以完成大规模的浮点运算。而且,由于FPGA的基本单元使用的是可配置逻辑单元,工艺制程往往会受到限制,总会比ASIC落后好几代,并且工作频率也一直达不到CPU早已标配的GHz。

图2 Altera DE2-115开发板

FPGA最大的优点是它的并行度高,我们可以在FPGA上设计并实现N维的并行流水线,在时钟的驱动下,这些流水线可以同时进行工作,能极大地减小运算时间和提高运算效率。对于单片机而言,单片机的主体其实就是CPU,而CPU执行运算是串行的。在进行一次运算时,一般是先由CPU向运算单元发送指令,然后运算器进行运算并给出结果,接着CPU接收到计算结果并进行暂存,再进行下一次运算。此外,对于CPU而言,芯片大部分面积是控制逻辑单元,只有很少一部分是运算单元。因此,在执行高密集度运算时,CPU是难以胜任的。但是,CPU所擅长的逻辑控制,却正是FPGA所欠缺的。由于FPGA所有功能均依靠硬件实现(这里指传统的FPGA),完全不使用软件,甚至无法实现分支条件跳转等操作。

二.CPU和FPGA的结合

从上面的分析可以看到,CPU长于控制,而FPGA则擅长运算。因此,很快就有人想到了在FPGA开发里引入CPU来进行逻辑控制,以弥补FPGA的缺陷。最开始,这种“联姻”是由FPGA开发商主导的,Altera最早提出了SOPC(System
On a Programmable
Chip,可编程片上系统)技术,这种技术使用FPGA的逻辑和资源搭建的一个软核CPU系统,后来Xilinx也进行了跟进。Altera主推的软核是Nios-II,而Xilinx主推的软核则是MicroBlaze。老实说,这些软核的效率并不高,而且它们都有自己的一套开发环境和开发流程,实际使用起来其实非常麻烦,而且应用场景也不多。因此,这些软核并没有在FPGA开发中引起什么变革,长期处于厂商力推,而市场却不温不火的状态。

然而,时代总是在前进的,随着无人驾驶、大数据分析、物联网、人工智能等行业的发展,嵌入式平台的应用范围得到了极大的扩展,但这些应用场景对算力提出了新的要求,单片机这种传统的嵌入式平台的算力就显得捉襟见肘。Xilinx开始意识到,与其自己开发软核,来为FPGA打辅助;不如反过来让FPGA给CPU打辅助,直接在FPGA集成ARM的Cortex-A系列处理器。这样,FPGA就实际意义上成了CPU的外设,专门用于计算,除此之外的所有事,都由强大的Cortex-A系列处理器来完成。在2010年4月硅谷举行的嵌入式系统大会上,Xilinx发布了ZYNQ
7000系列FPGA,它由双核A9+Xilinx
7系列FPGA组成。严格意义上,它其实不算是FPGA,更像是嵌入式开发平台。然而,它又和传统的嵌入式开发平台不一样,它又需要使用FPGA搭建定制电路,这就需要开发者掌握较高的硬件开发能力。这款产品推出时,受到了很大的质疑,很多人都觉得它实用性并不会太高,只是Xilinx推出的一个实验性产品。

图3 ZYNQ7000开发板

但是,ZYNQ却取得了巨大的成功,成为了Xilinx最著名的FPGA开发板系列之一。Xilinx的判断是正确的,在随后的10年内,解决嵌入式平台的算力瓶颈成为了行业发展的主流方向。就拿人工智能来说,在ZYNQ推出后,很多大学研究小组用它完成了卷积神经网络在FPGA平台上的部署,实现了对卷积神经网络的硬件加速。FPGA平台相对于GPU有更低的功耗,相比于ASIC有可编程性,使得对FPGA加速器的研究一度成为人工智能领域的热门方向。当然,这时的FPGA不是传统的FPGA了,而是CPU+FPGA。这种模式也被Altera迅速跟进,它们也推出了双核A9+Altera
FPGA的开发平台,比如DE1-SoC等。严格来说,Cortex-A9处理器不是单片机(即微控制器,MCU),而是微处理器(MPU),但是它们都是CPU。因此,在上文中,我们并没有说单片机和FPGA进行“联姻”,而是直接说的是CPU和FPGA进行联姻,这主要是为了保证文章的“严谨性”。在这一时期,虽然两者的“联姻”主要还是由FPGA开发商推动的,但FPGA却成为了CPU的一个大型外设,由主角变为了配角。

三.ARM DesignStart计划的推出

在PC时代,英特尔+Windows组成的“Wintel联盟”长期处于绝对的统治地位,在这一时期ARM的存在感其实很低。但是,随着智能手机、智能导航仪等移动端平台的发展,ARM开始成长为移动市场的行业巨头。关于ARM为何能在移动端击败英特尔,有很多种不同的说法,但主要原因总结起来有3点。第一,英特尔低估了移动端的发展潜力,没有及时进场。第二,ARM处理器采用的是RSIC指令集,而英特尔采用的是CSIC指令集,虽然CSIC指令集性能更占优,但功耗往往会非常高,因此不适用于移动端产品;而RSIC指令能做到低功耗,这在移动端是绝对的优势。第三,ARM采用IP授权的商业模式,和谷歌、苹果、高通、三星等公司形成了联盟,组建起了以ARM为核心的生态圈。总的来说,ARM的崛起主要还是由于移动端市场的发展,因此ARM注定不会漠视在物联网时代会大放异彩的嵌入式平台。

在2010年,ARM正式推出ARM DesignStart计划,开源了1000多个物理IP,为用户提供了快速获得ARM
IP的方式。客观来说,这一时期的DesignStart计划实际上没有产生多大的行业影响,因为它开源得还不够。在2015年10月15日,ARM终于决定开源自己的Cortex-M0核。讲道理,这是一枚行业的重磅炸弹,Cortex-M系列处理器早就在MCU领域实现了绝对统治。ARM此举非常明确,就是希望大家使用Cortex-M0核自主搭建SoC,实现定制化的物联网终端芯片的设计,让Cortex-M系列处理器在物联网领域得到更多的应用。这次开源引起了巨大的行业反响,掀起了一波超高能效定制化SoC的开发热潮。随后,ARM又在2017年6月20日开源了Cortex-M3核,并在2018年10月22日开源了Cortex-A5核。DesignStart计划的不断推进,使得ARM在物联网领域也逐渐建立起优势。

图4 ARM DesignStart计划

虽然近几年,RISC-V处理器的开发非常热门,很多人预言这种RISC指令集处理器会在物联网领域取代ARM。但是,我却并不看好RISC-V,ARM有着更加先进的技术和更为完善的开发环境,这都不是RISC-V可比的。和ARM相比,RISC-V更像是高校的“玩具”,而ARM早就是工业的产品。可能会有人会说,RISC-V至少是中国芯片自主的希望,继续依靠ARM,只会在物联网时代继续被“卡脖子”。但这种说法是站不住脚的,RISC-V的发明者和主导者依旧是美国,中国依旧只是跟班。其次,对于一家公司而言,出于趋利避害的考虑,都更愿意采用性能更为强大、开发流程更为简单、开发环境更为成熟的ARM核,毕竟公司不像个人,可以空谈“情怀”。只要ARM继续加大开源的力度,为开发者提高更为友好的开发环境,物联网企业就会集体拥抱ARM。

最后,有一个很现实的问题,那就是虽然国家一直在说“芯片自主”,但是对于这个行业投入一直是不够的。计算机的从业者薪水要比微电子的从业者高很多,这只会把行业人才往计算机赶,毕竟微电子转计算机是很容易的。芯片企业实际上也基本没从国家那里拿到什么政策补贴,大家没有研发经费,更没有自主研发的动力,也就只能“能买就买”。所以,我觉得“芯片自主”很长一段时间也就是个口号,中国芯片产业落后国外十几年,想要追赶是需要非常大的投入的。在国家真正下定决心发展芯片产业之前,企业只会拿脚投票,ARM开发无疑是更好的选择。个人也只会拿脚投票,芯片行业的人才流失只会继续发生。

当然,关于RISC-V处理器的讨论就有点偏题了(PS:来自微电子学生的吐槽),我这里要讨论的是DesignStart计划对FPGA开发的影响才对。Cortex-M0/M4核的开源,使得ARM从FPGA开发商手里接过了SOPC的接力棒,Nios-II和MicroBlaze也完成了它们的历史使命,逐渐淡出人们的视野。传统的FPGA开发时代也彻底终结了,新时代的FPGA开发主要可分为两种:一种是开发板上本来就有硬核CPU,提供CPU+FPGA的开发环境;另一种是开发板上没有硬核,但我们可以通过使用ARM开源出来的verilog文件,用FPGA的逻辑和资源搭建出一个软核CPU,也能构建起CPU+FPGA的开发环境。如果说,ZYNQ横空出世的时代,由于软核+FPGA的开发模式还不够完善,还存在“纯粹"的FPGA开发。那么,到这时,FPGA彻底“边缘化”了,它彻底成为了ARM
CPU的大型外设,只是默默地做着自己擅长的计算工作,整个开发流程完全由CPU主导。

但是,也正是这样,FPGA走出了微电子这个小圈子,引起了越来越多的人的注意。为了方便软件开发者使用,Xinlinx和Altera先后推出了HLS(High-Level
Synthesis),使得由软件代码综合出数字电路成为门槛,大大地降低了FPGA开发的门槛。虽然HLS的效率还远比不上直接使用verilog或VHDL进行RTL级设计,但它至少提供了一种可能。与此同时,由于ARM开源了Cortex-M3/4处理器,极大地降低了开发超高能效SoC的门槛,计算机和微电子交叉的SoC设计也逐渐在高校和行业内成为新的热门研究方向。DesignStart计划的故事结束了吗?当然还没有,我们有理由相信ARM会进一步开源,继续降低开发门槛和减小开发成本。如果说,PC时代属于英特尔,移动时代属于ARM,那么物联网时代也仍将属于ARM。

四.写在最后

今天是本人生日,我还在这里码字写文章,真的是太惨了(PS:工科狗他只配和实验室在一起,狗头保命)!作为1个微电子的研究生,面对行业的发展,我不可能不关心,我也有很多自己的看法,这也是我写这篇文章的原因。数字信号处理……这些是没法交给ARM核去做的。还有考虑到成本问题,不搭载ARM核的FPGA也是有市场存在价值的,但是走量的话又导向ASIC。还有就是考虑电路性能的话,HDL还是比较好的。这就导致FPGA工程师的存在比较尴尬,方向和岗位少,开发难度高。这种搭载硬核的FPGA的应用方向还是比较少的,一般是高端方向,比如雷达、高速信号处理……。大学上选修课的时候应该是用过zynq芯片,那时用的实验箱,只记得要做Linux裁剪,课程名还叫SOPC来着,不过这么重要的课程竟然被当做选修课来教,当时也没当回事,甚至不知道那是用来干什么的,就驱动驱动电机……

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信