第七章 8086系统设计
由微处理器组成的微型计算机,一般包括CPU系统,存储器,定时电路,I/O接口电路以及连接各部分的系统n总线等几大部分。而CPU系统除了核心器件微处理器之外,还应有保证CPU正常运行及与存储器和I/O接口相匹配的各种外围芯片,如时钟发生器,总线驱动和控制器,地址锁存器,数据收发器及系统等待控制电路 等,有的还需要协处理器或I/O处理器组成多处理机系统。
本章首先介绍由8086CPU组成的CPU系统,然后介绍组成微型机系统所需定时电路,接口电路及总线等。
第一节 8086的支持芯片
为了用8086处理器组成计算机系统,Intel公司设计了一系列支持芯片,本节介绍组成系统所必须的支持芯片,它们是时钟发生器/驱动器8284,8位输入/输出锁存器8282/8283(或74LS373),8位总线收发器8286/8287 (或84LS245),总线控制器8288。
§7.1.1 8284时钟发生器/驱动器
在8086CPU内部没有有时时钟发生器,当组成微型机系统时,所需的时钟信号由外部时钟发生器提供。 8284是专门为8086设计的时钟发生器/驱动器。在8284中,不仅有时钟信号发生器,还有复位信号RESET和 准备好信号READY产生电路,这些电路分别向8086系统提供时钟信号CLK,复位信号RESET和准备好信号READY ,还可向外界提供晶振信号OSC以及外围芯片所需的时钟信号PCLK。
1.8284的引脚
8284是双列直插式18脚组件,其引脚分配如图7-1所示。其功能为:
X1,X2:晶振输入端。
ASYNC:READY同步选择输入。ASYNC信号决定READY的同步方式。当ASYNC为低电平时,提供两级READY同步 ,若ASYNC为高电平时,提供一级READY同步。
EFI:外来时钟输入端。当F/C接高电平时,由EFI端输入外来时钟。 输入时钟信号的频率为系统时钟CLK的三倍。
F/C:时钟源选择输入端。若F/C 接低电平,则系统时钟CLK由晶体振荡器产生;若F/C接高电平,则CLK 由外来时钟产生。
OSC:晶振输出端。输出频率为晶振频率,TTC电平。
CLK:提供给整个计算机系统的时钟信号,所以称为系统时钟。CLK的频率是晶体震荡器频率或EFI端输入频率 1/3,占空比为33%。
PCLK:为外设提供的输出时钟信号,频率是CLK的1/2,占空比为50%。
RES:复位输入端,低电平有效。用于产生8086的RESET信号。由于8284 内部具有斯密特整形电路,因此RES可以是缓慢变化的脉冲信号,它经 8284内部电路整形而获得较陡的复位信号RESET。
RESET:提供给8086及整个系统的复位信号,高电平有效,其宽度由RES 决定。
AEN1,AEN2 :对应RDY1,RDY2的允许控制信号,低电平 有效。当AEN1为低电平时,RDY1 起作用,AEN2为低电平时,RDY2 起作用。在单CPU系统中AEN应接低电平,在多系统中,用这两个信号。
RDY1,RDY2:RDY高电平有效的输入信号。 可由系统总线的设备产生,它有效表示数据已收到或数据可以使用。
CSYNC:同步输入信号。用来使多个8284同步,以提供同步的CLK信号。CSYNC为高电平时,内部计数器复位 ;CSYNC为低电平时,才允许内部计数器计数。
2。8284的内部结构及工作原理
8284内部结构如图7-2所示。由CLK时钟信号产生电路,RESET复位信号产生电路及READY信号产生电路等组成。
(1).时钟电路 时钟发生电路由晶体振动器和分频器组成.当F/C脚接低电平时,它选择 晶体振荡器作为频率源,时钟频率由跨结接在X1,X2端晶体控制,振動器产生的脉冲 信号,经三分频后,成为占空比33%的时钟CLK.同时振荡器脉冲信号直接经反相器 产生OSC信号输出.CLK经二分频得到占空比为50%的PCLK信号.OSC和PCLK都可作为 外围电路的时钟.当F/C接高电平时,它选择外来脉冲信号源,由EFI端输入,用和上述 相同的方法产生CLK,PCLK和OSC信号.
在多CPU结构中,要求所有8086时钟信号同步,要求多个8284同时同相位的工作,此时 一般在所有8284的EFI端接同一个外部时钟,用CSYNC信号控制它们同步.在CSYNC为高 电平时,禁止CLK输出,CSYNC为低电平时,又重新输出CLK信号,如向多个8284输出同一个 CSYNC信号,则各CPU都会严格同步,多CPU不能使用晶体振荡器,不然各8284晶振稍有 差异,就不会同步.
(2).复位信号产生电路 系统的复位信号必须与时钟信号同步,否则将使系统工作不 稳定.8284内部有一个斯密特整形电路和一个同步触发器组成复位信号发生电路.当复位 输入信号加到RES端,经过整形加到触发器D端,在CLK信号下降使触发器置1,产生同步复位 信号RESET的输出.借助在一功能,可用单独的RC网络产生符合要求的加电复位信号.在 IBN PC/XT中,电源好信号PWRGOOF加到RES端.
(3).准备好信号产生电路 为了使存储器或者外设接口与CPU速度相匹配,需要给CPU 一个准备好信号.READY产生电路是由俩个同步触发器及一些门电路组成.输给CPU的READY 信号是由8284提供的,8284的准备好控制电路有两组输入信号,每一组都有允许信号AEN 和设备准备好信号RDY,8284设置两个准备好信号输入RDY1和RDY2是为了支持多总线 结构,使一个8086可连接两组独立的系统总线.因为每组系统总线可能会有自己的RDY线 为了仲裁总线的优先级,RDY1和RDY2各带有允许信号AEN1 和AEN2,AEN1和AEN2由用户 设计的总线优先级仲裁逻辑电路产生.
ASYNC为同步级的选择信号,如设备准备好信号RDY1和RDY2与CLK同步输入,且能满足 定时要求时,只需采用一级同步.这时将ASYNC置为高电平,被选择的RDY1或RDY2只通过 同步触发器FF2与CLK进行一级同步后作为READY信号输出.若RDY1和RDY2为异步输入或 不满足定时要求,则需要进行二级同步.此时将ASYNC置为低电平,RDY1和RDY2需要通过 FF1和FF2与CLK进行二级同步后,才能作为READY信号输出。 图7-3是8284的工作波形图.
§7.1.2 8282/8283地址锁存器
由于8086CPU一部分地址线和数据线采用分时复用,但CPU与存储器或I/O端口交换信息 时,CPU首先要发送存儲器或I/O端口的地址,随后才能传送数据,而在大多数情况下,存 储器或外围芯片,要求在总线周期内保持稳定的地址信号,所以在数据占用总线之前, 必须将地址码暂存起来.一般在每个总线周期的T1状态,用地址锁存允许信号ALE的后沿 把地址信号锁存于地址锁存器.8086系列芯片8282锁存器,8283(反相)锁存器,或者74系列 74LS373,都是八D锁存器,都可作为8086的地址锁存芯片.
图7-4表示8282/8283锁存器的引脚.8282/8283锁存器都是带有三态缓冲的数据锁存器.当选通信号STB为高电平时,允许输入的8位数据DI0~DI7通过 锁存电路,即DO0~DO7跟随着DI0~DI7,当STB由高电平向低电平跳变时,就将输入的数据锁存起来,OE为三态缓冲器的允许输出控制信号,当OE为低电平时,内部锁存的数据从 DO0~DO7输出,当OE为高电平时,三态缓冲输出DO0~DO7呈高阻状态.作为8086地址锁存器时,一般STB端接ALE,OE端接地.
7.1.3 8286/8287八位并行双向总线驱动器
由于CPU数据总线的负载能力有限,当挂在数据总线上的设备较多时,为了使系统能 稳定的工作,应提高数据总线电流驱动的能力和承受电容负载的能力,为此要使用数据 功率放大器,并且要求这种功率放大器能够双向传送数据,这种放大器称为数据收发器 或驱动器.
8086系列芯片8286(不反相)和8287(反相)及74LS245都是8位双向总线驱动器,图7-6 和图7-7是8286/8287的引脚及内部电路图.
8286/8287有8路双向缓冲电路,8286中的每一路双向缓冲电路,是由两个不反相的 三态缓冲电路反并联组成,而8287具有反相的作用.OE和T是缓冲器控制信号输入端.T 为传送方向控制信号端,当T爲高电平时,数据从A向B方向传送;当T为低电平时,数据从 B向A放向传送,该引脚一般接在8086的DT/R端,OE爲允许输出控制端信号,当OE爲高电平 时,缓冲器呈高阻状态,不允许数据通过,只有OE为低电平时,才允许数据传送,OE一般接 在8086的DEN端.
§7.1.4 8288总线控制器
8086CPU工作于最大组态时,它不能提供总线控制信号,而由总线控制器8288对CPU 提供的状态信息S2,S1,S0进行译码产生总线控制信号,所以在多CPU系统,为了将几个 CPU接到同一组系统总线上,或为了给8086提供几组系统总线,都要使用8288总线控制器.
1.8288总线控制器的基本功能
(1)能对CPU输入的状态信号S2,S1,S0进行译码后输出对应的状态命令,以确定CPU 执行何种操作.见表7-1.
S2 | S1 | S0 | 8086总线周期 | 8288输出命令 |
0 | 0 | 0 | 中断响应 | IORC |
0 | 0 | 10 | 读I/O端口 | IORC |
0 | 1 | 0 | 写I/O端口 | IOWC AIOWC |
0 | 1 | 1 | 暂停 | |
1 | 0 | 0 | 取指令代码 | MRDC |
1 | 0 | 1 | 读存储器 | MRDC |
1 | 1 | 0 | 写存储器 | MWTC AMWC |
1 | 1 | 1 | 过渡状态 |
(2)可以选择8228是工作于系统总线方式,还是I/O总线方式,以产生总线控制信号 或仅访问I/P总线控制信号.
(3)可以使总线控制信号浮空,以允许DMA操作,或仲裁总线优先权.
(4)可以提供超前的学控制信号AIOWC和AMWC.这是专门为慢速存儲器或I/O设备而 设计.
(5)可使控制信号无效,作为多总线或多CPU结构中实行存储器保持逻辑的一种方式.
(6)可以产生地址锁存信号ALE,及双向总线驱动器的控制信号DEN和DT/R.
(7)产生简单或级联中断逻辑所需的控制信号。
2.8288的引脚及内部结构
8288是20根引脚双列直插式组件,其引脚及内部结构如图7-8所示.它由四大部分 组成:状态译码器,控制逻辑,命令信号发生器及控制信号器.
(1)输入信号
S2,S1,S0:它们是总线周期状态输入信息,来自8086或8087的状态信息输出端. 8288对这些信息进行译码,在适当的时候产生命令和控制信号.
CLK:来自8284的时钟输入信号,用来同步命令信号和控制信号的时序.
AEN:总线命令允许控制信号.它是为子支持多总线结构的输入信号.在多总线 结构中,8288与8289的AEN端相互联络,以满足多总线的同步条件.当AEN变为低电平的 时间大于115NS后,8288总线控制器的命令输出端才开启,而在115NS以内,8288不发任何命令,所以这段时间内可以进行总线切换.若AEN为高电平,就会使输出端变为高阻状态。若8288处于I/O总线工作方式(IOB为高),则AEN不会影响I/O输出命令.
CEN:命令允许输入信号.当系统使用两个以上8288芯片时,利用此信号对每个 8288的工作状态进行控制.CEN为高电平时,允许8288输出全部信号;CEN为低电平时,所有总线命令信号和DEN,PDEN被强制爲无效.所以当系统中有多片8288时,只有正在控制操作的8288上的CEN爲高电平,其他的CEN爲低电平,这个特性可用来实现存储器分区,消除系统总线设备和驻留总线设备之间的地址冲突,即用CEN输入端的电平变化对8288起命令限器的作用.
IOB:I/O总线方式控制输入信号,当IOB为高电平时,8288工作于I/O总线方式 ,只用来控制I/O端口时,才会使IORC,INTA信号有效,而在访问存储器时,不进行任 何操作。在这种方式下,MCE/PDEN输出PDEN信号,可用DT/R和PDEN信号控制I/O收发器 。在多CPU系统中,若某些外设从属于某一个CPU,则使用I/O总线方式。此时不必考虑 AEN信号的状态,但是选用I/O总线方式时,由于没有提供总线仲裁机构,所以不能用I/O命令来控制系统总线上的I/O设备。当IOB接低电平时,8288工作于系统总线方式 ,可同时控制存储器和I/O端口,MCE/PDEN输出MCE信号。
(2)输出信号
MRDC,MWTC:存储器读写控制信号,低电平有效。MRDC有效表示存储器将 数据送上数据总线;MWTC有效表示将数据总线上的数据写入存储单元。
IORC,IOWC:I/O设备读写信号,低电平有效。IORC有效表示I/O设备将数据 送上数据总线,IOWC有效表示将数据总线上的数据写入I/O设备。
AMWC,AIOWC:存储器和I/O设备超前写信号。AMWC比MWTC约提前一个时钟周期。AIOWC比IOWC提前一个时钟周期。
INTA:中断响应信号,低电平有效。用它通知申请中断的设备,并取回中断 矢量。
ALE,DT/R:两信号功能与8086单CPU系统对应信号相同。
DEN:与8086CPU的DEN功能相同,相位相反。
MCE/PDEN:这是双功能端。当IOB接低电平时,输出MCE信号。MCE在中断响应 总线周期的T1状态有效,作为把中断控制器8259A的级联地址送上地址总线时的同步信号。在较大的微型计算机系统中,如果有8259A优先级中断主控器和8259A优先级中断从控制器,则可用MCE控制主控器,而用INTA控制从控器.当IOB接高电平,该端输出PDEN 信号,作为响应I/O总线数据收发器的允许信号.