E N D
3.2.4 8086/8088引脚及其功能 图3.7 8086/8088CPU引脚
8086/8088芯片的引脚应包括20根地址线,16根(8086)或8根(8088)数据线以及控制线、状态线、电源线和地线等,若每个引脚只传送一种信息,那么芯片的引脚将会太多,不利于芯片的封装,因此,8086/8088CPU的部分引脚定义了双重功能。如第33引脚MN / MX上电平的高低代表两种不同的信号;第31到24引脚在CPU处于两种不同的工作方式(最大工作方式和最小工作方式)时具有不同的名称和定义;引脚9到16(8088CPU)及引脚2到16和39(8086CPU)采用了分时复用技术,即在不同的时刻分别传送地址或数据信息等。
一.8086CPU 引脚 8086CPU引脚按功能可分为三大类:电源线和地线(3),地址/数据引脚(20)以及控制引脚(17=9+24~31)。 1.电源线和地线(3) 电源线VCC(第40引脚):输入,接入10%单一+5V电源。 地线GND(引脚1和20):输入,两条地线均应接地。
2. 地址/数据(状态)引脚(20) 地址/数据分时复用引脚AD15AD0(Address Data):引脚39及引脚216,传送地址时单向输出,传送数据时双向(输入或输出)。 地址状态分时复用引脚A19/S6A16/S3(Address / Status):引脚3538,输出、三态总线。采用分时输出,即在T1状态作地址线用,T2T4状态输出状态信息。当访问存储器时,T1状态输出A19A16,与AD15AD0一起构成访问存储器的20位物理地址;CPU访问I/O端口时,不使用这4个引脚,A19A16保持为0。状态信息中的S6为0用来表示8086CPU 当前与总线相连,所以在T2T4状态,S6总为0,以表示CPU当前连在总线上;S5表示中断允许标志位IF的当前设置,IF=1时,S5为1,否则为0;S4S3用来指示当前正在使用哪个段寄存器,如表3.3所示。
S4 S3 当前正在使用的段寄存器 0 0 1 1 0 1 0 1 ES SS CS 或未使用任何段寄存器 DS 表3.3 S4与S3组合代表的正在使用的寄存器
3. 控制引脚(两种工作方式下功能相同的控制引脚) (1) NMI(Non-Maskable Interrupt ):引脚17,非屏蔽中断请求信号,输入,上升沿触发。此请求不受标志寄存器FLAGS中中断允许标志位IF状态的影响,只要此信号一出现,在当前指令执行结束后立即进行中断处理。 (2) INTR(Interrupt Request):引脚18,可屏蔽中断请求信号,输入,高电平有效。CPU在每个指令周期的最后一个时钟周期检测该信号是否有效,若此信号有效,表明有外设提出了中断请求,这时若IF=1,则当前指令执行完后立即响应中断;若IF=0,则中断被屏蔽,外设发出的中断请求将不被响应。程序员可通过指令STI或CLI将IF标志位置1或清零。
(3) CLK(Clock):引脚19,系统时钟,输入。它通常与8284A时钟发生器的时钟输出端相连。 (4) RESET:引脚21,复位信号,输入,高电平有效。复位信号使处理器马上结束现行操作,对处理器内部寄存器进行初始化。8086/8088要求复位脉冲宽度不得小于4个时钟周期。复位后,内部寄存器的状态如表3.4所示。系统正常运行时,RESET保持低电平。
内部寄存器 状 态 标志寄存器 IP CS DS SS ES 指令队列缓冲器 其余寄存器 0000H 0000H FFFFH 0000H 0000H 0000H 空 0000H 表3.4 复位后内部寄存器的状态
(5) READY:引脚22,数据“准备好”信号线,输入。它实际上是所寻址的存储器或I/O端口发来的数据准备就绪信号,高电平有效。CPU在每个总线周期的T3状态对READY引脚采样,若为高电平,说明数据已准备好;若为低电平,说明数据还没有准备好,CPU在T3状态之后自动插入一个或几个等待状态TW,直到READY变为高电平,才能进入T4状态,完成数据传送过程,从而结束当前总线周期。
(6) TEST :引脚23,等待测试信号,输入。当CPU执行WAIT指令时,每隔5个时钟周期对TEST引脚进行一次测试。若为高电平,CPU就仍处于空转状态进行等待,直到 TEST 引脚变为低电平,CPU结束等待状态,执行下一条指令,以使CPU与外部硬件同步。 (7) RD (Read):引脚32,读控制信号,输出。当 RD =0时,表示将要执行一个对存储器或I/O端口的读操作。到底是从存储单元还是从I/O端口读取数据,取决于 M/IO (8086)或 IO/M (8088)信号。
(8)BHE/S7(Bus High Enable / Status):引脚34,高8位数据总线允许/状态复用引脚,输出。BHE在总线周期的T1状态时输出,当该引脚输出为低电平时,表示当前数据总线上高8位数据有效。该引脚和地址引脚A0配合表示当前数据总线的使用情况,如表3.5所示。S7在8086中未被定义,暂作备用状态信号线。
A0 数据总线的使用情况 0 0 1 1 0 1 0 1 16位字传送(偶地址开始的两个存储器单元的内容) 在数据总线高8位(D15D8)和奇地址单元间进行字节传送 在数据总线低8位(D7D0)和偶地址单元间进行字节传送 无效 表3.5 BHE与地址引脚A0编码的含义
(9) MN/MX(Minimum/Maximum mode control):引脚33,最小/最大方式控制信号,输入。MN/MX引脚接高电平时,8086/8088 CPU工作在最小方式,在此方式下,全部控制信号由CPU提供;MN/MX引脚接低电平时,8086/8088工作在最大方式,此时第2431引脚的功能示于图3.7括号内,这时,CPU发出的控制信号经8288总线控制器进行变换和组合,从而使总线的控制功能更加完善。
2. 8086 最小工作方式及引脚2431的定义 当MN/MX接高电平时,系统工作于最小方式,即单处理器方式,它适用于较小规模的微机系统。其典型系统结构如图3.8所示。 图中8284A为时钟发生/驱动器,外接晶体的基本震荡频率为15 MHz,经8284A三分频后,送给CPU做系统时钟。 8282为8位地址锁存器。当8086访问存储器时,在总线周期的T1状态下发出地址信号,经8282锁存后的地址信号可以在访问存储器操作期间始终保持不变,为外部提供稳定的地址信号。8282是典型的8位地址锁存芯片,8086采用20位地址,再加上BHE信号,所以需要3片8282作为地址锁存器。
8286为具有三态输出的8位数据总线收发器,用于需要增加驱动能力的系统。在8086系统中需要2片8286,而在8088系统中只用1片就可以了。8286为具有三态输出的8位数据总线收发器,用于需要增加驱动能力的系统。在8086系统中需要2片8286,而在8088系统中只用1片就可以了。 系统中还有一个等待状态产生电路,它向8284A的RDY端提供一个信号,经8284A同步后向CPU的READY线发数据准备就绪信号,通知CPU数据已准备好,可以结束当前的总线周期。当READY=0时,CPU在T3之后自动插入TW状态,以避免CPU与存储器或I/O设备进行数据交换时,因后者速度慢而丢失数据。
在最小方式下,第2431引脚的功能如下: (1) INTA(Interrupt Acknowledge):引脚24,中断响应信号,输出。该信号用于对外设的中断请求(经INTR引脚送入CPU)作出响应。INTA实际上是两个连续的负脉冲信号,第一个负脉冲通知外设接口,它发出的中断请求已被允许;外设接口接到第2个负脉冲后,将中断类型号放到数据总线上,以便CPU根据中断类型号到内存的中断向量表中找出对应中断的中断服务程序入口地址,从而转去执行中断服务程序。
(2) ALE(Address Latch Enable):引脚25,地址锁存允许信号,输出。它是8086/8088提供给地址锁存器的控制信号,高电平有效。在任何一个总线周期的T1状态,ALE均为高电平,以表示当前地址/数据复用总线上输出的是地址信息,ALE由高到低的下降沿把地址装入地址锁存器中。 (3) DEN(Data Enable):引脚26,数据允许信号,输出。当使用数据总线收发器时,该信号为收发器的OE端提供了一个控制信号,该信号决定是否允许数据通过数据总线收发器。DEN为高电平时,收发器在收或发两个方向上都不能传送数据,当DEN为低电平时,允许数据通过数据总线收发器。
(4) DT/R(Data Transmit/Receive):引脚27,数据发送/接收信号,输出。该信号用来控制数据的传送方向。当其为高电平时,8086 CPU通过数据总线收发器进行数据发送;当其为低电平时,则进行数据接收。在DMA方式,它被浮置为高阻状态。 (5) M/IO(Memory/Input and Output):引脚28,存储器I/O端口控制信号,输出。该信号用来区分CPU是进行存储器访问还是I/O端口访问。当该信号为高电平时,表示CPU正在和存储器进行数据传送;如为低电平,表明CPU正在和输入/输出设备进行数据传送。在DMA方式,该引脚被浮置为高阻状态。
(6) WR(Write):引脚29,写信号,输出。WR有效时,表示CPU当前正在进行存储器或I/O写操作,到底是哪一种写操作,取决于M/IO信号。在DMA方式,该引脚被浮置为高阻状态。 (7) HOLD(Hold request):引脚31,总线保持请求信号,输入。当8086/8088 CPU之外的总线主设备要求占用总线时,通过该引脚向CPU发一个高电平的总线保持请求信号。
(8) HLDA(Hold Acknowledge):引脚30,总线保持响应信号,输出。当CPU接收到HOLD信号后,这时如果CPU允许让出总线,就在当前总线周期完成时,在T4状态发出高电平有效的HLDA信号给以响应。此时,CPU让出总线使用权,发出HOLD请求的总线主设备获得总线的控制权。
3. 8086 最大工作方式及引脚2431的定义 当MN/MX接低电平时,系统工作于多处理器方式。可以看出,最大方式和最小方式有关地址总线和数据总线的电路部分基本相同。而控制总线的电路部分有很大差别。在最小工作方式下,控制信号可直接从8086/8088 CPU得到,不需要外加电路。最大方式是多处理器工作方式,需要协调主处理器和协处理器的工作。因此,8086/8088的部分引脚需要重新定义,控制信号不能直接从8086/8088 CPU引脚得到,需要外加8288总线控制器,通过它对CPU发出的控制信号(S0,S1,S2)进行变换和组合,以得到对存储器和I/O端口的读写控制信号和对地址锁存器8282及对总线收发器8286的控制信号,使总线的控制功能更加完善。
QS1 QS0 含 义 0 0 无操作 0 1 从指令队列的第一字节中取走代码 1 0 队列为空 1 1 除第一字节外,还取走了后续字节中的代码 在最大方式下,第2431引脚的功能如下: (1) QS1、QS0(Instruction Queue Status):引脚24、25,指令队列状态信号,输出。QS1、QS0两个信号电平的不同组合指明了指令队列的状态,其代码组合对应的含义如表所示。
(2) S2、S1、S0(Bus Cycle Status):引脚26、27、28,总线周期状态信号,输出。低电平有效的三个状态信号连接到总线控制器8288的输入端,8288对这些信号进行译码后产生内存及I/O端口的读写控制信号。表3.7给出了这三个状态信号的代码组合使8288产生的控制信号及其对应的操作。
8288产生的控制信号 对 应 操 作 表3.7 S2、S1、S0的代码组合对应的操作 0 0 0 发中断响应信号 0 0 1 读I/O端口 0 1 0 写I/O端口 0 1 1 无 暂停 1 0 0 取指令 1 0 1 读内存 1 1 0 写内存 1 1 1 无 无源状态
(3) LOCK(Lock):引脚29,总线封锁信号,输出。当LOCK为低电平时,系统中其他总线主设备就不能获得总线的控制权而占用总线。LOCK信号由指令前缀LOCK产生,LOCK指令后面的一条指令执行完后,便撤消了LOCK信号。另外,在DMA期间,LOCK被浮空而处于高阻状态。
(4) RQ/GT1、RQ/GT0(Request/Grant):引脚30、31,总线请求信号(输入)/总线请求允许信号(输出)。这两个信号可供8086/8088以外的2个总线主设备向8086/8088发出使用总线的请求信号RQ(相当于最小方式时的HOLD信号)。而8086/8088在现行总线周期结束后让出总线,发出总线请求允许信号GT(相当于最小方式的HLDA信号),此时,外部总线主设备便获得了总线的控制权。其中RQ / GT0比RQ / GT1的优先级高。
8288总线控制器还提供了其他一些控制信号:MRDC(Memory Read Command)、MWTC(Memory Write Command)、IORC(I/O Read Command)、IOWC(I/O Write Command)以及INTA等,它们分别是存储器与I/O的读写命令以及中断响应信号。另外,还有AMWC与AIOWC两个信号,它们分别表示提前写内存命令和提前写I/O命令,其功能分别与MWTC和IOWC一样,只是它们由8288提前一个时钟周期发出信号,这样,一些较慢的存储器和外设将得到一个额外的时钟周期去执行写入操作。
4.8088与8086引脚的区别 8088与8086绝大多数引脚的名称和功能是完全相同的,仅有以下三点不同: (1) AD15AD0的定义不同。在8086中都定义为地址/数据分时复用引脚;而在8088中,由于只需要8条数据线,因此,对应于8086的AD15AD8这8根引脚在8088中定义为A15A8,它们在8088中只做地址线用。 (2) 引脚34的定义不同。在最大方式下,8088的第34引脚保持高电平,而8086在最大方式下34引脚的定义与最小方式下相同。 (3) 引脚28的有效电平高低定义不同。8088和8086的第28引脚的功能是相同的,但有效电平的高低定义不同。8088的第28引脚为IO/M,当该引脚为低电平时,表明8088正在进行存储器操作;当该引脚为高电平时,表明8088正在进行I/O操作。8086的第28引脚为M/IO,电平与8088正好相反。