【沧海拾昧】微机原理:输出输出接口技术

 #C0304


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题定为本集记录有谬,切勿深究


目录

引言:CPU与I/O接口

一、微机接口技术

1、接口的功能

2、I/O接口的基本结构

3、端口的分类

4、I/O端口的编址方式

二、程序方式传输数据

1、无条件传送方式

2、条件传送方式

3、条件传送方式的优先级

三、中断方式传输数据

1、中断

2、中断响应过程

四、DMA方式传输数据

1、DMA简介

2、DMA传输流程


引言:CPU与I/O接口

         外设具有多样性,如信息传送形式(数字、模拟)、信息传输方式(串行、并行)、工作速度等方面,为了使CPU能适应多样的外设,需要在CPU与外设之间增加一个接口电路,起到信号转换、速度匹配、数据缓冲的功能,实现CPU与I/O设备之间的信息传输。

        接口电路可以控制外设,有效提高CPU的传输效率。此外,还可以解决速度不匹配、信号不匹配、信号格式不匹配的问题。

        CPU与I/O设备之间需要传输的信息有:数据信息(通常为8位或16位)、状态信息(反映了当前外设所处的工作状态,由外设通过接口传往CPU供其查询)、控制信息(由CPU通过接口传送给外设的控制其工作)。

CPU通过接口电路与I/O设备之间进行信息传输

一、微机接口技术

1、接口的功能

  • 寻址功能:识别是否是I/O口的操作信号,识别是否为端口的片选信号,识别是芯片的哪个寄存器被访问。
  • 输入/输出功能:根据CPU通过控制总线送来的读写信号决定是输入操作还是输出操作。
  • 可编程功能:有些接口具有可编程特性,可以通过指令设定接口的工作方式,工作参数,以满足不同外设的要求。
  • 数据转换功能:当外设提供的数据形式不是CPU能直接接受的形式时,则通过接口转换成CPU可接受的形式。如A/D,串/并转换等,反之也一样。
  • 联络功能:当CPU要访问外设时,首先要查询外设状态,能否接受访问,接口应将外设状态准备好,供CPU查询;或向CPU发特定的信号通知外设已准备好。
  • 数据缓冲功能:主机与外设速度相差很大,为了防止数据丢失,I/O接口均设有双向数据缓冲器。
  • 中断管理功能:有专门的中断管理接口,能完成中断判优、中断屏蔽,向CPU送入中断类型码等功能。
  • 错误检测功能:多数可编程芯片都能自动检测出传输过程中出现的错误。 传输错误:如串口中的奇偶校验,覆盖错误。
  • 复位功能:能接受主机的复位信号,使系统重新启动。
  • 时序控制功能:接口电路具有自己的时钟,以满足外设在时序方面的要求。

2、I/O接口的基本结构

  • 端口

        端口是接口电路或扩展部件中能被微处理器CPU直接访问(读/写)的寄存器,每个端口都有一个端口地址。在接口电路中,把分配了地址的寄存器或缓冲电路称为端口。每个端口都有一个地址。

        数据信息、状态信息和控制信息可以分别有不同的寄存器,有的接口电路也共用寄存器。

  • 地址译码电路

        CPU在执行输入/输出指令时,首先要向地址总线发送端口地址,这些地址信号分为两部分,高位地址经过译码电路,用来选择不同的接口电路(片选),而低位地址用来选择接口电路内部的不同端口。

  • 数据缓冲器与锁存器

        接口电路内部具有数据缓冲器和数据锁存器,一方面协调CPU和外部设备之间的速度;另一方面,使得数据传输端在不传输数据时呈高阻状态

3、端口的分类

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

4、I/O端口的编址方式

  • 统一编址

        I/O与存储器的地址不重复,读写指令一致,只是根据地址来区分操作对象是存储器还是I/O。无需专门的I/O指令,对I/O操作指令丰富,可进行算术和逻辑运算。但占用存储器地址,因外设功能各不相同,需要复杂的电路进行时序配合。

