第5章 微型计算机和外设的数据传输
教学重点:
- I/O接口电路的典型结构
- 无条件传送方式
- 查询传送方式
- 中断工作过程
5.1 为什么要用接口电路
- 存储器都是用来保存信息的,功能单一,传送方式单一(一次必定是传送1个字节或者1个字),品种很有限(只有只读类型和可读/可写类型),存取速度基本上和CPU的工作速度匹配。
- 微机的外部设备多种多样
- 工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大
- 它们不能与CPU直接相连
- 必须经过中间电路再与系统相连
- 这部分电路被称为I/O接口电路,通过接口电路对输入/输出过程起一个缓冲和联络的作用。
- 注:接口电路完成相应的信号转换、速度匹配、数据缓冲等功能
5.2 接口电路的概述
什么是接口技术?
连接计算机系统中的各种功能部件,构成一个完整的、实用的计算机系统,这是接口技术的广义定义。依次定义,实现处理器到系统总线连接的总线驱动器、数据收发器、时钟电路等称为处理器借口。此外,还有RAM接口、ROM接口、外部设备接口等等。更为流行的观点认为接口技术是把由处理器、RAM、ROM等组成的基本系统与外部设备连接起来,从而实现计算机与外部世界通讯的一门 技术,即仅指I/O设备接口技术。
什么是I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
什么是微机接口技术?
处理微机系统与外设间联系的技术
注意其软硬结合的特点
根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备
接口功能
- ⑴ 寻址能力:对送来的片选信号进行识别。
- ⑵ 输入/输出功能:根据读/写信号决定当前进行的是输入操作还是输出操作。
- ⑶ 数据转换功能:并行数据向串行数据的转换或串行数据向并行数据的转换。
- ⑷ 联络功能:就绪信号,忙信号等。
- ⑸ 中断管理:发出中斯请求信号、接收中断响应信号、发送中断类型码的功能。并具有优先级管理功能。
- ⑹ 复位:接收复位信号,从而使接口本身以及所连的外设进行重新启动。
- ⑺ 可编程:用软件来决定其工作方式,用软件来设置有关的控制信号。
- ⑻ 错误检测:一类是传输错误。另一类是覆盖错误。
注:一些接口还可根据具体情况设置其它的检测信息。
5.3 I/O接口与系统的连接
1.CPU与I/O设备之间的信号(三类)
- (1) ==数据信息 == CPU和外设交换的基本信息,包括三种形式:数字量、模拟量 、开关量。
- (2) == 状态信息 == 是外设通过接口往CPU传送的,反映了当前外设的工作状态。
如:“准备好”(READY)信号、“忙”(BUSY)信号 - (3) 控制信息 是CPU通过接口传送给外设的相关控制信息。
如:外设的启动信号、停止信号就是常见的控制信息。
2.接口部件的I/O端口
-
⑴数据端口:CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。用于对来自CPU和内存的数据或者送往CPU和内存的数据起缓冲作用的,这些端口叫数据端口。
-
⑵控制端口:用来存放CPU发出的命令,以便控制接口和设备的动作,这类端口叫控制端口。
-
⑶状态端口:用来存放外部设备或者接口部件本身的状态,称为状态端口。
如下图
注:
⑴输入还是输出,所用到的地址总是对端口而言的,不是对接口部件而言的。
⑵为了节省地址空间,将数据输入端口和数据输出端口对应同一个端口地址。同样,状态端口和控制端口也常用同一个端口地址。
⑶CPU对外设的输入/输出操作就归结为对接口芯片各端口的读/写操作。
I/O接口的典型结构:
CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:
- ⑴ 数据寄存器
输入数据寄存器:保存外设给CPU的数据
输出数据寄存器:保存CPU给外设的数据 - ⑵ 状态寄存器
保存外设或接口电路的状态 - ⑶ 控制寄存器
保存CPU给外设或接口电路的命令
3.接口与系统的连接
接口电路位于CPU与外设之间,从结构上看,可以把一个接口分为两个部分。
⑴用来和I/O设备相连;
⑵用来和系统总线相连,这部分接口电路结构类似,连在同一总线上。
下图是一个典型的I/O接口和外部电路的连接图:
联络信号:读/写信号,以便决定数据传输方向。
地址译码器,片选信号:地址译码器除了接收地址信号外,还用来区分I/0地址空间和内存地址空间的信号(M/ I0)用于译码过程。
注:
⑴一个接口通常有若干个寄存器可读/写,
⑵一般用1-2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。
4.输入输出的寻址方式
(1)接口电路占用的I/O端口有两类编排形式
-
I/O端口与存储器统一编址
它们共享一个地址空间,如M6800
优点:
不需要专门的I/O指令
I/O数据存取与存储器数据存取一样灵活
缺点:
I/O端口要占去部分存储器地址空间
程序不易阅读(不易分清访存和访问外设)
-
I/O端口单独编址
I/O地址空间独立于存储地址空间,如8086/8088
优点:
I/O端口的地址空间独立
控制和地址译码电路相对简单
专门的I/O指令使程序清晰易读
缺点:
I/O指令没有存储器指令丰富
(2)8088/8086的I/O端口
- 8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址
- 8086用于寻址外设端口的地址线为16条,端口最多为216(2的十六次幂)=65536(64K)个,端口号为0000H ~ FFFFH
- 每个端口用于传送一个字节的外设数据
(3)I/O寻址方式
8088/8086的端口有64K个,无需分段,设计有两种寻址方式
- 直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号
- 间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号
对大于FFH的端口只能采用间接寻址方式
(4)数据交换方式
- 如果输入输出一个字节,利用AL寄存器
- 如果输入输出一个字,利用AX寄存器
- 输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口)
- 输出一个字,实际上是将AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口
5.4 CPU和外设之间的数据传送方式
- 程序控制下的数据传送——通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送
- 直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送
- I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理
-
无条件传送方式及其接口
在CPU与慢速变化的设备交换数据时,可以认为它们总是处于==“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送==
适合于简单设备,如LED数码管、按键或按纽等
无条件传送的接口和操作均十分简单
这种传送有前提:外设必须随时就绪 -
条件传送方式
又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。
一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY” =1 表示输入数据已准备好。输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据。
CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出
对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换
查询传送的特点是:工作可靠,适用面宽,但传送效率低
- ⑴ 查询环节
寻址状态口
读取状态寄存器的标志位
若不就绪就继续查询,直至就绪 - ⑵ 传送环节
寻址数据口
是输入,通过输入指令从数据端口读入数据
是输出,通过输出指令向数据端口输出数据
- 中断传送方式
为什么要采用中断传送方式?
从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。
为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。
CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序
中断传送是一种效率更高的程序传送方式
进行传送的中断服务程序是预先设计好的
中断请求是外设随机向CPU提出的
CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
传送方式的比较:
- 无条件传送:慢速外设需与CPU保持同步
- 查询传送: 简单实用,效率较低
- 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销
- DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送