当前课程知识点:计算机控制导论 >  第九章 硬件约束 >  9.3 选择I/O设备接口 >  9.3 选择I/O设备接口

返回《计算机控制导论》慕课在线视频课程列表

9.3 选择I/O设备接口在线视频

9.3 选择I/O设备接口

阅读材料:

    计算机控制系统——分析、设计与实现技术

    ISBN: 978 703 055 8091


相关阅读:

    教材8.3节

下一节:9.4.1 数字滤波

返回《计算机控制导论》慕课在线视频列表

9.3 选择I/O设备接口课程教案、知识点、字幕

在控制运算当中

控制器所操作的数据是通过I/O接口完成读写的

所以选择I/O接口是计算机控制器实例化另一个重要的内容

在选择I/O接口的时候

我们主要考虑的因素有两个

一个是接口的响应速度

另外是接口的数值精度

I/O接口的响应速度除了与接口自身的响应速度有关系之外

还与组件的响应速度有关

后一个因素是更主要的

它通常是由A/D或者D/A的转换速度和接口组件的惯性所决定的

I/O接口的数值精度取决于它所连接的组件设备的精度和分辨率

通常可以通过A/D或者是D/A的转换精度来实现

下面我们来看一下如何选择I/O接口

这个时候我们需要确定的内容主要有三个

一个是确定I/O接口在存储区当中的映射

另外一个是需要确定I/O接口的数据传输方式和读写策略

我们先看一下如何确定I/O接口在存储区的映射方式

比较简单的(方法)是采用一对一的映射

通常,一个组件设备在存储器当中可以映射为4个地址

分别对应命令寄存器、状态寄存器、输出数据和输入数据

其中命令寄存器保留计算机向外部组件发送的操作命令

状态寄存器保留外部组件向计算机返回的工作状态

输出数据寄存器和输入数据寄存器则保留计算机和外围组件之间进行通信的数据内容

我们假设这些数据都是单字节的数据

那么这四个寄存器就可以用四个连续的地址来表示

我们只要确定了这个存储区的首地址

那么,每一个寄存器的地址就可以确定了

通常情况下

我们会使用SET和GET函数来操作命令寄存器和状态寄存器

使用READ和WRITE函数来操作输入数据寄存器和输出数据寄存器

这种方法映射关系比较简单

编程比较容易

但是因为命令寄存器和状态寄存器不会同时有效

输出数据寄存器和输入数据寄存器也不可能同时有效

所以,这种映射方式的工作效率比较低

那么为了提高工作效率

我们可以把命令寄存器和状态寄存器放在同一个地址上

把输入数据寄存器和输出数据寄存器放在另外的一个相邻的地址上

因为计算机在操作外部设备的时候

如果计算机向外部设备发布命令

它就不会去读外部设备的工作状态

同样的,如果计算机读入外部组件的数据

它就不会向外部组件写出数据

所以命令寄存器和状态寄存器、输入数据寄存器和输出数据寄存器是不会同时有效的

采用一对多的方式之后

我们就可以用有限的地址操作更多的数据

这样就提高了计算机的工作效率

这个时候

我们在操作这些外部设备的时候

是用相应的命令函数与读写信号线组合来完成操作的

这种方法工作效率更高一些

在选定了映射方式之后

我们还要确定I/O接口的数据传输方式

比较简单的是采用同步数据传输

这个时候

外部组件始终是工作在一个有效的状态

可以随时接收CPU的命令

或者是向CPU发送数据

进行写操作的时候

CPU不用考虑外部设备具体的工作状态

而是直接把需要写入的数据,或者是向外部组件发送的命令,直接放在数据总线上

然后使地址线和写信号线同时有效

把数据总线上的通信内容发送到外部组件当中

进行读操作的时候与之类似

CPU默认外部组件已经把数据内容准备到了数据总线上

这个时候

CPU只是让I/O地址线和读信号线有效

就把数据总线上的内容读进来了

这种数据传输方式当中

外部设备的工作效率是比较低的

因为它随时处在一个待命状态

除了等待CPU发布的命令

它不会去执行其他的工作

为了提高工作效率,更多的时候是采用异步数据传输的方法

它是在同步数据传输的基础之上

增加了一个握手的过程

执行写操作的时候

CPU要先向外部组件发出一个读指令

