1 / 36

第 8 章 输入和输出

第 8 章 输入和输出. 8.1 概 述 8.2 CPU 与外设数据传送的方式 8.3 DMA 控制器. 退出. 8.1 概 述. 8.1.1 输入输出的寻址方式 CPU 寻址外设可以有两种方式。 1 .存储器对应输入输出方式 在这种方式中,把一个外设端口作为存储器的一个单元来对待,故每一个外设端口占有存储器的一个地址。从外部设备输入一个数据,作为一次存储器读的操作;而向外部设备输出一个数据,则作为一次存储器写的操作。. 这种方式的优点是:

jaxon
Download Presentation

第 8 章 输入和输出

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章 输入和输出 8.1 概 述 8.2 CPU与外设数据传送的方式 8.3 DMA控制器 退出

  2. 8.1 概 述 8.1.1 输入输出的寻址方式 CPU寻址外设可以有两种方式。 1.存储器对应输入输出方式 在这种方式中,把一个外设端口作为存储器的一个单元来对待,故每一个外设端口占有存储器的一个地址。从外部设备输入一个数据,作为一次存储器读的操作;而向外部设备输出一个数据,则作为一次存储器写的操作。

  3. 这种方式的优点是: (1)CPU对外设的操作可使用全部的存储器操作指令,故指令多,使用方便。如可以对外设中的数据(存于外设的寄存器中)进行算术和逻辑运算,进行循环或移位等。 (2)内存和外设的地址分布图是同一个。 (3)不需要专门的输入输出指令以及区分是存储器还是I/O操作的控制信号。 缺点是: 外设占用了内存单元,使内存容量减小。

  4. 2.端口寻址的输入输出方式 在这种工作方式中:CPU有专门的I/O指令,用地址来区分不同的外设。但要注意实际上是以端口(Port)作为地址的单元,因为一个外设不仅有数据寄存器还有状态寄存器和控制命令寄存器,它们各需要一个端口才能加以区分,故一个外设往往需要数个端口地址。CPU用地址来选择外设。 要寻址的外设的端口地址,显然比内存单元的地址要少得多。所以,在用直接寻址方式寻址外设时,它的地址字节,通常总要比寻址内存单元的地址少一个字节,因而节省了指令的存储空间,缩短了指令的执行时间。

  5. 8.1.2 CPU与I/O设备之间的接口信息 1.数据(Data) 在微型机中,数据通常为8位、16位或32位。它大致可以分为三种基本类型: (1)数字量 (2)模拟量 (3)开关量 2.状态信息(Status) 在输入时,有输入设备是否准备好(Ready)的状态信息;在输出时,有输出设备是否有空(Empty)的状态信息,若输出设备正在输出,则以忙(Busy)指示等等。

  6. 3.控制信息(Control) 控制输入输出设备启动或停止等等。 状态信息和控制信息与数据是不同性质的信息,必须要分别传送。但在大部分微型机中(8086也如此),只有通用的IN和OUT指令,因此,外设的状态也必须作为一种数据输入;而CPU的控制命令也必须作为一种数据输出。所以,一个外设往往要几个端口地址,CPU寻址的是端口,而不是笼统的外设。

  7. 8.1.3 CPU的输入输出时序 通常I/O接口电路的工作速度较慢,往往要插入等待状态。 8.1.4 CPU与接口电路间数据传送的形式 CPU与外设的信息交换称为通信(Communication)。基本的通信方式有两种:  并行通信——数据的各位同时传送;  串行通信——数据一位一位顺序传送。

  8. 8.2 CPU与外设数据传送的方式 8.2.1 查询传送方式 CPU与I/O设备的工作往往是异步的,很难保证当CPU执行输入操作时,外设已把要输入的信息准备好了;而当CPU执行输出时,外设的寄存器(用于存放CPU输出数据的寄存器)一定是空的。所以,通常程序控制的传送方式在传送之前,必须要查询一下外设的状态,当外设准备就绪了才传送;若未准备好,则CPU等待。

  9. 1.查询式输入 在输入时,CPU必须了解外设的状态,看外设是否准备好。 当输入设备的数据已准备好后,发出一个选通信号,一边把数据送入锁存器,一边使D触发器为“1”,给出“准备好”Ready的状态信号。而数据与状态必须由不同的端口输至CPU数据总线。当CPU要由外设输入信息时,先输入状态信息,检查数据是否已准备好,当数据已经准备好后,才输入数据。读入数据的指令,使状态信息清“0”。 这种查询输入方式的程序流程图,如图8-11所示。

  10. 2.查询式输出 同样的,在输出时CPU也必须了解外设的状态,看外设是否有空(即外设不是正处在输出状态,或外设的数据寄存器是空的,可以接收CPU输出的信息),若有空,则CPU执行输出指令,否则就等待。 查询式输出的程序流程图如图8-14所示。

  11. 8.2.2 中断传送方式 在上述的查询传送方式中,CPU要不断地询问外设,当外设没有准备好时,CPU要等待,不能进行别的操作,这样就浪费了CPU的时间。而且许多外设的速度是较低的,如键盘、打印机等等,它们输入或输出一个数据的速度是很慢的,在这个过程中,CPU可以执行大量的指令。为了提高CPU的效率,可采用中断的传送方式:在输入时,若外设的输入数据已存入寄存器;在输出时,若外设已把上一个数据输出,输出寄存器已空,由外设向CPU 发出中断请求,CPU就暂停原执行的程序( 即实现中断),转去执行输入或输出操作(中断服务),待输入输出操作完成后即返回,CPU再继续执行原来的程序。这样就可以大大提高CPU的效率,而且允许CPU与外设(甚至多个外设)同时工作。

  12. 8.2.3 直接数据通道传送(DMA) 中断传送仍是由CPU通过程序来传送,每次要保护断点,保护现场需用多条指令,每条指令要有取指和执行时间。这对于一个高速I/O设备,以及成组交换数据的情况,例如磁盘与内存间的信息交换,就显得速度太慢了。

  13. 所以希望用硬件在外设与内存间直接进行数据交换(DMA),而不通过CPU,这样数据传送的速度的上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线(例如IO/、、等)是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态——高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。这些都是由硬件实现的。所以希望用硬件在外设与内存间直接进行数据交换(DMA),而不通过CPU,这样数据传送的速度的上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线(例如IO/、、等)是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态——高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。这些都是由硬件实现的。

  14. 1.DMA控制器的基本功能 DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应能取代CPU,用硬件完成图8-17所示的各项功能。具体地说应具有如下功能: (1)能接收外设的请求,向CPU发出DMA请求信号。 (2)当CPU发出DMA响应信号之后,接管对总线的控制,进入DMA方式。

  15. (3)能寻址存储器,即能输出地址信息和修改地址。(3)能寻址存储器,即能输出地址信息和修改地址。 (4)能向存储器和外设发出相应的读/写控制信号。 (5)能控制传送的字节数,判断DMA传送是否结束。 (6)在DMA传送结束以后,能结束DMA请求信号,释放总线,使CPU恢复正常工作。

  16. 2.DMA传送方式 各种DMAC一般都有两种基本的DMA传送方式: (1)单字节方式:每次DMA请求只传送一个字节数据,每传送完一个字节,都撤除DMA请求信号,释放总线。 (2)字节(字符)组方式:每次DMA请求连续传送一个数据块,待规定长度的数据块传送完了以后,才撤除DMA请求,释放总线。

  17. 8.3 DMA控制器 8237的工作周期 8237在设计时规定它有两种主要的工作周期(或工作状态),即空闲周期和有效周期。每一个周期又是由若干个时钟周期所组成的。

  18. 8237的工作方式 8237在DMA传送时有四种工作方式。 1.单字节传送方式 这种方式一次只传送一个字节。数据传送后字节计数器减量,地址要相应修改(增量或减量取决于编程)。HRQ变为无效,释放系统总线。若传送使字节数减为0,TC发生或者终结DMA传送,或重新初始化。

  19. 2.块传送方式 在这种传送方式下,8237由DREQ启动后就连续地传送数据,直至字节数计数器减到零产生TC(Terminal Count),或者由外部输入有效的 信号来终结DMA传送。

  20. 3.请求传送方式 在这种工作方式下,8237可以进行连续的数据传送。当出现以下三种情况之一时停止传送。 (1)字节数计数器减到0,发生TC; (2)由外界送来一个有效的 信号; (3)外界的DREQ信号变为无效(外设的数据已传送完)。

  21. 4.级连方式 这种方式用于通过级连以扩展通道的情况。第二级的HRQ和HLDA信号连到第一级的DREQ和DACK上。 在前三种工作方式下,DMA传送有三种类型:DMA读、写和校验。

  22. 8237的寄存器组和编程 1.现行地址寄存器 每一个通道有一个16位的现行地址寄存器。在这个寄存器中保存着用于DMA传送的地址值,在每次传送后,这个寄存器的值自动增量或减量。这个寄存器的值可由CPU写入或读出(分两次连续操作)。 2.现行字节数寄存器 每个通道有一个16位的现行字节数寄存器,它保持着要传送的字节数,在每次传送后此寄存器减量。当这个寄存器的值减为零时,TC将产生。这个寄存器的值在编程状态可由CPU读出和写入。

  23. 3.基地址和基字节数寄存器 每一个通道有一对16位的基地址和基字节数寄存器,它们存放着与现行寄存器相联系的初始值。 4.命令寄存器 这是一个8位寄存器,用以控制8237的工作。命令字的格式如图8-24所示。

  24. 5.模式寄存器 每一个通道有一个6位的模式寄存器以规定通道的工作模式,如图8-26所示。 在编程时用最低两位来选择写入哪个通道的模式寄存器。

  25. 6.请求寄存器 8237的每个通道有一条硬件的DREQ请求线,当工作在数据块传送方式时,也可以由软件发出DREQ请求。所以,在8237中有一种请求寄存器,如图8-27所示。 每个通道的软件请求可以分别设置。软件请求是非屏蔽的,它们的优先权同样受优先权逻辑的控制。

  26. 7.屏蔽寄存器 每个通道外设通过DREQ线发出的请求,可以单独地屏蔽或允许,所以在8237中有一个屏蔽寄存器,如图8-28所示。

  27. 8.状态寄存器 8237中有一个可由CPU读取的状态寄存器,如图8-29所示。

  28. 9.临时寄存器 在存储器到存储器的传送方式下,临时寄存器保存从源单元读出的数据,又由它写入至目的单元。在传送完成时,它保留传送的最后一个字节,此字节可由CPU读出。 10.软件命令 8237在编程状态还有两种软件命令,软件命令不需要通过数据总线写入控制字,而由8237直接对地址和控制信号进行译码。 (1)清除高/低触发器 (2)主清除命令

  29. 11.8237的编程步骤 (1)输出主清除命令。 (2)写入基与现行地址寄存器。 (3)写入基与现行字节数寄存器。 (4)写入模式寄存器。 (5)写入屏蔽寄存器。 (6)写入命令寄存器。 (7)写入请求寄存器。若有软件请求,就写入指定通道,可以开始DMA传送的过程。 若无软件请求,则在完成了(1)~(6)的编程后,由通道的DREQ启动DMA传送过程。

More Related