【SoC基础】从CPU结构讲到单片机的原理,一文讲清楚!

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处


CPU

CPU结构设计

冯诺依曼结构:程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。并且使用同一个总线来传输指令和数据。基于冯诺依曼结构的计算机在执行程序时,需要从内存中依次读取指令和数据,并且指令和数据共享同一个地址空间。这种结构的优点是简单和灵活,适用于通用计算机。

哈佛结构:在哈佛结构中,指令存储器和数据存储器是独立的,它们分别使用不同的地址空间,使用不同的总线分别传输指令和数据。这种结构的优点是可以同时读取指令和数据,提高了并行处理的能力,适用于嵌入式系统和高性能计算。譬如大部分的单片机(MCS51、ARM9等)均采用哈佛结构。

优劣对比
冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单。
哈佛结构中程序(一般放在ROM、flash中)和数据(一般放在RAM中)独立分开存放,因此好处是安全和稳定性高,因此嵌入式设备都采用哈佛结构。缺点是软件处理复杂一些(需要统一规划链接地址等)。

总结
大多数计算机系统都是基于冯诺依曼结构设计的,其中指令和数据存储在同一内存中。然而,一些特定应用领域或特殊需求可能会采用哈佛结构,例如某些嵌入式系统或专用硬件。选择使用冯诺依曼结构还是哈佛结构要根据具体应用需求和设计目标来评估。

CPU工作原理

CPU运行处理过程:Flash(外存,相当于一个仓库)用于存储编译好的程序,外部的代码想要通过CPU的编译需要先经过DDR(内存,相当于一个火车)“运输”到寄存器中。然后通过运算器进行读取和解码。
CPU的工作流程,一般分为以下五个阶段:

1、获取指令 :首先将内存中的指令读取到CPU寄存器中
2、指令译码 :在获取指令后进入指令译码阶段,译码器对指令分析,获取指令类别和操作方法
3、执行指令 :译码结束后完成指令下的各种操作;
4、获取数据 :然后根据地址码从主存中读取数据进行运算;
5、写回数据:最后将运行的数据写回到内部的寄存器中,便于之后的指令存取。

CPU的工作原理基于时钟信号的节奏,以固定的频率进行指令的执行。每一个时钟周期,CPU会依次执行取指、解码、执行、访存、写回等步骤,从而实现程序的顺序执行。

CPU的组成

CPU=ALU(运算器)+CU(控制器)+ACC(寄存器)
ALU:(Arithmetic Logic Unit,算术逻辑单元)是CPU中负责执行算术运算和逻辑运算等操作的单元。
CU:(Control Unit,控制单元),负责控制和协调整个CPU的操作。
ACC:(Accumulator,累加器)是一种特殊的寄存器,用于存储和操作算术运算的结果。

CPU的类型

CPU的类型:CISC和RISC
CISC:CISC(复杂指令集)体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计。
RISC:RISC(精简指令集)的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了。