外部组件接收到这个读命令之后

会把自身的工作状态放在数据总线上

反馈给CPU

CPU读入外部组件的状态

如果判定组件处在一个空闲状态

那么这个时候,它会执行写操作

把需要向外部组件发布的命令,或者是写入的数据,放在数据总线上

然后使写信号线有效

把这个写操作完成

进行读操作的时候与之类似

先读入外部组件的工作状态

判定外部组件处在空闲状态的时候

那么,由外部组件把数据放在数据总线上,供CPU读入

这个握手过程可以通过一个软件的协议来完成

也可以通过硬件的时序来完成

当计算机对I/O接口进行持续操作的时候

就需要确定接口的操作策略

这个操作策略实际上就是CPU在一段有限时间里对I/O接口进行读写的一个逻辑

我们可以采用轮询的方式

这种情况下

CPU会不断地去读外部设备的状态

然后根据外部设备的状态执行相应的操作

我们以AD574为例

看一下进行轮询读操作的一个工作过程

首先使片选有效

然后等待外部设备发送回来自身的状态

如果发现状态信号是有效的

那么它就进行一个【读】操作

就是让AD转换器把AD转换的数据内容【传递】进来

这里面,握手信号是由硬件电路直接产生的

反映了外部组件的工作状态

CPU根据这个信号线判断AD转换器的工作已经完成了

然后来读入准备好的数据

写操作是与之类似的

进行轮训的时候

首先把数据放在数据总线上

然后发布写命令

完成数据写操作

在下一次写操作之前

它要等待外部【组件】返回的一个状态信息

如果DA转换结束之后

那么写有效信号会再次抬高

表明DAC处在空闲状态

这个时候,我们可以再一次发布写命令

程序框图可以通过一个定时程序完成

我们在一次写操作完成之后

可以通过一个固定时间的延迟去判断下一次写操作是否可以进行

轮询的操作策略比较简单

容易编程

但是同样的,工作效率比较低

因为CPU大量时间浪费在查询外部设备工作状态上

没有充分利用CPU高速运算的特性

为了提高效率,我们可以使用中断的方式进行接口操作

这个时候

外部组件当工作准备就绪之后

会向CPU发出中断请求

CPU接受中断请求之后

会继续完成当前的指令

在当前指令完成之后

它会进入中断处理程序

期间,先要保护现场的状态

然后进行中断的操作

在中断操作完成之后

恢复现场

返回原来的中断点

执行原来的动作

中断操作不需要CPU持续查询外部组件状态

有利于提高工作效率

但是,它会给控制器引入一个不定时的延迟

这个延迟有的时候,对于实时性比较强的操作,会造成一定的影响

这个延迟主要是中断嵌套产生

我们可以回忆一下刚才讲的中断操作过程

初始化所用到的时间和恢复现场所用到的时间

这两个时间是固定的

单纯的完成中断操作(服务)

这个时间也是可以估出来的

但是因为中断嵌套的存在

那么CPU在执行中断处理程序的期间

有可能会被新的中断打断

这样会进入一个新的中断处理程序

这个嵌套过程是否发生、持续多长时间是不确定的

因此中断引入的延迟也就没有办法提前预知

所以对于一些实时性比较强的操作

我们可以在中断处理程序当中把中断屏蔽掉

计算机控制导论课程列表:

课程说明

-关于课程版本

-教材或阅读材料

-名人堂

-关于虚拟实验

-关于考核

-课程学习规范

-课程大纲测试

-线上学习建议

-学习合同

第一章 课程简介

-学习任务

--学习任务

-1.1 什么是计算机控制

--1.1 什么是计算机控制

-1.2 为什么学习计算机控制

--1.2 为什么学习计算机控制

-1.3 怎样学习计算机控制

--1.3 怎样学习计算机控制

-【思政讨论】钱学森:我对系统学认识的历程

-第1周作业

-用户需求调查问卷

第二章 计算机控制基础

-学习任务

--学习任务

-2.1 概述

--2.1 概述

-2.2 典型形式

--2.2.1 操作指导系统

--2.2.2 直接数字控制系统

--2.2.3 监督控制系统

--2.2.4 分布式控制系统

--2.2.5 现场总线控制系统

--2.2.6 网络控制系统

-第2周思维导图

