1、8086的两种工作方式
1)两种工作方式
为了便于组成不同规模的系统,在8086芯片中设计了两种工作模式,即最小模式和最大模式。
2)如何设定工作方式
8086 CPU的MN/MX#(Minimum/Maximum Mode Control)管脚,是最大最小模式控制信号(标号33),它决定8086工作在哪种工作模式。如果MN/MX#接+5V,则CPU工作在最小模式;MN/MX#接地,CPU工作在最大模式。
MN/MX#管脚为信号输入管脚,在设计系统时,根据选择的工作模式,将该信号直接连接+5V或地。
3)两种工作方式的主要特点
最小模式:系统中只有8086一个处理器,所有的控制信号都是由8086产生。往往用在组成基于8086 CPU的最小系统。
最大模式:系统中包含一个以上的处理器,比如包含协处理器8087或I/O处理器8089。在系统规模比较大的情况下,系统控制信号不是由8086直接产生,而是通过与8086配套的总线控制器8288等形成
2.8086的信号分类:
8086的信号大致可以分为三部分:地址、数据或状态信号,控制信号和系统信号;
3、最小模式下的管脚定义
8086管脚图见图,图中第24~31号管脚具有两种定义。括弧中表示的是最大模式下的管脚定义。
1) 地址/数据(或状态)信号:
AD15~AD0 (Address Data Bus):
地址/数据复用信号(标号2~16、39),双向,三态。在总线周期的T1状态(地址周期)AD15~AD0上出现的是低16位的地址信号A15~A0;在T3状态(数据周期)AD15~AD0 上出现的是数据信号D15~D0。
A19/S6~A16/S3 (Address/Status):
地址/状态复用信号(标号35~38),输出。在总线周期的T1状态(地址周期)A19/S6~A16/S3上出现的是地址的高4位。在T2~T4状态,A19/S6~A16/S3上输出状态信息。
S6:指示8086当前是否与总线相连。S6=0表示8086连在总线上。
S5:表示中断允许标志状态。S5=1表示中断允许标志IF=1(对可屏蔽中断请求起作用)。S5=0表示IF=0,禁止可屏蔽中断。
S4 和S3用来指出当前使用的段寄存器。S4、S3代码组合对应的含义如表2-2所示:
.• BHE#/S7 (Bus High Enable/Status):数据总线高8位使能和状态复用信号(标号34),
输出。在总线周期T1状态,如果BHE#有效,表示数据线上高8位数据是有效的。在T2~T4状态BHE#/S7 输出状态信息S7。S7在8086中未做实际定义。
8086有16位数据线。BHE#用来作为数据总线高8位的使能信号。AD0除了传输数据或地址信息还作为低8位数据的选通信号,这里,BHE#信号和AD0信号的组合,可以用来通知连接在总线上的存储器和I/O接口,CPU将进行哪一种格式的数据操作。
(2). 控制与系统信号:
ALE(Address Latch Enable):地址锁存使能信号(标号25),输出,高电平有效。
用来作为地址锁存器的锁存控制信号。8086的AD15~AD0是地址/数据复用信号,地址信息仅在T1状态有效,为了使地址信号在整个读写周期都有效,通常要用ALE把地址信号锁存在地址锁存器当中。
•DEN# (Data Enable):数据使能信号(标号26),输出,三态,低电平有效。用于数据总线驱动器的控制信号。
•DT/R#(Data Transmit/Receive): 数据驱动器数据流向控制信号(标号27),输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器,用DT/R#信号来控制数据驱动器的数据传送方向。当DT/R#=1时,数据驱动器进行数据发送;DT/R#=0时,数据驱动器进行数据接收。
• M/IO# (Memory/Input and Output):存储器或I/O控制信号(标号28),输出,三态。
M/IO#输出为高电平,指示CPU正在执行存储器访问指令,进行和存储器之间数据交互;如果为低电平,表示CPU正在执行I/O 指令,进行和I/O接口之间数据传输。
• RD#(Read):读信号(标号32),输出,三态。RD#信号有效,表示CPU执行一个对存储器或I/O端口的读操作,在一个读操作的总线周期中,RD#在T2~T3状态中有效,为低电平。
• WR#(Write):写信号(标号29),输出,三态。WR#信号有效,表示CPU执行一个对存储器或I/O端口写操作,在写操作总线周期中,WR#在T2~T3状态中有效,为低电平。
• NMI(Non-Maskable Interrupt):非屏蔽中断请求(标号17),输入,上升沿有效。
NMI不受中断允许标志的影响。当CPU检测到NMI有一个正沿触发的信号以后,CPU执行完当前指令便响应中断类型号为2的非屏蔽中断请求。
非屏蔽中断是不受中断允许标志IF的影响的,不能用软件进行屏蔽
• INTR(Interrupt Request):可屏蔽中断请求(标号18),输入,高电平有效。如果INTR信号有效,当CPU的中断允许标志IF=1时,CPU结束当前指令后,响应INTR中断。
与非屏蔽中断不一样,可屏蔽中断要根据中断允许标志的设置来判断CPU是否能响应中断请求。当INTR信号有效,同时中断允许标志IF为1的时候,CPU才会响应中断去执行一个中断处理子程序。需要注意的是,不论是非屏蔽中断还是可屏蔽中断,CPU都是在每条指令的最后一拍去采样中断请求信号的。如果有中断请求,又符合中断响应条件,CPU将在执行完当前指令之后进入中断响应周期。也就是说在指令执行中是不可以中断的
• HOLD(Hold Request):总线保持请求(标号31),输入,高电平有效。当系统当中除CPU之外的另一个总线主模块(如DMA)要求使用总线时,该总线主模块通过HOLD信号向CPU发出总线请求。如果CPU允许让出总线,就在完成当前总线周期后,在T4状态通过HLDA管脚发出应答信号,响应总线的请求。
DMA即“直接存储器访问”。在DMA方式下,外部设备利用专用的控制电路直接和存储器进行高速的数据传送,而不经过CPU。这样,传输时就不必进行CPU执行程序过程中完成的地址增量、计数器减量,以及在中断方式下CPU保护现场、恢复现场之类的操作,大大提高了数据传送的速度。
在利用DMA方式进行数据传输时,DMA控制系统总线,因此在DMA开始工作之前,首先要向CPU发出申请总线的请求,令CPU让出总线。这个请求是由DMA设置HOLD信号有效产生的。
• HLDA:总线保持响应信号,输出,高电平有效。HLDA有效时表示CPU响应了其他总线主的总线请求,一旦HLDA有效,CPU的数据/地址控制信号变为高阻状态,而请求总线的总线主(DMA)获得了总线权。
• MN/MX#(Minimum/Maximum Mode Control):最大最小模式控制信号(标号33),输入。决定8086工作在哪种工作模式。如果MN/MX#=1(+5V),CPU工作在最小模式。MN/MX#=0(接地),CPU则工作在最大模式。
• CLK(Clock):时钟信号(标号19),输入。为CPU和总线控制逻辑提供定时。要求时钟信号的占空比为33%。
• RESET(Reset):复位信号(标号21),输入,高电平有效。复位信号有效时,CPU结束当前操作并对标志寄存器FLAG 、IP、DS、SS、ES及指令队列清零,并将CS设置为FFFFH。当复位信号撤除时,(即电平由高变低时)CPU从FFFF0H开始执行程序。
• READY(Ready):准备好信号(标号22),输入,高电平有效。为了CPU能和不同速度的存储器或I/O接口进行连接,设计了READY信号。CPU在每个总线周期的T3状态对READY进行采样。当READY信号有效时表示存储器或I/O准备好发送或接收数据。CPU执行典型的总线周期,在4个T状态内完成总线操作。 如果存储器或I/O的速度较慢,不能与CPU的速度相匹配,可令READY为低。CPU在T3采样到READY为低电平以后,便在T3之后插入Tw,延长读写周期,使CPU能和较慢速度的存储器或I/O接口相匹配。
• TEST#(Test):测试信号(标号23),输入,低电平有效。TEST#信号和WAIT指令结合起来使用,在CPU执行WAIT指令时,CPU便一直处于空转状态,进行等待。只有当8086检测到TEST#信号有效时,才结束等待状态,继续执行WAIT之后的指令。
• GND:GND 为地。
• VCC:VCC为电源,接+5V。
4.最大模式下
1) 在最大模式下与最小模式不同的管脚定义
QS1、QS0(Instruction Queue Status):指令队列状态信号(标号25、24),输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,这组信号的设置为的是可以从外部对8086指令队列的动作进行跟踪。用于对芯片的测试。
S2#、S1#、S0#(Bus Cycle Status):总线周期状态信号(标号28、27、26),输出。这三个信号的组合表示当前执行的总线周期的类型。在最大模式下,用这三个信号作为总线控制器8288的输入,产生存储器、I/O的读、写等控制信号。S2#、S1#、S0#的组合意义参见表2-8:
LOCK#( Lock):总线*信号(标号29),输出。用来*其它总线主的总线请求,当LOCK#为低电平时,系统中其他总线主就不能占用总线。LOCK#信号是由指令前缀LOCK产生的。在LOCK前缀后的指令执行完之后,硬件上便撤销了LOCK#信号。
RQ#/GT1#、RQ#/GT0#( Request/Grant):总线请求信号/总线请求允许信号(标号31、30),双向。CPU以外的两个处理器可以分别用其中之一来请求总线并接受CPU对总线请求的允许。其中RQ#/GT0#优先级高于RQ#/GT1#。