【微机原理】8088/8086CPU引脚
8086是16位微处理器数据线有16根;8088是准16位微处理器,它对外的数据线是8位的。他们的地址线都是20位的,8088/8086均为40条引线、双列直插式封装
地址线决定了访问主存的容量,数据线决定了CPU的运输能力
为了能在有限的40条引线范围内进行工作,CPU内部设置了若干个多路开关,使某些引线具有多种功能,这些功能引线转换分两种情况:
一种是分时复用,在总线周期的不同时钟周期内引线的功能不同;
一种是按组态来定义引线的功能,在构成系统是8086/8088有最大和最小两种组态,在不同组态时有些引线的名称及功能不同(最小组态时的名称如图括号中所示)
所有的微处理器都有几类引线用来输出或接收各种信号:地址线、数据线、控制线和状态线、电源和定时线。8088/8086的40条引线包括以上四种信号。
写:CPU --> 主存/外设
读:主存/外设 --> CPU
一、8088/8086的引脚
1.地址/数据总线(复用)
8086中,AD15 ~ AD0 (Address/Data)为地址/数据复用引脚,双向,三态。该引脚既可以输出访问存储器或访问I/O的地址信息A15 ~ A0,又可以作为与存储器和I/O设备交换数据信息的D15 ~ D0 。他们是分时工作的。
8088中CPU对外数据总线是8位,所以AD0 ~ AD7为复用线,A15 ~ A8不能复用,仅作为地址先输出地址。
分时复用:就是一个引脚在不同的时刻具有两个甚至多个作用。总线复用的目的是为了减少对外引脚个数。
2.地址/状态总线A19/S6 ~ A16/S3
A19/S6 ~ A16/S3为地址/状态总线复用引脚,输出,三态。该引脚输出访问存储器的20位地址的高4位地址,也可以输出CPU的一些工作状态,分时工作。在总线周期的T1状态,用来输出地址的最高位,在总线的周期的T2、T3、T4状态时,用来输出状态信息。
S6:指示8086/8088当前是否总线相连,S6 = 0,表示8086/8088当前与总线相连。
S5:表明中断允许标志当前的位置。S5 = 0,表示CPU中断是关闭的,禁止一切可屏蔽中断的请求;S5=1表示CPU是开放的,允许一切可屏蔽中断的中断申请。
S4和S3:组合起来指出当前使用的段寄存器的情况。
3.读写控制总线
(1)RD*:读信号
读信号,三态输出,低电平有效,RD* ==0时,表示CPU正在对存储器或I/O端口进行读操作。
(2)WR*:写信号
写信号,三态输出,低电平有效(低电平指0)WR* == 0,表示CPU正在对存储器或I/O端口进行写操作。
进行读写的时候,只能一个动作,不会同时既读又写
(3)M/IO*:存储器或IO端口访问信号
三态输出,M/IO*等于1时,表示CPU正在访问存储器,等于0时,表示CPU正在访问I/O接口。
(4)Ready:准备就绪信号
准备好就绪信号,输入,高电平有效。Ready = 1时,表示CPU访问存储器或I/O端口已经准备好传送数据,若CPU在总线周期T3状态检测到Ready = 为0,表示存储器或I/O设备尚未准备就绪,CPU自动插入一个或多个等待状态TW,直到Ready信号变为高电平为止。
组合后,控制4种基本的总线周期
总线周期 | IO/M* | WR*(低电平有效) | RD*(低电平有效) |
存储器读 | 0 | 1 | 0 |
存储器写 | 0 | 0 | 1 |
I/O写 | 1 | 0 | 1 |
I/O读 | 1 | 1 | 0 |
5.中断总线
(1)INTR:可屏蔽请求信号。
输入,高电平有效。INTR=1时,表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时IF=1,若此时IF=1(IF为标志寄存器中的中断允许标志,IF=1开中断,IF=0关中断),则CPU响应中断,停止执行原指令序列,转去执行中断服务程序。
(2)INTA*:可屏蔽响应信号
输出,低电平有效,表示CPU响应了外设发来的INTR信号。
(3)NMI:不可屏蔽中断请求信号
输入,上升沿有效。该请求信号不受IF(中断允许标志)状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后响应中断。如:处理掉电等系统故障,不能被CPU屏蔽,优先级高于INTR(可屏蔽中断请求信号)
中断信号比较:
NMI | INTR | |
名称 | 输入,不可屏蔽中断请求信号 | 输入,可屏蔽中断请求信号 |
中断类型 | 外中断 | 外中断 |
中断类信号 | 2号 | n号(外设) |
IF | 无关 | IF=1开,IF=0关 |
触发方式 | 上升沿 | 高电平1 |
响应信号 | 无响应 | INTA* |
响应条件 | 指令执行周期结束 | 指令执行周期结束,IF=1 |
6.总线请求和响应引脚
(1)HOLD:总线请求信号
输入,高电平有效,当系统中CPU之外的另一个主模块要求占用总线时,通过它向CPU发一个高电平请求信号.(通知CPU收回对总线的控制权)
(2)HLDA:总线请求响应信号
输出,高电平有效。当HLDA有效时,表示CPU对其它主控部件的总线请求做出响应,与此同时,所有与三总线相接的CPU的引脚呈现高阻态,从而让出总线。
7.其他引脚
(1)RESET:复位信号
输入,高电平有效。RESET信号至少要保持4个时钟周期,CPU接到RESET信号后,停止进行操作,并将FR(标志寄存器)、IP(指令指针寄存器)、DS、SS、ES及指令队列清零,CS(代码段寄存器)设置为0FFFFH,当复位信号为低电平时,CPU从OFFFF0H开始执行程序。
该信息有效,将CPU初始化,88/86复位后CS=FFFFH、IP=0000H,14个寄存器,13个清0,1个全置1(CS)其结果为禁止可屏蔽中断。
(2)CLK:主时钟信号
输入。给CPU内部提供定时信号,86/88要求时钟信号占空比为33%,即三分之一周期为高电平,三分之二周期为低电平,86/88的时钟频率要求为5MHz。
不同芯片使用的时钟频率不同:8086-1的时钟频率为10MHz,8086-2的时钟频率为8MHz。
(3)Vcc:电源线
要求+5V的电压。
(4)GND:接地线
86/88有两条地线,这两条地线都要接地。
(5)ALE:地址锁存允许信号
输出、三态、高电平有效。用来做地址锁存器8282的片选信号,使由AD15-AD0分时发出的地址信息和数据信息分开。
(6)TEST*:测试信号
输出、低电平有效。当CPU执行WAIT指令时,每隔5个时钟周期对TEST进行一次测试,若测到TEST无效,CPU继续处于等待状态,直到检测到TEST为低电平。
(7)DT/R*:数据发送/接收信号
三态,输出。表明当前总线上数据的流向。在最小模式系统中作为使用8286作为数据总线的收发器,DT/R信号用来控制8286芯片的数据传送方向,当等于1时,则进行数据发送,即写操作,当等于0时,进行数据接收,读操作。
(8)DEN*:数据允许信号
数据允许,三态输出,低电平有效,等于1时,传送地址。当等于0时,表示当前数据总线上正在传送数据。在最小模式系统种,用来作数据收发器8286的选通信号。
(8)MN/MX*(Minimum/Maximum):工作模式选择信号
输入。MN/MX* = 1,表示CPU工作在最小的模式系统,MN/MX* = 0,表示工作在最大模式系统。
二.最大模式下的有关引脚
(1)QS1、QS0:指令队列状态信号
输出。这两个信号组合起来提供了总线周期的前一个状态中指令队列的状态,以便于外部对8086/8088内部指令队列的动作跟踪。
QS1 | QS0 | 含义 |
0 | 0 | 无操作 |
0 | 1 | 将指令首字节送入指令队列 |
1 | 0 | 队列为空 |
1 | 1 | 将指令其余字节送入指令队列 |
(2)S2、S1、S0:总线周期状态信号
三态输出。在最大模式系统中,它用来给总线控制器8288提供服务。8288利用这些状态信号产生对存储器和I/O设备的读写信号。
S2 | S1 | S0 | 操作过程 | 产生信号 |
0 | 0 | 0 | 发中断响应信号 | INTA* |
0 | 0 | 1 | 读I/O端口 | IORC* |
0 | 1 | 0 | 写I/O端口 | IOWC* |
0 | 1 | 1 | 暂停 | 无 |
1 | 0 | 0 | 取指令 | MRDC |
1 | 0 | 1 | 读存储器 | MRDC |
1 | 1 | 0 | 写存储器 | AMWC |
1 | 1 | 1 | 无作用 | 无 |
三、8088与8086区别:
1.内部结构
8086的指令队列有6个字节,而8088仅有4个字节。他们的执行单元EU完全相同,而总线接口单元BIU却不完全相同,8086有16位数据总线,8088仅有8位数据总线。
2.引脚存储器结构
8086有一条高8位数据总线允许引脚BHE*,它可以看作一条附加的地址线,用来访问存储器的高字节,而A0用来访问存储器的低字节。8086把1MB的存储器分为两个512KB的存储体,分别有BHE*信号和A0信号作为奇地址存储体和偶地址存储体的选通线。而8088的引脚没有BHE信号,因此它的1MB存储器不划分奇偶,A0与A1~A19一样参加地址选通。
3.地址/数据复用线
8086的地址/数据复用线是16位AD15~AD0;而8088仅有AD7~AD0复用,A8~A15仅作为地址线使用。
4.存储器与IO接口选通信号
8086和8088的存储器与I/O接口选通信号的电平不同:
8086为M/IO*,即高电平进行存储器操作,低电平进行I/O操作。
8088则相反,为IO/M*:低电平进行存储器操作,高电平进行I/O操作。
8086 | 8088 | |
数据线位数 | 16位 | 8位 |
控制线28号引脚 | M/IO* | IO/M* |
指令对列长度 | 6字节 | 4字节 |
34号引脚 | BHE* |