第五章——微型计算机与外设的数据传输

一、为什么要用接口

接口按功能分为两类:
1.使CPU正常工作所需要的辅助电路,通过这些辅助电路,使CPU得到时钟信号或接受外部的多个中断请求等。
2.输入/输出接口,利用这些接口,CPU可以接受外部设备送来的信息或将信息发送给外设。

外部设备一定要通过接口和主机总线相连的原因:
1.时序上的原因
2.外部设备的功能多种多样的原因
3.外部设备的信息既有数字式,又有模拟式的原因
4.多个外设共享总线的原因
5.速度的原因

二、CPU和输入/输出设备之间的信号

(1)数字信息:数字量、模拟量、开关量
(2)状态信息
(3)控制信息
三种信息都通过数据总线来传送,但在接口中,三种信息进入不同的寄存器。数据放在接口的数据缓冲器中,外设送往CPU的 状态信息放在接口的状态寄存器中,CPU送往外设的控制信息送到接口的控制寄存器中。

三、接口部件的I/O端口

在这里插入图片描述
CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。
数据端口:对来自CPU和内存的数据或送往CPU和内存的数据起缓冲作用。
状态端口:存放外部设备或接口部件本身的状态。
控制端口:存放CPU发出的命令,以便控制设备的动作。
计算机主机和外设之间都是通过接口部件的I/O端口来沟通的。

注:
对I/O端口有两种不同编址方式:与存储器统一编址方式;I/O端口独立编址方式
对内存和I/O端口统一编址时,系统中只有一个统一的地址空间,这样,所有访问内存的指令都能访问I/O端口。
在I/O端口独立编址的系统中,要建立两个地址空间,一个为内存地址空间,一个为I/O地址空间。通过控制总线来确定CPU到底要访问内存还是I/O端口。为确保控制总线发出正确的控制信号,系统提供了专用于和I/O端口通信的输入/输出指令。

不管是输入还是输出,所用到的地址总是对端口而言的,而不是对接口部件而言的。一个双向工作的接口芯片通常有4个端口,即数据输入端口、数据输出端口、状态端口和控制端口。因为数据输入端口和状态端口是“只读”的,数据输出端口和控制端口是“只写”的,所以,系统为了节省地址空间,往往将数据输入端口和数据输出端口对应一个端口地址,CPU用此地址进行读操作时,实际上是从数据输入端口读取数据,而当CPU用此地址进行写操作时,实际上是往数据输出端口写入数据。同样,状态端口和控制端口也用同一个端口地址。

四、接口的功能以及在系统中的连接

4.1 接口的功能
一个接口的基本功能是在系统总线和I/O设备之间传输信号,提供缓冲作用,以满足接口两边的时序要求。下面是从广义的角度概括出来的接口功能,对于一个具体的接口来说,未必全部具备,但必定具备其中的几个。
(1)寻址功能:接口要能够识别选择存储器和I/O端口的信号,还要能识别片选信号,以便判断当前本接口是否被访问,如果受到访问,还要决定是接口中哪个寄存器被访问。
(2)输入/输出功能
(3)数据转换功能
(4)联络功能:通知CPU数据传输已完成,可进行下一次传输
(5)中断管理功能:中断控制器的接口
(6)复位功能
(7)可编程功能:使一个接口可以工作于不同的方式,且可用软件决定工作于哪种方式。
(8)错误检测功能:传输错误和覆盖错误,可通过状态寄存器的标志位读出。

4.2 接口与系统的连接
在这里插入图片描述
可以将一个接口分为两个部分:
1.用来和I/O设备相连:结构与I/O设备的传输要求及数据格式有关,所以各接口之间互不相同。
2.用来和系统总线相连:各接口结构类似
地址译码器可以将总线提供的地址翻译成对接口的片选信号。
实际使用时,一般用1~2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。
在这里插入图片描述

五、CPU和外设之间的数据传送方式

程序方式

1.无条件传送方式
在这里插入图片描述
不必查询外设的状态而可直接进行信息传输。

