单片机、ARM、FPGA、嵌入式的区别及各自特点
单片机的特点:
(1)高集成度,体积小,可靠性高。单片机是将各功能部件集成在一块晶体芯片上,集成度很高,体积小。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。
(2)控制功能强。为了满足对对象的控制要求,单片机的指令系统具有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。
(3)低电压,低功耗,便于生产便携式产品 。
为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。
ARM的特点:
(1)自带FLASH和EEPROM。这些存储器可多次电擦写,使程序开发实验更加方便,工作更可靠。
(2)高速度,低功耗。
(3)工业级产品。
(4)超功能精简指令,具有通用工作寄存器,克服了单一累加器工作的瓶颈效应。
(5)程序下载方便。
(6)具有模拟比较器、脉宽调制器、模数转换功能。使得工业控制中的模拟信号处理更为简单方便。
(7)并行口、定时计数器、中断系统等单片机内部重要资源的功能进行了大幅度提升,使之更适合工业生产过程的实时控制。
(8)其时钟频率既可以外接也可以使用单片机内部自带的振荡器使得硬件开发制作更为简洁。
(9)强大的通讯功能。内置了同步串行接口SPI、通用串行接口UAST、两线串行总线接口TWI(I2C ),使网络控制、数据传送更为方便。
(10)超级保密功能,应用程序可采用多重保护锁功能。可低价快速完成厂家产品商品化等等。除上述特点外“零外设”也是AVR嵌入式单片机的重要特征。由于该芯片已内置了程序存储器、晶振并增加了在线汇编功能。所以AVR单片机芯片接上直流电源,下载个程序就可以独立工作。无需附加外部设备,无需使用昂贵的编程器和仿真装置。这给我们学习和开发带来了便利条件。
FPGA的特点:
(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
(6)可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
(7)FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
(8)加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
为什么要用FPGA
-
编程自由度高
FPGA貌似在数字世界里无所不能,它就像乐高的积木一样可以搭建各种不同的功能模块,实现你所希望的各种功能,当然,首先你必须掌握最基本的数字逻辑知识,学会一种用来构建各种功能的工具语言(在这里我们推荐广受欢迎的Verilog),再次你要动脑(考验的是你的逻辑思维是否清晰),一个优秀的建筑师的作品是在脑子里勾画出来的,而不是拿积木碰运气拼凑出来的。
-
开发周期短:“现场可编程”
FPGA可以使你去对产品进行“现场”编程,这使得调试周期缩短,产品也就能够迅速适应新的工艺标准。并且产品在已经在现场安装上了之后依然可以对其硬件进行直接配置,也就是我们所说的“现场可编程”。
如果你能够对简单的逻辑门进行合理配置或者将你想要的硬件系统描述出来,你就能利用这些简单的逻辑做些更有意义的事情。而在你的技术还没有成熟时,FPGA允许你进行多变化的设计,并且在设计流程中不用承担高额的经费以及和一些不得不面对的设计风险。
-
高速
FPGA的高速体现在两个方面:并行性,PLL锁相环.
第一点是FPGA的并行性,相比于传统的MCU,程序规模越大,越能体现出FPGA的优势。也许简单的“流水灯”程序看不出差别,但是如果是大型系统,存在大量的数据流,FPGA就可以调用内部的FIFO核进行高速处理,最终能够与MCU系统能够相差出数十毫秒到数百毫秒——这对于通讯行业以及航天、军工行业是极为致命的。
第二点就是PLL锁相环,MCU上同样含有PLL锁相环,但它受到的限制非常大,通常只能进行几个档位的倍频,而FPGA上的PLL倍频自由度较高,以Altera公司生产的MAX10为例,50MHz的时钟通常在芯片允许的情况下外部时钟可倍频到470MHz左右,而内部时钟可倍频到1.3GHz。
举个汽车的倒车摄像头的例子,如果摄像头完成从视频捕捉到视频显示共花费了250ms的延时时间,而国家要求的延时时间不得超过100ms,你就可以用FPGA去取代传统MCU去处理图像信息,来满足政府的延时要求。
-
高集成度
当半导体行业产品集成度越来越高的同时,编程者门也意识到可以在FPGA中建立整个子系统,而不是只局限于使用ASIC(专用集成电路),他们可以将更多的设备放在相同大小的封装里——并且允许实现更多样的功能和更复杂的算法,计算速度上升的同时,功耗也会更小。
-
可嵌入IP硬核
FPGA可以内置IP核,提供丰富强大的功能,使开发者无需浪费时间去重复的构建同一种功能模块。同时,也会减少资源的消耗并且节约很多资金,目前FPGA的存储块可以嵌入很多个IP核,例如,计算电路,收发器,协议控制器,甚至嵌入一个MCU,然而,重要的是要记住,IP核不是像FPGA的其他逻辑单元一样可以重复编程,但是它是一个为了实现某一功能而定制出现的模块,也就是说对于IP核,我们不用每次都去重构它,这是在做无用功,我们直接调用即可。
因为IP核的这一特性,FPGA制造商可以将编写完成的IP硬核以商品的形式进行销售,也是因为这一原因,大多数的电子系统趋向了标准化。
FPGA开发流程
FPGA的开发有一个特点,即开发环境和使用的芯片有非常强的关联性。目前主流的FPGA芯片有2家——Xilinx(赛灵思)和Altera(后被Intel收购,我们姑且称之为英特尔的FPGA吧)。
以比较常见的stm32系列单片机和集成开发环境Keil为例,我们来对比一下单片机开发和FPGA开发的流程。
可以看到,相对于单片机(更不用说普通的PC软件开发了),FPGA的开发流程复杂了许多。当然,复杂是有他的道理的。
引用https://mbb.eet-china.com/tech/t8/59492.html