微机笔记6——输入输出控制

微机接口技术

接口的功能

1)寻址功能(必需)
识别是否是I/O口的操作信号,识别是否为端口的片选信号,识别是芯片的哪个寄存器被访问。
2)输入/输出功能(必需)
根据CPU通过控制总线送来的读写信号决定是输入操作还是输出操作。
3) 可编程功能
有些接口具有可编程特性,可以通过指令设定接口的工作方式,工作参数,以满足不同外设的要求。
4) 数据转换功能
当外设提供的数据形式不是CPU能直接接受的形式时,则通过接口转换成CPU可接受的形式。如A/D,串/并转换等,反之也一样。
5) 联络功能
当CPU要访问外设时,首先要查询外设状态,能否接受访问,接口应将外设状态准备好,供CPU查询;或向CPU发特定的信号通知外设已准备好。
6) 数据缓冲功能
主机与外设速度相差很大,为了防止数据丢失,I/O接口均设有双向数据缓冲器。
7) 中断管理功能
有专门的中断管理接口,能完成中断判优、中断屏蔽,向CPU送入中断类型码等功能。
8) 错误检测功能

多数可编程芯片都能自动检测出传输过程中出现的错误。
传输错误:如串口中的奇偶校验,覆盖错误
9) 复位功能
能接受主机的复位信号,使系统重新启动。
10) 时序控制功能
接口电路具有自己的时钟,以满足外设在时序方面的要求

CPU与I/O设备之间的信息

数据信息
CPU和外部设备交换的基本信息就是数据,数据通常为8位或16位。
状态信息
状态信息反映了当前外设所处的工作状态,是由外设通过接口传往CPU供其查询。
控制信息
控制信息是由CPU通过接口传送给外设的,CPU通过发送控制信息控制外设的工作,如启动和停止等。

I/O接口的基本结构

1)端口
I/O接口电路内部通常有若干个寄存器,用来存放CPU和外部设备之间传输的数据信息、状态信息和控制信息。数据信息、状态信息和控制信息都是以数据的形式通过数据总线来传输的。但是在接口电路中,这三类信息分别存放在不同的寄存器中,有的接口电路也共用一些寄存器。在接口电路中,把分配了地址的寄存器或缓冲电路称为端口。
2)地址译码电路
CPU在执行输入/输出指令时,首先要向地址总线发送端口地址,这些地址信号分为两部分,高位地址经过译码电路,用来选择不同的接口电路(片选),而低位地址用来选择接口电路内部的不同端口。
3)数据缓冲器与锁存器
接口电路内部具有数据缓冲器和数据锁存器,一方面起到CPU和外部设备之间速度不匹配的协调作用;另一方面,使得数据传输端在不传输数据时呈高阻状态。

端口分类

CPU对I/O端口的访问是通过选通端口地址进行的
数据端口
数据端口分为数据输入端口和数据输出端口。在输入时,保存外设发往CPU或内存的数据;在输出时,保存CPU或内存发往外设的数据。可读可写
状态端口
状态端口用来保存外部设备和接口电路本身的工作状态。CPU通过读取状态端口,就可以了解当前外设和接口电路的状态。只读不写
控制端口
控制端口用来存放CPU发来的控制指令,初始化接口电路,确定接口电路的工作方式和功能。只写不读

在这里插入图片描述

I/O端口的编址方式

1)统一编址
I/O与存储器的地址不重复,读写指令一致,只是根据地址来区分操作对象是存储器还是I/O。
优点:无需专门的I/O指令,对I/O操作指令丰富,可进行算术和逻辑运算。
缺点:占用存储器地址,因外设功能各不相同,需要复杂的电路进行时序配合。
2)单独编址
I/O与存储器的地址重复,用不同的读写信号和指令区分。
优点:不占用存储器空间;I/O端口的地址空间独立;控制和地址译码电路相对简单;专门的I/O指令使程序清晰易读。
缺点:I/O指令单一。

程序方式

程序方式:指用程序来控制进行输入/输出数据传输的方式。

无条件传送方式

