欢迎光临
我们一直在努力

CPU、MCU、PLC、DSP、SOC、FPGA等之间的关系

它们之间的关系

CPU是最基本的存在,因为某些原因,在CPU的外部又包裹了部分附加功能,和CPU一起共同构成MCU、DSP、SOC等这些芯片,因此它们都是从CPU的基础上扩展而来,基本关系我们可以理解为下图。

至于说为什么MCU、DSP、SOC等芯片,会在CPU的基础上内置功能扩展,其它的功能自然它们自己的目的和道理,后面会针对每个芯片做解释。

9.2 CPU芯片

CPU的英文全称为Central Processing Unit,直译为“中央处理单元”或者中央处理器,不管什么类型的计算机都必须要包含CPU,因为CPU中的运算器和控制器是整个计算机工作的脑中枢。

9.2.1 在什么情况下,CPU为独立芯片

当我们需要极高性能的CPU时,就必须把CPU单独做成一个芯片,因为单位面积的门电路数量是有限的,因此如果像MCU、DSP、SOC一样,将CPU和很多其它的内置扩展都集成在一起时,当芯片体积都差不多的情况下,单独CPU芯片所含门电路数量一定高于MCU、DSP、SOC的内置CPU所含门电路数量,因此才会单独的将CPU集成为一个独立芯片。而且给独立的CPU芯片做功能扩展时会更加的灵活。

9.2.2 哪些计算机使用单独成片的CPU

现在像个人电脑和服务器这一类的计算机,其计算能力的要求是较高的,因此目前个人电脑和服务器的CPU都是独立芯片,我们都知道个人电脑和服务器的的芯片使用Intel的X86(全称80×86)系列的居多,所以intel的用于个人电脑和服务器的CPU基本都独立芯片的。

9.2.3 使用CPU独立芯片的会使得计算机体积较大,不适合便携式设备

如果CPU是独立心芯片的话,很多CPU的扩展功能需要通过外置扩展的方式实现,所以这就会导致个人电脑和服务器这一类的计算机体积较大。目前便携式计算机设备越来越多,比如手机、数码相机、平板等这一类的计算机设备,为了能够方便的携带,对于体积要求较高,因此为了将体积减小,就将很多原本很占体积的CPU的外部扩展,直接和CPU集成为了一个很小的芯片,也就是我们前面提到的MCU、PLC、DSP、SOC等芯片,但是这样做的代价就是芯片的中内置CPU的计算能力下降了,但是对于很多移动计算机设备来说,并不需要像个人电脑或者服务器一样的计算能力,只要能够打电话、看电视频、听音乐、玩手游(无法玩pc才能玩的大型游戏)等等即可。

9.3 MCU芯片

9.3.1 MCU名词

MCU的英文全称为Microcontroller Unit,直译为“微控制单元”,又被称为Single Chip Microcomputer ,直译为“单片微型计算机”,简称单片机,最简单的理解就是一个芯片就是一个微型计算机。

9.3.1 CPU芯片和MCU芯片的区别

从上图就能大致的看出,CPU与MCU的区别,但如果说想详细的了解MCU具体情况的话,这样简单的对比还不够。

9.3.2 PC的结构

为了弄清楚MCU,需要先从PC机的内部结构开始讲起,然后通过对比来引出MCU。

(1)对于PC等计算性能较高的计算机,它们各个组成部分是分离的,因为PC的计算能力要求很高,所以PC的CPU处理能力很强,而且是独立芯 片,内存和外存的容量非常的大。

(2)不管是那种计算机,都必须包含CPU、三大总线(地址/数据/控制)、外设IO接口、内存和外存,其中内存和外存是必须包含的外部设备, 因为必须要有存储设备用于存储程序和数据。

(3)像什么声卡和喇叭,显卡和显示器,网卡和网线等其它外部设备等,不同的计算机根据用途不同会有所不同。

9.3.3 MCU

(1)很多电子设备对于计算能力要求较低,但是体积要求很高