2.条件传送方式
也称查询方式传送。CPU通过执行程序不断读取并测试外设的状态,如外设处于准备好状态(输入设备)或空闲状态(输出设备),则CPU执行输入指令或输出指令与外设交换数据。
对于输入过程来说,当外设将数据准备好时,则使接口的状态端口中的“准备好”标志位置1,表示CPU可以读数据;对于输出过程来说,外设取走一个数据后,接口便将状态端口中对应标志位置1,表示CPU可以送数据。
传送一个数据的三个环节:
(1)CPU从接口中读取状态字
(2)CPU检测状态字对应位是否满足“就绪”条件,如不满足,则回前一步读取状态字。
(3)如状态字表明外设已处于“就绪”状态,则传送数据。

查询方式进行输入的接口的工作原理:
在这里插入图片描述
输入设备在数据准备好后便往接口发一个选通信号。一方面将外设的数据送到接口的锁存器中,另一方面使接口中的READY位置1。数据信息和状态信息从不同的端口经过数据总线送到CPU。CPU从外设输入数据时先读取状态字,检查状态字看数据是否准备就绪,即数据是否已进入接口的锁存器中,如准备就绪,则执行输入指令读取数据,此时,状态位清0,这样,便开始了下一个数据传输过程。

查询方式进行输出的接口的工作原理:
在这里插入图片描述
CPU执行输出指令时,CPU产生选通信号将数据总线上的数据送到数据锁存器,同时使D触发器输出1。一方面为外设提供联络信号,告诉外设现在接口中已有数据可提取;另一方面使状态寄存器的对应标志位置1告诉CPU,当前外设处于“忙”状态,从而阻止CPU输出新的数据。
当输出设备从接口中取走数据后,通常会送一个应答信号,使接口中的D触发器置0,从而使状态寄存器中的对应标志位置0,即可开始下一个输出过程。

例程:
实现功能:从键盘往缓冲区输入1个字符行,当遇到回车符(0DH)或字符行超过80个字符时,输入便结束,并自动加上1个换行符(0AH)。如在输入的81个字符中未见到回车符,则再终端上输出信息“BUFFER OVERFLOW”。
注:
因为键盘往CPU输入的是ASCII码,而ASCII码采用7位二进制数据表示,所以,用第7位即最高位作为键盘往CPU传送时的校验位,这里假定用偶校验。如校验出错,则输出错误信息,如没有校验错误,则先清除校验位,再传送到缓冲区。
在这里插入图片描述
注释:
BUFFER 接收缓冲区
COUNT 计数器
START:
1.计数器指向缓冲区首址
2.字符串长度给CX
3.清方向标志
NEXT_IN:
1.读入端口56H(接口的状态寄存器)
2.测状态寄存器的第1位
3.如果未准备好(为0),重新测量
4.读入端口52H(接口的数据输入寄存器)
5.校验,仅改变标志寄存器
6.如果校验正确(偶数个1)则跳转NO_ERROR
7.校验错误,跳转ERROR
NO_ERROR:
1.清除校验位
2.将字符送缓冲区(AL的数据送到ES段,指针自动加1)
3.是否为回车符
4.不是则继续输入,跳转NEXT_IN
5.不是回车且溢出,则转OVERF
6.加一个换行符
7.存入缓冲区
8.计算输入字符数
9.将字符数存入COUNT
OVERF:
1.SI中为字符串首址
2.将17移入CX中
NEXT_OUT:
1.读状态寄存器
2.测状态寄存器第0位
3.如没有就绪,则再测
4.将字符取到AL中(ES到AL,“BUFFER OVERFLOW”)。

中断方式

使用中断方式时,CPU就不必花费大量时间去查询外设的工作状态了,因为当外设就绪时,会主动向CPU发中断请求信号。

DMA方式

特点:
1.一方面是一个接口,有IO端口地址,CPU可以通过端口地址对DMA控制器进行读/写操作,以便对DMA控制器进行初始化或读取状态。
2.DMA控制器得到总线控制权后,能够控制系统总线,提供一系列控制信号,操纵外设和存储器之间的数据传输。

各自优缺点

查询式传送方式缺点是:花费CPU的时间作等待循环,大大降低了CPU的运行效率。
中断方式是在外设准备就绪时向CPU申请中断,再进行传送,因而CPU无需花费时间作等待循环,弥补了查询方式的缺点。
中断方式下,CPU执行一次传送要花费许多与传送操作无关的指令执行等时间,另外中断传送方式不能进行数据块传送,而是按字节或字传送。
DMA方式下,外设利用专用的接口直接和存储器进行高速数据传送。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值