第四章 数据传输与输入输出接口

CPU与外设之间的数据传输,没有地址总线,是以接口芯片通过中转、桥接的方式来进行的。

有三种方式可以进行CPU与数据的联系:

查询、中断和直接存储器存取(DMA)。

  • 查询:由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。这个查询方式的弊端是如果设备状态未就绪CPU就会一直踏步等待,影响CPU的执行效率。

  • 中断:CPU在启动I/O设备后,不查询设备是否已准备就绪,继续执行自身程序,只在设备准备就绪并向CPU发出中断请求后予以响应。这样可以避免CPU出现“踏步”现象,提高CPU的利用率。

    只有收到I/O设备的请求后才会将从接口读数据至CPU再至主存(依赖中断程序服务ISR实现),依次循环直到数据传输完成。

中断的过程:

设备发出中断请求给CPU,CPU在每个总线周期内检测中断请求,并给予相应的中断许可(禁用中断:阻止其他的中断信号 保存中断点 程序转到设备设定的中断处理程序的首地址),接着保护现场(终端服务程序保存环境,开放中断流程,检索环境)

最后中断返回

8086/8088中断

  • 8086用8位二进制码表示一个中断类型,一共有256个中断
  • 中断分为外部中断和内部中断
  • 8086中断向量表:中断类型号与对应的终端服务函数入口地址的换算表
    • 每个中断类型对应一个中断向量,由四个字节组成

      • 高地址字节:存放中断服务程序的代码段的段址
      • 低地址字节:存放中断服务程序的偏移地址
    • 地址范围:
    • 00000H - 03FFFH