PC等大型计算机为了拥有较高的计算能力,各个组成部分是分离组建的,获得了计算能力但是牺牲了体积。但是对于像电动玩具、家电控制器等这类小型电子设备而言,不需要什么计算能力而更在乎体积,所以才有了MCU(单片机)的出现,MCU是芯片级的计算机。

(2)MCU与PC的异同

1)相同点:都必须包含的CPU、三大总线(地址/数据/控制)、IO接口、内存和外存这些核心的东西。

1)不同点

(a)单片机会将CPU、三大总线(地址/数据/控制)、IO接口、内存和外存集成到一起,PC是分离的

(b)单片机为了自己特有目的,内部还会集成比如串口、定时器、AD/DA等外部设备。

串口、SPI、12C这三种外设是MCU常见的三种串行通信方式,如果你对串口、SPI、I2C感兴趣,情感后续的单片机课程。

(3)MCU特点

1)单片机芯片不能直接工作,必须为其设计外部电路(最起码供电电路),并且烧录程序,才能工作。

2)MCU的优缺点

(a)优点:体积小,价格便宜,单个芯片就是一个微小的计算机,使用方便

(b)缺点:因为体积小,所以MCU的CPU、内存和外存相对于PC的来说,肯定差了很多,牺牲计算能力换来了体积优势。

3)应用

对于很多简单应用,比如玩具、家电(电饭煲)等对于计算能力要求很低的小型计算机设备来说,MCU的计算功能已经足够,关键是便宜,对于成本控制很敏感的产品来说,价格这一点显得突出。

(4)MCU总结

所以MCU就是将CPU、三大总线(地址/数据/控制)、IO、内存、外存、以及某些专用外不是被集成为一体的芯片,这就是MCU,一片一机。

(5)为什么现在MCU使用的这么多

因为你拿到cpu后,尽管单独CPU的计算能力很强,但是你还要为CPU设计大量的外部设备,开发难度直接上了一个等级,对于很多不需要太强计算能力的场合不合适,使用计算能力很强的独立芯片的CPU,简直就是杀鸡用牛刀,关键是你拿到后还需要为其设计复杂的电路,以便为扩展很多需要的最起码的外设(内存等),设计成本很高。

但是MCU芯片一次性就把就算计需要基本东西全部集成到一起,你拿到后开发难度直线下降,因此对于功能要求不高,成本控制严格的场合,显然使用单片机开发是必然的选择。

(6)MCU的分类

1)低中段

低端单片机比如8051,中端单片机比如stm32,低中端主要用于家电、玩具等成本低,计算能力要求不高电子设备。

2)高端

ARM中A系列(Cortex-A8,Cortex-A89等)的芯片典型的就是高端MCU,主要用于消费类电子,比如手机、平板、数码相机。

(7)现在常说的单片机,默认指低中端单片机

一般来说,我们说单片机时,默认指的是低中端的MCU,一般不会称呼高端MCU为单片机,而是直接使用它们的型号名称来称呼,比如ARM的Cortex-A7, Cortex-A8, Cortex-A9,Cortex-A15等。

(8)嵌入式开发与MCU

嵌入式开发所涉及的就MCU这类的计算机芯片,低端到高端都有,MCU的种类很多,这里不在赘述,因为在后面的单片机课程中,会详细讲。

对于真正嵌入式开发者,必须具备低中高端MCU的使用能力,希望学习嵌入式的同学,请看后面的技术课程。

9.4 PLC

PLC,英文全程为Programmable Logic Controller,直译为“可编程逻辑控制器”,直白理解就是可以编程控制的控制设备,是专门用在工业环境下电子控制设备,从“电子控制设备”这个词就能看出,事实上PLC并不是一个芯片,而是一个设备。

那么PLC到底是怎么出现的呢?需要先从使用MCU设计工控设备的缺点开始说起。

9.4.1 直接使用MCU设计工业控制设备的缺点

前面讲MCU时就说过,是可以使用MCU来设计工业控制用的设备的,购买到MCU芯片后,可以从头到尾设计出某功能的工控设备,但是这样做的问题很难多,这些问题导致成本高、风险大,问题有,

(1)问题1:周期长

