目录

  • 1. 单片机系列
  • 1.1. C51
  • 1.2. Arduino
  • 1.3. STM32
  • 1.4. ARM
  • 1.5. FPGA
  • 1.6. ASIC
  • 1.7. DSP
  • 1.8. 总结

1. 单片机系列

单片机就是一个百搭的通用CPU,提供各种接口来对整体进行控制,相当一个总调度,当然,简单的功能一片CPU独立工作也就完成了。原来的51系列就是一堆IO口,后来慢慢的把常用的PWM,AD之类的功能加入了单片机。主要包括用了无数年仍然牛逼、各大学必教的51系列,还有AVR,PIC,ARM,HOTEK……其实ARM9以后,已经说不清ARM算哪类了,目前的架构来看,更接近DSP。

1.1. C51

C51是INTEL公司早起的8051产品的简称,现在泛指一切用51内核的单片机,包括STC(宏晶)公司出的增强型80C51、80C52和ATLEM公司的一系列产品,属于单片机入门级,寄存器数目少,直接操作简单。

8051系列已经是辉煌的末日了。构架上已经拖后腿了。除了老代码、老系统升级,就是特定领域的芯片上使用。但是他至今还占用很大份额的原因是——大学的课本是他。

1.2. Arduino

Arduino准确的说是一个单片机及其外设的集合,主控是ATMEL出的AVR单片机,你可以理解成比51厉害一点。这个集合之所以出名在于其操作太简单。STM32库函数的一大堆命令,在这里只需要一句,并且有相当丰富的外设模块。

Arduino虽然可以替换更高速的芯片,但究其最常见的uno——AVR芯片(16位)来说,性能跟宏晶的51单片机差不多,但价钱可是51单片机的10几倍。所以其定位一直是“玩具”。

1.3. STM32

STM32是ST公司基于ARM Cortex-M3系列内核设计的一系列32位单片机,寄存器复杂,直接用汇编操作比较麻烦,但是用ST给的库函数十分方便。

1.4. ARM

ARM这个含义太多,首先它是英国一家公司的名字,这家公司不生产芯片,它只卖授权,然后ARM公司卖出去的处理器架构也叫作ARM架构,再细分有ARM5.ARM7.ARM9 .ARM11再高级一点有CORTEX系列,这个系列的A子系列叫做应用处理器,你的手机平板都是用的这一个系列的,不要在意是苹果还是三星,架构都是ARM没错的。

平常我们所说的ARM应该是指ARM架构的芯片如ARM7,ARM9。

  • ARM7使用V4指令集
  • ARM9使用V5指令集
  • ARM10使用V5指令集
  • ARM11使用V6指令集
  • Cortex使用V7指令集

Cortex是ARM公司推出的以V7指令集设计出来的一系列arm核,其中包括:

  • Cortex-M1, Cortex-M0, Cortex-M4
  • STM32是就是ST公司基于Cortex-M3生产的CPU

1.5. FPGA

FPGA可编程门阵列,和stm32等单片机有很大的不同。单片机是在处理器上运行你写的程序,程序是只能顺序(串行)执行的。

而FPGA(CPLD)是一块拥有很多数字电路单元的电路板,使用VHDL或者Verilog语言描述所需要的功能,综合软件将代码转换成相应的数字电路,将输出文件烧到FPGA中FPGA中的资源就会连接成你想要的样子,等于是设计了一款芯片。数字电路是可以同时执行的,所以FPGA可以并行,运算力非常强大。

应用领域:

  • 一般用来做高速接口或数字信号处理,比如视频压缩,高频信号(数据)处理等。
  • 也可以做仪器,很多示波器都是用FPGA做的。
  • 当然也可以做控制,像单片机一样用,不过有些大材小用了。

1.6. ASIC

ASIC原本就是专门为某一项功能开发的专用集成芯片,比如你看摄像头里面的芯片,小小的一片,集成度很低,成本很低,可是够用了。一个山寨摄像头卖才卖30块,买一片ARM多少钱?后来ASIC发展了一些,称为半定制专用集成电路。

1.7. DSP

DSP实际应该称为DSPs,即用于DSP处理的专用芯片。跟普通计算机的区别一方面是他是哈佛结构的,也就是数据和程序空间分开(普通计算机是冯诺依曼结构)。另一方面他有流水线结构,不过现在其他也有了,见贤思齐。再一方面他有专用的硬件算法电路,用以完成DSP运算,比如最基本的乘法累加。上过DSP的就知道,蝶形算法FFT什么的,拆成最基本单元就是乘法累加,把这部分加速了,整体性能就有非常大的提高。

DSP对于流媒体的处理能力远远的优于通用CPU。所以你看现在手机CPU,至少语音部分都是用DSP的。后来DSP概念也复杂化,各家都把一个控制核心整合到DSP里面,比如现在的智能手机芯片。可以看一下高通或者TI的片,基本是一个ARM核控制整体运算,一个DSP处理语音编解码,一个GPU负责图像运算,一个基带和天线处理模块负责通信,再加一些七七八八的东东比如GPS模块什么的。

1.8. 总结

从系统角度,

  • 8051都是裸跑
  • STM32可以跑RTOS
  • ARM(Cortex-A级别)就可以用来跑Linux或Android

从价格角度:

  • C51: ¥3~4
  • Arduino: ¥20~40
  • STM32: ¥20~90
  • ARM: 当然更贵了