Download presentation
Presentation is loading. Please wait.
1
第2章 8086微处理器及其系统 2.1 8086微处理器简介 2.2 8086系统的存储器组织及I/O组织 2.3 8086系统的工作模式
第2章 微处理器及其系统 微处理器简介 系统的存储器组织及I/O组织 系统的工作模式 的操作时序 欢迎辞
2
8086 CPU是Intel系列的16位微处理器,它有16位数据总线和20位地址总线。
可寻址的地址空间是:220=1MB
3
2.1 8086微处理器简介 2.1.1 8086的编程结构 从程序员的角度看,8086CPU分为两部分: 执行部件(EU)
微处理器简介 的编程结构 从程序员的角度看,8086CPU分为两部分: 执行部件(EU) 总线接口部件(BIU)
4
EU 控 制 系 统 图2-1
5
1. 执行部件(EU) 功能:执行指令 组成:● 内部寄存器组; ● 算术逻辑运算单元ALU及标志寄存器; ● 内部控制逻辑电路。
6
(1)内部寄存器组 8个16位 内部寄存器 通用数据寄存器(AX,BX,CX,DX) 指针和变址寄存器(SP,BP, SI,DI )
① 通用数据寄存器: 可用作16位的寄存器,也可用 作8位寄存器,即: AX AH,AL BX BH,BL CX CH,CL DX DH,DL
7
AX:累加器。有些指令约定以AX(或AL)为源或目的寄存器。
BX:基址寄存器。可用作间接寻址的地址寄存器和基地址寄存器。 CX:计数寄存器。在循环和串操作中充当计数器,指令执行后CX内容自动修改。 DX:数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。
8
② 指针和变址寄存器 SP:堆栈指针寄存器 BP:基址指针寄存器 SI: 源变址寄存器 DI:目的变址寄存器
9
(2)算术逻辑单元(ALU)及标志寄存器(FR)
可完成16位或8位的算术逻辑运算。 ALU运算后的结果特征(有无进位,溢出等)置入标志寄存器中保存。 ② 标志寄存器FR 16位寄存器,用来存放运算结果的特征和控制标志。
10
分为两类: 条件标志——共6位,用于寄存程序运行的状态信息,这些标志往往用作后续指令判断的依据。 控制标志——共3位,用于控制机器或程序的某些运行过程。
11
-----反映在运行结果的最高位有无进位或借位。
条件标志 ● CF(Carry Flag) 进位标志 -----反映在运行结果的最高位有无进位或借位。 CF=1,表示本次运算中最高位有进位(加法运算时)或有借位(减法运算时);否则CF=0。
12
-----反映运算结果中“1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。
● PF(Parity Flag) 奇偶标志 -----反映运算结果中“1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。 PF=1,表示本次运算结果的低八位中有偶数个“1” PF=0,表示本次运算结果的低八位中有奇数个“1” ● AF(Auxiliary Carry Flag) 辅助进位标志 -----加减运算时,若D3向D4产生了进位或借位则AF=1。否则AF=0。在BCD码运算时,该标识用于十进制调整。 ● ZF(Zero Flag) 零标志 -----反映计算结果是否为0。若结果为零则ZF=1,否则ZF=0。
13
● OF(Overflow Flag) 溢出标志位 -----反映运算结果是否超出了带符号数的表数范围。
● SF(Sign Flag) 符号标志位 -----反映计算结果最高位即符号位的状态。如果运算 结果的最高位为1则SF=1,否则SF=0。 ● OF(Overflow Flag) 溢出标志位 -----反映运算结果是否超出了带符号数的表数范围。 OF=1 表示运算结果超出了该字长所能表示的范围,即产生溢出;否则OF=0。 机器判断是否溢出是根据根据最高位的进位与次高位的进位是否相同来确定。若两者不相同则OF=1(表示有溢出),否则 OF=0(表示无溢出)
14
控制标志 ● DF(Direction Flag) 方向标志 用于串处理指令中控制串处理的方向。 在串操作指令中,若DF=0,表示串操作指令执行后地址指针自动增量;DF=1,表示地址指针自动减量。DF可通过STD指令置位,也可通过CLD指令复位。 ● IF(Interrupt Flag) 中断允许标志位 用于控制CPU是否允许响应可屏蔽中断请求。 IF=1,表示允许CPU响应可屏蔽中断请求。 IF=0,表示禁止CPU响应可屏蔽中断请求。 IF可通过STI指令置位(置1),也可通过CLI指令复位(清零)。
15
● TF(Trap Flag) 单步标志位 用于单步操作。 TF=1,控制CPU进入单步工作方式。在这种工作方式下,CPU每执行完一条指令就会自动产生一次内部中断,这在程序调试过程中很有用。
16
例1:若AL = 3BH,AH = 7DH,指出AL和AH中的内容相加后,CF,AF,PF,SF,OF和ZF的状态。
17
(3)内部控制逻辑电路 主要功能:从指令队列缓冲器中取出指令,对 指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。
18
2. 总线接口部件 BIU 负责CPU与存储器、I/O设备之间传送数据、地址、状态及控制信息。 组成: ● 4个段地址寄存器(CS、DS、ES、SS) ● 16位的指令指针寄存器IP(Instruction Pointer) ● 20位的地址加法器 ● 6字节的指令队列缓冲器 ● 总线控制逻辑
19
(1)段地址寄存器(CS, DS, SS, ES) 存储器的分段 8086可寻址的存储空间为1MB,有20位的地址线,而内部的寄存器是16位,只能寻址64KB。所以8086系统采用了地址分段的方法,将1M存储空间分成若干块,称为“逻辑段”,存放一种类型的数据或者程序。因此1M的存储空间可分成16个逻辑段(0~15)。在段内寻址仍采用传统的16位地址寻址方法。
20
在8086存储空间中,把16字节的存储空间称作一内存节(paragraph)。要求各个逻辑段从节的整数边界开始,即段首地址低4位应该是“0”,把段首地址的高16位存放在段寄存器DS或CS或SS或ES中。 00000H H H …… FFFF0H
21
允许段在整个存储空间浮动,即段与段之间可以
部分重叠、完全重叠、连续排列。在整个存储空间中 可设置若干个逻辑段。 对于任何一个物理地址,可以惟一地被包含在一 个逻辑段中,也可 包含在多个相互重 叠的逻辑段中,只 要有段地址和段内 偏移地址就可以访 问到这个物理地址 所对应的存储空间。
22
2345H:0000H H : 2345H:1100H H 例如:2345H:1100H表示段地址为2345H(段的起始地址是23450H),段内偏移地址为1100H的存储单元地址。在8086CPU中有专用的寄存器存放段地址和偏移地址。
23
段可分为代码段,数据段,附加段,堆栈段。用于存放段基址有 4个16位段寄存器,代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和堆栈段寄存器SS。
代码段:存放程序代码。 数据段:用于存放当前使用的数据。需要第二个数据段时可以使用附加段。
24
堆栈段:是内存中的一块存储区,用来存放专用数据。如调用子程序时的入口参数,返回地址等,这些数据都按照“后进先出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。 编程时,程序和各种不同类型的数据分别存放在不同的逻辑段中。
26
[例]: 已知CS=1055H, DS=250AH, ES=2EF0H, SS=8FF0H, 画出各段在内存中的分布,写出段首地址。
代码段 250A0H 数据段 2EF00H 附加段 8FF00H 堆栈段
27
采用段地址的好处: ① 解决了16位寄存器访问大于64KB内存空间的问题;
② 可以实现程序重定位,即一个不到64KB大小的程序可通过改变段寄存器的内容(一般由操作系统完成)放在1MB空间的任意段位置,从而为运行多道程序提供方便。
28
(2)地址加法器 功能:用于产生20位的物理地址。即进行一次地址加法,将段寄存器的内容左移4位与偏移地址相加
,得到20位的物理地址,从而可寻址 1MB的存储空间。 物理地址:访问存储器的实际地址,用20位二进制表示。 物理地址=段寄存器的内容×16 (即左移4位)+ 偏移地址
30
例: 逻辑地址2345H:1100H对应的物理地址是24550H。 23450H+1100H =24550H。 反之,物理地址24550H,它对应的逻辑地址可以是2455H:0000H,也可以是2400H:0550H等。 注意:一个存储单元的物理地址是惟一的,而它对应的逻辑地址是不惟一的。
31
(3)指令指针寄存器IP—— 16位 功能:用来存放将要执行的下一条指令在代码段中的偏移地址。在程序运行过程中,BIU自动修改IP中的内容,使它始终指向将要执行的下一条指令。 注意:程序不能直接访问IP,但是可通过某些指令修改IP的内容。例如, 执行转移指令时,会将转移的目标地址送入IP中,以实现程序的转移。
32
(4)指令队列缓冲器——6字节 BIU从存储器中读出指令送入6字节的指令队列。一旦指令队列中空出2个字节,BIU将自动进行读指令的操作以填满指令队列。遇到转移类指令,BIU将指令队列中剩余的指令作废,重新从存储器新的地址单元中取指令并送入指令队列。一般情况下应保证指令队列中填满指令,使得EU可以不断地得到等待执行的指令。 (5)总线控制逻辑
33
3. 总线接口部件和执行部件的管理 当8086指令队列中有2字节空闲时,总线接口部件就自动将指令从内存中预取到指令队列缓冲器中。 每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU在执行指令中若需要访问内存或I/O设备,EU就向BIU申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完成后再响应EU的总线请求。 遇到转移、调用及返回指令时,BIU就自动清除指令队列中已有内容,从转移、调用或返回的新地址开始,重新从内存中预读取指令并填充指令队列。 这两部分既非同步工作方式,也不完全无关,而是互相配合工作的。
34
CPU的引脚及其功能 8086 CPU是十六位的微处理器,它向外的信号应包含16条数据线,20条地址线,再加上其他一些必要的控制信号。为了减少芯片引脚数量,对部分引脚采用了分时复用的方式,构成40条引脚的双列直插式封装。 分时复用——就是在同一根传输线上,在不同时间传送不同的信息。 8086/8088依靠分时复用技术,用40个引脚实现了众多数据、地址、控制信息的传送。
35
1、8086总线周期 时钟周期: CPU的一切操作都是在系统主时钟CLK的控制下按节拍有序地进行的。系统主时钟一个周期信号所持续的时间称为时钟周期(T),大小等于频率的倒数,是CPU的基本时间计量单位。 总线周期:CPU通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。为完成对存储器或I/O端口的一次访问,CPU需要先后发出存储器或I/O端口地址,读或者写操作命令,进行数据的传输。以上的每一个操作都需要延续一个或几个时钟周期。所以,一个总线周期由若干个时钟周期(T)组成。
36
T1状态:CPU向多路复用总线上发送地址信息(A19~A0)指出要寻址的内存单元地址或I/O端口地址。这期间CPU还要送出地址锁存信号ALE(正向脉冲),在ALE的下降沿将内存单元地址或I/O端口地址存入地址锁存器。 T2状态:CPU从总线上撤销地址,使总线低16位呈现高阻状态,为数据传输作准备。总线高4位(A19~A16)输出总线周期的状态信息,用以表示中断允许状态及正在使用的段寄存器名等。
37
T4状态:总线周期结束,若为总线读周期则在T4前沿将数据读入CPU。 TI状态:总线空闲周期。
图2-3 典型的8086总线周期时序 T3状态:A19~A16上状态信息不变,总线低16位上出现CPU要写出的数据或准备读入的数据。若外设或内存来不及与总线交换数据,以使在T4状态下结束该总线周期,则应通过CPU的READY信号,在T3前沿(下降沿)之前向CPU申请插入等待状态TW。在T3及TW的前沿查询READY线,查到为高电平则结束等待状态,进入下一状态。否则继续插入等待状态。 T4状态:总线周期结束,若为总线读周期则在T4前沿将数据读入CPU。 TI状态:总线空闲周期。
38
CPU的引脚及功能 8086引脚分配图
39
(1) GND(地)和VCC(电源) (2) AD15~AD0(address data bus)地址/数据复用引脚 (双向,三态) 作为复用引脚,在总线周期的T1状态用来输出要访问的存储器或I/O端口地址。T2~T3状态,对读周期来说,处于浮空状态;对写周期来说,则是传输数据。 (3) A19/S6~A16/S3(address/status)地址/状态复用引脚(输出,三态) 在总线周期的T1状态,用来输出地址的最高4位, A19~A16与AD15~AD0一起构成访问存储器的20位物理地址。CPU访问I/O端口时,A19~A16保持为“0”。在T2,T3,TW和T4状态时,S6~S3用来输出状态信息。
40
S6: S6=0表示8086CPU占用系统总线,在T2,T3, TW和T4状态时,8086总是使S6=0。
其中: S6: S6=0表示8086CPU占用系统总线,在T2,T3, TW和T4状态时,8086总是使S6=0。 S5 : 反映标志寄存器的中断允许标志IF的设置情况 IF=1,允许可屏蔽中断,则 S5=1 IF=0,禁止可屏蔽中断,则 S5=0 S4,S3:指明正在使用的段寄存器情况。 S S3 表示意义 正在使用ES 正在使用SS 正在使用CS 正在使用DS
41
(4) BHE/S7(Bus High Enable/Status)高8位数据总线允许/状态复用引脚(输出,三态,低电平有效)
在T1状态,BHE/S7引脚输出BHE信号,表示高8位数据总线D15~D8上的数据有效。在T2,T3,TW和T4状态,BHE/S7输出状态信号S7。 8086CPU有16根数据线, 低8位数据线总是和偶地址的存储器或I/O端口相连接, 高8位的数据线与奇地址的存储器或I/O端口相连接。 BHE有效,表示CPU正在使用高8位的数据线对奇地址的存储单元或I/O端口进行访问。它与地址码最低位A0配合起来表示当前总线使用情况。
42
BHE A0 操 作 使用数据线 0 0 1 0 0 1 从偶地址开始读/写一个字 从偶地址读/写一个字节 从奇地址读/写一个字节
操 作 使用数据线 从偶地址开始读/写一个字 从偶地址读/写一个字节 从奇地址读/写一个字节 AD15~AD0 AD7~AD0 AD15~AD8 从奇地址开始读/写一个字 (第一个总线周期) (第二个总线周期) BHE和A0信号的意义
43
(5) NMI(Non Maskable Interrupt Request)非屏蔽中断请求引脚 (输入)
由外部输入,边沿触发,正跳沿(由低到高的上升沿)有效,不受中断允许标志IF的影响,也不能用软件进行屏蔽。CPU一旦测试到NMI请求有效,在当前指令执行完后自动转去执行中断类型号为2的非屏蔽中断中断服务程序。显然这是一种比INTR级别高的中断请求。 (6) INTR(Interrupt Request)可屏蔽中断请求引脚 (输入) 由外部输入,电平触发,高电平有效。INTR有效时,表示外部向CPU发出中断请求。CPU在每条指令的最后一个时钟周期对INTR进行采样,一旦测试到中断请求,并且当前中断允许标志IF=1,则CPU就会在结束当前指令后,响应中断请求,进入一个中断处理子程序。
44
⑺ RD(Read)读信号,输出、三态、低电平有效。 在CPU执行读操作时, RD信号在T2、T3、TW期间为低电平有效。
到底读存储器还是读I/O端口还决定于M/IO,若M/IO为高则为读存储器,M/IO为低则读I/O端口。 ⑻ CLK (Clock)时钟输入引脚 8086要求时钟占空比为1/3,即一个周期中1/3为高电平、2/3为低电平。CPU的所有操作均是在时钟的同步下进行的。 非屏蔽中断信号是一个由低到高的上升沿。这类中断不受中断标志IF的影响,也不能用软件进行屏蔽。每当NMI端进入一个正沿触发信号时,CPU就会在结束当前指令后,进入对应于中断类型号为2的非屏蔽中断处理程序。
45
⑼ RESET (Reset)复位引脚,输入、高电平有效。
8086要求复位信号至少维持4个时钟周期的高电平才有效,以完成CPU内部寄存器的复位操作。 复位信号一出现,CPU立即结束当前的操作,进入复位操作,即将标志寄存器(FR)、IP、DS、SS、ES清0,指令队列清空, CS置为FFFFH。 当复位信号降为低电平后,CPU从CS:IP开始取出指令并执行它,即系统复位后执行的第一条指令的物理地址为FFFF0H。系统程序一般在该物理地址单元放一条转移指令,转到引导程序的入口。
46
(10) READY(Ready)准备好引脚,输入、高电平有效
当CPU执行总线读写周期访问存储器或I/O设备时,若存储器或I/O设备的读写速度较慢,来不及在T4状态结束数据传输,就需要设计一个硬件电路,在T3之前向CPU提供一个低电平READY信号。 CPU在每个总线周期的T3状态的前沿开始对READY信号进行采样。如果检测到READY为低电平,则在T3状态之后插入一个TW等待状态,并在TW前沿继续查询READY线,若READY仍为低电平,则会继续插入TW ,直到READY升为高电平,才进入T4状态,完成数据传送过程。
47
(11)TEST(Test)测试引脚,输入、低电平有效
和WAIT指令配合使用,执行WAIT时,CPU暂停执行程序,进入空转状态等待。当TEST引脚接收到一个低电平信号时,CPU就结束等待,继续向下执行指令。 和WAIT配合,可以实现CPU与外设同步工作。 (12) MN/MX(Minimum/Maximum Mode Control)最小/最大模式控制引脚,输入。 该引脚接+5V,则8086工作在最小模式, 该引脚接地,则8086CPU工作在最大模式。
48
2.2 8086系统的存储器组织及I/O组织 2.2.1 8086系统的存储器组织 1. 8086系统的存储器的结构 00000H
图2-5 存储体地址空间分配 图2-6 存储体与总线的连接 00000H 00001H 00002H 00003H FFFFEH FFFFFH
49
关于几种读写情况的说明: (1) 从偶地址读写一个字节(BHE A0=10)如图a
AD15~AD8上的数据被忽略,字节内容通过AD7~AD0传送。 (2) 从奇地址读写一个字节(BHE A0=01)如图c AD15~AD8上传送的数据有效,AD7~AD0上数据被忽略。
50
(3) 从偶地址开始读写一个字(BHE A0=00)如图b
在AD15~AD0上传送的数据同时有效。 (4) 从奇地址开始读写一个字,占用两个总线周期。 第一个总线周期BHE A0=01,从奇地址读写低字节,在AD15~AD8上传送的数据有效。第二个总线周期BHE A0=10,从偶地址读写高字节,在AD7~AD0上传送的数据有效。
51
2. 8086系统存储器的地址 (1)物理地址的计算公式:
物理地址=段地址×16+偏移地址。段地址由段寄存器提供,偏移地址由IP、SP、BP、SI、DI等寄存器或存储器提供,也可通过计算而得。不同的指令有不同的组合方式。 (2) 段地址的引入,为程序在内存中浮动创造了条件,一般用户程序只涉及偏移地址。段地址在程序装入内存时由操作系统分配。所以一个程序可在内存中任何一个逻辑段(64KB空间)中运行。 (3) 同一物理地址可以由不同的段地址和偏移地址表示。 例如: CS=2000H IP=1000H 物理地址=21000H CS=2100H IP=0000H 物理地址=21000H
52
ES
53
3.8086系统内存地址的一些专用区域 00000~003FFH 1KB空间用于存放中断向量表,可存放256个中断服务程序的入口地址,每个地址占 4字节。 B0000~B0FFFH 4KB为单色显示器显示缓冲区,存放屏幕当前显示字符的ASCII码。 B8000~BBFFFH 16KB彩色显示器显示缓冲区,存放当前屏幕像素代码。 FFFF0H 起动地址,一般用来存放一条无条件转移指令,转到系统初始化程序。
54
系统的 I/O组织 8086系统有专用的输入(IN)、输出(OUT)指令,用于外设端口(即外设接口中的内部寄存器)的寻址。 I/O端口与内存分别独立编址。I/O端口使用16位地址A15~A0,I/O端口地址范围为0000H~FFFFH,可寻址空间为64KB。 在以8086为CPU的PC/XT微机中,只使用了10位有效端口地址A9~A0,共1KB空间。
55
系统配置 一、最小模式和最大模式的概念 8086/8088 CPU为适应不同的应用环境,8086可工作于两种工作模式:最大模式和最小模式。 最小模式:是指系统中只有一个8086/8088处理器,所有的总线控制信号都由8086/8088 CPU直接产生,构成系统所需的总线控制逻辑部件最少,最小模式因此得名。最小模式也称单处理器模式。
56
最大模式:系统内可以有一个以上的处理器,除了8086/8088作为“中央处理器”之外,还可以配置用于数值计算的8087(数值协处理器)和用于I/O管理的8089(I/O协处理器) 等。各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。 两种工作模式由MN/MX引脚决定: 接高电平(+5v),CPU工作在最小模式; 接低电平(接地),CPU工作在最大模式。
57
二、 最小模式系统 1. 典型配置: CPU 2. 1片时钟发生器8284 3. 3片地址锁存器8282 4. 2片总线驱动器8286(总线数据收发器)
59
CPU及其外围芯片合称为CPU子系统。 外围芯片的作用是: (1)为CPU工作提供条件:提供适当的时钟信号,对外界输入的控制/联络信号进行同步处理; (2)分离CPU输出的地址/数据分时复用信号,得到独立的地址总线和数据总线信号,同时还增强它们的驱动能力; (3)对CPU输出的控制信号进行组合,产生稳定可靠、便于使用的系统总线信号。
60
2. 时钟发生器8284与8086的连接 8284通过外接晶振芯片产生时钟信号,并对这个信号3分频,产生占空比为1/3的时钟信号CLK送往8086 CPU。8284还对外部输入的 RESET和READY信号 进行同步,产生与CLK 同步的复位信号RESET 和准备就绪信号READY 送往8086。
61
3. 地址锁存器8282与8086的连接 地址锁存器用来锁存8086输出的地址信号。
8282是一个8位锁存器,STB是它的数据锁存/选通信号。STB为高电平时,DI7~DI0上输入的信号进入锁存器;STB由高变低出现下降沿时,输入数据被锁定,锁存器的状态不再改变。8282具有三态输出功能, OE是数据输出允许端,它为低电平时,锁存器的内容通过内部的三态缓冲器从引脚DO7~DO0输出。
62
图中,8086的ALE与8282的STB相连。这样,8086在它的分时引脚AD15~AD0,A19/S6~A16/S3上输出地址信号时,20位地址被三片8282锁存。8282的输出成为系统地址总线。在8086访问存储器/IO设备的整个周期里,8282都会稳定地输出20位地址信号 在最小模式下,8282还同时锁存了8086输出的控制信号并送往系统总线。 8282也可以用其他具有三态输出功能的锁存器代替。
63
4. 总线驱动器8286与8086的连接 作用:总线数据收发器用来对CPU 与系统数据总线的连接进行控制,同时它还有增加系统数据总线驱动能力的作用。 8286是一种三态输出的8位双向总线收发器/驱动器,具有很强的总线驱动能力。它有二组8位双向的输入/输出数据线A7~A0和B7~B0。
64
8286有二个控制信号:数据传送方向控制信号T 输出允许信号OE(低电平有效) 当OE=1时,缓冲器呈高阻状态,两个方向都不能传送数据。 当OE=0,T=1时,A7~A0为输入端, B7~B0为输出端,实现A 到B的传送; 当OE=0,T=0时,A7~A0为输出端, B7~B0为输入端,实现B到A的传送。
65
8286用作数据总线驱动器时,T与8086数据收发信号相连,用于控制数据传送方向;OE与8086数据允许信号相连,保证只有在CPU需要访问存储器或I/O端口时才允许数据通过8286。二片8286的A7~A0与8086的AD15~AD0相连,而二组B7~B0则成为系统数据总线。 如果系统规模不大,并且不使用DMA传输(这意味着总线永远由8086独自控制),可以不使用总线收发器,将8086的引脚AD15~AD0直接用作系统数据总线。
66
二、最小模式下的系统控制信号 1.读写控制信号引脚 读写控制信号用来控制CPU对存储器和I/O设备的读写过程:控制数据传输方向(读/写)、传输种类(存储器还是I/O设备);读写方式(奇地址字节/偶地址字节/字);存储器/IO设备是否准备好的状态信号;分时总线上信号的类型等。 (1)M/IO(Memory/IO) 存储器或I/O端口访问选择信号,三态输出。 为高电平时,表示当前CPU正在访问存储器; 为低电平时,表示CPU当前正在访问I/O端口。
67
(2)RD(Read) 读信号,三态输出。低电平有效,表示当前CPU正在读存储器或I/O端口。
(3) WR(Write) 写信号,三态输出。低电平有效,表 示当前CPU正在写存储器或I/O端口。 M/IO、WR及RD合起来决定系统中数据传输的方向。 (4)READY 准备就绪信号。由外部输入,高电平有效,表示CPU访问的存储器或I/O端口已准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期TW,直到READY信号有效为止。 (5)BHE/S7(Bus High Enable/Status) 总线高字节有效信号。三态输出,低电平有效。非数据传送期间,该引脚用作S7,输出状态信息。
68
(6)ALE(Address Latch Enable) 地址锁存允许信号。输出,高电平有效。表示当前地址/数据分时使用的引脚上正在输出地址信号。向地址锁存器8282提供地址锁存信号。
(7)DEN(Data Enable) 数据允许信号。三态输出,低电平有效。表示当前地址/数据分时使用的引脚上正在传输数据信号。8286将它作为输出允许信号。进行DMA传输时,被置为高阻态。 (8)DT/R(Data Transmit/Receive) 数据发送/接收控制信号,三态输出。当它为高电平时表示为数据发送, CPU写数据到存储器或I/O端口;为低电平时表示为数据接收,CPU从存储器或I/O端口读取数据。该信号用来控制总线收发器8286的数据传送方向。
69
2. 中断控制信号引脚 中断是外部设备请求CPU进行数据传输的有效方法。这一组引脚传输中断的请求和应答信号。 (1)INTR(Interrupt Request) 可屏蔽中断请求信号。 (2)INTA(Interrupt Acknowledge) 中断响应信号。输出,三态,低电平有效。该信号包含两个负脉冲。外设申请可屏蔽中断,CPU响应后,在两个连续的中断响应周期发出两个负脉冲信号。第一个通知外设,CPU已经收到并且响应外部发来的INTR信号(主要用于中断优先权排队),第二个要求申请中断的设备向CPU发送中断类型(代表该中断的一个编号)。 (3)NMI(Non Maskable Interrupt Request) 非屏蔽中断请求信号。
70
4. DMA控制信号引脚 DMA传输是一种不经过CPU,在内存和I/O设备之间直接传输数据的方法。进行DMA传输之前要向CPU申请使用总线并取得认可。 (1)HOLD(Hold Request) 总线请求信号。输入,高电平有效,表示有其他设备向CPU请求使用总线。 (2)HLDA(Hold Acknowledge) 总线请求响应信号。输出,高电平有效。 CPU在每个时钟周期都检测HOLD引脚,当检测到该信号,并且CPU允许其它部件占用总线,则在当前总线周期的T4状态发送HLDA信号,同时让出总线使用权(所有三态总线处于高阻态,从而不影响外部的存储器与I/O设备交换数据)。总线申请部件接到HLDA有效信号后即可接管总线进行操作,直到操作完成、撤销HOLD信号,CPU才重新接管总线。
71
常用的最小模式控制总线信号归纳如下: 控制存储器/IO端口读写的信号: M/IO,RD,WR,BHE,DEN,DT/R,READY。 用于中断联络和控制的信号:INTR,INTA , NMI。 用于DMA联络和控制的信号:HOLD,HLDA。 以上这些信号是构建微型计算机系统的核心。
72
三、最大模式系统 典型配置: 1. 8086CPU 2. 1片时钟发生器8284 3. 3片地址锁存器8282
3. 3片地址锁存器8282 4. 2片总线驱动器8286(总线数据收发器) 5. 1片总线控制器8288
73
82888
74
2.4 8086CPU的工作时序 一、8086CPU的复位操作时序 复位操作的内容:
1. 所有内部寄存器、标志寄存器及ES、SS、DS 、IP清0,指令队列缓冲器清空,CS置全1,即FFFFH,复位信号消失后,程序从CS×16+IP即FFFF0H地址开始执行。 2.复位时,所 有三态输出总 线变为高阻状 态。 开始进入RESET阶段 注意:8086/8088要求复位信号(RESET)至少有4个时钟周期的高电平
75
二、最小模式下的总线读周期 8086CPU完成从存储器或外设端口读取数据的操作时序。
数据允许DEN开始变为有效低电平,用来开放总线收发器8286,以便在读出的数据送上数据总线(T3)之前就打开8286,让数据通过。其有效电平要维持到T4状态中期结束。DT/R继续保持低电平,处于接收状态。 进入TW状态后,CPU在每个TW的前沿(下降沿)采样READY,若为低电平,则继续插入TW 。若READY变为高电平,表示数据已出现在数据总线上,在该TW结束时CPU从AD15~AD0读取数据。 由M/IO确定是与谁通信,在T1状态开始变为有效 若系统中有总线收发器8286,则要用到DT/R和DEN,控制8286的数据传送方向和数据选通。在T1状态,DT/R输出低电平,表示总线周期为读周期,即让8286接收数据。 地址信息撤消,A19/S6~A16/S3及BHE /S7上输出状态信息S7~S3,一直维持到T4。其中S7未赋予实际意义 若CPU需要从内存的奇地址单元或奇地址的IO端口读取数据,则输出BHE=0,表示高8位数据线上的数据有效。它和A0分别用于奇、偶存储体/IO端口的选体信号。 CPU在T3前沿(下降沿)对READY采样。若READY为高电平,表示存储器或I/O端口已准备好数据,CPU在T3态结束时读取该数据。若READY为低电平,则表示存储器或外设不能如期送出数据,要求CPU在T3和T4之间插入1个或几个等待状态Tw。 在T3(TW)和T4交界的下降沿处,CPU对数据总线进行采样,完成读取数据操作。在T4状态的后半周数据从数据总线上撤消。各控制信号和状态信号处于无效状态,一个读周期结束。 AD15~AD0进入高阻态,为读取数据作准备。 内存单元或I/O端口将数据送到数据总线上,CPU通过AD15~AD0接收数据。 由20条地址线确定,在T1状态开始20位地址有效 因为总线复用,由ALE锁存地址,在T1状态开始ALE有效,在T1状态结束时,变为低电平,20位地址被锁入8282地址锁存器。 RD开始变为低电平,此信号送到系统中所有存储器和I/O端口,但只对被地址信号选中的存储单元或I/O端口起作用,将读出数据送上数据总线。
76
综上可知:在总线读周期中,CPU在 T1状态——送出地址及相关信号; T2状态——发出读命令和8286控制命令; T3、TW状态——等待数据的出现; T4状态——将数据读入CPU。
77
三、 最小模式下的总线写周期
78
由图可知,8086/8088的写总线周期与读总线周期有很多相似之处。和读操作一样,基本写周期也包含4个状态T1,T2,T3和T4。当存储器或I/O设备速度较慢时,在T3和T4之间插入1个或几个等待状态。 总线写周期和读周期相比,有几点不同: 在写周期中,由于从地址/数据线AD15~AD0上输出地址(T1态)和输出数据(T2态)是同方向的,因此,在T2状态不再需要像读周期时维持一个时钟周期的高阻态作缓冲。写周期中,AD15~AD0在发完地址后立即转入发数据,以使内存或I/O设备一旦准备好就可以从数据总线上取走数据。DT/R为高电平,表示为写周期,控制8286向外发送数据。 写周期中WR信号有效,RD信号变为无效,但它们出现的时间类似。
79
四、最小模式下的总线保持(即总线请求/响应)周期
Similar presentations