从头到尾设计,你就必须设计电路原理图,绘制pcb板,元器件焊接,编写和调试程序,产品发布后还有测试周期,所以做工控设备的公司直接使用MCU从头开始设计的,开发周期实在是太久。

(2)问题2:设计难度大,稳定性不高

很多工控研发公司不是专业的MCU开发公司,所以MCU开发技术不成熟,加之工业设备运行环境复杂,比如高电压,高粉尘,高振动,高辐射等,对于设备的稳定程度需求很高,MCU开发经验不足的公司,很难开发出稳定性高工控设备。

(3)问题3:成本高

由于第一个和第二个原因,如果直接使用MCU从零开发的话,成本非常高,关键是还开发不出好的设备。

9.4.2 PLC的出现

(1)PLC是如何解决上述问题的

经验丰富的专业的、对工业控制设备非常熟悉的MCU设计者站了出来,设计了一款稳定性极高的、功能可图形化编程的、具备基础功能的半成品的MCU工控设备,其他人拿到这个稳定成熟的半成品设备后,非常容易的就能扩展出自己特有的工控设备。

(2)PLC这种半成品工控设备的优点

前面就说过,PLC并不是一个芯片,PLC只是使用MCU芯片设计的半成品的电子工控设备,关键是可以使用这个设备进行功能扩展,扩展的方式就是插接各种的电路线,PLC的实物图如下

日本三菱的PLC设备

使用PLC设计工控具有如下优点:

1)无需从零开发:也就是说别人已经将所有最核心的设备硬件做好了,帮你把最难最复杂的部分实现好

2)硬件上扩展简单易行:硬件的扩展很容易,直接通过“功能扩展接线螺丝”连接外部控制设备,就可以进行扩展了。

3)编程容易:PLC在设计时,已将底层的各种功能的程序代码,转成了各种直观的图形符号(梯形图),直接通过这些梯形图的绘制就可以编程了, 会有相应的软件将梯形图转变为最终需要执行的MCU计算机指令。

梯形图

4)稳定程度高:由于是由专门为工控量身设计,具有很强的稳定性,足以应对工业上的各种复杂情况。

9.5 Soc芯片

其实很多人对于SOC芯片的理解都是错误的,那么也是通过这一小节的讲解,希望大家能够搞清楚什么是SOC。

SoC的英文全称System-on-a-chip,直译为“片上系统”,直接从名字理解什么是SoC有些困难,但是如果直接讲什么是SOC芯片的话,也很难阐述清楚。

事实上,SOC与MCU是有着很大的关系,所以如果不能说清楚二者的关系的话,也就无法搞清楚SOC的,需要先从从MCU说起。

9.5.1 先说说MCU

(1)其实MCU芯片是通用计算机芯片

所谓“通用”就是满足很多方向的应用,既能用于家电,也能工业、交通等很多方向。

(2)MCU如何满足通用开发需求

为了满足不同公司,不同应用方向开发需求,MCU必须满足哪两个两点:

1)程序由开发公司自主编写

因为公司有自己特有的需求,因此希望能够开发自己的特有程序,所以MCU的程序由开发公司自主编写。

2)MCU芯片中会集成各种常见的外设

为主要是了满足各个公司在不同方向上的开发需求,比如有些公司需要使用定时器,有些公司需要使用串口,有些需要使用网卡,需求各不相同,MCU为了都满足大家的需求,MCU会将各种常见外设(定时器、串口、SPI、I2C、网卡)都集成在了芯片中,用户拿去后选择性使用自己需要的外设,不需要的你不用就是。

(3)使用MCU所面临的问题

1)MCU的价格相对较贵的

说的是相对较贵,如果跟使用独立CPU芯片进行开发相比的话,MCU无疑非常便宜的,就人来说的话,欲望是无止尽,便宜了还希望更便宜。

人们认为MCU在某些特殊的情况下,成本还有很大下降空间,事实确实如此,才从通用MCU中脱胎出了更便宜的SoC芯片。

2)为什们说MCU的还有进行成本下降的空间呢?

发现很多产品是专门针对某个用途,专门针对某个用途时,有如下两个特点,

(a)该用途只用其中某两个外设

