微机复习笔记(III):微机总线
总线技术概述
- 微机系统的两种工作方式
- 最小工作方式:本书重点介绍
- 最大工作方式:加上总线控制器8288共同形成系统总线信号。
- 三总线的构成:最大组态比最小组态多了一个总线控制器。
- 三总线:
- 地址总线:CPU的地址总线都是输出的,输出给要寻址的从模块比如IO模块。
- 受控模块都是输入。
- 控制总线:有输入也有输出。
- 数据总线:双向传输。在主从模块之间传送。
- 地址总线:CPU的地址总线都是输出的,输出给要寻址的从模块比如IO模块。
- 总线分类:
- 信息传输方向分类:单向总线和双向总线。
- 数据传输方式是分类:并行总线和串行总线。
- 内总线和外总线:
- 芯片总线,也叫做局部总线,也叫做处理器总线,是引脚信号。
- 内总线,也叫全局总线,母总线,是微机中各个模块之间的连线。
- 外总线,微机系统和其他外设的连线。
- 总线的功能:实现数据传输。
- 总线操作的四个阶段:
- 总线请求和仲裁(集中仲裁、分布仲裁)
- 寻址
- 数据传送
- 结束
- 两种同步方式:
- 同步时序:总线操作的各个过程中有公用的总线时钟信号控制。具有固定的时序,主从模块之间没有应答。
- 异步时序:应答方式。
- 三个周期:
- 时钟周期:一个T状态。
- 总线周期:==CPU和IO或存储进行数据交换的过程。
- 指令周期:一条指令经过取指、译码、读写操作到执行完成的过程。
例题
- Q:
push ax
需不需要总线周期?- A:需要。因为堆栈在存储中。
- Q:任何指令的取指阶段都需要存储器读总线周期,对吗?
- A:正确。
- Q:IBM PC中
IOCHRDY
的含义- A:表示IO通道准备好了。
- Q:执行
add [2000H],AX
需要多少个总线周期?- A:3+2+2=7个。
- 解释1:
- 读取指令阶段:8088数据总线为8位,每次总线周期只能进行8位数据(即一个字节)读写。
mov [2000h],ax
的指令的代码是3个字节,所以进行指令读取(即取指)需要3个读取存储器的总线周期。执行该指令,首先从主存[2000h]
单元读取一个16位字,故需要2个存储器读总线周期;然后读取的数据与AX内容相加,结果还要写回这个位置,这又需要2个存储器写总线周期。
- 读取指令阶段:8088数据总线为8位,每次总线周期只能进行8位数据(即一个字节)读写。
- 解释1:
- A:3+2+2=7个。
8088最小组态的40个引脚信号
引脚是输入还是输出的小总结:
- 地址线:输出。
- 数据线:双向。
- 状态:输出。
- 地址使能ALE:输出。
- IO/M、WR、RD:输出。
- READY:输入。
地址信号20个
8086和8088的最大区别:
8088外部只有8根数据总线。
8086外部有16根地址总线。
- AD0-AD7:地址/数据分时复用引脚(8086是AD0~AD15)
- 功能:传输地址或者数据,具有三态能力。
- 数据流向:
- 地址:单向输出。
- 数据:双向传送数据。
- A8-A15:8位地址引脚,具有三态能力,只能单向输出。
- A16/S3 - A19/S6:地址/状态分时复用引脚
- 功能:
- 访问存储器:T1输出高四位地址。
- 访问外设:T1输出低电平,无效。
- 其他时间:输出状态信号S6~S3,反映CPU的一些基本状态。
- 数据流向:
- 状态:单向输出。
- 功能:
重点:T1时刻输出A19~A16地址!
注意:软件编程时,使用逻辑地址(两个16位数)来表达存储单元;硬件编程时,使用 20 位物理地址;8088 内部有加法器可以完成逻辑地址向物理地址的转换;访问外设是,只会用到低 16 位访问 64KB 的空间
读写信号8个:没写输入就是输出
ALE
:地址锁存允许引脚。三态。输出。高电平有效。- 有效表示:分时复用引脚上正在输出地址信号。
- T1有效:数据传送的开始。
IO/M*
:CPU即将访问I/O或者存储器。三态。输出。- 高电平:访问IO。此时低16位地址总线提供IO地址。
- 低电平:访问存储。20位地址线均输出物理地址。
WR*
:写控制引脚。(CPU正在写)三态。输出。RD*
:读控制引脚。(CPU正在读)三态。输出。Ready
:就绪引脚。输入。存储器或I/O就绪信号。- 有效表示:I/O外设或者存储器准备好了,可以进行数据读写。
- T3时候会测试这个引脚,如果高有效,CPU可以进行数据传送。否则会插入Tw等待周期。
DEN*
:数据使能线。有效的时候表示数据总线上正在传送数据。DT/R*
:数据传送还是接收。用来是说明数据的流向,即输入还是输出。SS0
:表示是系统级还是指令级调用。- 状态输出信号。
- 与
IO/M*
、DT/R*
一起指示CPU在最小组态的工作状态。
中断请求和响应引脚3个
INTR
:可屏蔽中断请求引脚。输入信号。- CPU在指令周期的最后一个T状态采样这个引脚。
- 中断设备向处理器申请可屏蔽中断。
INTA*
:可屏蔽中断响应信号。输出信号。- 中断响应周期是连续的两个总线周期。
- 来自
INTR
的中断请求得到CPU的响应。
NMI
:不可屏蔽中断请求引脚,输入,上升沿有效。- 外设向CPU发送不可屏蔽中断。
- 优先权高于可屏蔽中断请求,只能响应无法屏蔽。
总线请求和保持引脚2个
HOLD
:总线请求引脚。输入信号。其他总线主控设备向处理器申请总线控制权。HLDA
:总线响应引脚。输出信号。表示CPU已释放总线。- 所有的总线都呈现高阻态,总线请求设备可以掌握总线。
其他7个
RESET
:复位引脚。输入。迫使CPU回到初始状态,即CS=FFFFH,IP=0000H
CLK
:时钟输入。MN/MX*
:输入引脚,组态选择。- 高电平:最小组态。反之最大组态。
- 最小态:只带本身,没有外设。
- 最大态:外接设备。
TEST*
:是否为浮点数。输入。配置WAIT。VCC
:电源5VGND
:地线BHE*/S7
:BHE*
:高8位总线允许,允许D15~D8上的数据有效。S7
:始终为逻辑1
最小组态的总线时序(重点背诵)
指令周期 > 总线周期 > 时钟周期
- 指令周期:取指、译码、读写操作、执行的整个过程。
- 总线周期:CPU通过总线与外部进行一次数据交换的过程。
存储器读周期
- T1:
ALE
输出正脉冲,表示复用地址引脚输出地址。IO/M*
低电平有效,表示对存储器进行操作。
- T2:
RD*
有效,开始通过D0-D7
传递输入数据。
- T3和Tw:
- 下降沿检查数据是否传送完毕。
- 如果
READY
是高电平就进入T4,否则插入N个Tw状态进行等待。
- T4:
- 完成数据传送。
RD
变成无效。数据在下一个总线开始前从数据总线上消失。
- 完成数据传送。
存储器写周期
- T1:
ALE
输出正脉冲,表示复用地址引脚输出地址。IO/M*
低电平有效,表示对存储器进行操作。
- T2:
WR*
有效,输出数据到D0-D7
- T3和Tw:
- 下降沿检测数据是否完成。
- 如果是
READY
高电平就进入T4,否则插入N个Tw状态进行等待。
- T4:
- 完成数据传送。
WR*
无效,数据在下一个总线开始前从数据总线上消失。
- 完成数据传送。
I/O读
与存储器读相比,只是将IO/M*
改成高电平。
I/O写
与存储器写相比,只是将IO/M*
改成高电平。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 AjaxZhan
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果