什么是FPGA,FPGA与MCU的区别是什么?
以你每天的晚餐为例,MCU就像一个能力非常强的超人,它一个人就能很好的完成的任务,比如买菜、洗菜、切菜、做饭。而FPGA则像很多普通人的一个集合,买菜由配菜员负责,洗菜由洗菜工负责,切菜由切菜工负责,做饭由大厨师负责。
虽然结果都是你按时享受到了丰盛的晚餐,但MCU和FPGA的处理方法确有不同。
1. MCU简介
![3c61f2a0e47acef54480389080b6fd9f.png](https://i-blog.csdnimg.cn/blog_migrate/e1d6b4fe5ad31b6eb40c52748d42db0a.jpeg)
上图为MCU的简略架构,它将ROM、RAM、CPU、I/O集合在同一个芯片中,为不同的应用场合做不同组合控制。
CPU最显著的特征便是“顺序执行”,这很符合人类大脑的思考方式,而总线就像人类的脊髓一样,CPU通过总线与外界进行交互,收集外界信息,或者发出某项行动指令。
2. FPGA简介
![8483d935b94bfe759cced607e456ee9d.png](https://i-blog.csdnimg.cn/blog_migrate/e397329c4e8da3b059a28ed5bf044228.jpeg)
上述为lattice的一款FPGA架构,你可以把它想象成一块放满电子元件的硬件电路板,图中“电路板”上的元件有IIC和SPI硬核接口“器件”,有NVCM程序存储“器件”,有RAM数据存储“器件”,还有最小单元的LUT(查找表)器件。
一般FPGA工程师会使用硬件描述语言Verilog或者VHDL对FPGA进行“编程”,之后,再经过厂家提供的FPGA开发工具(Diamond或Radiant)的综合、布局、布线,会产生bit文件或bin文件。
如果工程师将最终产生的bit文件或bin文件下载到FPGA中,就相当于一位硬件工程师,在FPGA芯片这块已经放置了“元件”的“电路板”上,进行了布线操作。(也就是把毫无关联的与器件,用铜线连接起来)
下载程序后的FPGA,我们就不能简单称之为“电路板”了。举个例子,FPGA实现的功能是SPI转并口,那么这块FPGA就可以称为“spi接口转换板”。
当然,FPGA和“电路板”终究是不同的,FPGA可以进行重复编程,相当于一块可以反复布线的电路板。
2.1 FPGA优缺点
FPGA优点:
(1) FPGA由逻辑单元、RAM、乘法器等硬件资源组成,通过将这些硬件资源合理组织,可实现乘法器、寄存器、地址发生器等硬件电路。
(2) FPGA可通过使用框图或者Verilog HDL来设计,从简单的门电路到FIR或者FFT电路。
(3) FPGA可无限地重新编程,加载一个新的设计方案只需几百毫秒,利用重配置可以减少硬件的开销。
(4) FPGA的工作频率由FPGA芯片以及设计决定,可以通过修改设计或者更换更快的芯片来达到某些苛刻的要求(当然,工作频率也不是无限制的可以提高,而是受当前的IC工艺等因素制约)。
FPGA缺点:
(1) FPGA的所有功能均依靠硬件实现,无法实现分支条件跳转等操作。
(2) FPGA只能实现定点运算。
2.2 国外FPGA厂家简介
FPGA行业比较出名的是Xilinx,其次Altera,不过Altera目前已被Intel收购,上述两家的FPGA大都用于工业、通讯行业,而且内部逻辑非常大,成本也比较高。
Lattice FPGA则把自己定位在中低端(逻辑资源小)以及消费行业,主打低成本、低功耗,高性价比,IPhone就曾用过lattice的一款ICE40芯片。