MCU:Micro Control Unit

学习地址:up@HD匠

微控制器四大平台:单片机,DSP,ARM,FPGA

单片机

适合:

​ 控制:控制开关打开关闭,电机转动

不适合:

​ 算法:处理速度慢,吞吐量小

​ 数据传输:低速

​ 高速数据处理

优点:

​ 1.结构简单:体积小,价格低,功耗低

​ 2.开发时间短

​ 3.有诸多现成接口:I2C、SPI、AD、PWM 可以接各类传感器

缺点:

​ 1.速度低、十至百兆

​ 2.接口不够丰富:没有高速接口如USB OTG(on the go 既可以做主接口又可以做从接口)、网口、MIPI、SATA等

DSP

Digital Signal Processor

基本功能:

​ 数字滤波器:在两个采样点之间对缓存数据进行卷积运算,运算量大

适合:

​ 处理单路串行信号(对于非数字信号进行AD转换后处理)

​ 运行各类DSP算法

不适合:

​ 低端控制

优点:

​ 1.高吞吐量(哈弗结构)

​ 2.高处理速度

​ 主频高

​ 完成硬件卷积运算,内部集成三类硬件:累加器,硬件乘法器,桶形移位寄存器

缺点:

​ 较单片机接口更少,功耗高,编程方面资源少

ARM

arm9及arm9以后全部采用哈佛结构

适合:

​ 数据处理

​ 数据传输

​ cpu

优点:

​ 1.能装操作系统

​ 2.接口丰富:以太网、USB、MIPI、SATA等需要协议栈支持的接口

​ 3.配置灵活:CPU、单片机、视频解决方案等

缺点:

​ 1.软件开发门槛较高:没有集成的开发环境,需要装虚拟机、装OS、配置开发工具链、开发板通过网口和虚拟机接在一起开启NFS服务,拥有一块共享空间。编写代码并在虚拟机环境下编译代码生成可执行文件,放在NFS共享区域中执行

​ 2.器件更加复杂:体积大,价格高,功耗高

FPGA

现场可编程门阵列

通俗理解:集成元件库,将各类元件库集成到硅片上

导线、寄存器、乘法器、时钟管理器(PLL、DCM、MMCM)、存储器(RAM、双口RAM、FIFO)、存储控制器(DDR2\3\4)、高速串行器(光纤、PCle、SATA)、CPU(单片机(软核):Microblaze(TM)、x86(硬核):IBM PowerPC、ARM(硬核):Zync)、AD转换器

开发方法

硬件描述语言HDL:根据描述语言在集成开发环境下画一个电路

综合:把HDL转成原理图

实现:把原理图变成电路图

FPGA三大方向

​ 逻辑信号:时序发生

​ DSP开发:雷达

​ 嵌入式开发:ARM+处理电路

适合:

​ 并行高速信号处理

​ 芯片设计前期验证:联调验证

​ 不值得流片的高端设计:比如5g基站

不适合:

​ 低成本

优点:

​ 用一个FPGA实现所有功能

缺点:

​ 1.价格高

​ 2.接口不丰富

​ 3.开发门槛高,周期长

​ HDL:“说明文”

​ 编译时间慢

​ 4.外围器件多,PCB设计复杂

​ 需要外挂一个flash、上电把电路图LOAD进FPGA

​ 大量引脚

​ 电源设计需要考虑各种硬件软件电流消耗

​ 5.体积大功耗高

总结:

典型应用场景 未来发展方向
单片机 白色家电(比如洗衣机:根据水位温度传感器控制电机和各个程序) 精简的ARM:STM32、ESP32
DSP 实时数字信号处理:视频直播 加了DSP硬件的ARM:ARM9(哈弗结构)、TI的DSP集成C-M4核
ARM 所有 加了各种专用电路的ARM,加速各种CPU应用
FPGA 芯片验证、高端应用 带了可编程电路的ARM

基本学习路线:简单单片机(ATMEGA328P、STM32系列、ESP32系列)->STM32+RTOS(实时操作系统)->ARM处理器(linux)

其他

冯氏结构简单、易实现、成本低,但效率偏低;哈佛结构效率高但复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。现在的处理器,依托CACHE的存在,已经很好的将二者统一起来了。x86CPU外部是冯诺依曼结构,内存空间里是不区分数据与指令;内部是哈佛结构,CPU的L1 cacha是区分指令和数据的

哈佛结构与冯诺依曼结构参考1 参考2

x86与arm,CISC和RISC

arm+linux

linux 是操作系统内核。一般还可以说是一整套基于 Linux 内核运行的软件。
arm 嵌入式,是说的硬件。也就是把 arm 架构的 CPU 做的机器,嵌入到某个设备上作为一部分的开发。

arm 性能高,资源多,需要开发各种任务调度,资源配置,I/O处理的基础功能,来实现 arm 本来就有的高性能。操作系统的作用就是提供一些基础的资源管理硬件调用的功能,有了 arm + linux ,再继续开发就只需要关注软件的功能了。