-【思政阅读】马少梅,范建文:回望历史——记录我国自动化仪表的成长与发展

-第2周作业

第三章 信号的采样与重构

-学习任务

--学习任务

-3.1 信号采样

--3.1.1 信息与信号

--3.1.2 采样过程

--3.1.3 采样定理

-3.2 信号重构

--3.2.1 香农重构

--3.2.2 保持法重构

-第3周思维导图

-【思政讨论】连续和离散:从信息科学的观点理解经典

-第3周作业

第四章 系统的数学描述

-学习任务

--学习任务

-4.1 回顾:连续系统的数学描述

--4.1 回顾:连续系统的数学描述

-4.2 离散对象的数学描述

--4.2.1 离散对象的数学描述

--4.2.2 仿真实例:建立离散对象的模型

--4.2.3 仿真实例:获取离散对象的模型

-4.3 系统模型的运算

--4.3.1 系统模型的运算

--4.3.2 仿真实例:基于解析表示

--4.3.3 仿真实例:基于图形表示

-第4周思维导图

-【思政讨论】日记:我参与了第一台智能可编程序调节器的设计

-第4周作业

第五章 系统的性能分析

-学习任务

--学习任务

-5.1 回顾:连续系统的性能分析

--5.1 回顾:连续系统的性能分析

-5.2 离散系统的指令响应

--5.2.1 离散系统的指令响应

--5.2.2 仿真实例:基于LabVIEW的指令响应

-5.3 离散系统的性能描述

--5.3.1 离散系统的性能描述

--5.3.2 稳定性

--5.3.3 鲁棒性

--5.3.4 仿真实例:基于LabVIEW的性能指标计算

-第5周思维导图

-第5周作业

-LabVIEW辅助设计(1)

-【思政讨论】谢旭凯和谢绪恺判据

第六章 模拟化设计方法

-学习任务

--学习任务

-6.1 模拟化设计

--6.1 模拟化设计

-6.2 离散化方法

--6.2.1 离散化方法

--6.2.2 前向差分法

--6.2.3 后向差分法

--6.2.4 双线性变换法

--6.2.5 脉冲响应不变法

--6.2.6 阶跃响应不变法

--6.2.7 零极点匹配法

--6.2.8 仿真实例:离散化方法

-第6周思维导图

-第6周作业

-LabVIEW辅助设计(2)

-【思政讨论】是什么卡了我们的脖子?

第七章 数字化设计方法

-学习任务

--学习任务

-7.1 数字化设计

--7.1.1 什么是数字化设计

--7.1.2 怎样进行数字化设计

-7.2 解析法

--7.2.1 Ragazzini法

--7.2.2 基于LabVIEW的辅助设计

-7.3 试探法

--7.3.1 频域设计法

--7.3.2 仿真实例:基于LabVIEW的频域设计

--7.3.3 根轨迹设计法

--7.3.4 仿真实例:基于LabVIEW的根轨迹设计

-第7周思维导图

-第7周作业

-LabVIEW辅助设计(3)

-【思政讨论】数控系统概述

第八章 从函数到算法

-学习任务

--学习任务

-8.1 可控实现形式

--8.1 可控实现形式

-8.2 数值精度问题

--8.2 数值精度问题

-8.3 计算时延问题

--8.3.1 计算时延

--8.3.2 程序结构的影响

--8.3.3 对采样周期的影响

-第8周思维导图

-第8周作业

第九章 硬件约束

-学习任务

--学习任务

-9.1 硬件约束的抽象化

--9.1 硬件约束的抽象化

-9.2 选择运算平台

--9.2 选择运算平台

-9.3 选择I/O设备接口

--9.3 选择I/O设备接口

-9.4 处理I/O接口数据

--9.4.1 数字滤波

--9.4.2 标度变换

-第9周思维导图

-第9周作业

第十章 工程实现

-学习任务

--学习任务

-10.1 需求分析

--10.1 需求分析

-10.2 架构设计

--10.2 架构设计

-10.3 任务调度策略

--10.3 任务调度策略

-10.4 可靠设计模式

--10.4 可靠性设计模式

-第10周思维导图

-第10周作业

期末考试

-期末考试卷【互评】

9.3 选择I/O设备接口笔记与讨论

也许你还感兴趣的课程:

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