CPU设计方式发展
1.早期简单CPU,指令和功能都很有限
2.CISC年代 —— CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展。
3.RISC年代 —— CPU仅提供基础功能指令(譬如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。

1、单片机的组成

1.1 核心设备

CPU(Central Processing Unit,中央处理器)
计算机的核心设备是CPU,同样这也是单片机的核心部件。
从结构来看:CPU就是一块超大规模集成电路,CPU的本质就是电路。
从功能来看:兼具运算和控制的功能
CPU主要包括以下三个部分:运算器,寄存器和控制器,不包括内存。
运算器:数据运算,比如加减乘除取余等运算
控制器:控制CPU的运行,读取指令代码,解码并执行指令
寄存器:临时存储,外部数据进入到cpu的时候,暂时存储在寄存器中
总结:
(1)CPU = 运算器 + 控制器
(2)CPU = ALU + cache + Bus(总线)
(3)CPU = 汇编指令 + 寄存器
在这里插入图片描述
在这里插入图片描述

1.2 ROM和RAM

这两个共同构成单片机的存储体系
(1)ROM(read only memory,只读存储器),意思是只能读不能写,表示程序运行时只能通过程序自己本身的操作去读而不能写。单片机中用来存储用户烧录的程序的器件就是ROM,烧录的过程其实就是在写ROM,但是程序运行时是不能修改ROM的内容;单片机中程序平时是存储在ROM中,运行时由ROM直接供给CPU。单片机中的ROM一般是Flash(闪存),有些地方会看到叫flash memory;。ROM就有点类似于仓库,用来存储程序代码,ROM有点像外存的概念,但是并不完全相等。主要是因为计算机系统有不同的设计方法,譬如PC机和单片机的设计就不相同。PC机中有外存、没有ROM,单片机中有ROM、没有外存。
(2)RAM(random access memory,随机访问存储器)。从物理上来讲,RAM主要分为SRAM和DRAM,单片机中一般都使用SRAM,嵌入式SoC和PC机中用的都是DRAM。
(3)ROM和RAM的协同工作方式:ROM用来存储用户写好、编译好的程序,运行时CPU直接从ROM中读取一条一条的指令来运行,指令运行过程中产生的临时数据放在RAM中。所以基本可以理解为:ROM是单片机用来放程序,RAM用来放数据。
计算机系统中的内存与外存理解
内存:内存和CPU接轨比较紧密,可以被CPU直接访问,内存可以按照字节为单位来随机访问、程序运行时离不开内存、程序中的变量都是定义在内存中的。内存受限于物理技术和成本,容量比较小而贵;内存速度比外存快很多,CPU的速度比内存的速度快好多。内存就是内存条、CPU里面的存储器。
外存:外存和CPU之间比较远,外存不可以被CPU直接访问,外存一般以块为单位来访问,不能以字节为单位随机访问。外存容量大而便宜,外存速度比内存慢好多,比如:硬盘、U盘、SD卡。

1.3 外设和内部外设

外设就是单片机外围电路,如下设备是必须的:
(1)晶振。单片机是一个同步设备,其需要一个同步的时钟,需要时钟发电进行触发,满足两个条件:1.需要电;2.需要晶振
(2)复位电路
(3)电源供电电路
(4)USB下载电路

内部外设:
(1)外设英文叫peripheral,全程为外部设备。属于单片机中的模块
(2)单片机中除了三大部件(CPU、IO引脚、存储器)外,还有一些别的东西,譬如串口控制器、譬如I2C控制器等····这些东西就叫外设。
(3)早期单片机功能很弱小,不具备很多功能(譬如中断功能、譬如串口通信功能),那我们用单片机做产品,只能外部扩展一些专用芯片(中断控制有中断控制器芯片,串口通信我们有串口通信芯片)来和单片机结合(做到一块电路板上用导线连接)起来工作。这种产品设计中核心部分就是单片机,外部配合的这些专用芯片就是外部设备,简称外设。
(4)后来随着半导体工业发展进化,集成电路的集成能力变强大了,我们干脆就把一些常用的外设直接集成到单片机里边去了。所以单片机里边就有了一些原来被称为外设的东西,但是叫法名称还是沿用了开始的名称。
(5)为区分外设,将集成到单片机里边的外设叫做内部外设;还有外部外设,就是至今仍然没有集成到单片机内部,还在外部的那些外设。

单片机最小系统

概念:能使单片机工作的最简单的电路统称为单片机最小系统,参考数据手册的说明。

单片机最小系统的构成:
1.晶振电路:提供时钟给单片机工作。一般使用12MHz的晶振,便于计算机器周期的时间;11.0592M适合串行通信,这个时候的波特率误差为0,而12MHz会产生误差。
2.复位电路:提供系统复位操作,当系统出现运行不正常或者死机等情况时,可以通过复位按键重新启动系统。
3.电源电路:提供稳定的电压。电压过大会烧毁电路,电压过小又会导致无法启动电路。
4.下载电路:用于烧录程序。现在的笔记本电脑没有RS232接口,所以要使用USB转TTL串口电平芯片来建立PC机和单片机数据传输通路。

2、单片机的工作原理

2.1 结构框图

单片机的结构框图如下图所示,框图中的方块是组成部件、箭头表示总线Bus;CPU(绿色部分)处于单片机系统的核心位置,外围模块都通过总线和CPU进行关联,而模块之间一般不直接相连;IO其实就是芯片上的引脚,不同的单片机型号有不同的IO数量和定义。其中的SARM和闪存都是内部存储器。
在这里插入图片描述

CPU总线:包括地址总线和数据总线
CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。
地址总线的位数决定CPU寻址范围;
数据总线的位数决定CPU单次通信能交换的信息数量;
总线的速度决定CPU和外设互换信息的速度。
CPU总线注意:
1) CPU的地址总线位数和数据总线位数可以不同(典型代表就是51单片机,地址总线16位,数据总线8位),但是一般都相同。
2) CPU的位数指的是数据总线的位数。
3) 32位CPU寻址的范围是4G(2的32次方),所以最多支持4G内存;
4) 数据总线是32位的,所以内存是32位的好,所以编程最好用int···

(1)CPU通过总线从存储器取出指令到内部,然后译码(运算器完成),然后执行(控制器完成)
(2)一条指令包括:指令码+数据
(3)执行指令反应为一个控制操作(控制器完成)或者一个数学运算(运算器完成)
(4)给单片机编程其实就是给CPU写指令序列

单片机统一的时钟节拍
(1)这里有一个概念叫:同步。同步就是好多个独立的部分按照同一个节奏步调来动,以此来实现一个配合。
(2)和同步相对的一个概念叫异步,异步就是各自干各自的。
(3)单片机的各个模块之间是同步工作的,CPU和存储器和IO和单片机中其他东西这些模块之间通过一个统一的节拍来同步工作,这个统一节拍就是单片机的时钟。
(4)这个时钟节拍对单片机很重要,单片机内部在一个时钟节拍中只能做一件事情。所以单片机要发现一些变化或者做一些事情,最小的时间单位就是1个时钟节拍。单片机的时间单位都是时钟节拍的整数倍。
(5)单片机中的CPU、存储器、IO等都是以时钟节拍为动作节拍的,所以单片机是一个同步系统。
(6)时钟周期的长度(时钟节拍的快慢)影响了单片机的速度,所以这个时钟就叫做单片机的主频。主频越高性能越高,一般PC的主频都是2G多3G多,51单片机的主频MHz级别。一般手机CPU的主频也在1G-2G左右。一般高级单片机如STM32的主频在百MHz级别。