直接存储器存取

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。通常系统总线是由CPU管理的,在DMA方式中,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态(高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。

适用于高速数据传输。

8253定时器和计数器

控制字寄存器

先写低8位,再写高8位。

  • 六种工作方式

    mode 0:计数结束中断

    • 计数器写完计数值时,开始计数(软件触发),相应的输出信号OUT就开始变成低电平。当计数器减到零时,OUT立即输出高电平。
    • 门控信号高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变
    • 在计数器工作期间,如果重新写入新的计数值,计数器将按新写入的计数值重新工作,可实现重复计数功能

    mode 1:可编程单稳脉冲

    • 写入计数初值后,计数器开始工作。门控信号GATE上升沿有效,才开始工作(硬件触发),使输出OUT变成低电平,直到计数器减到0后,输出才变高电平。
    • 在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数
    • 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零且门控信号再次出现上升沿后,才按新写入的计数初值开始工作

    mode 2:分频器

    • 一次设置计数初值,计数器可自动重复进行减“1”操作,减“1”计数回“0”,可以输出端输出一负脉冲信号
    • 写入计数初值后,GATE为高开始工作,计数器为0时,OUT输出一个时钟脉宽的负脉冲后自动回复高电平;同时自动重新装入原计数初值,反复计数
    • 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零后,才按新写入的计数初值开始工作
    • 在计数器工作期间,当GATE为低则停止计数,待GATE恢复后计数器重新装入原计数初值并重新开始计数

    mode 3:方波输出

    • 方式3工作方式与方式2基本相同,也具有自动装入时间常数(计数初值)的功能
    • 不同之处在于:工作在3方式,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波。当计数值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平;为奇数时高电平比低电平宽一个时钟脉冲

    mode 4:软件触发选通

    • 输出OUT就开始变为高电平,GATE为高时,当写完计数值后开始计数。当计数器减到零后,OUT输出一个宽度为一个时钟脉冲的负脉冲,然后恢复高电平,并一直保持高电平
    • 门控信号GATE为高电平时,计数器工作,为低电平时,计数器停止工作,恢复为高电平后计数器又从原装入的计数初值开始减1工作。
    • 在计数器工作期间,如果重新写入新的计数初值,不影响当前计数状态,仅当当前计数值记完后,计数值才按写入的计数值工作

    mode 5:硬件触发选通

    • 由GATE上升沿触发计数器开始工作
    • 当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数
    • 在计数过程中(或者计数结束后),如果门控信号再次出现上升沿,计数器将从原装入的计数初值重新计数

8255A并行芯片

  • 控制寄存器一般是放在最后一个地址上。

芯片结构:

  • 数据总线缓冲:D7-D0和系统数据总线相连,负责与CPU进行数据交换。包括输入输出数据、控制字和状态字
  • 读写控制逻辑:读写信号、片选信号,A1A0为端口选择输入引脚(ABC口)
  • A组控制和B组控制:A组控制端口A和端口C的高4位,B组控制端口B和端口C的低4位
  • 端口A、B、C:它们对外的引线分别是PA7~PA0PB7~PB0PC7~PC0。C口可分成两个4位的端口:C口高4位(PC7~PC4)和C口低4位(PC3~PC0)。

三种工作方式:

  • 方式0:基本输入输出方式

    • 适用于无条件传输方式
    • 输入时有锁存能力,输出时没有
  • 方式1:选通输入输出方式

    • 适用于程序查询和中断控制方式
    • A口和B口通常用于I/O数据传送,C口用作A口和B口的联络线,以中断方式传送数据
    • 在方式1下,A口、B口都可以选通输出数据,C口的6条线作为选通控制信号:PC3、PC6、PC7配合A口,PC0、PC1、PC2配合B口;
  • 方式2:双向传输方式

    • 只有A口可以工作在这种方式下
    • A口的输入输出均具有数据锁存能力,数据的输入输出均可以引起中断
    • 适用于程序查询和中断控制方式
    • 这时B口可以工作在方式0或方式1,C口剩余的3条线可以作为输入输出线或方式1下的控制线。
  • 应用:动态显示与矩阵键盘

    PC7 - PC4表示行,PC3-PC0表示列,11011101表示第2行第2列被按下。

串行通信的特点

  • 串行通信是指数据按位传输的一种通信方式
  • 适用于远距离通信
  • 按照收发双方的时钟是否统一,可以分为同步传输和异步传输

串行通信的传输过程(异步字框)

在异步方式下,收发两端各自有相互独立的位定时时钟,数据的传输速率是双方约定的。收发双方利用数据本身来进行同步,当双方时钟偏差不大时,只要一个同步周期内的位时钟不超过1个传输位,就可以满足正确接收的条件。

一帧信息是由起始位、数据位、奇偶校验位和停止位四部分组成的。

  • 起始位:是在高电平后的一位宽的低电平,其下降沿表征了时钟关系,通知接收方传输开始
  • 数据位:5位至8位,具体由双方通过软件约定
  • 校验位:进行数据的奇偶检查;也可以不用
  • 停止位:可以是1位、1位半或者2位,具体由收发双方约定。高电平有效,即停止位高电平表明一个字符的结束

异步串行通信通常会标识以下错误

  • 奇偶校验错:接收器按照1的个数是奇数或者偶数进行奇偶校验计算,与期望值进行比较;不一致时可以中断或者查询;不禁止接口器件的工作
  • 帧错:以起始位开头,停止位结束的二进制序列为一帧。接收器没有接收到足够的停止位即为帧错,有很多原因,如接收器或发送器的问题、传输线路上的干扰或者发送时钟误差超过允许值等。只报错不指明原因
  • 溢出错:微处理器不能及时把移位寄存器中的数据取走,后一个数据会覆盖前一个数据

中断或者查询;不禁止接口器件的工作

  • 帧错:以起始位开头,停止位结束的二进制序列为一帧。接收器没有接收到足够的停止位即为帧错,有很多原因,如接收器或发送器的问题、传输线路上的干扰或者发送时钟误差超过允许值等。只报错不指明原因
  • 溢出错:微处理器不能及时把移位寄存器中的数据取走,后一个数据会覆盖前一个数据

RS-232逻辑电平是反过来的

第四章 数据传输与输入输出接口相关推荐

  1. C语言程序设计教程_第四章:键盘输入与屏幕输出_笔记整理

    第四章 键盘输入与屏幕输出[

  2. 计算机控制技术及应用第四章,计算机控制技术及工程应用第四章课件.ppt

    <计算机控制技术及工程应用第四章课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机控制技术及工程应用第四章课件.ppt>文档请在天天文库 ...

  3. 第四章 输入输出设备

    第四章 输入输出设备 1 概述 1.1 分散连接 外部设备和主机之间的连接采用分散连接的方式,CPU 和 I/O设备串行工作,采用程序查询方式. 也就是每个设备都有专门的控制线路,这些控制线路甚至和C ...

  4. 【微机原理与接口技术】--第六章--基本输入输出接口技术

    基本输入输出接口技术 一.并行通信 二.串行通信 三.串行通信方式 及异步通信协议 四. 波特率 五.串行异步通信标准接口 RS-232简单连接示意图 可编程串行通信接口芯片 16550与8250 8 ...

  5. cc2530定时器和捕获比较_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...

  6. stm32f767串口下载软件_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第十四章 输入捕获实验 ...

  7. [计网:原理与实践] 第四章:网络互联(课后习题整理)

    第四章 网络互联 4-1 什么是异构网络?异构网络互联有哪些不同的方法?因特网采用了怎样的中继系统方式?   网络发展初期,许多计算机公式分别推出了具有专门规范的计算机网络.这些计算机网络在体系结构和 ...

  8. 【正点原子FPGA连载】第二十四章HDMI彩条显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  9. 通信网络基础期末复习-第四章-多址接入协议

    文章目录 第四章 多址技术 4.1 多址协议概述 4.1.1 MAC层在通信协议中的位置 4.1.2 多址协议的分类 4.1.3 系统模型 4.2 固定多址接入协议 4.2.1 频分多址接入(FDMA ...

最新文章

  1. java培训机构如何选择适合自己的
  2. [ACM训练] ACM中巧用文件的输入输出来改写acm程序的输入输出 + ACM中八大输入输出格式...
  3. 清北学堂dp图论营游记day4
  4. 【华为云技术分享】手把手教你如何在ARM上源码编译Redis
  5. 异步Udp监听关闭 出现异常,访问已释放的资源或者其他错误的解决方法
  6. List转换为数组Array的方法
  7. ZStack 3.6.0发布:支持云主机从KVM云平台在线迁移至ZStack
  8. 【京东助手】滑稽东试用助手 V1.6.0
  9. 【爬虫实战】利用scrapy框架爬取豆瓣图书信息
  10. 同方知网阅读器_汪总对峙众粉丝!透露为何加入凌烟阁?澄清塌哥,汪总平台号 一个办公室?大姐刺激汪总退网?...
  11. 解决双屏显示不一致的问题
  12. 高等数学学习笔记——第八十九讲——高斯公式
  13. 【论文笔记】RETHINKING NETWORK DESIGN AND LOCAL GEOMETRY IN POINT CLOUD: A SIMPLE RESIDUAL MLP FRAMEWORK
  14. Echarts漂亮水滴图
  15. 口袋理财:“来了就是深圳人?”全国均价最高的房租了解一下
  16. 人脸识别门禁的那些“坑”,你中招了吗?
  17. Cocos适配带虚拟导航栏手机(HUAWEI 荣耀6 Plus)
  18. lol哪个服务器能玩无限火力,lol无线火力玩什么快乐?无限火力最快乐的英雄排行...
  19. Java SE 基础知识
  20. linux下的屏幕录像软件罗列

热门文章

  1. 多少年前现在依旧爆火的游戏——星际战甲
  2. 期货股票量化软件:第三代神经网络深度网络
  3. .net创建CAD多重引线,引线中顶点修改问题
  4. vue.js v-for遍历对象
  5. 如何在 iPhone 和 iPad 上关闭自动更正?
  6. html怎么让爱心闪动,css画爱心并实现“爱心跳动”
  7. Linux源码 哪个版本,有没有办法将不同版本的linux源码合并
  8. 企业微信最直接有效的裂变玩法你了解吗?
  9. 细节炸裂,字节官网首发Leetcode刷题手册被泄露,Github一天登顶
  10. 鸿蒙系统对家庭,华为:鸿蒙系统远不止手机能用,目标是3亿台