IO接口基础知识

news2024/11/27 10:28:02

一、基本概念

IO接口:CPU与IO设备之间的桥梁

1.IO接口分类

  • 专业接口:连接专用设备,常用附加卡的形式来实现
  • 通用接口:基本的输入输出接口,如并行口,串行口(外设和接口一侧)

2.IO接口组成

为了实现下图功能,IO接口通常由下面几部分组成

  • 数据缓冲单元:暂存CPU和外设交换的数据
  • 读写控制电路:接受CPU发出的命令,完成对接口内部寄存器的读写
  • 命令/状态单元:命令单元存放CPU发给接口的命令信息,状态单元存放接口的工作状态信息供CPU查询

3.IO接口功能

  1. 数据缓冲:实现高速CPU与慢速IO设备之间数据传送的同步
  2. 转换数据格式:如串行和并行数据格式之间的转换
  3. 信号量转换:如数字量与模拟量之间的转换
  4. 定时/计时功能:满足总线对数据传送的时序要求
  5. 进行地址译码和设备选择
  6. 传送控制命令和状态信息

4.IO接口编址方式

实际上是对IO接口中的IO端口进行编址

有了端口地址,CPU对外设的输入输出操作归结为对接口芯片各端口的读写操作

  • 统一编址:IO地址占用存储器的地址空间,无需专用的IO指令
  • 独立编址:IO地址独立,不占用存储器空间,需要专业的IO指令来访问IO端口

5.IO数据传送的控制方式

  1. 程序控制方式:输入输出操作完全在程序控制下执行,用IN和OUT指令直接访问IO端口,不管IO设备准没准备好,无条件传送数据
  2. 查询方式:CPU使用指令查询IO接口状态,当IO接口准备好接受或发送数据时,数据传送才进行,否则CPU等待
  3. 中断控制方式:各忙各的,当外设需要进行输入输出时,向CPU发中断信号,CPU处理
  4. DMA控制方式(Direct Memory Access):DMA控制器控制存储器与高速IO设备之间直接进行数据传送

6.为什么要用IO接口

外部设备为什么一定要通过接口和主机总线相连?能不能将外设和CPU的数据总线、地址总线、控制总线直接相连?

原因①:模拟量和数字量的转换

外设功能多种多样,输入输出检测控制等等,所使用的信息可能是数字量(大多数),也可能是模拟量,如果是模拟量,需要通过A/D,D/A转换接口完成。

原因②:串行数据和并行数据的转换

外设的信息有串行有并行。串行设备只能收发串行信息,而CPU只能收发并行信息。这种双向转换需要串行接口来完成。

那并行外设是否可以不用接口呢?也不是。CPU要和多个外设打交道,而在同一时刻CPU通常只和一个外设交换信息,就是说,一个外设不能长期和CPU相连,只有被CPU选中的外设,才去收发数据总线。所以,即使是并行设备,也同样需要通过接口与总线相连。这种接口就是并行接口。

原因③:速度不匹配

接口可以对输入输出过程起一个缓冲和联络的作用

原因④:信号电平的大小不匹配

设置信号电平转换电路

原因⑤:时序不匹配

设置时序控制电路,来同步CPU与外设的工作

原因⑥:信号的驱动能力不够

二、CPU与外设交换的三种信息

三种信息都是通过数据总线传送。但在接口中,这三种信息进入不同的寄存器。

1.数据信息

①数字量

从键盘、磁盘驱动器等读入的信息或主机送给打印机、磁盘驱动器、显示器的信息。它们是二进制数据。

②模拟量

湿度、温度、压力、流量等等通过传感器先变成电压或电流,再经过放大,再经过A/D转换为数字量,送给计算器处理

③开关量

1位二进制数。电机的运转和停止,阀门的打开和关闭。

2.状态信息

反映外设的工作状态。READY或BUSY

3.控制信息

控制外设的启动和停止,工作方式等等。

三、接口与端口

  • 接口中,不同的寄存器就叫IO端口,每个端口有一个地址
  • 一般,接口中会有4个主要寄存器,即:数据输入寄存器,数据输出寄存器,控制寄存器,状态寄存器(数据端口、控制端口、状态端口)
  • 从原则上说,对这4个寄存器可通过不同的地址来访问。不过,因为控制寄存器和数据输出寄存器是只写的,状态寄存器和数据输入寄存器是只读的,所以,可用读信号和写信号(1位)来区分这两组寄存器,再用1位地址来区分2个只读寄存器或两个只写寄存器。因此,4个寄存器只用两个端口地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛型编程 -- 模板详解

一、模板 在没有模板之前,如果我们写一个swap()两数交换函数,因为我们要支持 int 与int 交换 、double 与 double 交换等等情况,所以要实现swap()函数的多个重载,显得很繁琐,于是就引入了模板。 模板就是在需要模板的地…

CTF-栈溢出-基本ROP-【ret2shellcode】

文章目录 ret2shellcodeHTBCyberSanta 2021 sleigh思路exp ret2shellcode 控制程序去执行我们自己填充的代码。 条件: 我们填充的代码的位置具有可执行权限 HTBCyberSanta 2021 sleigh 检查保护 Has RWX segments提示有可读可写可执行的段 main函数 banner函数…

期望、方差

