8086与8088

一、8086与8088概述

  • 8088/8086都是16位微处理器,内部运算器和寄存器都是16位的,同样具有20位地址线
  • 8088/8086都是由执行单元(EU)和总线接口部件(BIU)两大部分构成
  • 指令系统和寻址能力都相同,两种CPU是兼容的
  • 8088被称作准十六位的、是紧继8086之后推出的,为了去兼容当时已有的一整套Intel外围设备接口芯片
  • 外部数据总线位数的差别:8088与存储器和I/O接口进行数据传输的外部数据总线宽度为8位,而8086数据总线为16位
  • 指令队列容量的差别:8086CPU的指令队列可容纳6个字节,且在每个总线周期中从存储器中取出2个字节的指令代码填入指令队列;而8088CPU的指令队列只能容纳4个字节,且在每个总线周期中只能取一个字节的指令代码
  • 某些引脚还有一些差别,比如8086低电平访问存储器,高电平访问IO,而8088相反

二、8086与8088的三个共同特点

8086与8088_第1张图片

三、编程结构中的Bus interface unit与Execution unit

1.BIU

功能:与存储器、IO端口进行数据通信

组成:4个段地址寄存器、指令指针寄存器IP、20位地址加法器、6字节指令队列缓冲器

2.EU

功能:执行指令

组成:4个通用寄存器、4个专用寄存器、标志寄存器FR、ARU(arithmetic logic unit)

四、8086引脚信号与工作模式

1.基本概念

  • 8086CPU可在两种模式下工作

最小模式:系统中只有8086,所有总线控制信号都直接由8086产生

最大模式:有两个或两个以上的CPU,一个为主CPU8086,其他为:数值运算协CPU8087、IO协CPU8089

2.8086引脚信号和功能

①完成一次访问内存或接口所需信号

②与外部同步控制信号

③中断请求和响应信号

④总线保持和响应信号

3.8086存储器的组织

8086的数据总线为16位,但它访问存储器时,即要能传送一个字,又要能传送一个字节,因此必须将16位宽度的存储器分成两个独立的8位宽度的存储体(奇偶存储体)来处理

8086与8088_第2张图片

8086与8088_第3张图片

4.8086的操作和时序

CPU工作时序:CPU引脚信号在时间上的关系

  • 指令周期:执行一条指令所需要的时间
  • 总线周期:CPU通过总线与存储器或I/O接口进行一次数据传输所需的时间
  • 时钟周期:CPU处理动作的最小单位

①总线操作

一个最基本的总线周期由4个时钟周期组成,习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态、T4状态

下面,以总线读操作的时序为例

  • T1状态:CPU发地址信息

M//IO信号:从存储器读还是从I/O设备中读数据

AD15-AD0、A19/S7-A16/S3:确定20位地址

/BHE:选择奇地址存储体

ALE:地址锁存信号,以使地址/数据线分开

DT//R:为低电平,指示收发器8286接收数据,读操作

  • T2状态:CPU从总线上撤销地址,使总线的低16位浮置成高阻状态,为传输数据作准备。总线的高4位(A16-A19)用来输出本总线周期状态信息(表示中断允许状态,当前使用的段寄存器名等)

A19/S6-A16/S3:出现S6-S3状态信号。决定段寄存器、IF状态、8086CPU是否连在总线上。

AD15-AD0:高阻状态。

/RD:由高电平变为低电平,开始进行读操作。

/DEN:变低电平,启动收发器8286,做好接收数据的准备。

  • T3状态:总线的高4位继续提供状态信息,而总线低16位上出现CPU写出的数据或读入的数据

若存储器或I/O端口已做好发送数据准备,则在T3状态期间将数据放到数据总线上,在T3结束时,CPU从AD15-AD0上读取数据。若在T3状态,存储器或外设没有准备好数据,不能在T3状态将数据放到总线上,使READY=0,则CPU在T3和T4之间插入一个或几个TW状态,直到数据准备好READY=1为止。

  • T4状态:总线周期结束。

CPU对数据总线进行采样,读出数据

注意:

由于外设或存储器速度较慢,常常不能及时配置CPU传送数据。这时,外设或存储器会通过READY信号线在T3状态启动之前向CPU发送“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期Tw(等待状态)。在Tw状态,总线上的信息情况和T3状态的信息情况一样。当存储器或外设完成数据传送时,便在READY线上发送“准备好”信号,CPU一接受到这信号,就会自动脱离Tw状态进入T4状态。

