IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 微控制器MCU四大平台你了解多少?(二) -> 正文阅读

[嵌入式]微控制器MCU四大平台你了解多少?(二)

大家好,我是华维林北。

上一期说了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个并行的电路板,它就可以处理并行的信号,另外它特别适合进行芯片前期的验证,尤其是数字芯片和嵌入式芯片的前期验证。

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

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 华维林北

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:14:49  更:2022-01-29 23:16:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:39:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码