Download presentation
Presentation is loading. Please wait.
1
第二章 微型处理器与单片机 第1节 CPU的内部逻辑结构 第2节 CPU的外部结构 第3节 8086支持的存储器结构
第3节 8086支持的存储器结构 第4节 8086系统配置 第5节 CPU的操作和时序
2
第1节 CPU的内部逻辑结构 一、CPU的组成和功能 1、CPU的组成 CPU主要由运算器、控制器、寄存器组和片内总线等组成
(1) 指令控制 (2) 操作控制 (3) 时序控制 (4) 执行指令 (5) 数据加工(运算)
3
二、8086/8088微处理器的内部结构 8086是16位的微处理器,有16位数据线和20位地址线,可寻址220即1MB。
8088是准16位微处理器,内部为16位,外部数据线为8位。 8086主要分为两个独立的功能模块,总线接口模块(BIU)和执行部件(EU),它们可以并行工作。如图2.1所示。
5
1、总线接口部件BIU 总线接口部件负责与存储器、输入/输出端口传送数据。 总线接口部件组成:
(1) 专用寄存器组:段地址寄存器CS、DS、ES、SS和指令指针寄存器IP,均为16位。 (2) 地址加法器:8086在寻址1M字节地址空间时需用20位地址,这个地址就是由地址加法器产生的。
6
具体的说,地址加法器将段寄存器(16位)的内容左移4位,然后与指令指针寄存器IP的内容相加得到20位的物理地址。
例如:从内存取指令时, (CS)=5760H,(IP)=1234H,则物理地址为: 57600H+ 1234H =57934H。 这里,先将段寄存器CS左移4位(16进制数只需后面加一个零)。
7
(3) 6字节的指令队列:总线接口部件从内存中取来的指令放在一个缓冲区中,这个缓冲区叫指令队列。执行部件在执行指令过程中从指令队列取来指令执行。
(4) 输入/输出控制电路:该控制电路将8086CPU的片内总线与系统总线相连,是8086CPU与外部交换数据的必经之路。
8
2、执行部件EU(Execution Unit)
执行部件负责执行指令。通常,从指令队列中取得等待执行的指令。组成如下: (1)算术逻辑单元ALU:完成各种运算。 (2)标志寄存器FR:用来保存ALU运算结果的一些特征信息,如运算是否进位。 (3)通用寄存器组:数据寄存器AX,BX,CX,DX和寄存器BP,SP,SI及DI,均16位。 (4)执行部件控制电路
9
3、BIU和EU的管理 BIU和EU可以并行工作,提高CPU效率。
(2)EU执行指令时,从指令队列头部取指令,然后执行。如需访问存储器,则EU向BIU发出请求,由BIU访问存储器。 (3)在执行转移、调用、返回指令时,需改变队列中的指令,要等新指令装入队列中后,EU才继续执行指令。 (4)当指令队列已满,而且执行部件对总线接口部件又没有总线访问请求时,总线接口部件便进入空闲状态
10
4、寄存器结构(编程结构) (1)通用寄存器组 8086CPU有8个16位的通用寄存器,分2组。
通用数据寄存器:AX,BX,CX,DX,用来存放数据或地址; 一个16位寄存器也可以当作两个8位寄存器用,此时表示为AH,AL,BH,BL,CH,CL,DH,DL。 基地址寄存器BP,堆栈指针寄存器SP,源变址寄存器SI和目的变址寄存器DI主要存放地址,也可以存放数据。
11
(2)段寄存器 四个段寄存器为 通过这 四个段寄存器,CPU可=以定位4个逻辑段, 分别为: CS(代码段寄存器)、
DS (数据段寄存器)、 ES (附加段寄存器) SS (堆栈段寄存器)。 通过这 四个段寄存器,CPU可=以定位4个逻辑段, 分别为: 当前代码段 当前数据段 当前附加段 当前堆栈段。
12
(3)指令指针寄存器IP 该寄存器的内容用来指明将要执行的下一条指令在代码段中的位置。 总线接口部件BIU负责修改IP寄存器的值,使它始终指向将要执行的下一条指令。
13
(4)标志寄存器FR FR主要用来标志运算结果的状态,以及控制CPU的操作。各标志位定义如图2. 2所示(共有9个标志):
14
CF:进位标志,表示本次运算中最高位(第7位或第15位)有进位或有借位。 PF:奇偶标志。
标志位共有9个,6个是状态标志,用来表示运算结果的特征,包括CF、PF、AF、ZF、SF和OF;3个是控制标志,用来控制CPU的操作,包括IF、DF和TF。 CF:进位标志,表示本次运算中最高位(第7位或第15位)有进位或有借位。 PF:奇偶标志。 PF=1表示本次运算中低8位有偶数个“1”; PF=0表示有奇数个“1”。 AF:辅助进位标志。 AF=1表示本次运算第3位向第4位有进位或有借位。在十进制运算中作为是否进行十进制调整的依据。 ZF:零标志。 ZF=1表示本次运算结果为零,否则ZF=0 SF:符号标志。 SF=0为正数; SF=1为负数。 OF:溢出标志。 OF=1表示本次运算结果产生溢出,否则 OF=0。所谓溢出就是指运算结果超出了相应类型数据所能表示的范围。
15
DF:方向标志,用来控制串操作指令的执行。
IF:中断标志,用来控制对可屏蔽中断的响应。 IF=1, 则允许CPU响应可屏蔽中断; IF=0,则CPU不能响应可屏蔽中断。 TF:单步标志。 若TF=1,则CPU进入单步工作方式,即CPU每执行一条指令就自动产生一次内部中断; TF=0, 则CPU正常执行。
16
5、8088与8086的区别 8088的指令队列只有4个字节,若出现1个空字节,BIU就会自动取指令补充。
8088 BIU与外部交换数据是8位的,I/O控制电路与专用寄存器之间的数据总线宽度也是8位的。
17
第二节 CPU的外部结构 8086/8088CPU芯片都是40条引脚的双列直插式封装。部分引脚采用了分时复用方式,即同一条引脚在不同的时刻具有不同的用途。如图2.3所示。 8086/8088CPU可有两种工作模式,即最大模式和最小模式。不同模式下个别引脚的功能是不同的。
18
8086与8088 CPU外观比较
19
一、8086引脚分类 (1) 公共引脚 地址总线 数据总线 时钟信号 中断信号 就绪/等待信号 (2) 模式选择引脚 最小模式引脚
最大模式引脚
20
最小模式和最大模式的概念 所谓最小模式,就是系统中只有8086或8088一个微处理器。
最大模式是相对最小模式而言。最大模式用在中等规模的或者大型的8086/8088系统中。有外围总线控制器
21
(1)、公共引脚说明 地址总线 数据总线 时钟信号 中断信号 就绪/等待信号
22
地址总线 独立输出之高8位地址:A8~A15 分时输出的AD0~AD7, 通过锁存器产生低8位地址A0~A7, Pin16~9
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 独立输出之高8位地址:A8~A15 A19/S6 分时输出的AD0~AD7, 通过锁存器产生低8位地址A0~A7, Pin16~9 A8 AD7 分时输出的A16/S3~19/S6, 通过锁存器产生最高4位地址A16~A19 AD0 共20根地址线,寻址空间为:220=1M
23
数据总线 分时输出的AD0~AD7, 直接产生8位数据D0~D7 Pin16~9 共8根数据线,字长为:8位 Intel 8088 1 2
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 数据总线 A14 A16/S3 分时输出的AD0~AD7, 直接产生8位数据D0~D7 Pin16~9 A19/S6 A8 AD7 共8根数据线,字长为:8位 AD0
24
时钟信号 不可屏蔽中断信号 时钟输入:CLK,Pin-19 为8088提供基准,来自8284芯片,为4.77MHZ
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 时钟输入:CLK,Pin-19 为8088提供基准,来自8284芯片,为4.77MHZ A19/S6 A8 AD7 不可屏蔽中断信号 不可屏蔽中断请求:NMI,输入,上升沿触发。INT 2,Pin-17 AD0 NMI CLK
25
可屏蔽中断 可屏蔽中断请求:INTR,输入,高电平触发。Pin-18 中断允许标志可屏蔽中断请求。 总线周期的最后一个时钟周期检测INTR。
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 可屏蔽中断请求:INTR,输入,高电平触发。Pin-18 中断允许标志可屏蔽中断请求。 总线周期的最后一个时钟周期检测INTR。 可以通过8259扩充中断源。 A19/S6 A8 AD7 AD0 NMI INTR CLK
26
就绪与等待 CPU就绪信号:READY,输入,高电平有效。Pin-22 READY信号用来与慢速存储器或外设进行速度匹配。 Intel
8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 CPU就绪信号:READY,输入,高电平有效。Pin-22 A19/S6 A8 READY信号用来与慢速存储器或外设进行速度匹配。 T2时钟周期末检测到READY为低时,在总线周期的第3时钟周期插入一个等待周期Tw。如此每个T后检测,重复插入Tw直到READY变高。 AD7 AD0 NMI INTR CLK READY
27
等待测试 CPU测试信号:TEST,输入,低电平有效。Pin-23
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 CPU测试信号:TEST,输入,低电平有效。Pin-23 A19/S6 A8 TEST信号与WAIT指令联合使用。CPU每5个时钟时钟周期检测一次TEST信号,如高,继续执行WAIT,否则,跳过WAIT指令,执行后续指令。 可用来支持实现多CPU协同工作。 AD7 AD0 NMI INTR TEST CLK READY
28
2、模式选择信号 8086的有两种组态模式 1.两种组态分别为:最小组态(模式)和最大组态(模式) 2.两种组态的区别:
(1)8086引脚 MN/ MX=1时,8086工作在最小组态. MN/ MX=0时,8086工作在最大组态. (2)最小组态时,系统中只有一个8086 CPU工作,所有总线控制信号均有8086产生,总线控制逻辑被减小到最小; (3)最大组态时, 8086提供一组信号,以组成多处理器/协处理器微机系统。即在一个系统中有两个或两个以上的微处理器,每个处理器能执行它自己的程序。 另外,系统中增加了总线控制器8288,许多总线控制信号由8288产生.
29
模式选择 CPU模式选择信号:MIN/MAX,输入,Pin-33 Intel 8088 可用来选择最大模式或最小模式工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 CPU模式选择信号:MIN/MAX,输入,Pin-33 A19/S6 MIN/MAX A8 AD7 可用来选择最大模式或最小模式工作。 最大模式:存储器与IO读写信号由总线控制器产生,要较多外围芯片。 最小模式:存储器与I/O读写信号由CPU直接提供,外围芯片较少。 AD0 NMI INTR TEST CLK READY
30
3、最小模式信号 最小模式的读写信号: RD:输出,三态。存储器与IO 读信号,CPU自动产生。DMA时浮空。Pin-32
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 最小模式的读写信号: RD:输出,三态。存储器与IO 读信号,CPU自动产生。DMA时浮空。Pin-32 WR:输出,三态。存储器与IO写信号。由CPU产生。Pin-29 IO/M:存储器与IO读写选择。 Pin-28 A19/S6 MIN/MAX A8 RD IO/M WR AD7 AD0 NMI INTR TEST CLK READY
31
最小模式信号-2 最小模式的控制信号: Intel DT/R:数据传输方向,输出,三态。高,发送;低,接受。Pin-27 8088
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 最小模式的控制信号: DT/R:数据传输方向,输出,三态。高,发送;低,接受。Pin-27 DEN:输出,三态。有效即低时,表示DB上的数据有效,用作总线驱动。Pin-26 ALE:输出,三态。分离AD0~AD7上的地址信号。Pin-25 A19/S6 MIN/MAX A8 RD IO/M WR AD7 DT/R DEN ALE AD0 NMI INTR TEST CLK READY
32
最小模式信号-3 最小模式的控制信号: INTA:中断应答,输出,低有效。Pin-24 HOLD:输入,高有效。DMA请求。Pin-31
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 最小模式的控制信号: INTA:中断应答,输出,低有效。Pin-24 HOLD:输入,高有效。DMA请求。Pin-31 HLDA:输出,高有效,DMA应答。 Pin-30 A19/S6 MIN/MAX A8 RD IO/M WR AD7 HOLD HLDA INTA HOLD AD0 NMI INTR TEST CLK READY
33
最小模式总线周期状态选择 操作类型 0,0,0 INTA 0,0,1 IOR 0,1,0 IOW 0,1,1 HALT 1,0,0
IO/M, DT/R, SS0 操作类型 0,0,0 INTA 0,0,1 IOR 0,1,0 IOW 0,1,1 HALT 1,0,0 取指令操作码 1,0,1 MEMR 1,1,0 MEMW 1,1,1 NOP
34
4、最大模式信号 S0~S2:总线周期状态标志。Pin –26,27,28 经过S0~S2译码产生存储器与I/O读写信号 Intel
8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 S0~S2:总线周期状态标志。Pin –26,27,28 经过S0~S2译码产生存储器与I/O读写信号 A19/S6 MIN/MAX A8 RD IO/M WR AD7 HOLD HLDA INTA HOLD S2 S1 S0 操作类型 000 INTA 001 IOR 010 IOW 011 HALT 100 取指令操作码 101 MEMR 110 MEMW 111 NOP S2 S1 S0 AD0 NMI INTR TEST CLK READY
35
最大模式信号-2 最的模式的控制信号: QS0~QS1:指令队列状态。Pin –24,25 Intel 8088 QS1,QS0 队列性能
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 最的模式的控制信号: QS0~QS1:指令队列状态。Pin –24,25 A19/S6 MIN/MAX A8 QS1,QS0 队列性能 0,0 NOP 0,1 队列中操作码的第一个字节 1,0 队列空 1,1 队列中非第一个操作码字节 RD IO/M WR AD7 HOLD HOLD HLDA INTA S2 S1 S0 QS0 QS1 AD0 NMI INTR TEST CLK READY
36
最大模式信号-3 最的模式的总线控制信号: \RQ/GT0~RQ/GT1:总线请求允许。Pin –31,30
Intel 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 最的模式的总线控制信号: \RQ/GT0~RQ/GT1:总线请求允许。Pin –31,30 \LOCK:总线锁存信号。低有效。Pin –29 A19/S6 MIN/MAX A8 RD IO/M WR AD7 RQ/FT0 RQGT1 LOCK HOLD HLDA INTA HOLD S2 S1 S0 QS0 QS1 AD0 NMI INTR TEST CLK READY
37
最大模式信号-3 S5用来表示中断标志状态线,当IF为1时,S5=1。 S6保持恒为0。 Intel 8088
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A15 A14 A16/S3 S3 S4 S3~S4:指示使用的段寄存器 A19/S6 S3,S4 代表的REG 0,0 DS 0,1 SS 1,0 CS(I/O,INT) 1,1 ES MIN/MAX A8 RD IO/M WR AD7 RQ/FT0 RQGT1 LOCK HOLD HLDA INTA HOLD S2 S1 S0 QS0 QS1 S5用来表示中断标志状态线,当IF为1时,S5=1。 S6保持恒为0。 AD0 NMI INTR TEST CLK READY
38
:总线高位有效信号 BHE AD0 总线使用情况 16位数据总线上进行字传送 1 高8位数据总线上进行字节传送 低8位数据总线上进行字节传送
16位数据总线上进行字传送 1 高8位数据总线上进行字节传送 低8位数据总线上进行字节传送 无效
39
8086微处理器信号一览 1.AD15-AD0:分时复用的地址/数据总线 2.A19/S6-A16/S3:分时复用的地址/状态线
3. BHE :总线高位有效信号 :读信号,低有效 :写信号,低有效 :存储器或I/O端口访问信号,低I/O,高MEM MEMR 与 与 MEMW
40
7.Ready:准备就绪信号 8.INTR:中断请求信号 :中断响应信号 10.NMI:非屏蔽中断请求信号 :测试信号 12.RESET:复位信号 13.ALE:地址锁存允许信号 :数据发送/接收控制信号 :数据允许信号
41
16.HOLD:总线请求信号 17.HLDA:总线请求响应信号 :工作模式选择信号 19.CLK:主时钟信号 20.Vcc:CPU+5V电源 21.GND:电源地 最大模式系统时24-31引脚 重定义如下: :总线周期状态信号 :封锁信号 :请求/同意信号 25.QS1,QS0:指令队列状态信号
42
第3节 8086支持的存储器结构 8086CPU有20根地址线, 直接寻址内存空间为220=1M字节,按(00000H-FFFFFH)编址。 直接寻址外设空间为216=64K字节,按(0000H-FFFFH)编址。 8086 CPU连接的1M字节存储器的空间实际上分成两个512KB的存储体,偶体与CPU的D0~D7相连奇体与CPU的D8~D15相连。 A0和/BHE信号用于选择两体(之一或两者)。 如下页:
43
图2.4 存储体与总线的连接
44
MOV AL,[0080H] MOV AX, [0080H] MOV AL,[0081H] MOV AX, [0081H]
访问奇起始地址需要两个总线周期 在访问一个字节时,无论给出的是偶地址还是奇地址,都只需要一个总线周期就可以完成。 在访问一个字时,偶起始地址一个总线周期,奇起始地址两个总线周期。
45
第4节 系统配置 系统配置的目的是形成存储器和输入/输出接口的公共总线,方便外设和存储器与微处理器的连接。
第4节 系统配置 系统配置的目的是形成存储器和输入/输出接口的公共总线,方便外设和存储器与微处理器的连接。 8086/8088在最小模式与最大模式下的系统配置有较大区别,以下以8086为例分别介绍在两种工作模式下的系统配置的典型方法。 由MN/MX信号控制。高小、低大。
46
1、最小模式的系统配置 在最小模式下,存储器和外设的地址、数据与控制信号由微处理器8086自行产生,
通过三片地址锁存器74LS373(或Intel 8282)和两片总线收发器74LS245(或Intel8286)形成外设和存储器的总线信号。 图中8284A作为时钟发生器使用,为8086通过精确时钟。 8282 或373 或245 8286
47
8282、8286或373、245 373 245
48
最小模式的地址与数据分离方法 D0~D7 8088 锁存器 (74LS 373) A0~A7 AD0 | AD7 ALE ALE
49
最小模式的数据驱动方法 245
50
最小模式-读写电路构成方法 逻辑 电路 RD MEMW 存储器读 存储器写 输入输出写 输入输出读 MEMR WR IOW M/IO IOR
51
2、最大模式系统 最大模式与最小模式的主要区别在于使用了总线控制器8288来产生地址锁存器、总线收发器和访问存储器、I/O接口所需要的全部控制信号。 在最大模式中,系统通常有两个或多个微处理器,设置总线控制器便于这些微处理器相互协调和共享控制。 有关8288可以参考书上的内容,不作要求。
52
2、最大模式系统
53
8288总线发生器结构 命令信号发生器 状态译码器 控制逻辑 控制信号发生器
54
8288总线发生器的输出 8088输出 8288输出 000 INTA \INTA 001 IOR \IORC 010 IOW
S2 S1 S0 8088输出 8288输出 000 INTA \INTA 001 IOR \IORC 010 IOW \IOWC、\AIOWC 011 HALT - 100 取指令操作码 \MRDC 101 MEMR 110 MEMW \MWTC、\AMWTC 111 NOP
55
XT BUS 形成电路 ALE
56
第5节 CPU的操作和时序 一、基本概念 1、时钟周期:是CPU的基本时间计量单位,它由计算机主频决定。8086主频是4.77MHz,一个时钟周期就是210ns。 2、总线周期:BIU完成一次访问存储器操作所需要的时间称作一个总线周期。一个最基本的总线周期由4个时钟周期组成,习惯上称4个状态,T1,T2,T3,T4状态。只有在CPU和内存或I/O端口之间传递数据以及取指令时,CPU才执行总线周期。
57
3、空闲周期:如果在一个总线周期之后,不立即执行下一个总线周期,则系统总线就处于空闲状态,此时执行空闲周期Ti。
4、指令周期:就是计算机完成对一条指令的读取并执行这一系列步骤所需要的时间。 指令周期包含一个或几个总线周期。 例如,执行一条8位寄存器乘法(MUL),这是一条两字节指令,需70-77个时钟周期的执行时间。
58
总线操作序列 总线周期 机器周期 指令周期
59
时钟周期 ①在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。
②在T2状态,CPU从总线上撤消地址,而使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(Al9一A16)用来输出本总线周期状态信息。这些状态信息用来表示中断允许状态、当前正在使用的段寄存器名等。 ③在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位(8088则为低8位)上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
60
二、系统的复位与启动操作 复位与启动是在RESET引脚上至少维持4个时钟周期的高电平,时序如图2.11所示。
图 /8088的复位时序
61
复位时各内部寄存器的值: 标志寄存器FR 清零 指令指针IP H CS寄存器 FFFFH DS寄存器 H SS寄存器 H ES寄存器 H 指令队列 空 其他寄存器 H
62
三、最小模式系统中的总线操作 8086CPU为了要与存储器或I/O端口交换数据,需要执行一个总线周期,这就是总线操作。
总线操作可以分为总线读操作和总线写操作。读操作是CPU从存储器或I/O端口读取数据,写操作是CPU将数据写入存储器或I/O端口。
63
最小模式系统中的总线读操作如图2. 12所示。 图 2.12 最小模式下的读操作时序
64
1 3 1 2 2 4 存储器读指令与存储器读时序的关系 MOV AX,0000H MOV DS,AX MOV AL,[8000H];读
1)ALE变高,将0000: 8000H放到AD0~AD19信号线上;译码器对其译码产生存储器选择信号 1 2)发出M / IO信号(高),发出RD信号为低 3)被选择的存储器将数据放到AD0~AD7信号线 2 2 4 4)CPU在RD上升沿将AD0~AD7信号线的数据读入CPU内部AL寄存器。
65
最小模式系统中的总线写操作如图2. 13所示。 图 最小模式写操作时序
66
四、最大模式系统中的总线操作 图 最大模式的读操作时序
67
最大模式系统中的总线写操作 ALE 8086最大模式的写总线周期 S2 ~ S0有效 数据 地址 S6 ~ S3 A19 ~ A16 CLK
一个总线周期 T1 T2 T3 T4 A19/S6 ~ A16/S3 AD15 ~ AD0 BHE/S7 BHE ALE MWTC/IOWC DEN DT/R 8086最大模式的写总线周期 高阻 S2 ~ S0 AMWC/AIOWC
68
最小模式下的总线保持(了解) 在DMA控制器8237部分解释
69
中断响应周期
70
指令与时序的关系 二、外设接口指令与I/O读写时序的关系 MOV DX,0220H IN AL,DX ;读I/O接口 时序上执行四个动作:
(1)将0200H放到AD0~AD19信号线上;译码器对其译码产生外设选择信号 (2)发出M/IO信号(低),发出RD信号为低 (3)被选择的外设将数据放到AD0~AD7信号线 (4)CPU在RD上升沿将AD0~AD7信号线的数据读入CPU内部AL寄存器
71
指令与时序的关系 存储器接口 或外设接口 DB 锁 存 器 A 译 码 器 AB 0200H CPU M/IO RD
72
指令执行与信号的关系 针对上页图,运行如下程序,A点的信号如何变化?(思考) MOV DX,200H MOV AL,00H
REPT:OUT DX,AL DEC AL JMP REPT
73
作业题(下周四交,单号) P90-91 第1次作业:2、8、11、16; 第2次作业:19、21
74
微处理器 西安交通大学计算机系 桂小林 2011年2月26日
75
目录 微处理器 2.3 双核微处理器 2.4 80x8寻址方式 2.5 80x86的指令系统 2.6单片计算机
76
微处理器 1985年10月推出了高性能的32位微处理器80386,具有32位数据总线和32位地址总线,直接寻址能力为4GB,在16MHz主频下每秒可执行4×106条指令。 它采用了流水线和指令重叠执行技术、虚拟存储技术和存储管理技术等,这些技术以后被广泛采用,故80386是微处理器发展史上的一个里程碑。
77
2.2.1 80386的组织结构 80386的内部结构可以划分为: 等6个功能部件 指令预取部件、 指令译码部件、 指令执行部件、
分段部件、 分页部件和 总线接口部件 等6个功能部件
78
2.2.1 80386的组织结构 指令预取部件IPU(Instruction Prefetch Unit)
IPU中设置了一个16字节的指令队列,只要指令队列有空字节,IPU就向总线接口部件提出请求,若总线接口部件处于空闲状态,则从存储器中取出指令装入指令队列。 指令译码部件IDU(Instruction Decode Unit) IDU的作用就是对指令操作码进行译码,实现从指令到微指令的转换。IDU中设置了译码指令队列,译码得到的微指令存放在该队列中。 指令执行部件EU(Execute Unit) EU包括算术逻辑运算部件ALU、8个32位通用寄存器和1个64位桶形移位寄存器和1个乘/除法器,其功能就是完成各种数据运算和处理。此外,EU还包括保护测试部件,用于检验指令执行过程中是否符合存储器分段规则。 上述三个部件IPU、IDU和EU合称为中央处理部件CPU(Central Processing Unit),它们实际构成了一个指令流水线。
79
2.2.1 80386的组织结构 分段部件SU(Segmentation Unit) 分页部件PU(Paging Unit)
80386采用了分段、分页两级存储管理机制,存储器首先以段为单位进行划分,每个段的长度最大为4GB,每个段又进一步划分为多个页面,页面长度固定为4KB。 分页部件PU(Paging Unit) PU的作用是将SU生成的线性地址转换为存储器的物理地址,这种转换是通过两级页表来实现的。PU是80386的可选部件,若不使用PU,则SU生成的线性地址就是物理地址。SU和PU合称为存储管理部件MMU(Memory Management Unit)。 总线接口部件BIU(Bus Interface Unit) BIU是80386与外部之间的高速接口。当指令预取部件取指令,或者指令执行部件读写操作数和运算结果时,都会向BIU提出访问存储器和I/O设备的请求,BIU根据一定的优先级来响应这些请求,产生所需要的地址信号和读写控制信号,以完成有关操作。此外,BIU也实现了80386与其它协处理器之间的控制功能。 SU、PU和BIU实际上也构成一条地址流水线,
80
的编程结构 80386有6类寄存器,分别是通用寄存器、指令指针寄存器、标志寄存器、控制寄存器、调试与测试寄存器、段寄存器、段描述符寄存器、系统地址寄存器。 (1)通用寄存器(下页图示) 80386有8个32位的通用寄存器,分别是EAX、EBX、ECX和EDX,以及ESP、EBP、ESI和EDI, (2)标志寄存器/标志寄存器 32位的标志寄存器EFLAGS也是由16位的标志寄存器FLAGS扩展而来的。原有的9个标志含义相同,在此基础上又增加了4个新的标志。
81
(2)标志寄存器/标志寄存器 32位的标志寄存器EIP用于存放下一条指令的偏移量,当兼容8086时,其低16位就是IP寄存器。
82
(3)80386有4个32位的控制寄存器CR0、CR1、CR2和CR3,其中CR1未使用。这些控制寄存器主要用于对80386各种功能和运行方式的控制。
(4)调试寄存器/测试寄存器 80386设置了8个32位的调试寄存器DR0 ~ DR7,其中DR4 ~ DR5为Intel公司保留,而其它6个寄存器用于设置断点和调试功能。 80386使用了两个测试寄存器TR6和TR7,用于测试TLB(Translation Lookaside Buffer)。其中TR6存放测试控制命令,而TR7存放测试所得数据。
83
(5)系统地址寄存器 (6)段寄存器和段选择子
系统地址寄存器包括全局描述符表寄存器GDTR、中断描述符表寄存器IDTR、局部描述符表寄存器LDTR和任务状态段寄存器TR。 设置这些寄存器的目的是为了便于对各个描述符表进行访问,它们分别保存着对应描述符表的存储地址。 系统地址寄存器的内容和作用在后续章节详细介绍。 (6)段寄存器和段选择子 80386与8086一样,段寄存器也是16位的,但增加了两个附加数据段寄存器FS和GS。 在实地址方式中,80386物理地址的计算与8086相同。但在保护方式下,段寄存器的作用则不同,其内容和作用在后续章节详细介绍。
84
2.2.3 80386的工作方式 实地址方式(Real Address Mode)
8086兼容方式(段), 80386复位后就进入实地址方式 保护方式(Protected Virtual Address Mode) 段页式 虚拟8086方式(Virtual 8086 Mode) 段页式 (386下执行86代码,某个任务)
85
80386的工作方式 实地址方式(Real Address Mode)
8086工作模式,只采用分段方式,每段固定长度为64KB,20位物理地址由段寄存器内容左移4位后与偏移量相加得到。不同之处是80386可以进行32位数据的运算和处理。复位后进入实地址方式, 保护方式(Protected Virtual Address Mode) 80386在保护方式下采用了段页式的存储管理机制,提供保护机制,支持虚拟存储和多任务操作系统。保护方式是80386最常用的方式。 虚拟8086方式(Virtual 8086 Mode) 80386在虚拟8086方式同样采用段页式存储管理机制,具有护功能,可以支持多任务。 虚拟8086方式是针对多个任务中的某一个任务而言的,也就是说在多个任务中,某一个任务是在虚拟8086方式,而另一些任务可以在保护方式。 当一个任务工作在虚拟8086方式时,可以直接执行8086的代码。
86
2.2.4 80386的引脚和时序 80386采用132条引脚的PGA(陶瓷网格阵列)封装, 主要包括: (1)数据总线D31 ~ D0
(2)地址总线A31 ~ A2、/BH3~/BH0 (3)时钟信号CLK2, (4)与总线周期有关信号:
87
80386时序 修订:BE3-BH3
88
2.2.5 80386的存储管理 图2.19给出了80386的存储管理机制的实现原理。
用户程序在访问存储器时给出的是48位虚拟地址(或称为逻辑地址),由16位的段选择子(Segment Selector)和32位偏移量两部分组成,段选择子由段寄存器给出,而偏移量则根据不同的寻址方式得到。
89
1、基本概念与术语 (1)虚拟存储器和高速缓冲存储器 (2)描述符
描述符又称为段描述符,由8个字节构成,用于对程序段进行描述,向CPU提供虚拟地址并向实地址转换所需的数据; 包括段的基地址、段的大小和段的属性(称访问权字段)。图2.21说明了段描述符的格式。
90
① 32位段基址:指明一个段的起始位置,可以为32位的线性地址空间中的任一地址。
② 20位段限:段限决定了一个段的可寻址范围,目的是为了判断对存储段的访问是否越界,以免破坏其它信息。 386的段限长是32位,但在段描述符中只规定了20位,根据此20位限长及段属性中的G位计算出真正的段限长。 在不使用分页机制时(G =0),则长度单位为字节,段的最大长度为1B×220=1MB; 在启用分页机制时(G =1),则长度单位是页面数(每页4KB),因此段的最大长度为4KB×220=4GB。 例如,G=1时的段基址= H,限长=0FFFFFH,则真实的段限长=0FFFFFH*1000H+0FFFH=0FFFFFFFFH。
91
③ 段的属性包括以下字段 A——访问位,A = 1表示已经访问过该段,操作系统利用该位统计段的使用情况。
S——描述符类型位,若S = 1,则为非系统描述符,所描述的段是代码段、数据段(包括堆栈段);若S = 0,则为系统描述符,所描述的是局部描述符表、任务状态段和各种门。 TYPE——段类型,用于说明对应的段的类型,包括是否为可执行的代码段、存储地址增长的方向、该段是否可以进行写操作等。 DPL——描述符的特权级(Descriptor Privilege level),用于特权检查,以决定对该段能否访问。 P——存在位,当P = 1时,说明对应的存储段已经装入内存。 D——操作数长度标志,仅用于代码段描述符,当D = 1时,说明对应的代码段的代码是32位的,而当D = 0则为16位。
92
(3)描述符表 系统中有三类描述符表:全局描述符表GDT、局部描述符表LDT和中断措述符表IDT。
这些表都是可变长度的存储器数组,表的长度从8B~64KB之间,每个表最多可容纳8192个描述符(每个描述符由8B组成)。 中断描述符表IDT存放的是描述中断服务程序入口地址等有关属性的门描述符,包括中断门、陷阱门和任务门。 每个任务有且只有一个独立的局部描述符表LDT,整个系统只有一个全局描述符表GDT,
93
(4)系统地址寄存器 系统地址寄存器包括:全局描述符表寄存器GDTR、中断描述符表寄存器IDTR、局部描述符表寄存器LDTR和任务状态段寄存器TR。
94
系统地址寄存器 80位的LDTR分为两个字段,高16位称为LDT选择子,用于在GDT中查找LDT描述符,一旦查找到LDT描述符,则由硬件自动存放在低64位中。
95
段寄存器和段选择子 段寄存器 选择子16位(用户可见) 描述符64位(用户不可见)
96
段寄存器和段选择子 高13位存放的是段选择子,也就是段描述符在GDT或LDT中的索引号。
表索引标志TI:当TI = 1时,在LDT中查找,而当TI = 0时,则在GDT中进行查找。 另外2位RPL,用来作描述请求特权级(Requested Privilege Level),用于特权检查。
97
LDTR描述符获取过程 在访问LDT之前,首先需要在GDT中查找到该LDT描述符。通过LDTR的选择子查找GDT获得LDT描述符的过程如下图所示。 Index
98
80386特权级 80386中共规定有4个特权级,由0到3。0级别权限最高,3级最小。操作系统核心运行在0级,
80386处理器共设置4个优先级(0级~3级)。0级是最高级(特权级);3级是最低级(用户级);1级和2级介于它们之间。 特权级代码一般是操作系统的代码,可以访问全部系统资源;其他级别的代码一般是用户程序,可以访问的资源受到限制。
99
2.特权保护 80386采用保护机制主要为了检查和防止低级别代码的越权操作,如访问不该访问的数据、端口以及调用高优先级的代码等。
80386中的每个段描述符号中都有DPL字段,高于该特权级别的程序才有权访问它。 段寄存器的请求特权级(RPL):用于特权检查。 检查主要是让当前优先级(CPL)和DPL比大小,如果大于等于才允许访问。 而RPL和CPL之间不作判断,将RPL和CPL中特权更高的那个和被访问段的DPL比较作判断。
100
3.虚拟地址到线性地址的转换 虚拟地址通常由两部分组成:段选择器和偏移地址。段选择器用来选择一个段,偏移地址用来指出操作数在所选择的段中的偏移量。例如: MOV FS: IOTA,AL 该指令中IOTA用来指定偏移地址。该指令的功能是:将寄存器AL的内容存入FS的选择器字段所选择的段中偏移量为IOTA的虚拟地址单元中。例如: MOV EAX,DS: [EBX] 该指令的功能是:将DS的选择器字段所选择的段中由.EBX内容代表的偏移量所确定的虚拟地址单元开始的4个字节的内容送人EAX。
101
转换过程 CPU只要将段选择器所指向的段描述符中的32位基地址与32位偏移地址相加即可得到线性地址。
将32位虚拟地址转换到32位线性地址的过程包括: 首先,CPU将逻辑地址中的段选择子装入段寄存器中; 其次,硬件根据选择子的TI字段自动访问局部描述符表LDT或全局描述符表GDT; 然后,获取LDT或GDT中的描述符,进行段限比较; 最后,根据描述符的基地址和程序给出的偏移地址,计算得到线性地址。
102
转换实例 例如,80386的某指令给出的32位逻辑地址为 , B,则根据图2.26所示的结构,可以实现逻辑地址到线性地址的变换。 具体过程如下:
103
转换实例 首先,32位逻辑地址的高16位装入段寄存器。根据图2.24的结构,得到的段寄存器的高13位为 B(00CH),TI=1B,RPL=00B,偏移地址为0100H。
104
转换实例 然后,硬件根据选择子的TI字段自动访问局部描述符表LDT,把段选择子的索引值000CH乘8以后的值0060H与全局描述符寄存器(GDTR)的段限00FF进行比较,由于该值没有超出界限,因此,可以对局部描述符表进行访问。
105
转换实例 其次,把0060H与局部描述符表的基地址(在LDTR中)相加得到访问数据段描述符的绝对地址 H。如果保护机构对访问权检查通过,CPU就自动地把地址为 H的数据段描述符(包括数据段基地址、段限和访问权字段)装入DS寄存器相应的段描述符寄存器高速缓冲器中。
106
转换实例 最后,用段描述符寄存器的访问权字段所规定的内容对数据段请求进行检查,同时将逻辑地址中的偏移量与数据段的段限值进行比较。经检查确认为数据段描述符、偏移量没有超出数据段的界限。所以偏移量0100H和数据段基地址 H相加,得出操作数的线性地址 H。
107
4.线性地址到物理地址的转换 80386的存储管理机制不仅采用了分段机制,而且采用了分页机制。
当一个任务访问存储器时,首先由分段机制将逻辑地址转化为32位线性地址,然后由分页机制完成从32位线性地址到32位物理地址的映射,从而在内存中找到要访问的信息。 线性地址到物理地址的映射过程如图2.27所示。
108
页目录号是线性地址的第31~22共10位,它作为页目录中页目录项的索引,可寻找210=1024个页目录项,即指向1024个页表。
页索引号是线性地址第21~12共10位,指向页表内的页,可寻210=l024个页。 页内偏移量:线性地址的第11~0共12位,可以寻址页内地址,每页最大为212=4K个单元。
109
页目录表和页表 在80386中,页目录表和页表的表项的结构类似,长度均为32位 .
110
转换实例 例如,根据32位线性地址 B和图2.28的目录与页表结构,下面分析线性地址到物理地址的转换过程。
111
转换实例 ① 根据CR3寄存器得到页目录表的起始地址,32位的起始地址为00000000H。
② 根据目录号计算(指向被选择的目录项目录号×4+CR3×212)。本例目录号为 B(04H),得到页目录表中地址为 H,在该处读出表项,得到页表起始地址 H(表中只存页面号,实际地址的低12位为0)。
112
转换实例 ③ 线性地址的页表索引字段为 B(195H),通过计算 H + 195H×4得 H,在页表中地址为 H处读出物理地址的页号,为0198CH。 ④ 将物理地址的页号和线性地址的页内地址拼接,得到32位物理地址0198C9C6H。
113
2.3 双核微处理器 双核处理器是基于单个半导体的一个处理器上拥有两个一样功能的处理器核心。双核处理器能有效提升CPU的功能与性能。
最初,双核心处理器采用SMP(Simultaneous Multi-Processor)方式,将多个处理器置于一个系统之下协同工作,以此来提升性能。 后来为了降低成本,开发人员逐渐考虑是否能够将两个处理器或是处理核心集成到一个芯片上面来,为此出现了SMT(Simultaneous Multi-Threading)技术和CMP(Chip Multi-Processor)架构。
114
双核微处理器 早在上个世纪末,HP和IBM就已经提出双核处理器的可行性设计,并成功推出了拥有双内核的HP PA8800和IBM Power4处理器。 双芯 双核
115
2.4 80x86的寻址方式 指令的一般格式包括“操作码”和“操作数”两部分。 数据寻址方式:此类寻址方式用来确定操作数地址从而找到操作数。
(1)立即寻址方式(Immediate addressing) (2)寄存器寻址方式(Register addressing) (3)直接寻址方式(Direct addressing) (4)寄存器间接寻址方式 (5)寄存器相对寻址方式 (6)基址变址寻址方式 (7)相对基址变址寻址方式
116
80x86的寻址方式 指令寻址方式:确定一条指令的地址的方法 转移距离(称为位移量)的操作符 (1)段内直接寻址 (2)段内间接寻址
(3)段间直接寻址 (4)段间间接寻址 转移距离(称为位移量)的操作符 SHORT表示位移量在-128~127字节之间。 NEAR表示在同一段内转移,位移量在-32768~32767字节范围内。 FAR表示转移距离超过±32K字节,或是在不同段之间转移。
117
2.5 80x86指令系统:常用的8086汇编指令 指令名称 源操作数 目标操作数 功能说明与实例 MOV 寄存器
寄存器间传递数据,如MOV AL,CH 常量 常量传给寄存器,如MOV AX,86H [存储地址] 寄存器间传给内存,如MOV [1808H],AX 内存传给寄存器,如MOV AL,[1988H] IN AL I/O端口 端口号小于FFH时读I/O端口数据,如IN AL,22H DX 端口号大于FFH时读I/O端口数据,如IN AL,DX OUT I/O端口号 端口号小于FFH时写I/O端口,如OUT 22H,AL 端口号大于FFH时写I/O端口,如OUT DX,AL JNZ 标号 结果不为零转移,如JNZ REPT1 JZ 结果为零转移,如JZ REPT2 CMP 比较两个寄存器的值,相等置ZF标志 比较寄存器和常量值,,相等置ZF标志 比较寄存器和内存单元的值,相等置ZF标志 TEST 比较寄存器与常量的值,仅设置ZF标志 AND 寄存器的值与常量进行与运算,设置ZF标志 OR 寄存器的值与常量进行或运算,设置ZF标志 LOOP 当寄存器CX的值不为零时,转标号,否则向后执行
118
2.6单片计算机(了解) 单片机即单片机微型计算机,是将计算机的主要功能(如CPU、内存和I/O接口等)集成在一小块硅片上的微型计算机。单片机发展非常迅速,种类众多,用途广泛。主要单片机系列包括: Intel公司的8031/8051/8052/80C51等普通8位单片机; Intel公司的8096/8098/80196等普通16位单片机; Atmel公司的AVR系列增强型8位/16位单片机Mega64/128L/128/192/256等; ARM公司等的ARM7/9/11等32位单片机。 单片机具有集成度高、可靠性高、性价比高等三高优势,主要应用于工业检测与控制、计算机外设、智能仪器仪表、通讯设备、家用电器等领域。 下面以Intel公司的80C51和Atmel公司的AVR Mega128L为例简要介绍单片机的原理及其主要接口功能。
119
2.6.1 80C51的内部结构与引脚功能 中央处理器(CPU)8位的中央处理器
内部RAM:共有256个RAM单元,但其中能作为寄存器供用户使用的仅有前面128个,后128个被专用寄存器占用;
120
80C51的内部结构 80C51有2个16位的定时器/计数器;80C51共有4个8位I/O口(P0,P1,P2,P3),可实现数据并行输入输出; 80C51有1个全双工的可编程的串行口,以实现单片机与其他设备之间的串行数据传送;
121
80C51的内部结构 中断系统:80C51共有5个中断源,其中2个是外部中断源和,3个内部中断源(其中包括2个定时/计数中断,1个串行口中断);
122
了解引脚功能 P3.0 P3.1 P3.3 P3.2 P3.5 P3.4 P3.7 P3.6
123
了解引脚功能 P3.0 P3.1 P3.3 P3.2 P3.5 P3.4 P3.7 P3.6
124
了解时序 80C51单片机通常可以分为单周期指令、双周期指令和四周期指令等三种。其中,单机器周期指令有64条,双机器周期指令有45条,四机器周期指令只有2条(即乘法和除法指令),没有三机器周期指令。
126
80C51单片机的复位 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。
127
80C51单片机的存储器组织 MCS-51单片机在物理结构上有四个存储空间: 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:
1、片内程序存储器;2、片外程序存储器; 3、片内数据存储器;4、片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1、片内外统一编址的64K的程序存储器地址空间(MOVC); 2、256B的片内数据存储器的地址空间(MOV); 3、以及64K片外数据存储器的地址空间(MOVX)。 在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同的存储器空间的选通信号。
128
SFR 片外数 据存储器 (MOVX) MOVX 片内数据存储器 MOV
129
程序存储器 程序存储器 MOVC
130
80C51单片机的指令系统 在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。
131
寻找方式(了解) 1、立即寻址: MOV A,#3AH 2、直接寻址: MOV A,3AH 3、寄存器寻址 ANL A,R1
片内:MOV 片外:MOVX 5、相对寻址 6、变址寻址: MOVC 变址寻址指令只有三条:MOVC MOVC @A+DPTR 7、位寻址
132
阅读芯片手册 80C51_www.ic37.com.pdf
133
2.6.4 AVR单片机 ATmega128 AVR采用64引脚TQFP和64引脚 MLF两种封装模式,
工作电压为: V(ATmega128L)和 V(ATmega128)。 工作频率8 MHz(ATmega128L)或16 MHz(ATmega128)。 内部总线32位,外部总线支持8位和16位两种模式。
134
ATmega128具有如下特点 128K 字节的系统内可编程Flash(具有在写的过程中还可以读的能力)、4K字节的EEPROM、4K 字节的SRAM、 53个通用I/O接口线、 32个通用工作寄存器、实时时钟RTC、 4个灵活的比较模式和PWM功能的定时器/计数器(T/C)、 两个同/异步串行通行接口USART、 面向字节的两线接口TWI/I2C、 8 通道10位可编程增益的模数变换器、 具有片内振荡器的可编程看门狗定时器、 SPI串行端口、 与IEEE 规范兼容的JTAG测试接口以及 六种可以通过软件选择的省电模式。
135
引脚多功能复用,软件可设置 端口D(PD7~PD0):端口D 为8位双向I/O口,并具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。 复位发生时端口D为三态。端口D的第二功能为:计数器输入、中断输入或串行通信引脚等。
136
作业 P91-92 13、19、27、40
Similar presentations