统一编址的空间示意图
  • 单独编址

        I/O与存储器的地址重复,用不同的读写信号和指令区分。 不占用存储器空间;I/O端口的地址空间独立;控制和地址译码电路相对简单;专门的I/O指令使程序清晰易读。但I/O指令单一。

单独编址的空间示意图

二、程序方式传输数据

        用程序来控制进行输入/输出数据传输的方式。分为无条件传送方式和条件传送方式(查询方式)两种。

1、无条件传送方式

        假设外设已经准备就绪不查询外设状态,直接执行I/O指令进行数据传输。

  • 外设作输入设备:输入数据的保持时间相对于CPU的处理时间长,可以用缓冲器。
  • 外设作输出设备:外设速度比较慢,CPU的数据必须在接口保持一段时间,必须采用锁存器。

        无条件传输时,输出时,必须确认输出锁存器的原数据无效,才能正确输出;输入时,必须认为输入缓冲器中的数据已准备好,否则读取错误。

地址译码器译码,一个地址,两个端口(输入端口 / 输出端口)

         

        示例:如下图二极管接口电路,欲使LED自上而下依次发光2s,编写控制程序。

     MOV  AL,7FH
LOP: OUT  10H,AL
     CALL delay2s
     ROR  AL,1
     JMP  LOP

2、条件传送方式

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

  • 查询式输入
    • STB*:在输入时随着数据一起从输入端口出现,表示输入数据已就绪的状态信号;
    • 状态线占用一根数据线D0
查询式输入电路

        示例:从输入设备上输入1000个字节的数据,传送到存储器的缓冲区BUFFER中,外设数据端口42H,状态端口40H,状态线为DB0。

     LEA  SI,BUFFER
     MOV  CX,1000
LOP: IN   AL,40H     ;读状态口,仅D0有用
     TEST AL,01H     ;判断数据是否就绪
     JZ   LOP        ;未就绪,重复读取
     IN   AL,42H     ;读数据口
     MOV  [SI],AL
     INC  SI
     LOOP LOP        ;完成读入1字节,返回查询读入下一字节
     HLT
  •  查询式输出
    • ACK*:输出信号,应答,为0表示数据已被外设取走,可以发送下一个数据;
    • OBF:输入信号,为1表示输出缓冲器满,即数据已经到外设输入口;
查询式输出电路

        示例:将内存中BUFFER开始的50个字节输出,外设数据端口62H,状态端口60H,状态线为DB0。

      LEA  SI,BUFFER
      MOV  CX,50
LOP:  MOV  AL,[SI] 
      OUT  62H,AL      ;输出数据
LOP1: IN   AL,60H      ;读取状态口,仅D0有用
      TEST AL,01H      ;判断外设是否已取走
      JNZ  LOP1        ;未取走,等待
      INC  SI          ;取走,输出下一个
      LOOP LOP
      HLT

3、条件传送方式的优先级

        当系统较大时,CPU需对多台设备进行查询服务,就出现了设备的优先级的问题,即究竟先为哪台设备服务。

        为了保证每台设备都有被查询服务的可能,系统可以采用轮流查询的方法来解决。先查询的设备具有较高的优先级,可以得到较早的服务,而后查询到的设备则具有较低的优先级。

轮流查询:A设备实时性要求高,C设备使用较少

三、中断方式传输数据

1、中断

        当CPU正常运行程序时,由于内部或外部的随机事件,引起CPU暂时中止正在运行的程序,转而去执行请求中断的外设(或内部事件)的中断服务程序,中断服务结束后再返回被中止的程序。这一过程称为中断。

        中断可以实现主机可以与外设同步并行操作。