比如只用到网卡,或者串口,其它外设都是多余的,但是既然买的是通用MCU,就算有些外设你不用,但是你同样要买单,事实上这些不用的外设就可以拆掉以节省成本。

(b)开发的程序多是雷同的

很多公司都生产该用途的产品,购买MCU开发时,每家公司都要各自开发实际上大致相同的程序,各家公司都在花相同的钱开发相同功能的程序,反正程序都是雷同的,只要有一个人把程序开发好,其它公司不是就不用在为开发程序花签了吗。

9.5.2 SOC解决上述面临的问题

(1)SoC的是怎么节省成本的

MCU芯片生产厂家发现了以上描述的情况后,就想到了为MCU芯片使用者节省成本的方法,

(a)将MCU中不需要用到外部设备裁剪掉,比如我只需要网卡,那么我就只留下网卡,为购买MCU的公司节省了成本

(b)MCU生产厂家直接将程序固化在芯片内,购买到MCU的公司就不用自己写程序了,也节省了成本。

通过以上两步做出的专门针对某用途的特有MCU芯片,这个特有的MCU就是SOC芯片。

(2)芯片厂家出SOC芯片的条件

1)芯片厂家设计出SOC芯片替被人省了钱,芯片厂家自己不久亏了吗?

芯片厂家自然是不会干亏本的买卖,生产SOC的前提是,专门针对某用途的SOC的使用量非常巨大,在量非常巨大的情况下,做

出SOC,既能给使用者省成本,SOC芯片厂家自己也不亏,不亏的原因有两点,

(a)SoC能省成本,自然非常受用户的欢迎,用户也就更加依赖上了SOC,有助于建立更深的合作关系。

(b)使用SoC的一定都是大批量的,薄利多销,对于芯片厂家来说,不仅没有因为降低SoC的成本而亏钱,反而挣了钱。

2)芯片厂家出SOC芯片的先决条件就是,要求使用量大

只有当专门针对某用途的产品量非常巨大时,芯片厂家才会为其出SOC芯片,在巨大的量的支持下,芯片厂家和芯片使用公司才有可能双赢,如果没有量的支持,是不可能为其出SOC芯片的。

对于量小的产品,各家公司只能老老实实的购买MCU芯片开发,因为厂家不可能亏本做出让别人节省成本的SOC芯片。

(3)总结:什么是SoC

1)一句话理解SOC

soc相当于是拥有特定用途的,为了节省成本而在出厂时固化了代码、且只集成专用外设、而且使用量非常巨大的特殊MCU。

2)如何理解SoC这个名字

System-on-a-chip,直译“片上系统”,往往具有一定完备性的事物才称为系统。

SoC芯片的硬件是根据需求专门设计的,而且还给它固化了代码,因此相对来说,SOC可以算得上是一个硬软都不缺的完备系统,因此才被称片上系统,即一个芯片可算作是一个相对完整的系统。

当然,拿到SOC芯片后,肯定是要为其设计外部电路的。

(4)Soc芯片举例1)例子1:WIFI芯片

   乐鑫公司的ESP8266 串口WIFI芯片 

ESP8266是专门用于WIFI无线通信的SoC芯片,使用这个芯片可以设计出很多无线WIFI通信模块,比如很多单片机是不能WIFI无线上网,

但是通过连接拥有SOC芯片的无线WFIF通信模块后,就可以无线WIFI上网了,因为这个芯片的需求量非常大,因此乐鑫公司把它做成了SOC。

2)例子2:显卡、声卡芯片

其实电脑中的显卡芯片、声卡芯片就是典型soc芯片,显卡芯片专门用于视频的编解码,声卡专门用于音频编解码,用途很专一,由于这类芯片的使用量很大,因此为了节省成本,也被做成了SoC,编解码程序被直接固化在了芯片中。

9.6 DSP芯片

DSP的英文全称为Digital Signal Process,即数字信号处理,DSP芯片即指能够实现数字信号处理的芯片,直接看名字的话不好理解,要弄清楚为什么需要DSP芯片,需要先从CPU处理大批量浮点数的乘法、除法运算说起。

