大家好,我是华维林北。

上一期说了MCU四大平台的单片机和DSP,下面来了解一下ARM和FPGA。

首先总结一下ARM。

ARM的优点

第1,就是它能装OS就能装一个操作系统,那么装上一个操作系统之后,就可以实现一个并发的一个现象,也就是说我可以实现多个任务,甚至说多个线程了,它可以调度线程,那这样的话就可以实现多个任务同时执行的一个效果。

第2,ARM的接口是非常丰富的,我们刚才说的这些高速接口,包括以太网,usb,MIPI,SATA,这些接口是需要协议栈支持的,我们使用单片机是很难把它们实现的。当OS支持了这些协议栈之后,装了操作系统,只要物理上有这个接口,这些接口都可以在ARM上出现且都可以使用。

第3,arm配置非常的灵活,这个配置灵活不是说我们用户配置非常灵活,而是说芯片的设计商可以非常灵活地配置ARM形成什么样的芯片。所以ARM应用非常的广泛,它可以实现一个cpu,各位童鞋们手机里头的那个cpu一般都是ARM的。然后如果说进行trim就把它剪做减法,把不用的东西都给削掉的话,它可以实现一个单片机,比方说STM32啊,还有这个ESP32啊,它们都是基于arm核的。

另外介于它俩之间还有一种专用的一些处理器,比方说像视频解决方案也可以用APP来实现什么事,视频解决方案就是我们的运动相机,或者说行车记录仪,或者说水滴摄像头之类,那里头的中央的处理器实际上就是一个视频解决方案,它里面有一个arm核,还有一堆硬件处理电路,比方说有视频输入电路啊,降噪电路,颜色合成电路,传感器控制电路等等,之后它会进入到一个视频压缩电路里,出来MPEG4的一个视频流,H.264的流或者H.265的流,之后这个arm还会有这些接口,例如以太网接口,Usb接口等等,以太网接口可以直接推流推到网上,usb接口可以把它存在U盘里,当然还可以有TF卡接口把这东西就保存到本地。

所以说ARM的硬件是可以配置的非常灵活的。

ARM的缺点

第1,ARM的软件开发门槛更高。当然我不是说单片机应用,我说的是cpu,视频解决方案这些用它的软件开发门槛是要比之前的都高的,因为它绝大多数是没有一个集成的IDE开发环境的。

比方说我做过海思的HR3519的视频解决方案的开发,首先要装一个虚拟机,在虚拟机上装一个Linux的操作系统,之后在Linux的操作系统上配置开发工具链,之后需要把开发板通过网口和虚拟机接在一起,开启NFS服务,拥有共享的空间,然后需要在Windows下使用source insight或者Vs code这样代码的编辑软件来编辑代码,编辑完了代码之后需要返回到虚拟机的状态下来编译的代码生成一个可执行的文件,把这个可执行的文件放到NFS的共享区里,再用开发板敲命令运行这个可执行程序,这个开发过程是比较繁琐的,软件开发门槛而是要更高的,你需要掌握的东西也更多。另外它的器件也更加的复杂,体积会更大一些,集成的东西也更多了。它的价格也会更高,跟单片机比是要高不少的,另外它的功耗比单片机也是高很多的,当然基于arm核单片机除外,我们就说普通的arm。

所以说ARM适合做什么呢?ARM特别适合做数据处理,数据传输啊,以及当成一个cpu都是非常适合的。

下面说一下FPGA

FPGA是绝大多数学生最头疼的一个部分。

首先看看FPGA是什么东西?说人话FPGA是什么东西,不说人话说机器语言就是FPGA它是一种现场可编程门阵列,全称叫field programmable gate arry,一句话总结FPGA就是一个集成元件库,它是一大堆的离散的硬件的原器件集成按照一定规律的放到硅片上的器件,也就是一堆散件放硅片上。

可以集成什么元件,图上有详细解说

FPGA开发方法

FPGA使用的语言不是C语言,它使用的语言是非常特殊的一种语言,叫作硬件描述语言。缩写叫HDL,全称叫hardware description language。

这个语言和C语言表面上形式上看是有一定类似的地方的,但是它们的本质是极其不同的。FPGA开发的过程实际上跟C语言也不一样,C语言是把高级语言呢进行编译,编译之后变成了一个二进制的机器语言,但是FPGA本质上是根据你的描述语言,在开发套件的环境下,也就是集成开发环境下画一个电路,当然这个电路不用你自己画,是它的软件画的。

所以说FPGA在开发过程大体上来讲可以包含两个部分。

第一个部分叫做综合,就是把你写的这个硬件描述语言转成一张原理图。

第二个部分叫做实现,就是把系统生成这个这个原理图把它变成一个电路图,变成电路图之后形成了一个bit文件,然后下载到芯片上就相当于可以使用了。

所以说我们的FPGA开发实际上是用硬件描述语言来画一个电路,只有把这个问题认识清楚了之后,你才能够真正理解FPGA的开发方式到底是怎么回事。

FPGA的使用是非常灵活的,主要来讲它可以应用在三大方向上。

