当前课程知识点:微机原理与接口技术 >  第11周 输入输出与中断技术 >  第45讲 基本输入输出方法 >  基本I/O方法

返回《微机原理与接口技术》慕课在线视频课程列表

基本I/O方法在线视频

基本I/O方法

下一节:简单I/O控制系统设计1

返回《微机原理与接口技术》慕课在线视频列表

基本I/O方法课程教案、知识点、字幕

大家好 这一讲我们来给大家介绍我们基本的输入输出方法

基本输入输出方法在微机系统里可以这样细分为4种

一种我们称为无条件传送 一种是查询方式 中断控制

还有直接存储器存取 我们简称DMA方式

有的教材上或者是有的课程里头

也把前面两种方式我们统一的称为程序控制方式

在大型机里边还有一种叫做通道技术

当然DMA我们实际上也可以认为
它是通道技术的雏形阶段

那么现在我们学习微机控制系统

所以微机系统里头我们的基本I/O方式

就只有这四种

我们在这门课里头我们把前面的两种

我们还是细分为无条件传送和查询方式这样两种

我们首先来说一下无条件 所谓无条件就是

我们想输出就输出 想输入就输入
也就是想读就读 想写就写

所以这个要求外部设备随时处于准备好状态

也就是说它随时可以接收数据 随时可以被读取

这种方式的优点就是很简单 这个没有问题

但是它的缺点就是它的适用范围太窄了

什么样的设备才能随时准备好了

实际上我们想想开关

它就是一个随时准备好的设备

我们任意时刻去读取它 它不是闭合就是断开

没有任何的二义性

我们的发光管我们让它亮就亮让它灭就灭
他也没有二义性

所以无条件传输方式
它的适用范围是极简单极低速的外部设备

所以它的适用是非常小的

比如现在这个图

它的适用范围是非常小的

比如这个图我们可以看出来就说

当我们读取开关的状态

比如开关闭合我们就让这个发光管亮

这就是一个无条件传输的例子

这个例子我们在这一讲里我们不再去解释了

我把这个例子留给大家作为课后的练习

就说大家用它来做例子

练习一下有关I/O接口的译码电路的设计

以及这个程序的编写

这个程序简单得很 就是一个要求

读取开关的状态 如果开关闭合就让发光管亮

如果开关断开 就再去读开关

一直这样重复下去

大家从这个图里也能看出来

开关闭合我们读进来的就是0

开关断开读进来的就是1

那么我们要让这个发光管亮
我们就要输出一个什么呢

大家可以看这个图

是不是就输出一个高电平这个发光管才亮对吧

OK 这个就是无条件传送

所以无条件传送总体来讲它的适用范围太小了

所以我们不再去详细的讲它了

我们下边来说一下

查询工作方式

查询工作方式就是

外部设备要能够提供或者它能够具备

一个状态提供一个状态信息这样的能力

就只有当外部设备这个状态反馈给我们

我们知道它是满足这样一个状态

就是它空闲的时候

才能够进行信息交换

这就是查询

这种工作方式实际上
我们在前面的练习里已经看到过若干了

我们讲AND指令讲TEST指令的时候
我们用的都是这样一种工作方式

请大家一定要注意的是

所谓查询就是

当满足条件的时候每满足一次条件

只能进行一次信息交换

在我们现在虽然说的是16位体系结构

但是我们不论选的接口芯片
存储器芯片 还是我们的8088

对外的数据总线都是8位宽

所以呢在这种语境下

进行一次信息交换

实际上就是一字节的信息交换

所以这种工作方式它适用的一种场合

同样是一些简单的外部设备 低速的外部设备

对传输效率要求不高的一种场合

它的工作要有一个条件

就是外部设备必须要具备提供状态信息的能力

而且接口一定要有相应的状态端口

我们来看一下这种方式的工作流程

虽然这种流程我们前面用程序已经实现过了

我们这里还是总体给大家看一下

对于这样的查询工作方式
如果用流程来描述的话

它的工作过程是这样

首先

他要读入这个外部设备的状态信息

看看它是不是满足当前的要求

如果它是准备好

如果它没有准备好我们就要再去读取

直到它准备好就完成一次信息交换