9.6.1 CPU处理大批量浮点数的乘法和除法时,面临问题

(1)非常耗费CPU的运算资源

耗费cpu运算资源有三方面的原因,

1)数据量大:数据来那个大,自然就需要花费更多的时间处理

2)浮点数:相比整数,浮点数(小数)的数据结构复杂,处理更费劲

3)乘法、除法:相比加法和减法来说,加法器在做乘法和除法运算时会花费更久的时间。

(2)因为耗费CPU预算资源,CPU会被缠着不放

像音视频数据的编解码,又或者大型游戏的3D渲染这一类,典型就涉及大批量浮点数的乘法和除法运算,因此

1)数据量大

2)乘法、除法运算多

3)浮点数非常多

如果非要让CPU处理的话,cpu会一直耗在这些数据的处理上,CPU没空去处理电脑的其它事情,比如发现你的电脑非常的卡,当键盘敲入数据没反映,那是因为CPu还没有忙过来呢,暂时没空处理键盘输入的事情。

(3)CPU是有处理大批量浮点数乘法、除法运算的能力,但是CPU有更加重要的工作

因为cpu作为整个计算机的主控中心,需要负责整个计算机大局上各部件、各种程序的正常运转,不是只有进行大量数据运算这一项工作要做,因此如果cpu一直被大量数据的运算缠着不放肯定是不行的。

9.6.2 DSP,以CPU的协作者的身份出现

(1)DSP职能:专门进行大量数据运算的芯片

DSP作为cpu的助手芯片,DSP专门用于应对涉及乘法、除法的大量浮点数的运算,一旦当cpu检测需要进行大量数据的乘法和除法运算时,就会将这些烦人的工作交给DSP,DSP会负责处理后,cpu脱身后会投入到指挥整个计算机的工作中。

(2)CPU和DSP

1)通过比喻理解CPU和DSP的关系

好比一个领导,领导能做的事情很多,自然包括文案处理,文案工作少的话都无所谓,领导兼职完成就行了,当然领导如果专门从事文案工作的话,也是文案的行家里手,但问题是,对于领导最重要的工作不是文案处理,而是指挥全局,当文案工作堆积如山的时候,如果领导还把大量的精力花在文案处理上的话,就没人指挥大局了,这个时候就需要为领导安排一位专门处理文案秘书,由秘书接替领导繁杂的文案工作,让领导能够全身心地进入到大局的统筹安排中。

这个例子中,CPU就是领导,DSP就是秘书。

2)CPU和DSP芯片所处理的数据,各自的特点

(a)CPU处理的数据

cpu处理的数据基本都是控制类数据,所谓控制类数据,就是告诉这里开、那里关等的发号施令的数据,这些数据的特点就是,

· 数据的量较小

· 除法和乘法运算少

· 处理的浮点数少

(b)DSP处理的数据

· 处理的数据量非常大

· 而且除法和乘法运算多

· 处理的基本都是浮点数

所以DSP专门用于处理大量浮点数的乘法和除法运算,主要就是为了解放CPU。

3)DSP和CPU相互配合的方式

(a)主从关系

CPU芯片、或者集成有CPU的芯片是主芯片,DSP是从芯片,也就是说DSP听命于CPU的指挥,CPU给DSP划分任务,让其进行大量 数据的运算。

(b)CPU和DSP可以集成在一起,也可以是独立的两个芯片

目前很多情况是,DSP和CPU被集成在了一起,网络摄像头所使用的就是这样的处理芯片,在专门提供这类芯片的公司中,华为海 思、安霸、TI是最好的三家。

9.7 FPGA芯片

通过前面学习的这张图片知道,各类芯片(CPU、MCU、DSP、SOC)都是由各种门电路的组合而成,FPGA芯片也不例外。

9.7.1 一般的计算机芯片(CPU、MCU、DSP)

可以将一般的计算机芯片(比如CPU)表示成为下面这样,

传统的计算机芯片,或者说一般的计算机芯片,比如前面提到的CPU、MCU、SOC、DSP等,这些芯片在出厂时,内部门电路之间的连接关系是早已经固定死了,这一类芯片尤其自身的优点和缺点。