第一大方向,逻辑开发,它的核心就是要产生一个复杂的时序,FPGA作为逻辑开发,大量用在相机开发商,尤其是需要你自己产生驱动型号的高端相机。

第二大方向,FPGA可以进行DSP开发,比方说雷达,一般来讲它会有非常多的这个单元,比方说100-200多个接收单元,这些单元它会并行的产生信号,要处理这些信号如果用DSP芯片的话会非常的复杂,需要用几十片DSP芯片,这样做起来系统会非常的庞大。

但是如果我们用FPGA的话呢,那就简单多了,因为FPGA里头有大量的乘法器资源,我们可以把它做成一个一个小的DSP来处理每一路信号。

第三大方向,FPGA还可以进行嵌入式开发,FPGA里头可以集成cpu,集成cpu之后可以用它的这个逻辑资源来做一个专门的处理电路,加上一个ARM之后就可以实现一个带有自己设计的专用电路ARM处理器。

比如说100多个乘法器资源,然后做一个什么呢?一个100路乘法并行的外部处理电路,ARM在进行乘法的时候,100个数扔出去,再扔出100个数,两个数相乘之后直接往里读结果就可以了。

这样的话运算速度大大的加快了很多。比方说像挖矿这样的运算就可以用arm进行调度。

FPGA的缺点

第一个缺点就是价格高,最次的FPGA呢,也得几十块将近100块钱一片,那么贵的FPGA就没有上线了。主流的FPGA例如A7的35T,一般来说,现在的价格一片是500多,便宜的时候也是300多,我曾经用过最贵的FPGA是v5的一款DSP系列的FPGA,这个芯片把我的积蓄给掏光了哈哈。

第二个缺点,FPGA接口不丰富,除非生成软核或者硬件集成的接口以外,如果进行逻辑开发的时候几乎就是没有接口,需要串口就需要自己编一个串口。

另外呢,FPGA开发门槛高,因为开发FPGA就等于重新学一门语言,这门语言不是像C语言,Java,python,这些语言都是一个套路一条执行完之后执行下一条。

可是FPGA完全不是这样,如果把计算机语言分成两种,所有的C语言之类的Java,python都是记叙文。FPGA的硬件描述语言是一个说明文,学习它时间就比较长,另外FPGA开发的周期也是特别长。

我们一般的C语言再大的工程呢,编一下就完事了。普通人做的再复杂的项目,一个编译之后也就是十几秒就差不多也就能编完了。FPGA做一个稍微大一点的一个工程,它只要编一次,随随便便20分钟半个小时就过去了,所以它的迭代的时间非常的长,这就造成了不管是学习开发都是很慢的,这些都是FPGA的缺点。

另外FPGA它的外围器件是比较多的,主流的FPGA如果断电,FPGA里头的配置,配置内容就消失了,再上电,它就是一块不能用的一个片子。那怎么办呢?它必须得外挂一个非玉石存储器,加外挂一个flash,每次上电的时候需要把这个电路图从flash里头给它load进来之后配置一遍FPGA才能在进行工作。

另外FPGA它的PCB设计也比较的复杂,因为集成了大量的原件之后,它的引脚就非常的多,而且它的供电又比较的复杂,比方说我们说七系列,它的核心电压1.0,Ad供电还有个1.2,之后还有个附属供电2.5,如果说你接的芯片是1.8的话,那你还必须得给个1.8等等,你以为就这些电压就完了吗?很多电压到底能耗多少电流是没有准数的,FPGA,尤其是核心电压消耗的电流是和什么相关呢?适合你的FPGA用了多少的资源相关。刚才说了FPGA里头一大堆的器件,这些器件你用得越多,你消耗的电流就越多。所以说在硬件设计的时候,你还得提前估算软件儿要消耗多少的资源,用这些资源之后,根据FPGA厂家的工具估算它需要的静态和动态的电流大概是多少之后你才能进行电源的设计。

这一点就和单片机、DSP和arm是完全不一样的,它们的消耗电流是固定的,告诉你上限之后只要比上限大就可以了。

但是FPGA完全不是这个样子的,设计的时候完全不是这个套路。

另外就是FPGA的体积大,它的功耗高。

FPGA的优点

它的优点只有一条叫one trip to rule them all,你可以用一个FPGA实现所有芯片的功能,可以用它实现一个单片机,可以用它实现一个DSP,可以用它实现一个ARM,甚至实现一个具有专用电路的ARM都是可以的。

FPGA的应用不是一个能随随便便拿过来就用的,它价格高,它开发的周期又长,所以FPGA呢,它不常见在我们普通的设备里。

我们对FPGA进行个总结啊,我们看它适合干嘛?FPGA特别适合处理并行的高速信号。因为它本质上呢就是一块儿电路,那么你可以把这块电路呢分成N个并行的电路板,它就可以处理并行的信号,另外它特别适合进行芯片前期的验证,尤其是数字芯片和嵌入式芯片的前期验证。

学习单片机,我华维林北是认真的,童鞋们有什么疑问都可以来找我,及时回复林北能得到非常实用的干货,能帮助你们成长我会得到很大的满足感!好了,这期就说到这,我们下期见!

华维林北