假设外设已经准备就绪,不查询外设状态,直接执行I/O指令进行数据传输。
当外设作输入设备,输入数据的保持时间相对于CPU的处理时间长,所以可以直接用缓冲器
当外设作输出设备,由于外设速度比较慢,CPU的数据必须在接口保持一段时间,因此必须采用锁存器
无条件传输时,输出时,必须确认输出锁存器的原数据无效,才能正确输出;输入时,必须认为输入缓冲器中的数据已准备好,否则读取错误。

条件传送方式(查询方式

一般查询传输时一个I/O设备有两个端口地址,一个为数据口地址,一个为状态口地址。CPU先读取状态口的数据,看看当前外设的状态准备好没有,若准备好则开始读写数据口,传输数据;若未准备好则循环读取状态口地址等待外设准备好。

1) 条件传送方式-输入

查询式输入如图,状态线占用一根数据线D0, S T B ‾ \overline{STB} STB是选通信号,在输入时随着数据一起从输入端口出现,是表示输入数据已就绪的状态信号
CPU先读状态口,若状态就绪,再读数据口。
在这里插入图片描述
a)外设未准备好, S T B ‾ \overline{STB} STB为高,D触发器无脉冲,CPU读状态口(40H), 打开缓冲器(1), 读出 D B 0 DB_0 DB0为0, 表示未准备好。
b)外设准备好, S T B ‾ \overline{STB} STB为低,1. 打开锁存器,将输入数据锁存起来; 2. S T B ‾ \overline{STB} STB有下降沿脉冲,使Q为高,CPU读状态口(40H)读入的 D B 0 DB_0 DB0为高,表示数据有效,程序转而读数据口42H。
c)读数据口42H,1. 打开缓冲器(2),读数据线,这时,缓冲器(1)高阻,所以数据线上是输入设备的数据;2. 同时,读数据口的控制线将D触发器清零。Q端输出0,下次再读状态口时读入的 D B 0 DB_0 DB0为0,表示数据未准备就绪。
d)重复a),b),c)步骤

2) 条件传送方式-输出

查询式输出如图,
OBF(Output Buffer Full):输入信号,为1表示输出缓冲器满,即数据已经到外设输入口;
ACK(Acknowledge): 输出信号,为0表示数据已被外设取走,可以发送下一个数据。
在这里插入图片描述
a) CPU输出数据,锁存器选通,将数据输入锁存器,同时,D触发器有脉冲,使OBF为1,通知外设取数据。
b) CPU读状态口,因为外设速度较慢,数据输出后有个读取的过程,所以外设未完全取走数据时,ACK信号为高,因此读取的DB0为1,表示外设还未将数据取走,CPU不能送入下一个数据。
c)外设取走数据,ACK信号为0,将D触发器清零,Q端输出为0,因此读取状态口的DB0为0,表示外设已将数据取走,CPU可以继续送入下一个数据。
d)重复a), b), c)步骤

中断方式

所谓中断,就是当CPU正常运行程序时,由于内部或外部的随机事件,引起CPU暂时中止正在运行的程序,转而去执行请求中断的外设(或内部事件)的中断服务程序,中断服务结束后再返回被中止的程序。这一过程称为中断。
在这里插入图片描述
中断源 : 能够引起程序中断的事件都称为中断源。
中断优先级 : 当系统中有多个中断源同时到来时,需将中断源排个队,优先级高的中断服务程序先执行。
中断嵌套 : 所谓中断嵌套是指高优先级别的中断打断当前低优先级的中断服务程序的执行。
中断类型码 : 中断类型码是指每个中断源的编号。

中断响应过程

中断请求
中断判优

  • 软件查询法
  • 简单硬件方式
  • 专用硬件方式

中断响应
在中断响应过程中应解决以下四个问题:保护断点, 保护现场;CPU关中断不允许此时被新的中断源所打断);转入中断请求所对应的处理程序
最后一个问题是实现CPU控制权的转移,它是中断响应过程的关键。其实质是**如何由中断源得到相应服务程序的入口地址的问题*。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值