(a)优点

所有设备的计算机芯片都是一样的,功能灵活性很高,因为只要执行不同的程序实现的,计算机芯片就可以体现不同的功能(工作逻辑),因此基本所有的计算机都采用这种传统的,出厂时内部门电路连接就已经设计好的方式实现。

(b)缺点

使用该芯片做成产品后,必须要有相应的程序指令指挥其工作,工作的步骤必须一条指令一条指令的来,比如有5条指令,这5条指令只能由硬件一步一步的执行,不能一次被硬件全部同时执行。这里不少同学就要说了,不是还有多核CPU,就算是多核CPU,并发也是有限的,给你30条指令全部有硬件一次执行完,多核也很难做到一次将30条指令全部运行完毕,因为你总不至于30个核吧。

9.7.2 FPGA的出现

(1)FPGA名字理解

由于上面的传统计算机芯片并发运行存在缺陷,后来人们就搞出了一个叫做FPGA的东西,FPGA的英文全称为Field-Programmable Gate Array,直译为“现场可编程逻辑门阵列”,如何理解这个词呢,这个词包含如下几层含义,只要理解了这几层含义,也就理解了什么叫“现场可编程逻辑门阵列”。

1)门阵列

这个芯片内部包含大量的逻辑门(与门、非门等等),这些逻辑门在一起组成一个一个的阵列,所以叫门阵列。

2)可编程

这些“逻辑门”在出厂时没有固定死的连接在一起,芯片是半成品,可以按照自己的需求通过硬件编程语言,把这些门电路按照自己的独特需求进行连接,像搭积木似的进行按需组合。

由于编程修改的是芯片内的门电路组合关系,也就是硬件组合关系,因此FPGA的编程也称为硬件编程。

3)现场

芯片内部门电路结构可以随时根据需求重新组合。

(2)FPGA的优点

1)优点1

可以根据自己的需求,设计芯片的功能,完全做到硬件上同时执行很多功能,执行时间缩短了,所以效率很高

比如采用传统的是计算机芯片需要执行5条指令,也就是说需要5个顺序步骤才能完成。但是在FPGA这边,根据需求重新组合门电路后,分别同时的执行这5条指令时,在FPGA里面不称为指令而是功能,这5个功能可以由5个功能区同时执行,所以真正的做到了硬件上的并发。

2)优点2

门电路组合被硬件语言程序安排好后,硬件功能就固定好了,上电即可运行,不再需要什么汇编、c语言来再写指挥工作的程序。

(3)FPGA的缺点

1)FPGA很贵

2)相对来说,开发难度大

(4)FPGA的硬件编程与我们常说的普通编程的区别

1)FPGA

FPGA的硬件编程使用的语言叫做HDL(Very-High-Speed Integrated Circuit Hardware Description Language),简称硬件描述语言,该语言编写的程序可以直接修改FPGA芯片内部的门电路组成结构,也就是修改内部的硬件结构,所以该语言才称为硬件编程语言。

2)普通的编程:比如汇编、c、c++、java等等,这一类语言写的程序只是告诉硬件按照某个步骤工作,但是硬件内部的组成机构是固定的。

(5)FPGA应用场合

对于效率要求非常高,特别是在高频信号处理方面(信号发生器),高到了普通的计算机芯片无法满足的程度,需要硬件上完全并发执行各种功能才能到达时,就必须使用FPGA。

9.8 为什么弄清CPU、MCU、PLC、DSP、SOC、FPGA的区别

(1)知道方案选择

如果说这些芯片之间的区别搞不清楚的话,会在项目方案的选择上不知所措,因为不同的项目要求,对于产品开发周期,难易度,成本要求,稳定程度都有不同的,因此需要选择不同特性的芯片实现项目的开发,那么你就需要对这些芯片要有所了解。

(2)通过对比加深理解

希望通过对这些芯片内部结构的对比介绍,可以加深大家对于每个芯片的认识。

作者:佳嵌工作室

51CTO免费视频地址:http://edu.51cto.com/lecturer/12941022.html

课程进度咨询QQ群:528495268

转载请说明源地址。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。