第二章 微处理器
? 8086 微处理器
? IA 结构微处理器的进化
? Pentium 微处理器
2.1 8086微处理器
?微处理器的结构
?引脚功能和工作模式
?总线操作
?存储器和 I/O组织
?中断系统
2.1.1 8086微处理器结构
1,EU和 BIU的组成和各功能单元的作用
EU:执行单元 BIU:总线接口单元
2.1.1 8086微处理器结构
1,EU和 BIU的组成和各功能单元的作用(续)
1) EU
? 通用寄存器 AX,BX,CX,DX
? 专用寄存器 SP,BP,SI,DI ( SP堆栈指针; BP
基数指针; SI源变址寄存器; DI目的变址寄存器)
? 算数逻辑部件 ALU
? 标志寄存器 FLAG
? EU控制逻辑
1,EU和 BIU的组成和各功能单元的作用(续)
1) EU
标志寄存器
? 8086使用 9位标志位。分为状态标志和控制标志 2类。
? 状态标志 6位,表示指令执行后算逻部件的状态。
? 控制标志 3位,指示 CPU控制某种特定的功能,可通过
指令来设定和清除。控制标志 DF,IF,TF。
1,EU和 BIU的组成和各功能单元的作用(续)
2) BIU
1,EU和 BIU的组成和各功能单元的作用(续)
2) BIU
?段寄存器 CS,DS,ES,SS
?指令指针寄存器 IP
?地址加法器
?指令队列
?总线控制逻辑
1,EU和 BIU的组成和各功能单元的 作用 (续)
2) BIU
CS
16 位
20 位
CS 左移 4 位
+
IP
地 址加 法器
20 位
物理地 址
地址加法器
2,EU和 BIU的操作关系和指令流水
1) EU和 BIU的操作原则
l BIU中的指令队列有 2个或 2个以上字节为空时, BIU自动 启动总线
周期, 取指 填充指令队列 。 直至队列满, 进入空闲状态 。
l EU每执行完一条指令, 从指令队列 队首取指 。 系统初始化后, 指
令队列为空, EU等待 BIU从内存取指, 填充指令队列 。
l EU取得指令, 译码并执行指令 。 若指令需要取操作数或存操作结
果, 需访问存储器或 I/O,EU向 BIU发出访问 总线请求 。
l 当 BIU接到 EU的总线请求, 若正忙 ( 正在执行取指 总线周期 ),
则必须 等待 BIU执行完当前的总线周期, 方能响应 EU请求;若 BIU空
闲, 则立即执行 EU申请总线的请求 。
l EU执行转移, 调用和返回指令时, 若下一条 指令不在指令队列 中,
则 队列被自动清除, BIU根据本条指令执行情况重新取指和填充指令
队列 。
2,EU和 BIU的操作关系和指令流水
2)指令流水
2,EU和 BIU的操作关系和指令流水
3)总线周期
时钟周期或状态周期, 8086CPU内部的逻辑操作以及
与外部存储器和 I/O交换数据进行的总线操作全部由
CPU的时钟来定时的 。 CPU的基本定时单位称为时钟
周期或者状态周期 。 假设 8086的主频为 10MHz,一个
时钟周期为 100ns。
总线周期, CPU为了读取指令或传送数据, 需要通过
总线接口部件 BIU与存储器或 I/O接口进行信息交互,
执行对总线的操作 。 进行一次数据传送的总线操作定
义为一个总线周期 。
2,EU和 BIU的操作关系和指令流水
3)总线周期
典型总线周期示意图
2.1.2 8086工作模式和引脚功能
1,8086的两种工作方式
1) 两种工作方式的主要特点
l 最小模式:系统中只有 8086一个处理器, 所有的控
制信号都是由 8086产生 。 往往用在组成基于 8086 CPU
的最小系统 。
l 最大模式:系统中包含一个以上的处理器,比如包
含协处理器 8087或 I/O处理器 8089。在系统规模比较大
的情况下,系统控制信号不是由 8086直接产生,而是
通过与 8086配套的总线控制器等形成。
2)如何设定工作方式
通过 MN/MX#引脚
2,8086 的引脚定义
2,最小模式下 的引脚说明
1)地址 /数据(或状态)信号
l AD15~ AD0 (Address Data Bus):地址 /数据复用信
号, 双向, 三态 。 在 T1状态 ( 地址周期 ) AD15~ AD0上
为地址信号的低 16位 A15~ A0;在 T2 ~ T3状态 ( 数据周
期 ) AD15~ AD0 上是数据信号 D15~ D0。
l A19/S6~ A16/S3 (Address/Status):地址 /状态复用信
号, 输出 。 在总周期的 T1状态 A19/S6~ A16/S3上是地址的
高 4位 。 在 T2~ T4状态, A19/S6~ A16/S3上输出状态信息 。
l BHE#/S7 (Bus High Enable/Status):数据总线高 8位
使能和状态复用信号, 输出 。 在总线周期 T1状态,
BHE#有效, 表示数据线上高 8位数据有效 。 在 T2~ T4状
态 BHE#/S7 输出状态信息 S7。 S7在 8086中未定义 。
2,最小模式下 的引脚说明
1)地址 /数据(或状态)信号
S4
S3
当前正在使用的段寄存
器
0
0 ES
0
1
SS
1
0 CS或未使用任何段寄存
器
1 1 DS
S6:指示 8086当前是否与总线相连,0表示
8086连在总线上。
S5:表示中断允许标志 IF状态。 S5=1表示中断
允许标志 IF=1(可屏蔽中断允许)。
2,最小模式下 的引脚说明
2)控制与系统信号,
l ALE(Address Latch Enable):地址锁存使能信号, 输
出, 高有效 。 用来作为地址锁存器的锁存控制信号 。
l DEN# (Data Enable):数据使能信号, 输出, 三态,
低电平有效 。 用于数据总线驱动器的控制信号 。
l DT/R#(Data Transmit/Receive):数据驱动器数据流向
控制信号, 输出, 三态 。 在 8086系统中, 通常采用 8286
或 8287作为数据总线的驱动器, 用 DT/R#信号来控制数
据驱动器的数据传送方向 。 当 DT/R#= 1时, 进行数据发
送; DT/R#= 0时, 进行数据接收 。
2,最小模式下 的引脚说明
2)控制与系统信号,
l M/IO# (Memory/Input and Output):存储器或 I/O控制信
号 ( 标号 28), 输出, 三态 。 M/IO#输出为高电平时表
示和存储器之间数据交互;如果为低电平, 表示 CPU
和 I/O接口之间数据传输 。
l RD#(Read):读信号, 输出, 三态 。 RD#信号有效,
表示 CPU执行一个对存储器或 I/O端口的读操作, 在一
个读操作的总线周期中, RD#在 T2~ T3状态中有效, 为
低电平 。
l WR#(Write):写信号, 输出, 三态 。 WR#信号有效,
表示 CPU执行一个对存储器或 I/O端口写操作, 在写操
作总线周期中, WR#在 T2~ T3状态中有效, 为低电平 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l NMI(Non-Maskable Interrupt):非屏蔽中断请求 (中断类型
号为 2),输入, 上升沿有效 。 NMI不受中断允许标志的影响 。
l INTR(Interrupt Request):可屏蔽中断请求, 输入, 高电平
有效 。 如果 INTR信号有效, CPU是否响应中断请求, 受控于
中断允许标志 IF。
l INTA#(Interrupt Acknowledge):中断应答, 输出, 低电平
有效 。 用于中断响应周期对中断矢量的读出选通 。
l HOLD(Hold Request):总线保持请求, 输入, 高电平有效 。
当系统中总线主模块 ( 如 DMA) 要求使用总线时, 由该模块
向 CPU发送 HOLD信号 。
l HLDA:总线保持响应信号, 输出, 高电平有效 。 HLDA有
效时表示 CPU响应了其他总线主的总线请求 。 CPU的数据 /地
址控制信号呈高阻态, 而请求总线的总线主 ( DMA) 获得了
总线权 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l CLK(Clock):时钟信号, 输入 。 为 CPU和总线控制逻
辑提供定时 。 要求时钟信号的占空比为 33% 。
l RESET(Reset):复位信号, 输入, 高电平有效 。 复位
信号有效时, CPU结束当前操作并对标志寄存器 FLAG,
IP,DS,SS,ES及指令队列清零, 并将 CS设置为
FFFFH。 当复位信号撤除时, ( 即电平由高变低时 )
CPU从 FFFF0H开始执行程序 。
l READY(Ready):准备好信号, 输入, 高电平有效 。
当 READY信号有效时表示存储器或 I/O准备好发送或接
收数据 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l MN/MX# (Minimum/Maximum Mode Control):最大
最小模式控制信号, 输入 。 决定 8086工作在哪种工作
模式 。 如果 MN/MX# = 1( + 5V), CPU工作在最小模
式 。 MN/MX# = 0( 接地 ), CPU则工作在最大模式 。
l TEST# (Test):测试信号, 输入, 低电平有效 。 和
WAIT指令结合起来使用, 在 CPU执行 WAIT指令时,
CPU处于空转状态, 进行等待 。 当 8086检测到 TEST#信
号有效时, 等待状态结束, 继续执行 WAIT之后的指令 。
l GND 为地 。
l VCC 为电源, 接+ 5V。
3,地址信号锁存和总线驱动
1) 8086的输入输出特性
表 2-5 8086微处理器的输入特性
输入逻辑电平 电压 电流
0 最大 0.8V 最大 ± 10uA
1 最大 2.0V 最大 ± 10uA
表 2-6 8086微处理器的输出特性
输出逻辑电平 电压 电流
0 最大 0.45V 最大 2.0mA
1 最大 2.4V 最大 -400uA
3,地址信号锁存和总线驱动
1) 8086的输入输出特性
表 2-7 推荐的 8086引脚扇出
系列 IL(吸收电流) IH(驱动电流) 8086引脚扇出
TTL( 74) - 1.6 mA 40 uA 1
TTL( 74S) - 2.0 mA 50 uA 1
TTL( 74LS) - 0.4 mA 20 uA 5
TTL( 74ALS) - 0.1 mA 20 uA 10
TTL( 74AS) - 0.5 mA 25 uA 10
TTL( 74F) - 0.5 mA 25 uA 10
CMOS( 74HC) - 10 uA 10 uA 10
CMOS( CD4) - 10 uA 10 uA 10
NMOS - 10 uA 10 uA 10
注意! 设计连接时要考虑信号的负载能力
3,地址信号锁存和总线驱动
2) 最小模式的系统组成
最小模式的典型配置
3,地址信号锁存和总线驱动
2)最小模式的系统组成
3,地址信号锁存和总线驱动
2) 最小模式的系统组成
最小模式的典型配置
3、地址信号锁存和总线驱动
2)最小模式的系统组成
注意!
在给微处理器添加锁存和驱动器时,
那些具有三态功能的信号经过锁存和缓
冲以后必须仍然保持三态功能。
前页图中 8282的 OE#端接地,则表示
这种配置的最小系统将不会连接 DMA控
制器。
4、最大模式与 最小模式 的引脚差异
l QS1,QS0(Instruction Queue Status,最小模式为
ALE,INTA#):指令队列状态信号, 输出 。 QS1,QS0
组合起来表示前一个时钟周期中指令队列的状态, 以
便从外部对芯片的测试 。
l S2#,S1#,S0#( Bus Cycle Status,最小模式为
M/IO#,D/TR#,DEN#),总线周期状态信号, 输出 。
这三个信号的组合表示当前总线周期的类型 。 在最大
模式下, 由这三个信号输入给总线控制器 8288,用来
产生存储器, I/O的读写等相关控制信号 。
4、最大模式与 最小模式 的引脚差异
4、最大模式与 最小模式 的引脚差异
4、最大模式与 最小模式 的引脚差异
l LOCK#( Lock,最小模式为 WR#):总线封锁信号,
输出 。 当 LOCK#为低电平时, 系统中其他总线主就不
能占用总线 。 LOCK#信号是由指令前缀 LOCK产生的 。
在 LOCK前缀后的指令执行完之后, 硬件上便撤销了
LOCK#信号 。
l RQ#/GT1#,RQ#/GT0#( Request/Grant,最小模式为
HOLD,HLDA ),总线请求信号, 输入 / 总线请求允
许信号, 输出, 此信号为双向信号 。 CPU以外的处理
器可以用其中之一来请求总线并接受 CPU对总线请求
的回答 。 RQ#/GT0#优先级高于 RQ#/GT1#。
5,最大模式的系统配置
最大模式的典型配置
5,最大模式的系统配置
8288总线控制器结构框图
2.1.3 8086的总线操作
1,系统的复位和启动操作
RESET,4个时钟周期的高电平, 初次加电复位, 不小
于 50μ s的高电平 。
? 标志寄存器 清零
? CS寄存器 FFFFH
? DS寄存器 0000H
? SS寄存器 0000H
? ES寄存器 0000H
? 指令指针( IP) 0000H
? 指令队列 空
? 其他 0000H
2,总线操作的概念
1) 总线操作与总线周期
2) 典型的总线周期
3) 空闲周期与等待周期
3,总线操作时序
1) 典型的总线操作时序分析
3,总线操作时序
1) 典型的总线
操作时序分析
P37
表 2-8 P37
表 2-8
3,总线操作时序
2) 存储器访问时间的计算
l 从地址出现在存储器地址总线到存储器数据在数据
线上稳定的这段时间叫做 存储器的访问时间
存储器访问时间 CPU = TTCLCL * 3-( TCLAV+TDVCL),
TTCLCL是 T状态的周期,
TCLAV为地址从 T1前沿到在地址线上有效时间的延时
TDVCL是向存储器读数据, 数据在总线上建立的时间
设 CPU的主频为 5MHz,
TTCLCL * 3=600ns,TCLAV=110ns,TDVCL=30ns,
则 CPU的理想存储器访问时间为 460ns。 若译码器等电路的
延时为 40ns
CPU的存储器访问时间约为 420ns。 存储器的访问时
间参数, 必须小于 420ns。
2)
3,总线操作时序
3) 最大模式 总线读操作与最小模式的差异
3,总线操作时序
3) 最大模式下的总线写操作
4,等待周期 的产生
1) 产生一个等待周期的 READY信号
插入一个 TW时的 READY#信号
2) 等待周期 ---8284的 RDY in
3) 等待周期 ---Wait产生电路
4) 等待周期 ---Wait产生电路时序
2.1.4 8086的存储器和 I/O组织
1,8086的存储器组织
1)寻址空间
? 220= 1M bytes的存储器寻址空间
? 分段的概念
2)分段组织
? 段寄存器的 16位值左移 4位,得到的 20位值加上
16位的偏移量。
3)字与字节访问
? AD0 信号和 BHE#信号组合,选择奇偶字节或字。
图 - 8086 存储器组织
图 - 奇偶寻址
字节访问
图 - 偶地址字传送
图 - 奇地址
字传送
表,AD0,BHE#的代码组合和对应的操作
B
H
E#
A
D0
对应的操作
所用的管脚
0
0
从偶地址开始读 /写一个字
AD15~ AD0
0
1
从奇地址单元读 /写一个字节
AD15~ AD8
1
0
从偶地址单元读 /写一个字节
AD7~ AD0
0
1
1
0
从奇地址开始读 /写一个字 ( 在第
一个总线周期, 传送低 8位数据到
AD15~ AD8;第二个总线周期传送
高 8位数据到 AD7~ AD0)
AD15~ AD8
AD7~ AD0
2,8086的 I/O组织
1) 单独编址
微型机系统要为 I/O芯片的每个端口分配一个地址, 各
个端口号不能重复, 是单独编址的 。
2) 寻址范围
65535个 8位的 I/O端口, 即寻址范围是 0~ 64K。 两个编
号相邻的 8位端口可以组合成一个 16位端口 。
3) 访问指令
执行 IN,OUT指令, RD#信号或 WR#信号与 M/IO#信号同
时为低电平 。
2.1.5 8086 的中断系统
1、中断的类型
1) INT( n)
256个中断向量和 INT n ( n = 0~255)指令相对应
2)内部中断
CPU执行 INT n指令或 CPU执行指令出现错误而产生的
中断 。 INT n指令中断也称作软件中断 。
? 除法错中断 ( 类型 0)
? 单步中断 ( 类型 1)
? 断点中断 ( 类型 3)
? 溢出中断 ( 类型 4)
? 其它 INT指令中断
1、中断的类型
3)外部中断
外部中断的中断源来自 CPU外部, 是外设产生的,
通常外设需要实时和 CPU进行数据交互, 申请 CPU中
断当前的程序, 也把外部中断称为硬件中断 。
? 非屏蔽中断 MNI( 类型 2)
? 可屏蔽中断 INTR
2、内部中断
1)除法错中断(类型 0)
除数为 0或者运算所得到的商超出规定的范围时 由
CPU自身产生的中断 。
2)单步中断(类型 1)
当 CPU测试到标志寄存器 TF=1时, CPU每执行一条指
令, 响应一次中断, 进入一次单步处理中断服务程序 。
3)断点中断(类型 3)
用于程序的调试。断点中断允许指定断点,当程序
执行到断点时转入断点中断处理程序。
4)溢出中断(类型 4)
当运算结果超出数据规定的范围就会产生溢出中断 。
5)其它 INT指令中断
3、外部中断
1)非屏蔽中断 MNI( 类型 2)
上升沿有效,并要求信号边沿正跳变后保持 2个 CLK
的高电平,NMI不受中断允许标志 IF的影响。非屏蔽
中断一般用来处理系统的重大故障,例如系统掉电等。
2)可屏蔽中断 INTR
高电平有效 ( 需要保持到响应 ), 受标志寄存器的
中断标志位 IF 的控制, 当 IF为 1时, 表示中断允许 。
CPU响应中断后, 由外设提供中断向量 。
4、中断操作
2)中断向量和中断向量表
中断向量, 就是中断处理程序的入口地址, 每个中断
类型对应一个中断向量 。 内存 0段的 0~ 3FFH区域来存
放中断向量, 该段区域为中断向量表 。
4、中断操作
1)中断的请求与响应
? 中断的过程,即中断请求与响应的过程。
? 中断源发出中断请求以后,如果中断请求信号符合要
求,即 INTR为高电平且保持足够长时间,同时 CPU的
中断允许标志 IF=1,则 CPU执行完当前指令,便进入
中断响应周期。 CPU是在每条指令的最后一拍,检测
INTR信号的。
? CPU响应中断以后,通过 INTA管脚连续发出两个负脉
冲信号,表示进入中断响应周期。第一个负脉冲用来
通知外设,CPU响应了中断请求。第二个负脉冲则用
来读取中断向量,在此即中断类型。再通过中断类型
查找中断向量表,得到中断入口地址,转入相应的中
断服务程序 。
。
4、中断操作
2)中断向量和中断向量表
4、中断操作
3)中断响应流程
? CPU通过 INTA#管脚发出两个负脉冲,第一个负脉冲
确认中断,第二个负脉冲读取中断类型码;
? 将标志寄存器的值压入堆栈,在返回主程序时恢复;
? 标志寄存器的单步标志 TF和中断允许标志 IF清零 ;
? 将当前指令地址推入堆栈,保护断点 ;
? 根据中断类型码,查找向量表,找到中断程序入口;
? 执行中断处理程序 ;
? 中断处理程序结束后,由中断返回指令从堆栈弹出
主程序的 IP和 CS,弹出标志寄存器的内容,返回
原程序的断点处继续执行原程序。
4,中断操作
4)中断响应的总线周期
4、中断操作
中断响应
流程图
注意! TEMP保存
TF的状态以便实现单
步中断嵌套
6、中断优先级
高
低
除法错中断、断点中断、溢出中断,INT n指令中断
NMI
INTR
单步
注意!
中断优先级指的是当几个中断同时发生时 CPU响应中断
的次序。
是否能发生中断嵌套与中断优先级无关
例
2.0 学习目标
? 微处理器是微型计算机的核心部件,它的有关概念是微型计算机系统的基础。
? 以 8086 解剖麻雀,学习微处理器的基本知识。
熟悉基本结构,各部件的功能和之间的关系。
在了解引脚信号定义的基础上深入理解系统的
配置方法和微处理器的总线操作。通过典型总
线操作的时序分析,体会处理器操作过程中各信号的作用,为学习微型计算机系统打下基础。
? 通过 IA处理器的进化过程,尤其是 Pentium微
处理器结构、超标量流水线和指令分支预测技
术以及 Pentium工作方式的分析,体会微处理器
技术的进步和关键技术的作用。
? 8086 微处理器
? IA 结构微处理器的进化
? Pentium 微处理器
2.1 8086微处理器
?微处理器的结构
?引脚功能和工作模式
?总线操作
?存储器和 I/O组织
?中断系统
2.1.1 8086微处理器结构
1,EU和 BIU的组成和各功能单元的作用
EU:执行单元 BIU:总线接口单元
2.1.1 8086微处理器结构
1,EU和 BIU的组成和各功能单元的作用(续)
1) EU
? 通用寄存器 AX,BX,CX,DX
? 专用寄存器 SP,BP,SI,DI ( SP堆栈指针; BP
基数指针; SI源变址寄存器; DI目的变址寄存器)
? 算数逻辑部件 ALU
? 标志寄存器 FLAG
? EU控制逻辑
1,EU和 BIU的组成和各功能单元的作用(续)
1) EU
标志寄存器
? 8086使用 9位标志位。分为状态标志和控制标志 2类。
? 状态标志 6位,表示指令执行后算逻部件的状态。
? 控制标志 3位,指示 CPU控制某种特定的功能,可通过
指令来设定和清除。控制标志 DF,IF,TF。
1,EU和 BIU的组成和各功能单元的作用(续)
2) BIU
1,EU和 BIU的组成和各功能单元的作用(续)
2) BIU
?段寄存器 CS,DS,ES,SS
?指令指针寄存器 IP
?地址加法器
?指令队列
?总线控制逻辑
1,EU和 BIU的组成和各功能单元的 作用 (续)
2) BIU
CS
16 位
20 位
CS 左移 4 位
+
IP
地 址加 法器
20 位
物理地 址
地址加法器
2,EU和 BIU的操作关系和指令流水
1) EU和 BIU的操作原则
l BIU中的指令队列有 2个或 2个以上字节为空时, BIU自动 启动总线
周期, 取指 填充指令队列 。 直至队列满, 进入空闲状态 。
l EU每执行完一条指令, 从指令队列 队首取指 。 系统初始化后, 指
令队列为空, EU等待 BIU从内存取指, 填充指令队列 。
l EU取得指令, 译码并执行指令 。 若指令需要取操作数或存操作结
果, 需访问存储器或 I/O,EU向 BIU发出访问 总线请求 。
l 当 BIU接到 EU的总线请求, 若正忙 ( 正在执行取指 总线周期 ),
则必须 等待 BIU执行完当前的总线周期, 方能响应 EU请求;若 BIU空
闲, 则立即执行 EU申请总线的请求 。
l EU执行转移, 调用和返回指令时, 若下一条 指令不在指令队列 中,
则 队列被自动清除, BIU根据本条指令执行情况重新取指和填充指令
队列 。
2,EU和 BIU的操作关系和指令流水
2)指令流水
2,EU和 BIU的操作关系和指令流水
3)总线周期
时钟周期或状态周期, 8086CPU内部的逻辑操作以及
与外部存储器和 I/O交换数据进行的总线操作全部由
CPU的时钟来定时的 。 CPU的基本定时单位称为时钟
周期或者状态周期 。 假设 8086的主频为 10MHz,一个
时钟周期为 100ns。
总线周期, CPU为了读取指令或传送数据, 需要通过
总线接口部件 BIU与存储器或 I/O接口进行信息交互,
执行对总线的操作 。 进行一次数据传送的总线操作定
义为一个总线周期 。
2,EU和 BIU的操作关系和指令流水
3)总线周期
典型总线周期示意图
2.1.2 8086工作模式和引脚功能
1,8086的两种工作方式
1) 两种工作方式的主要特点
l 最小模式:系统中只有 8086一个处理器, 所有的控
制信号都是由 8086产生 。 往往用在组成基于 8086 CPU
的最小系统 。
l 最大模式:系统中包含一个以上的处理器,比如包
含协处理器 8087或 I/O处理器 8089。在系统规模比较大
的情况下,系统控制信号不是由 8086直接产生,而是
通过与 8086配套的总线控制器等形成。
2)如何设定工作方式
通过 MN/MX#引脚
2,8086 的引脚定义
2,最小模式下 的引脚说明
1)地址 /数据(或状态)信号
l AD15~ AD0 (Address Data Bus):地址 /数据复用信
号, 双向, 三态 。 在 T1状态 ( 地址周期 ) AD15~ AD0上
为地址信号的低 16位 A15~ A0;在 T2 ~ T3状态 ( 数据周
期 ) AD15~ AD0 上是数据信号 D15~ D0。
l A19/S6~ A16/S3 (Address/Status):地址 /状态复用信
号, 输出 。 在总周期的 T1状态 A19/S6~ A16/S3上是地址的
高 4位 。 在 T2~ T4状态, A19/S6~ A16/S3上输出状态信息 。
l BHE#/S7 (Bus High Enable/Status):数据总线高 8位
使能和状态复用信号, 输出 。 在总线周期 T1状态,
BHE#有效, 表示数据线上高 8位数据有效 。 在 T2~ T4状
态 BHE#/S7 输出状态信息 S7。 S7在 8086中未定义 。
2,最小模式下 的引脚说明
1)地址 /数据(或状态)信号
S4
S3
当前正在使用的段寄存
器
0
0 ES
0
1
SS
1
0 CS或未使用任何段寄存
器
1 1 DS
S6:指示 8086当前是否与总线相连,0表示
8086连在总线上。
S5:表示中断允许标志 IF状态。 S5=1表示中断
允许标志 IF=1(可屏蔽中断允许)。
2,最小模式下 的引脚说明
2)控制与系统信号,
l ALE(Address Latch Enable):地址锁存使能信号, 输
出, 高有效 。 用来作为地址锁存器的锁存控制信号 。
l DEN# (Data Enable):数据使能信号, 输出, 三态,
低电平有效 。 用于数据总线驱动器的控制信号 。
l DT/R#(Data Transmit/Receive):数据驱动器数据流向
控制信号, 输出, 三态 。 在 8086系统中, 通常采用 8286
或 8287作为数据总线的驱动器, 用 DT/R#信号来控制数
据驱动器的数据传送方向 。 当 DT/R#= 1时, 进行数据发
送; DT/R#= 0时, 进行数据接收 。
2,最小模式下 的引脚说明
2)控制与系统信号,
l M/IO# (Memory/Input and Output):存储器或 I/O控制信
号 ( 标号 28), 输出, 三态 。 M/IO#输出为高电平时表
示和存储器之间数据交互;如果为低电平, 表示 CPU
和 I/O接口之间数据传输 。
l RD#(Read):读信号, 输出, 三态 。 RD#信号有效,
表示 CPU执行一个对存储器或 I/O端口的读操作, 在一
个读操作的总线周期中, RD#在 T2~ T3状态中有效, 为
低电平 。
l WR#(Write):写信号, 输出, 三态 。 WR#信号有效,
表示 CPU执行一个对存储器或 I/O端口写操作, 在写操
作总线周期中, WR#在 T2~ T3状态中有效, 为低电平 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l NMI(Non-Maskable Interrupt):非屏蔽中断请求 (中断类型
号为 2),输入, 上升沿有效 。 NMI不受中断允许标志的影响 。
l INTR(Interrupt Request):可屏蔽中断请求, 输入, 高电平
有效 。 如果 INTR信号有效, CPU是否响应中断请求, 受控于
中断允许标志 IF。
l INTA#(Interrupt Acknowledge):中断应答, 输出, 低电平
有效 。 用于中断响应周期对中断矢量的读出选通 。
l HOLD(Hold Request):总线保持请求, 输入, 高电平有效 。
当系统中总线主模块 ( 如 DMA) 要求使用总线时, 由该模块
向 CPU发送 HOLD信号 。
l HLDA:总线保持响应信号, 输出, 高电平有效 。 HLDA有
效时表示 CPU响应了其他总线主的总线请求 。 CPU的数据 /地
址控制信号呈高阻态, 而请求总线的总线主 ( DMA) 获得了
总线权 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l CLK(Clock):时钟信号, 输入 。 为 CPU和总线控制逻
辑提供定时 。 要求时钟信号的占空比为 33% 。
l RESET(Reset):复位信号, 输入, 高电平有效 。 复位
信号有效时, CPU结束当前操作并对标志寄存器 FLAG,
IP,DS,SS,ES及指令队列清零, 并将 CS设置为
FFFFH。 当复位信号撤除时, ( 即电平由高变低时 )
CPU从 FFFF0H开始执行程序 。
l READY(Ready):准备好信号, 输入, 高电平有效 。
当 READY信号有效时表示存储器或 I/O准备好发送或接
收数据 。
2,最小模式下 的引脚说明
2)控制与系统信号(续),
l MN/MX# (Minimum/Maximum Mode Control):最大
最小模式控制信号, 输入 。 决定 8086工作在哪种工作
模式 。 如果 MN/MX# = 1( + 5V), CPU工作在最小模
式 。 MN/MX# = 0( 接地 ), CPU则工作在最大模式 。
l TEST# (Test):测试信号, 输入, 低电平有效 。 和
WAIT指令结合起来使用, 在 CPU执行 WAIT指令时,
CPU处于空转状态, 进行等待 。 当 8086检测到 TEST#信
号有效时, 等待状态结束, 继续执行 WAIT之后的指令 。
l GND 为地 。
l VCC 为电源, 接+ 5V。
3,地址信号锁存和总线驱动
1) 8086的输入输出特性
表 2-5 8086微处理器的输入特性
输入逻辑电平 电压 电流
0 最大 0.8V 最大 ± 10uA
1 最大 2.0V 最大 ± 10uA
表 2-6 8086微处理器的输出特性
输出逻辑电平 电压 电流
0 最大 0.45V 最大 2.0mA
1 最大 2.4V 最大 -400uA
3,地址信号锁存和总线驱动
1) 8086的输入输出特性
表 2-7 推荐的 8086引脚扇出
系列 IL(吸收电流) IH(驱动电流) 8086引脚扇出
TTL( 74) - 1.6 mA 40 uA 1
TTL( 74S) - 2.0 mA 50 uA 1
TTL( 74LS) - 0.4 mA 20 uA 5
TTL( 74ALS) - 0.1 mA 20 uA 10
TTL( 74AS) - 0.5 mA 25 uA 10
TTL( 74F) - 0.5 mA 25 uA 10
CMOS( 74HC) - 10 uA 10 uA 10
CMOS( CD4) - 10 uA 10 uA 10
NMOS - 10 uA 10 uA 10
注意! 设计连接时要考虑信号的负载能力
3,地址信号锁存和总线驱动
2) 最小模式的系统组成
最小模式的典型配置
3,地址信号锁存和总线驱动
2)最小模式的系统组成
3,地址信号锁存和总线驱动
2) 最小模式的系统组成
最小模式的典型配置
3、地址信号锁存和总线驱动
2)最小模式的系统组成
注意!
在给微处理器添加锁存和驱动器时,
那些具有三态功能的信号经过锁存和缓
冲以后必须仍然保持三态功能。
前页图中 8282的 OE#端接地,则表示
这种配置的最小系统将不会连接 DMA控
制器。
4、最大模式与 最小模式 的引脚差异
l QS1,QS0(Instruction Queue Status,最小模式为
ALE,INTA#):指令队列状态信号, 输出 。 QS1,QS0
组合起来表示前一个时钟周期中指令队列的状态, 以
便从外部对芯片的测试 。
l S2#,S1#,S0#( Bus Cycle Status,最小模式为
M/IO#,D/TR#,DEN#),总线周期状态信号, 输出 。
这三个信号的组合表示当前总线周期的类型 。 在最大
模式下, 由这三个信号输入给总线控制器 8288,用来
产生存储器, I/O的读写等相关控制信号 。
4、最大模式与 最小模式 的引脚差异
4、最大模式与 最小模式 的引脚差异
4、最大模式与 最小模式 的引脚差异
l LOCK#( Lock,最小模式为 WR#):总线封锁信号,
输出 。 当 LOCK#为低电平时, 系统中其他总线主就不
能占用总线 。 LOCK#信号是由指令前缀 LOCK产生的 。
在 LOCK前缀后的指令执行完之后, 硬件上便撤销了
LOCK#信号 。
l RQ#/GT1#,RQ#/GT0#( Request/Grant,最小模式为
HOLD,HLDA ),总线请求信号, 输入 / 总线请求允
许信号, 输出, 此信号为双向信号 。 CPU以外的处理
器可以用其中之一来请求总线并接受 CPU对总线请求
的回答 。 RQ#/GT0#优先级高于 RQ#/GT1#。
5,最大模式的系统配置
最大模式的典型配置
5,最大模式的系统配置
8288总线控制器结构框图
2.1.3 8086的总线操作
1,系统的复位和启动操作
RESET,4个时钟周期的高电平, 初次加电复位, 不小
于 50μ s的高电平 。
? 标志寄存器 清零
? CS寄存器 FFFFH
? DS寄存器 0000H
? SS寄存器 0000H
? ES寄存器 0000H
? 指令指针( IP) 0000H
? 指令队列 空
? 其他 0000H
2,总线操作的概念
1) 总线操作与总线周期
2) 典型的总线周期
3) 空闲周期与等待周期
3,总线操作时序
1) 典型的总线操作时序分析
3,总线操作时序
1) 典型的总线
操作时序分析
P37
表 2-8 P37
表 2-8
3,总线操作时序
2) 存储器访问时间的计算
l 从地址出现在存储器地址总线到存储器数据在数据
线上稳定的这段时间叫做 存储器的访问时间
存储器访问时间 CPU = TTCLCL * 3-( TCLAV+TDVCL),
TTCLCL是 T状态的周期,
TCLAV为地址从 T1前沿到在地址线上有效时间的延时
TDVCL是向存储器读数据, 数据在总线上建立的时间
设 CPU的主频为 5MHz,
TTCLCL * 3=600ns,TCLAV=110ns,TDVCL=30ns,
则 CPU的理想存储器访问时间为 460ns。 若译码器等电路的
延时为 40ns
CPU的存储器访问时间约为 420ns。 存储器的访问时
间参数, 必须小于 420ns。
2)
3,总线操作时序
3) 最大模式 总线读操作与最小模式的差异
3,总线操作时序
3) 最大模式下的总线写操作
4,等待周期 的产生
1) 产生一个等待周期的 READY信号
插入一个 TW时的 READY#信号
2) 等待周期 ---8284的 RDY in
3) 等待周期 ---Wait产生电路
4) 等待周期 ---Wait产生电路时序
2.1.4 8086的存储器和 I/O组织
1,8086的存储器组织
1)寻址空间
? 220= 1M bytes的存储器寻址空间
? 分段的概念
2)分段组织
? 段寄存器的 16位值左移 4位,得到的 20位值加上
16位的偏移量。
3)字与字节访问
? AD0 信号和 BHE#信号组合,选择奇偶字节或字。
图 - 8086 存储器组织
图 - 奇偶寻址
字节访问
图 - 偶地址字传送
图 - 奇地址
字传送
表,AD0,BHE#的代码组合和对应的操作
B
H
E#
A
D0
对应的操作
所用的管脚
0
0
从偶地址开始读 /写一个字
AD15~ AD0
0
1
从奇地址单元读 /写一个字节
AD15~ AD8
1
0
从偶地址单元读 /写一个字节
AD7~ AD0
0
1
1
0
从奇地址开始读 /写一个字 ( 在第
一个总线周期, 传送低 8位数据到
AD15~ AD8;第二个总线周期传送
高 8位数据到 AD7~ AD0)
AD15~ AD8
AD7~ AD0
2,8086的 I/O组织
1) 单独编址
微型机系统要为 I/O芯片的每个端口分配一个地址, 各
个端口号不能重复, 是单独编址的 。
2) 寻址范围
65535个 8位的 I/O端口, 即寻址范围是 0~ 64K。 两个编
号相邻的 8位端口可以组合成一个 16位端口 。
3) 访问指令
执行 IN,OUT指令, RD#信号或 WR#信号与 M/IO#信号同
时为低电平 。
2.1.5 8086 的中断系统
1、中断的类型
1) INT( n)
256个中断向量和 INT n ( n = 0~255)指令相对应
2)内部中断
CPU执行 INT n指令或 CPU执行指令出现错误而产生的
中断 。 INT n指令中断也称作软件中断 。
? 除法错中断 ( 类型 0)
? 单步中断 ( 类型 1)
? 断点中断 ( 类型 3)
? 溢出中断 ( 类型 4)
? 其它 INT指令中断
1、中断的类型
3)外部中断
外部中断的中断源来自 CPU外部, 是外设产生的,
通常外设需要实时和 CPU进行数据交互, 申请 CPU中
断当前的程序, 也把外部中断称为硬件中断 。
? 非屏蔽中断 MNI( 类型 2)
? 可屏蔽中断 INTR
2、内部中断
1)除法错中断(类型 0)
除数为 0或者运算所得到的商超出规定的范围时 由
CPU自身产生的中断 。
2)单步中断(类型 1)
当 CPU测试到标志寄存器 TF=1时, CPU每执行一条指
令, 响应一次中断, 进入一次单步处理中断服务程序 。
3)断点中断(类型 3)
用于程序的调试。断点中断允许指定断点,当程序
执行到断点时转入断点中断处理程序。
4)溢出中断(类型 4)
当运算结果超出数据规定的范围就会产生溢出中断 。
5)其它 INT指令中断
3、外部中断
1)非屏蔽中断 MNI( 类型 2)
上升沿有效,并要求信号边沿正跳变后保持 2个 CLK
的高电平,NMI不受中断允许标志 IF的影响。非屏蔽
中断一般用来处理系统的重大故障,例如系统掉电等。
2)可屏蔽中断 INTR
高电平有效 ( 需要保持到响应 ), 受标志寄存器的
中断标志位 IF 的控制, 当 IF为 1时, 表示中断允许 。
CPU响应中断后, 由外设提供中断向量 。
4、中断操作
2)中断向量和中断向量表
中断向量, 就是中断处理程序的入口地址, 每个中断
类型对应一个中断向量 。 内存 0段的 0~ 3FFH区域来存
放中断向量, 该段区域为中断向量表 。
4、中断操作
1)中断的请求与响应
? 中断的过程,即中断请求与响应的过程。
? 中断源发出中断请求以后,如果中断请求信号符合要
求,即 INTR为高电平且保持足够长时间,同时 CPU的
中断允许标志 IF=1,则 CPU执行完当前指令,便进入
中断响应周期。 CPU是在每条指令的最后一拍,检测
INTR信号的。
? CPU响应中断以后,通过 INTA管脚连续发出两个负脉
冲信号,表示进入中断响应周期。第一个负脉冲用来
通知外设,CPU响应了中断请求。第二个负脉冲则用
来读取中断向量,在此即中断类型。再通过中断类型
查找中断向量表,得到中断入口地址,转入相应的中
断服务程序 。
。
4、中断操作
2)中断向量和中断向量表
4、中断操作
3)中断响应流程
? CPU通过 INTA#管脚发出两个负脉冲,第一个负脉冲
确认中断,第二个负脉冲读取中断类型码;
? 将标志寄存器的值压入堆栈,在返回主程序时恢复;
? 标志寄存器的单步标志 TF和中断允许标志 IF清零 ;
? 将当前指令地址推入堆栈,保护断点 ;
? 根据中断类型码,查找向量表,找到中断程序入口;
? 执行中断处理程序 ;
? 中断处理程序结束后,由中断返回指令从堆栈弹出
主程序的 IP和 CS,弹出标志寄存器的内容,返回
原程序的断点处继续执行原程序。
4,中断操作
4)中断响应的总线周期
4、中断操作
中断响应
流程图
注意! TEMP保存
TF的状态以便实现单
步中断嵌套
6、中断优先级
高
低
除法错中断、断点中断、溢出中断,INT n指令中断
NMI
INTR
单步
注意!
中断优先级指的是当几个中断同时发生时 CPU响应中断
的次序。
是否能发生中断嵌套与中断优先级无关
例
2.0 学习目标
? 微处理器是微型计算机的核心部件,它的有关概念是微型计算机系统的基础。
? 以 8086 解剖麻雀,学习微处理器的基本知识。
熟悉基本结构,各部件的功能和之间的关系。
在了解引脚信号定义的基础上深入理解系统的
配置方法和微处理器的总线操作。通过典型总
线操作的时序分析,体会处理器操作过程中各信号的作用,为学习微型计算机系统打下基础。
? 通过 IA处理器的进化过程,尤其是 Pentium微
处理器结构、超标量流水线和指令分支预测技
术以及 Pentium工作方式的分析,体会微处理器
技术的进步和关键技术的作用。