完成一次信息交换
就是读一个数据或者写一个数据

刚才说了在我们现有的8位接口的语境下

就完成了一字节数据的输入或者输出

如果你只进行一字节数据那么这就结束了

如果没有我们现在要看一下

如果你的信息交换或者传输已经结束了
那么这就结束了

如果没有结束会怎么办了

请大家一定要注意

没有结束一定要回到上面这个地方

重新去查询当前的状态是不是满足要求

如果不满足

那么又继续去读取外部的状态

所以这里就说用这个图给大家强调

每满足一次状态才能进行一次信息交换

这才是查询工作方式它的特点

所以查询工作方式的优点是比较简单

无论软件和硬件我们后面用示例来给大家解释

它都是比较简单的

但是它有一个很大的缺点

我们也用这样一个图来描述

因为我们在整个系统中

刚才我们看到的流程是

作为单一外部设备控制的流程

但是实际上我们知道输入输出系统
不可能只控制一个外部设备会控制多个

那么如果大家都用查询工作方式的话

它的控制流程就是这样的一个流程

就是首先我们去问
比如一号设备有没有准备好

如果准备好了对1号设备进行处理

如果没有准备好我们就去问2号设备

然后3号设备 4号设备 依次到N号设备这样的来

那么假设我们这样一个情况

我们问1号设备有没有准备好 没有

好 我们就去问2号设备

我们刚问2号设备1号设备已经准备好了

但是CPU感知不到了

它会问2号设备 如果2号设备准备好
它会对2号设备进行处理

然后接着3号4号一直到N号

直到N号设备处理完再回来

它才会发现1号设备早都准备好了

所以如果1号设备的工作速度

相对其他设备都要快得多的话

那么刚才的那一次请求就

CPU就过去了CPU感觉不到了它已经失效了

所以查询工作方式对于

外部设备来讲

它的效率它的实时性是非常低的

就是从这个图里大家就已经能够感觉的出来

对于CPU来讲

它实际上要一个一个去问你有没有准备好

所以对CPU来讲它的效率也是非常低的

也就是说它整个都是是以CPU为核心由它来问

这就相当于

我上课一个一个人问

你懂了没有 你懂了没有 懂了没有

谁没懂我临时要对他答疑

这样子的工作方式显然是

不可能去完成这样一个大班的教学的

所以这样子也是不现实的

因此这种查询工作方式

它有优点 它的巨大的两大缺点就是

CPU的效率低 外部设备的实时性差

因为这样的情况

所以我们就有了第三种的工作方式

就是所谓的中断

中断这个经我们从很早前开始念到现在

中断因为它今天是计算机里非常重要的一项技术

所以我们会有专门的一讲来解释它

今天我们先来说一下 就是这一讲里我们先来说

中断实际上它和查询工作方式比起来

它的最主要的特点就是外部设备的实时性好

这就相当于我们的一种答疑

就说你如果有问题来问我

我就一一对应直接告诉你

对于你来讲 你的时效性非常好

对于我来讲没有人来找我问
我就干我自己的事情

对于这个系统也一样

外部设备有问题了 有需要

它跟CPU发出请求 CPU对它服务

它没有要求了 大家都没有要求了
CPU自己做它的加减乘除

这也就没有问题

所以对于中断方式来讲

外部设备的实时性相当好

CPU的效率也比较高

但是不管怎么样

它还是有不足 不足在哪里

就是它的这种中断控制方式下对数据的传输

毕竟还是通过软件来实现

只要通过程序编写来实现

这个速度高不起来

所以呢 它也只适合一些中速的外部设备

当然相对于查询来讲呢

它就比较复杂一些 这就是它的不足

这样三种工作方式总体来讲

都是通过程序的方式来完成的

都是以CPU为核心的

通过软件的方式来实现我们说它的效率

就是速度都不会太高

那么通过CPU来实现就会有一些问题

就说它的整个的总线就是要由CPU去统一控制的

我们用这个图来描述一下

比如现在我们有数据要输出出去

这个数据肯定来自于存储器

所以它首先要从存储器

通过move指令读入到CPU里

然后再通过out指令输出到接口中

如果说我们现在要输入的话也是一样

通过in指令

把数据从接口输入到CPU