管脚定义
(1)电源等管脚、单片机上面有一些管脚是用来支持单片机工作的,譬如VCC和GND、RST等,这些引脚和编程无关,程序也无法操控这些引脚。
(2)IO端口。IO端口是单片机和外部电路进行交互的窗口,外部电路通过IO向单片机内部输入(input)信息,单片机通过IO端口向外部输出(output)信息。单片机中大部分的引脚都是IO(P开头的引脚都是IO),将来单片机内部的程序运行就会通过操作这些IO来和外部电路交互,从而实现程序目的。
(3)管脚复用。普通引脚是一个引脚只有一个名字,一种作用;有些引脚有2个名字(譬如P3.0/RxD),这种引脚就有2种作用(意思不是说这个引脚可以同时做2件事情,而是说这个引脚在不同的时候可以工作在不同的2种模式下),可以通过软件编程让这个引脚在某个时间工作在某种模式下。一个引脚的2种模式之间没有关联,配置工作在A模式下则和B模式一点关系都没有。
为什么要管脚复用?纯粹是为了省引脚。

单片机编程
一般步骤
1. 明确需要实现的功能
2. 分析器件电路原理图,包括:目标器件的工作原理;相关模块的电路连接;控制其工作的IO端口。

GPIO介绍
GPIO(general purpose input output)是通用输入输出端口的简称,又叫IO端口。可以通过软件来控制其输入和输出。其实就是上述描述的RAM寄存器的外部引脚。输出高低电平来控制外部设备。
GPIO是如何工作的?
图所示,单片机(MCU)内的CPU与外接设备之间是通过寄存器进行控制信号的传输的,而这些寄存器的外在形式就是引脚,引脚连接着内部的寄存器和外部的设备,比如LED;通过驱动器将寄存器某一位上的0或是1转换为电平信号,也就是0或是+5进行输出。途中的寄存器指的是RAM(而不是ROM),每一个地址都是8位的。

51单片机上的引脚
如上图所示,单片机的引脚一共有40个。分类:
2.1电源引脚:GND和VCC(电源正极)
2.2晶振引脚:XTAL1、XTAL2
2.3复位引脚:RST/VPD
2.4下载引脚:TXD、RXD
2.5GPIO引脚:Px.x端口。GPIO占用了芯片大部分的引脚,共达32个,分为了4组,P0端口、P1端口、P2端口、P3端口,每组有8个引脚,引脚通过驱动器放大电路,传给IO端。

MCU、CPU、SOC之间的区别

  1. MCU(微控制器):MCU是一种集成了处理器核心(通常是CPU)、存储器、输入/输出接口和其他外围设备的单芯片系统。它通常被用于嵌入式系统,具有整合度高、功耗低、体积小和成本低的特点。MCU常用于需要简单控制和处理的应用,如传感器控制、家电、工业控制等。MCU通常以低功耗和实时性能为重点设计。
  2. CPU(中央处理器):CPU是计算机系统中的核心处理器。它主要负责执行指令、进行数据处理和控制计算机的操作。CPU通常是计算机系统中的一个独立芯片,通过与其他芯片和设备进行通信来实现数据的输入、输出和存储。
  3. SoC(System on Chip,芯片上的系统。片上系统):SoC是一种具有集成处理器核心、存储器、输入/输出接口、外围设备以及其他组件(如图形处理器、通信接口等)的单芯片系统。SoC通常用于复杂的计算机系统或移动设备,如智能手机、平板电脑、嵌入式计算机等。SoC是功能更强大和复杂的芯片,它可以运行更多的应用程序和服务,并具有较高的计算和图形处理性能。SoC和CPU的区别:SoC相比于纯粹的CPU,增加了很多外设。
    区别:
  4. 功能和复杂性:MCU通常集成了简单的处理器核心和基本的输入/输出接口,适用于简单的控制和处理任务。SoC则是更复杂的芯片,集成了更强大的处理器,多个外围设备以及其他组件,适用于复杂的计算和应用需求。
  5. 功耗和实时性:MCU通常被设计为低功耗芯片,且具有较好的实时性能,适用于需要实时响应的控制系统。而SoC的功耗和性能特点会根据具体应用和设计目标的不同有所变化。
  6. 应用领域:MCU常用于简单的嵌入式控制应用,如家电、工业控制、传感器等,而SoC更常用于复杂的计算和移动设备,如智能手机、平板电脑等。
    MCU和SoC是不同类型的芯片,MCU主要用于简单的嵌入式控制应用,具有低功耗和实时性能的特点。SoC则是功能更强大和复杂的芯片,适用于复杂的计算和应用需求,如智能手机、平板电脑等。选择使用哪种芯片取决于具体应用和系统需求。

现在能买到的都是SoC,而ARM公司生成的就是纯粹的CPU,没有集成任何的外设。各种外设都是半导体厂商根据需求自己添加的。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌小超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值