只有在CPU和内存或IO接口之间传输数据,以及填充指令队列时,CPU才执行总线周期。如果在1个总线周期之后,不立即执行下一个总线周期,那么,系统总线就处在空闲状态,此时,执行空闲周期。S6~S3同前一总线周期;若前一周期是读周期,则AD15 ~AD0为高阻态;总前一周期是写周期,则AD15 ~AD0保持数据有效。

②8086的复位与启动操作

8086的复位与启动信号通过RESET信号引发

RESET信号一进入高电平,CPU就会结束现行操作,如果维持4个时钟周期的高电平则复位,并且,只要RESET信号停留在高电平状态,CPU就维持在复位状态。如果是初次加电引起的复位,则要求维持不小于50μs的高电平。

复位状态:CPU将CS设置为初值0FFFFH,其他内部寄存器都被设置为0

RESET信号从高电平跳变到低电平并经过7个是时钟周期后,CPU就被启动恢复正常工作,即从FFFF0H处开始执行程序

③最小模式下的总线保持

当系统中CPU之外的另一个控制器要求使用总线时,向CPU发请求信号HOLD。在每个时钟脉冲的上升沿,CPU检测HOLD,如为高电平,并且允许让出总线时,在总线周期的T4或空闲状态Ti之后的下一个时钟周期,CPU发出总线响应信号HLDA,并且让出总线,直到HOLD信号无效,CPU才收回总线控制权。

④最大模式下的总线请求/授权

与最小模式下不同的是,在最大模式下,总线控制信号不再是HOLD和HLDA,而是功能更加完善的两个双向信号引脚/RQ//GT0和/RQ//GT1,他们都称为总线请求/授权信号端,但是前者的优先级更高。每次总线控制权的切换都是通过三个环节来实现的,即发请求脉冲、CPU发授权脉冲,用完总线后发给CPU释放脉冲,这三个脉冲都是负脉冲。另外,每次总线控制权改变后,总线上必须有一个空闲周期。即在一个时钟周期中,没有任何一个主模块使用总线。

⑤中断操作

中断:硬件中断、软件中断

硬件中断(外部中断):INTR可屏蔽中断、NMI不可屏蔽中断

软件中断(内部中断):INT n软中断、INTO溢出中断、除数为0中断、单步中断

8086与8088_第4张图片

中断向量:中断处理子程序的入口地址,每个中断类型对应一个中断向量

中断向量表位于内存的0-3FFH区域

下图是低地址在下,高地址在上(有点反常)

前5个是专用中断,除非屏蔽中断外,其他都是软件中断

类型5到类型31共27个中断为保留的中断,是提供给系统使用的

其余类型中断原则上可以用户自定义,但有些中断类型已有固定用途,比如21H中断是操作系统MS-DOS的系统调用,在Windows操作系统中仍有效

8086与8088_第5张图片

中断响应流程图

8086与8088_第6张图片

中断响应的总线周期

8086与8088_第7张图片

当响应一个可屏蔽中断时,CPU实际执行的总线时序如下:

第一步:执行2个中断响应周期,得到中断类型码

第二步:执行1个总线写周期,把标志寄存器入栈

第三步:标志寄存器中IF和TF置0

第四步:执行1个总线写周期,CS入栈

第五步:执行1个总线写周期,IP入栈

第六步:执行1个总线读周期,偏移量送IP寄存器

第七步:执行1个总线读周期,段地址送CS寄存器

如果是NMI或软件中断,则跳过第一步,从第二步开始按次序执行到第七步

五、8086的系统配置

1.8086在最小模式下的典型配置

除了CPU外,还需要哪些芯片来构成一个最小模式系统?这些芯片和CPU之间的连接关系是什么样的?

8086与8088_第8张图片

8284A时钟发生器、地址锁存器8282(或74LS373)、8286数据收发器(或74LS245)

2.8086在最大模式下的典型配置

8086与8088_第9张图片

最大模式配置和最小模式配置有一个主要的差别,就是在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和IO端口的读写信号和对锁存器8282和对总线收发器8286的控制信号。8288总线控制器就是完成上面这些功能的专用芯片。8259A是中断优先级管理部件。使用8288后,就可以依据/S0,/S1,/S2的组合来提供相应的控制信号

你可能感兴趣的:(微机原理与接口技术,笔记)