本节课程是按照冯诺依曼计算机体系结构为基础,自顶向下分析冯诺依曼体系结构的组成、优缺点、改进。并以此为基础对各个部分进行详细的介绍。
核心内容
(1)冯诺依曼体系结构
冯诺依曼体系结构如下图所示:
冯诺依曼体系结构有五个组成部分:
CPU通过总线与存储器和I/O设备相关联,总线一般包括:
CPU可以抽象为控制器+运算器,控制器由一些功能寄存器组成:
输入输出设备也包含五个部分:
(2)程序存储与执行
指令和数据用二进制存储在存储器中。控制程序执行的有两个特殊功能寄存器:
机器周期是指执行一条指令需要的时间。一个机器周期的程序执行步骤分为三步:
(3)问题与优化
讨论(一)性能提高方式的总结
冯诺依曼计算机的串行性严重制约了其性能的提升空间,机器的串行性包括:
为了提升冯诺依曼计算机的运行效率,就得去解决串行性问题。我们常常可以从总线、CPU、计算机结构三个方面思考提高性能的方式。
最简单的方法就是加快机器主频,提高CPU访问存储器、执行指令的速度。 但是CPU的主频不能无限提高,因为机器的功耗会随着主频的提高而增大。 也可以通过流水线作业或多处理器并行的方法,依靠时间上的重叠提高处理效率。从总线的角度考虑,我们可以增大总线宽度提高传输数据量的大小。也可以将总线分段,各段总线独立运行实现流水线作业。从计算机结构考虑,可以引入中断机制。
讨论完冯诺依曼体系结构的基本组成以及问题和改进,接下来我们将就对剩下的两个部分“存储器”、“输入输出设备”进行细致的探讨。
讨论(一)——存储器
博客园:主存、辅存、内存的区别
在计算机中,指令和数据以二进制的形式存储在存储器中。理想的寄存器应该具有容量大、速度快、价格低、体积小、非易失性等特征。对于通用计算机而言,存储层次至少应该有三级:寄存器、主存(RAM,ROM)、辅存(磁盘、固态硬盘)。存储层次按照存储器的单位成本和速度进行划分,常见的存储层次如下:
(1)存储器种类
根据存储器层次对当前流行并使用的存储器进行划分:
主存:又称内存,是CPU可以直接访问的存储空间。内存一般由半导体器件组成,包括:
RAM(随机存储器):可以读写的存储器。但是断电后数据就会消失。
①SRAM(静态随机存储器):速度快不需要刷新操作。
②DRAM(动态随机存储器):电容存在漏电现象,需要周期性刷新。
ROM(只读存储器):在制造ROM时信息就被永久写入保存。这些信息只能读出不能写入。
Cache(高速缓存器):在CPU和内存之间,是一个读写速度别内存更快的存储器。
Flash:结合了RAM和ROM的长处,不仅具备电子可擦除编程性能,还可以断电不丢失数据。
外存:此类存储器断电后仍能保存数据,且容量较大。缺点是速度较慢。
当前流行和使用的存储器都没有办法满足理想存储器的性质。当前的存储器主要有以下三点问题:
高速度与易失、容量的矛盾
比如访问内存的速度是很快的,但是因为内存制造成本很高,难以造出具有很高容量的内存。
大容量与速度、成本的矛盾
非易失与速度、寿命的矛盾
存储器墙问题:当前内存的存取速度严重滞后于处理器的计算速度,内存瓶颈导致高性能处理器难以发挥出应有的功效。
介绍完了冯诺依曼体系结构以及存储器结构后,我们将以一些具体的计算机实例(51单片机、X86)等对五大组成部分进行分析了。
下面我们将通过下述五个方面对I/O设备进行分析。
所有I/O口都可以通过软件配置为4种工作类型之一(优点:可以大大简化MCU外围电路),我们可以通过设置PxM1, PxM0的值为Px配置工作模式:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 无 |
---|---|---|---|---|---|---|---|---|---|---|
0xfd | 0x60 | 0xda | 0xf2 | 0x66 | 0x96 | 0x3e | 0xe0 | 0xfe | 0xf6 | 0x00 |
0:1111 1101 = 0xfd
1:0110 0000 = 0x60
2:1101 1010 = 0xda
3:1111 0010 = 0xf2
4:0110 0110 = 0x66
5:1001 0110 = 0x96
6:0011 1110 = 0x3e
7:1110 0000 = 0xe0
8:1111 1110 = 0xfe
9:1111 0110 = 0xf6
无:0000 0000 = 0x00
步进电机由P4.1~P4.4进行控制,可以通过并口4各个IO口的电压变化,使步进电机发生转动。
①P4.1~P4.4设置推挽,即P4M0 = 0x3f, P4M1 = 0xe1。
上面我们介绍了I/O设备之一的“并口”。接下来我们将通过学习51单片机来对I/O设备进一步的理解。
51单片机中有三个存储器:
编址是给每一个单元赋予一个地址码。有两种常见的编址方法:
(1)51编址方式
分片存储器与IO统一编址
①程序存储器ROM:0~65535(FFFFh)
②片内数据存储器/IO:0~255(FFh)
③片外数据存储器/IO:0~65535(FFFFh)
51的总线宽度为8bit
另外,51单片机内部的数据存储器用于存放程序执行的中间结果和过程数据。51单片机有两种数据存储器:片内RAM、片外RAM。
大小:片内RAM共有256个字节,分为两个部分:
①低128字节
②高128字节和特殊功能寄存器区(保存特殊功能寄存器的地址)。
寻址:MOV
①低128字节既可以直接寻址,也可以间接寻址。
②高128字节RAM只能间接寻址。
③高128字节特殊功能寄存器区只能直接寻址。
低128字节RAM
①工作寄存器区:包含四组,每组包含8个工作寄存器R0~R7。
②位寻址区
③通用区
21个特殊功能寄存器:可以按照CPU、定时器、并口、串口、中断、电源管理这六个方面进行划分。
(2)21个特殊功能寄存器
特殊功能寄存器的有些位赋予了位名称,有些赋予了位地址。只有那些有位地址的位才能进行位操作。
在后面我们回对片内IO资源相关的寄存器进行一一分析。这里只需要记住21个SFR就可以了。
这样,我们就把51单片机的结构和存储器部分介绍完了。存储器部分包括程序存储器和数据存储器(片内RAM/IO、片外RAM/IO),其中51单片机采用存储器和IO统一编址。程序存储器共有FFFFh(65536)个字节,其中包括了7个特殊的单元用于存储程序复位和中断服务程序地址。片内RAM包含FF(256)个字节,其中低128个字节是既可以间接访问也可以直接访问的数据存储RAM,它包括工作寄存器区、位寻址区、通用区三个部分。高128位是只能间接访问的数据RAM和只能直接访问的SFR区。在标准51单片机中有21种特殊功能寄存器(A,B,PSW,SP,DPH,DPL,P0,P1,P2,P3,SBUF,SCON,TMOD,TCON,TH1,TL1,TH0,TL0,IE,IP,PCON)。接下来我们就会对这些IO设备以及他们的特殊功能寄存器进行介绍。
(1)伪指令
(2)数据存储方式
51单片机有六种寻址方式:
立即数寻址:在指令集中直接给出参加运算的操作数,操作数用#标识。
①MOV A, #70H:将立即数70H传送到累加器A中
直接寻址:只能用来表示特殊功能寄存器、内部数据寄存器、位地址空间。
①MOV 70H, #48:将立即数存放在70H单元里。
间接寻址:采用R0或R1或DPTR前添加@表示。
①MOV A, @R1:假设R1中的数据是40H,则是将存放在40H单元的数据传送到累加器。
寄存器寻址:对选定的工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器和进位C中的数进行操作。
①MOV A, R3:将R3中的数据传送到累加器。
②对比间接寻址和寄存器寻址
相对寻址:将程序计数器PC的值设为转移指令的转移地址。
①CJNE A, #30, 20H:判断累加器中的数值与30H是否相等。若不相等下一指令的地址相当于当前地址跳过20个单元。
变址寻址:偏移量与变址基址相加,结果作为操作数的地址。
①MOVC A, @A+DPTR:累加器为偏移量寄存器,与地址寄存器DPTR内容相加。结果作为操作数的地址,取出地址单元送给累加器A。
特别注意以下内容:
51单片机指令系统一共有五类指令:数据传输(29)、算术运算(24)、逻辑运算(24)、程序转移(17)、位操作(17)。具体指令不在这里展开,完整的指令集可以参照《STC15系列数据手册_2021版》。
I/O设备主要有五种类型组成:并口、串口、定时器/计数器、中断系统、DMA
核心功能
==并口属于I/O模块,在CPU看来是可以访问的寄存器单元。
(1)定义
(2)工作模式
所有I/O口都可以通过软件配置为4种工作类型之一(优点:可以大大简化MCU外围电路),我们可以通过设置PxM1, PxM0的值为Px配置工作模式:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 无 |
---|---|---|---|---|---|---|---|---|---|---|
0xdf | 0x06 | 0xad | 0x2f | 0x66 | 0x69 | 0xe3 | 0x0e | 0xef | 0x6f | 0x00 |
0:1101 1111 = 0xdf
1:0000 0110 = 0x06
2:1010 1101 = 0xad
3:0010 1111 = 0x2f
4:0110 0110 = 0x66
5:0110 1001 = 0x69
6:1110 0011 = 0xe3
7:0000 1110 = 0x0e
8:1110 1111 = 0xef
9:0110 1111 = 0x6f
无:0000 0000 = 0x00
步进电机由P4.1~P4.4进行控制,可以通过并口4各个IO口的电压变化,使步进电机发生转动。
①P4.1~P4.4设置推挽,即P4M0 = 0x3f, P4M1 = 0xe1。
51单片机有多种计数器类功能模块,比如:定时器、计数器、计时器、PWM、看门狗、波特率发生器等。他们的特点是都内含一个计数器。
(1)理解
下面我们将对这些特殊功能寄存器以及一些辅助控制寄存器进行学习。
T1由TMOD高4位控制,T0由TMOD低4位控制。
C/T:设置定时器/计数器工作模式
①C/T=0:对内部及其时钟计数,定时方式。
②C/T=1:对外部引脚脉冲计数,计数方式。
GATE:设置定时器/计数器控制方式
①GATE=0时,运行只由软件控制。
②GATE=1时,运行同时由硬件控制。
蜂鸣器:假设使用T1实现蜂鸣器时,TMOD初始值设为:TMOD = TMOD & 0x0F。
①采用16位自动重载模式,M1M0=00。
②采用定时方式,C/T=0。
③不需要受硬件控制,GATE=0。
T1, T0的运行控制和状态由TCON中位控制。
TF1:T1溢出中断标志。
①TF1=1,定时器/计数器T1溢出,产生T1中断。
②TF1=0,未溢出。
③初始化操作时,令TF1=0。
TR1:T1运行控制位。
①TR1=1,允许T1开始计时。
②TR1=0,禁止T1计时。
蜂鸣器:假设使用T1实现蜂鸣器时,需要进行如下初始化:
①清零T1中断标志位,TF1=0。
②允许T1开始计时,TR1=1。
综上所述,我们介绍了TMOD, TCON, AUXR三种寄存器。在实际配置中,我们需要先设置TMOD和AUXR中的定时器/计数器模式后,在通过TCON打开定时器/计数器。
中断提供了对异常事件的响应机制,提高了计算机的实时性。
(1)定义
两个特殊功能寄存器
①IE:中断允许寄存器
②IP:中断优先级控制寄存器
五个中断源
外部中断源:
①INT0:外部中断0(与P3.2复用)
②INT1:外部中断1(与P3.3复用)
内部中断源:
①T0:定时器0溢出中断
②T1:定时器1溢出中断
③TI, RI:串行通信
(2)常见的串行总线接口
(3)串行数据传输方式
有三种串行数据传输方式,根据方向和传输顺序可以分为:
(4)波特率
(5)同步与异步通信
同步串行通信:发送方和接收方共用一个时钟信号。
①不需要约定波特率,波特率因子为1.
②无累计误差,一次可以传输一个数据块。
异步串行通信:发送方和接收方有自己的时钟信号,时钟信号不需传送。
①需要事先约定波特率。
②双方时钟可能存在累计误差,因此异步通信常以字节为单位进行通信。
(6)串行通信协议——MCS51
串行通信协议需要约定6个方面的内容:同步方式、通信速度、检错纠错方式、数据格式、信号电平、控制信号/字符等。
(6.1)同步方式
(6.2)基本信号
(6.3) 常用信号电平
因此“9600,8,n,1”表示波特率9600bps,8个数据位,无奇偶校验,1个停止位。
(7)ModBus RTU协议
通信基本格式:1字节设备地址 + 1字节功能码 + N字节数据 + 2字节CRC校验码。
问题:因为每次通信都由上位机发起和总线访问控制的方式导致。
①通信效率低。
②实时性差。
③网络容错性差。
(1)存储器(内存)
(2)单片机
(3)计算机