一、期望和方差的定义 随机变量(Random Variable) X 是一个映射,把随机试验的结果与实数建立起了一一对应的关系。而期望与方差是随机变量的两个重要的数字特征。 1. 期望(Expectation, or expected value) 期望是度量一个随机变量取值的集中位置或平均水平的最基…

Java简介、基本语法

一、Java简介: Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。 Java主要的特性: 1、Java语言是简单的的: Java语言的语法与C、C语言接近。Java丢弃了C中的一些特性,如操…

系列三、GC垃圾回收【总体概览】

一、GC垃圾回收【总体概览】 JVM进行GC时,并非每次都对上面的三个内存区域(新生区、养老区、元空间/永久代)一起回收,大部分回收的是新生区里边的垃圾,因此GC按照回收的区域又分为了两种类型,一种是发生在新…

redis高级案列case

案列一 双写一致性 案例二 双锁策略 package com.redis.redis01.service;import com.redis.redis01.bean.RedisBs; import com.redis.redis01.mapper.RedisBsMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; imp…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能,在受到D类功放EMI干扰困扰时,可随时切换至AB类音频功放模式(此时电荷泵升压功能关闭)。 HT8313内部固定28dB增益,内置的关断功能使待机电流Z小化,还集成了输出端过流保护…

翻转链表(图解)

LCR 024. 反转链表 - 力扣(LeetCode) 题目描述 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 样例输入 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2&…

中欧之间,从此万里有云桥

相传在1271年,马可波罗跟随父亲和叔叔前往中国,他们在海上漂泊了足足四年,才最终抵达元大都。从此之后,欧亚大陆的两端在数百年间发生了一系列故事。而海上船只,始终是穿行中欧的交通方式。 直到20世纪,两座…

git 指定时间代码统计

指定时间代码统计 用法 13 - 17 号 代码情况 近一周 git log --since2023-11-13 00:00:00 --until2023-11-17 23:00:00 --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s,total lines: %s\n&…

OmniGraffle Pro v7.22.3(流程图UML图)

OmniGraffle Pro是一款非常棒的绘图软件,具有多种功能,包括: 绘制图表:OmniGraffle Pro可以创建各种类型的图表,包括流程图、组织图、UML图、网络图等等。它还支持导入和导出多种文件格式,如PDF、SVG、Vis…

怎么去掉邮件内容中的回车符

上图是Outlook 截图,可见1指向的总有回车符; 故障原因: 不小心误按了箭头4这个选项; 解决方法: 点击2箭头确保tab展开; 点击3以找到箭头4. 取消勾选或者多次点击,即可解决。

Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统

前言 文件系统 我们先来看两个例子: 这个程序输出: 此时的输出也满足的我们预期。 我们也可以把 程序执行结果,输出重定向到 一个文件当中: 当我们在代码的结尾处,创建了子进程,那么输出应该还是和上述是一样的&…

Vue bus事件总线的原理与使用

这里写自定义目录标题 一、 Vue Bus 总线原理二、Vue bus的使用1、创建总线: 在 Vue 应用中,可以创建一个 Vue 实例作为总线,用于管理事件。2、事件的发布与订阅: 组件通过订阅事件来监听总线上的消息,而其他组件则通过…

Azure 机器学习:使用 Azure 机器学习 CLI、SDK 和 REST API 训练模型

目录 环境准备克隆示例存储库 示例案例在云中训练1.连接到工作区PythonAzure CLIREST API 2. 创建用于训练的计算资源4. 提交训练作业PythonAzure CLIREST API 注册已训练的模型PythonAzure CLIREST API Azure 机器学习提供了多种提交 ML 训练作业的方法。 在本文中&#xff0c…

【linux】查看CPU的使用率

命令1:top top 总体系统信息 uptime:系统的运行时间和平均负载。tasks:当前运行的进程和线程数目。CPU:总体 CPU 使用率和各个核心的使用情况。内存(Memory):总体内存使用情况、可用内存和缓存…

监控直流防雷浪涌保护器综合方案

监控系统是一种广泛应用于安防、交通、工业、军事等领域的信息系统,它通过摄像机、传输线路、监控中心等设备,实现对目标区域的实时监视和控制。然而,监控系统也面临着雷电的威胁,雷电可能通过直击雷、感应雷、雷电波侵入等途径&a…

储能领域 / 通讯协议 / 技术栈 等专有名字集锦——主要收集一些储能领域的专有名词,以及相关的名词

目录 名词解释ModbusIOT设备通讯协议 CAN/ RS-485 储能术语电池管理系统BMS电池储能系统相关概念,总控,主控,从控 电池相关知识拆解电池的构成逆变器 电池核心参数SOC 电池剩余容量 名词解释 英文中文biz layer业务层与业务层通信的服务CRC循…

GAT里面的sofamax函数的实现:

1.sofamx 公式: 2. GAT里的sofamax函数的实现: 1. 因为指数在x轴正轴爆炸式地快速增长,如果zi比较大,exp⁡(zi)也会非常大,得到的数值可能会溢出。溢出又分为下溢出(Underflow)和上溢出&#x…

当攻防演练已成常态,企业应该相信西医还是老中医?

在面对疾病时,很多人常常会犹豫不决,不知道应该选择中医还是西医进行治疗。与疾病斗争的过程也是一场“战斗”,需要选择合适的“武器”和策略。有些人认为西医疗效快,能够迅速缓解症状;而另一些人则认为中医治疗更根本…