微控制器MCU四大平台你了解多少?(二)相关推荐

  1. CC1310F128RSMR Sub-1GHz射频微控制器 - MCU 433MHz 868MHz 915MHz ULP Wireless MCU

    CC1310F128RSMR Sub-1GHz射频微控制器 - MCU 433MHz 868MHz 915MHz ULP Wireless MCU CC1310设备是德州仪器公司生产的一款性价比高.超 ...

  2. R5F100AAA100SP#V0低功耗16位微控制器MCU RENESAS

    描述 R5F100AAA100SP#V0 R5F100AAA Renesas 16位微控制器 - MCU RL78 / G13 RENESAS MCU 真正的低功耗平台(低至66μA/ MHz,RTC ...

  3. SPC5645SF1VLT微控制器-MCU 32位

    SPC5645SF1VLT 描述 说明 框图 功能列表 低功耗运行 176 LQFP封装引脚排列 描述 产品类别:32位微控制器 - MCU RoHS指令:是的 核心:e200z4d 数据总线宽度:3 ...

  4. R5F1006CASP#X0 16位微控制器MCU RL78 / G13 MCU低功耗 通用应用RENESAS

    描述 R5F1006CASP#X0 16位微控制器 - MCU RL78 / G13 MCU 32 + 4/2 20pin SSOP T&R RL78 / G13 RENESAS MCU 真正 ...

  5. 32位微控制器 (MCU)STM32G081KBU6 128KB 闪存 32QFN

    STM32G0 32位微控制器 (MCU) 适合用于消费.工业和家电领域的应用,并可随时用于物联网 (IoT) 解决方案.这些微控制器具有很高的集成度,基于高性能ARM® Cortex®-M0+ 32 ...

  6. R5F102A8ASP#V0 16位微控制器 - MCU RL78G12 8+2/768B 30SSOP R5F102A8ASP#30

    16位微控制器 - MCU RL78G12 8+2/768B 30SSOP R5F102A8ASP#30 核心:RL78 数据总线宽度:16位 最大时钟频率:24 MHz 程序存储器大小:8 kB 数 ...

  7. 微控制器MCU片上资源分类总结

    1.概述 MCU,微控制单元(Micro Controller Unit),又称为单片型计算机.单片机,将中间处理器(CPU)进行频率和规格的缩减,并将内存(memory).Timer.UART.SP ...

  8. ARM微控制器-MCU基础及CPU运行过程(堆栈/中断/寄存器操作)

    目录 为什么计算机能读懂1和0? 一. CPU的基本结构和运行机制 1. 一个基本的MCU内部结构 2. MCU Structure 3. 分析其中的CPU: 一个完整的CPU: 4. 堆栈 5. 堆 ...

  9. CH573/CH571低功耗集成BLE 32位微控制器MCU

    目录 简介 1. 系统框图 2. 芯片特性 3. CH57系列选型参考 应用领域 简介 CH573是集成BLE无线通讯的32位RISC微控制器.片上集成低功耗蓝牙BLE 通讯模块.全速USB主机和设备 ...

  10. R7F0C908B2DFP-C#AA0微控制器MCU 16位RL78 RENESAS

    概述 R7F0C908B2DFP-C#AA0 16位RL78 CISC 48KB闪存2.5V / 3.3V / 5V 32引脚LQFP托盘 MCU 16位RL78 CISC 48KB闪存2.5V / ...

最新文章

  1. Python列表变字典
  2. 程序员晒工资单,还是大厂香!据说大多数3年,35K还少了?
  3. 什么是 SAP HCEA
  4. 思科模拟服务器怎么写文件,思科模拟服务器配置教程
  5. k8s 手动恢复redis 集群_高工面试之:redis的几种集群方式你都熟悉吗?
  6. log4j:WARN Please initialize the log4j system properly 问题解决
  7. geojson 河流_GeoJSON 数据类型 | JShare
  8. vue实现打印功能的两种方法/web打印控件
  9. 瑞利信道的多普勒谱的原理与MATLAB仿真
  10. PHP短视频无水印解析源码
  11. IE-LAB网络实验室:华为培训中华为数通HCIE考试流程
  12. Laravel学习记录--访问器与修改器
  13. .NET高级工程师面试题之SQL篇
  14. ZYNQ基本用法------DDR(1)
  15. Code jock的使用--皮肤
  16. 问与答——我怎么这么悲催?
  17. HFSS天线设计仿真步骤
  18. 车联网解决方案(PPT)
  19. ING银行与R3签订'不限量'Corda区块链部署协议
  20. 测量block size 为8K ,自动分配的本地管理表空间的位图block一位能管理多少空间

热门文章

  1. 【LeetCode 剑指offer刷题】数组题11:228. Summary Ranges
  2. css3图片 变黑白 变模糊 调整饱和度等
  3. 新入职我们应该注意些什么?
  4. HDOJ1181变形课 深搜回溯
  5. 2014.12.03 页面控件
  6. Windows server 2019 - Raid1 搭建+测试
  7. php sspi应用,SPI串行通信模块应用(一)
  8. Security+ 学习笔记16 密钥管理
  9. Docker详解(十五)——Docker静态IP地址配置
  10. Linux四剑客详解——sed