然后再用move指令写入到内存

整个这样一个过程都是以CPU为核心来进行的

那么这些输入也好输出也好
都是要通过总线来进行的

因此CPU要产生相应的各种总线控制信号

就像我们已经非常熟悉的

读信号 写允许信号

以及地址信号 锁存信号等等各种信号

所以也就是说总而言之整个总线的控制权

都是在CPU手里攥着的

这种对于一些高速的外部设备

这种方式我们是不能忍受的

我们希望能够由接口

直接到内存进行信息交换

比如我们的硬盘就是这样

那么这个时候我们就需要有这样一个通路

这个通路就是绕开了CPU 我们直接进行

那么既然绕开了CPU
那么总线的各种控制信号还需不需要呢

同样需要

这个同样需要你又想绕开它
我们就必须要有一个人来替代

这种替代的方式我们就直接进行的方式

我们就是

这种直接替代的方式
我们就称为直接存储器存取

这种时候我们整个总线的控制

不再由CPU来完成

而是用另外一个部件

这种部件我们叫做总线控制器

所以DMA方式的特点就是由外部设备直接

当然通过接口直接跟内存进行信息交换的过程

这个时候总线控制器

临时担当了CPU的角色
也就是临时完成了对总线的控制权

DMA方式我们用这个图
来给大家简单的描述一下

比如现在这样一个外部设备

要实现对内存之间直接进行信息交互

它首先要发出一个请求信号

这个请求信号发给这个叫DMAC的的控件

这个就是总线控制器

这个总线控制器收到这个请求信号以后

它把这个请求信号转送给CPU

这个转送给CPU的信号叫HOLD

这就是我们前面

讲8088主要引脚的时候讲过

它是总线请求输入端

这个信号呢

CPU收到以后CPU会发出一个应答信号

表示它可以允许由

DMAC这个总线控制器来暂时控制总线

它放弃对总线的控制权

DMAC收到这样一个响应信号以后

它要告诉外设它已经拿到总线控制权

然后它就会发出相应的地址信号

读写控制信号

甚至地址指针的修改信号等等

在它的所有的控制下

数据就直接进行信息交互了

这个就是DMA方式的一个简单的描述

用文字来描述的话

这是第一步第二步第三步 我就不在这里念经了

大家可以自己看一下

这就是刚才用那个图来描述的
DMA整个的工作过程

DMA的方式又可以细分为三种

一种我们叫做周期窃取

一种是数据块传送

还有一种真正地叫直接存储器存取

下面两种

对于硬件的要求都相对比较高

所以它的成本会比较高 也就说它会比较贵

今天微机系统里更多采用的是周期窃取

所以下边我们用一个流程图
来描述一下什么叫周期窃取

周期窃取它的前边的几个步骤

跟我们刚才描述的过程没有任何的不同

所谓周期窃取

也就是说它每申请到一次总线的控制权

它只占用一个周期 完成一次转送

然后它就把总线还给CPU一个周期

然后这个周期里
CPU可能会去做一些其他的事情

在这个周期完了以后它再重新去请求总线控制权

这就是所谓周期窃取的模式

好了这就是我们四种基本的输入输出方法

我们现在做一个简单的总结

这四种基本输入输出方法里头

无条件传输方式它的适用范围非常窄

它要求外部设备随时处于准备好状态

我们说来说去

大家说到的无非是开关 发光管等等

或者是各种电子开关

所以这种范围就是一个小范围的应用

我们只是一个很小的例子

大家了解一下就可以了

我们更多的需要大家
一定要知道的是查询工作方式

这个是我们在整个工控系统中
用的比较多的一种方式

也就是它是要外部设备能够提供状态信息

当它满足这个状态时我们才能够

进行信息的交互

它适合于一些低速

而且是多个外部设备
大家速度同样比较低的情况下

我们才适用于这种方式

第三种方式就是中断控制方式

这种方式它就是实现

可以解决外部设备实时性比较差

CPU效率比较低的问题

它适合于一些中速的外设

当然效率最高的是DMA方式

当然它的成本也相对比较高

它是用纯硬件来做的

所以它的效率是很高的

好 有关我们基本I/O方式我们就介绍到这里

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

基本I/O方法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。