中断的处理流程

  • 中断源:能够引起程序中断的事件
    • 已知的中断源:例如指令中断源,这类中断源是以指令的形式给出的。(如INT 20H,这条指令如同其它的汇编指令一样,是出现在程序中的,所以这个中断源什么时候发生是预先知道的)
    • 随机的中断源:提出中断请求的时刻是未知的,例如硬件中断,中断源是通过中断控制接口电路输入至CPU的,中断源具体的发生时刻与外部硬件电路有关。

  • 中断优先级

        当系统中有多个中断源同时到来时,就需要将中断源排队,优先级高的中断服务程序先执行,执行完优先级别高的中断服务程序,再执行优先级别低的中断服务程序。

  • 中断嵌套

        高优先级别的中断打断当前低优先级的中断服务程序的执行。

  • 中断类型码

        中断类型码是指每个中断源的编号。每个中断源都有唯一的编号,每一个编号都对应各自的中断服务子程序。当响应中断时,必须首先获得中断类型码,有了中断类型码,才能找到对应的中断服务子程序。

2、中断响应过程

  • 中断请求:外设(中断源)需要CPU服务时,要发出中断请求;
  • 中断判优:同时有多个中断源同时发出中断请求,判别优先级最高的中断源并响应之;
判优方法判优方式判优电路
软件查询法        CPU响应中断后,在中断服务程序中用软件判断中断源。软件查询法只需有简单的硬件电路支持。简单易行,适合中断源数量较少的小系统。但速度慢,相对来说效率较低,对中断源多的系统该方法不可取。
简单硬件方式        将所有的设备连成一条链,最靠近CPU的设备优先级最高,离CPU越远的设备优先级别越低。此方式下的硬件电路不是很复杂,也很容易实现但链不能太长,否则链尾的设备就可能总是得不到服务。
专用硬件方式        用可编程中断控制器作为专用的中断优先权管理电路,管理多级中断请求,进行优先权排队,设有中断屏蔽字寄存器,支持中断的嵌套,硬件的连线也发生了改变。由于中断控制器芯片可以通过编程来设置或改变其工作方式,因此使用起来方便灵活。
  •  中断响应:CPU中断现在正在进行的处理任务,转向中断请求相对应的中断处理程序的过程;

        响应过程:      ①保护断点;

                                ②保护现场;

                                ③CPU关中断(不允许此时被新的中断源所打断);

                                ④转入中断请求对应的处理程序(由中断源得到相应服务程序的入口地址)。

  •  中断处理:执行中断服务子程序,以完成中断源提出的处理要求;

        注:在中断服务程序中,用STI指令开中断,以实现中断嵌套,并对服务程序中的所用的寄存器应预先保护(若中断响应中CPU不是自动保护的话),而在服务程序后面加入恢复现场的语句。

  •  中断返回:控制权由中断服务程序转移到被中断的程序(包含恢复现场的过程)。

四、DMA方式传输数据

1、DMA简介

        DMA即存储器直接存取,外部设备利用专门的接口电路直接和存储器进行高速数据传送,不需经过CPU,不必进行现场保护等一系列额外操作,数据传输的速度基本上取决于外设和存储器的速度,效率大大提高。

        存储器直接存取需要有专门的控制电路,用来控制外设与存储器之间的数据传输,这种设备称为DMA控制器。   

        DMA方式格外适用于高速外设大量数据块传输的场合。

2、DMA传输流程

  1. 当外设准备就绪时,向DMA控制器发DMA请求,DMA控制器接到此信号后,经过优先级排队(如需要的话),向CPU发DMA请求(送至CPU的HOLD引脚)。
  2. CPU在完成当前总线周期后会立即对DMA请求做出响应。CPU的响应包括两个方面:一方面将控制总线、数据总线和地址总线置高阻,另一方面将有效的HLDA信号加到DMA控制器上,以此来通知DMA控制器,CPU已经放弃了对总线的控制权。
  3. DMA控制器收到HLDA信号后,即取得了总线控制权。这时,它往地址总线上发送地址信号(指出本次数据传输的位置),同时,发出相应的读/写信号(决定是进行输入还是输出操作)。
  4. 每传送一个字节,DMA控制器会自动修改地址寄存器的内容,以指向下一个要传送的字节。同时,修改字节计数器的内容,判别本次传输是否结束。
  5. 当字节计数器的值达到计数终点时,DMA过程结束。DMA控制器通过使HOLD信号失效,撤消对CPU的DMA请求。CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常的运行。
DMA方式传输数据

敬谢诸君。


于金陵钟山之阳。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值