1、首先stm32就是arm的一种,是arm架构的cortex m系列,针对的是一些实时性较强的应用,倾向于单片机应用。
2、你所指的arm我决定应该是说跑linux系统的cortex a系列芯片,这些性能强悍一些,但裸机开发繁琐,实时性不强,但运算处理能力甩m系列几条街,主频通常上g,有点甚至能跑一些比如opencv之类的图形算法。
3、fpga是逻辑时序编程,相当于把数电集成到芯片上,由于是逻辑运算,异于arm芯片(应该说是单片机这一类mcu和mpu),一般一个时钟就可以跑任何数量的指令(只要你的资源足够),实时性极强,一般处理高频信号,做数据采集之类的。使用的开发语言也是专门的hdl语言,跟单片机、mpu有根本的差别。
FPGA一般用verilog或者VHDL开发,偏向于硬件,主要靠硬件逻辑来处理输入输出
ARM系列的全部用C语言编程,偏向于软件
FPGA是用硬件实现逻辑,虽然也有编程语言,但是采用实为专门的编程语言,最后利用专门的编译环境烧录到硬件中,通过个别硬件开关的导通关闭,连接硬件中的基础门电路,实现逻辑的硬件固化,所以它的能力受限于器件中硬件资源多少,但处理速度飞快(时延小)
ARM估计你是指可以运行通用内核,如linux的arm cpu系列,它性能强悍,但因为开发是基于操作系统基础上的,很少进行裸机开发(太复杂了),所以实时性一般不强,它资源丰富,变化伸缩程度比较大,接口可扩展性很强,运算时甚至可以调用低速设备资源(当然影响性能)参与数据处理(比如大量数据排序时的外排序),所以可以完成很多复杂的事情。
stm32是arm的一种特例,它主要面向裸机开发能力,兼顾了普通arm的丰富接口扩展能力,但去除了标准的通用内核层(注意那些实时操作系统更多是提供了一种通用的编程框架来方便进行裸机开发),所以实时性上效率少更高。但受限于资源程度,实际运算能力(性能)不如标准arm。
STM32是单片机,简单的功能实现。
ARM所说的应该不是32了,虽然32也是ARM,应该是Linux的嵌入式吧,这时就是复杂一点的项目了。
FPGA是速度快,并行运行,效率高。
STM32倾向于实时性较强,控制类的应用。
ARM倾向于图像界面的处理,或者一些设备管理的计算,性能上优于STM32FPGA了解的不多,航天上好像用的多,处理快,接口更丰富吧。