单片机将中央处理器(CPU)、存储和输入输出集成在一个芯片上。可以说,单片机就是微机,只是它的功能和我们平时用的电脑不一样,不是我们用的。像电脑一样强大。
计算机可以一个一个地运行应用程序,单片机可以根据工程师的指令编写可执行文件来实现各种功能。那么,单片机是如何知道要执行什么指令,要做什么动作,我们的指令又是如何被单片机识别的呢?了解这个过程可以加深对单片机的理解。
中央处理器
首先,让我们从CPU的组成说起。CPU由晶体管组成。这些晶体管是半导体器件。例如,二极管是最常见的半导体器件。电流只能从正极流向负极,反向截止。
晶体管通过各种组合形成门电路:与门、或门、非门、异或门等。门电路,也称为逻辑门,是数字电路、普通门电路及其真值表的基础:
我们了解下一个与门电路:
与门电路可以想象成两个开关串联控制一个灯泡,只有两个开关同时闭合,灯泡才会亮。开关代表三极管的通断,灯泡的通断代表电路输出的高低电平。
其他门电路也由各种晶体管组成。不同的输入有不同的输出,形成各种功能。各种门电路通过复杂的组合成为CPU。然后使用CPU完成各种复杂的计算。
加法器
借助 CPU,让我们用它来计算一道小学算术题 1+1=2,看看它是如何工作的,先从一个简单的加法器开始,它由半加法器组成。
半加器
半加器由与门和异或门组成。不管低位进位的进位值如何,只有两个输入和两个输出。
1+1=2,2用二进制表示为0010。半加器中:异或门输入不同电平(不是同时为高或低),输出为高,即1+0或0+1单路d触发器芯片,输出为1。当两个输入均为1时,输出为0。与门输出1,这是一个进位。可以抽象成一个黑盒子:
全加器
两个半加器可以用来组成一个全加器:
多位相加时,可使用半加器将最低有效位相加,并给出进位数。第二位的加法有两个加数(B 和进位 CO),以及前一个低位的进位位 (A)。将这三个数字相加得到基数(全加器)和进位数。也可以抽象出来:
这个黑盒是一个函数,它将两个加数作为输入,将它们相加,然后输出一个和。
要计算多个数字的加法,需要多个全加器和其他门来组合更复杂的加法器。减法运算可以通过加法分解:
减法:10 – 5 = 10 + (-5),必须通过补码、补码等运算完成。
其他算子也是由相关的门电路组成,相关知识这里不展开。
从加法器中不难得出单路d触发器芯片,CPU的运行是各种门电路的高低电平的输入和输出。高电平为1,低电平为0。将我们常用的十进制数转换成二进制数进行输入输出。二进制数。
登记
两个数字的加法是通过全加器的组合完成的。如果是多个数字相加怎么办?比如1+2+3+4+5+…+100,怎么完成呢?
按照我们的计算过程来看这个问题,我们先把前两个数拿出来相加,然后把得到的和加到第三个数上,依次加到100,再转换到单片机就完成了,然后把所有的和的和放入一个内存中,每次加法取出,每次加法的和保存,下次加法用寄存器。
寄存器 1 保存数字 1-100,寄存器 2 保存每次加法的结果。计算1-100的加法,-2的初值为0,-1的个数和-2的结果依次相加:
1+0=1,
2+1=3,
3+3=6,
4+6=10…
闩锁
但是寄存器如何帮助我们保存数据呢?这就是锁存器的用武之地。两个或非门构成了最简单的锁存器。
简单地说,这个单元记住了之前S端的输入1,直到我们把R端设置为1,输出Q才变回0。
然后给这个简单的锁存器加上一个控制端G和一个输入端D,就变成了一个D锁存器:
它有两个输入端,一个用于信号控制G,一个用于输入数据信号D,一个用于输出Q。它的作用是在G有效时将D的值传给Q,这就是锁存的过程。
扳机
将两个 D 锁存器组合在一起成为 D 触发器(DATA 触发器)。触发器又称双稳态门,又称双稳态触发器,是一种可以工作在两种状态的数字逻辑电路。
触发器保持其状态,直到它们接收到输入脉冲,也称为触发。常见的触发器有:RS触发器、D触发器、JK触发器,其中D触发器是最常用的。
当latch-1控制G为有效信号时,将D的输入传给latch-2的输入,但此时latch-2的控制信号无效,所以latch-2的输出Q没变; 当latch-1的控制G变为无效时,latch-2的控制信号变为有效,latch-2的输出Q发生变化,即触发器的D输入传给Q,D保持不变无输入不变。
时序电路
我们来看看1-100的积累过程。如果 -1 和 -2 的存储速度不同,或者运算单元不协调,即 -2 还没有来得及存储,或者 -1 没有被取出。如果操作中涉及到一个数字,则当前操作会出错,会影响下一次操作。这种影响会被无限放大到后续的结果,而单片机还有很多外设需要同步运行。需要一个统一的命令来同步各个部分的动作,什么时候做什么,做什么。
这个命令就是时钟。时钟电路产生一个脉冲信号给电路。可以认为,当给定一个脉冲信号时,单片机各部分动作,电路刷新,达到动作统一。在前面的D锁存器中,D触发器的G输入是时钟脉冲信号输入,它控制G输入信号,然后控制Q的输出,或者记住Q值。这就是记忆最初的样子。
至此,我们知道寄存器是时序逻辑电路,但是这个时序逻辑电路只包含存储电路。寄存器的存储电路由锁存器或触发器组成,用于暂存运算所涉及的数据和运算结果。
一个锁存器或触发器可以存储1位二进制数,所以N个锁存器或触发器可以组成N位寄存器,一般有8位寄存器、16位寄存器等。广泛应用于各种数字系统和计算机中。
运行程序
有了前面的铺垫,下面我们来分析一下代码是如何被单片机识别并转化为功能输出的。
首先,工程师编写代码逻辑,然后编译成单片机的可执行程序。这个可执行程序实际上变成了一个按一定规则排列的0和1组成的二进制数,然后用编程器将其写入单片机。
单片机内部是由我们前面学过的门电路的各种组合组成的,门电路也是由半导体器件组成的。这些半导体PN结是一种特殊的保险丝。空白单片机内部是保险丝矩阵。烧录过程中,程序中的0位被烧毁,1位开启。编程后,单片机具有逻辑功能。
程序执行过程:从程序存储区读取程序指令——分析指令——执行指令。
读指令:就是根据程序计算器(PC)的地址取出相应的指令,送入指令寄存器。
分析指令:取指令寄存器中的指令操作码后解码,分析指令的性质。如果该指令是我们之前的加法操作中的加数,则查找加数的地址。
指令的执行:无非是将二进制代码转换成数字信号(高低电平),操作逻辑门电路,像我们的加法器一样输入输出。输出逻辑门运算的结果,微控制器的相关引脚电平输出高电平或低电平。
也就是说,单片机上电,单片机处于初始状态。可以认为初始状态的程序计算器(PC)具有首指令地址。在时序电路的作用下,送入指令寄存器,分析指令,执行指令,输出。功能等等。这样,单片机就自动进入执行程序的过程。
当然,单片机的运行过程是很复杂的,这里只是简单的个人理解和总结。
快点!单芯片进入高级学习路径(带教程+工具)
从晶体管到逻辑电路,从逻辑电路到单片机,从单片机到现在的计算机和超级计算机,是一个不断积累、不断进步的过程。你想让你的人生成为一个如此精彩的过程吗?找我收集资料,开始与导师一对一互动,进入进阶学习,成就精彩人生。
文章来源:http://baijiahao.baidu.com/s?id=1722122624899044501&wfr=spider&for=pc