第7章基本输入输出接口一、内容简介:1 I/O口概述2 简单I/O接口芯片:244,245,273,373┅3 CPU与外设间的数据传送方式程序控制;中断;DMA4 DMA控制器8237A二、教学目标:掌握输入/输出接口电路和基本概念、掌握I/O端口编址方法和特点及地址译码方法。
l掌握CPU与外设数据传送的方式方法。
了解DMA控制器8237A。
三、重点内容:CPU与外设间的数据传送方式;8237A四、教学时数:47.1 I/O接口概述7.1.1 CPU与外设之间的数据传输一.CPU与I/O接口接口电路按功能可分为两类:①是使微处理器正常工作所需要的辅助电路:时钟信号或中断请求等;②是输入/输出接口电路:CPU与外部设备信息的传送(接收、发送)。
最常用的外部设备:如键盘、显示装置、打印机、磁盘机等都是通过输入/输出接口和总线相连的,完成检测和控制的仪表装置也属于外部设备之列,也是通过接口电路和主机相连。
1.为什么要用接口电路:需要分析一下外部设备的输入/输出操作和存储器读/写操作的不同之处:存储器都是用来保存信息的,功能单一,传送方式单一(一次必定是传送1个字节或者1个字),品种很有限(只有只读类型和可读/可写类型),存取速度基本上和CPU的工作速度匹配.。
外部设备的功能多种多样的(输入设备,输出设备,输入设备/输出设备),信息多样(数字式的,模拟式的),信息传输的方式(并行的,串行的),外设的工作速度通常比CPU 的速度低得多,而且各种外设的工作速度互不相同,这也要求通过接口电路对输入/输出过程起一个缓冲和联络的作用。
注:接口电路完成相应的信号转换、速度匹配、数据缓冲等功能。
2.接口的功能(8种):⑴寻址能力:对送来的片选信号进行识别。
⑵输入/输出功能:根据读/写信号决定当前进行的是输入操作还是输出操作。
⑶数据转换功能:并行数据向串行数据的转换或串行数据向并行数据的转换。
⑷联络功能:就绪信号,忙信号等。
⑸中断管理:发出中斯请求信号、接收中断响应信号、发送中断类型码的功能。
并有优先级管理功能。
⑹复位:接收复位信号,从而使接口本身以及所连的外设进行重新启动。
⑺可编程:用软件来决定其工作方式,用软件来设置有关的控制信号。
⑻错误检测:一类是传输错误。
另—类是覆盖错误。
注:一些接口还可根据具体情况设置其它的检测信息。
二.I/O接口与系统的连接1.CPU与I/O设备之间的信号(三类)(1) 数据信息包括三种形式:数字量、模拟量、开关量(2)状态信息是外设通过接口往CPU传送的如:“准备好”(READY)信号、“忙”(BUSY)信号(3)控制信息是CPU通过接口传送给外设的如:外设的启动信号、停止信号就是常见的控制信息2.接口部件的I/O端口:⑴数据端口、⑵控制端口、⑶状态端口CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。
用于对来自CPU和内存的数据或者送往CPU和内存的数据起缓冲作用的,这些端口叫数据端口。
用来存放外部设备或者接口部件本身的状态,称为状态端口。
用来存放CPU发出的命令,以便控制接口和设备的动作,这类端口叫控制端口。
如下图注:⑴输入还是输出,所用到的地址总是对端口而言的,不是对接口部件而言的。
⑵为了节省地址空间,将数据输入端口和数据输出端口对应同一个端口地址。
同样,状态端口和控制端口也常用同一个端口地址。
⑶CPU对外设的输入/输出操作就归结为对接口芯片各端口的读/写操作。
3.接口与系统的连接.接口电路位于CPU与外设之间,从结构上看,可以把一个接口分为两个部分,⑴用来和I/O设备相连;⑵用来和系统总线相连,这部分接口电路结构类似,连在同一总线上。
下图是一个典型的I/O接口和外部电路的连接图:联络信号:读/写信号,以便决定数据传输方向。
地址译码器,片选信号:地址译码器除了接收地址信号外,还用来区分I/0地址空间和内存地址空间的信号(M/IO)用于译码过程。
注:⑴一个接口通常有若干个寄存器可读/写,⑵一般用1-2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。
4.输入输出的寻址方式CPU对外设的寻址方式通常有两种:(1) 存储器对应输入输出方式每一个外设端口占有存储器的一个地址。
优点:CPU对外设的操作可使用全部的存储器操作指令,寻址方式多,使用方便灵活,且可寻址的外设数量多。
缺点:由于外设占用了存储单元的地址,使内存的容量减小,同时,程序的可读性下降。
(2) 端口寻址的输入输出方式CPU有专门的输入输出指令( IN, OUT),通过这些指令中的地址来区分不同的外设。
优点:容易掌握,编出的程序可读性好。
缺点:可寻址的范围较小,还必须有相应的控制线(M/IO)来区分是寻址内存还是外设。
7.2简单I/O接口数据锁存器74LS373;数据缓冲器74LS244;数据收发器74LS245。
7.3 CPU与外设数据传送的方式7.3.1 程序控制方式(如图7-1所示)无条件传送方式、查询传送方式7.3.2 中断传送方式如图7-2所示7.3.3 直接存储器访问(DMA)方式7.4 DMA控制器8237A DMA传送的基本原理1)向DMAC发出DMA传送请求信号(DREQ)。
2)DMAC向总线仲裁机构请求占用总线。
3)DMAC接到HLDA信号后成为总线的主控者。
4)向存储器和进行DMA传送的外设发出读写命令,开始DMA传送。
5)撤消对CPU的总线请求,交回系统总线的管理和控制权。
7.4.1 8237A的内部结构和引脚1.四个独立的DMA 通道每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器,一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够工作于不同的方式下;2.定时及控制逻辑电路对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行译码,以确定DMA的工作方式,并控制产生所需要的定时信号;3.优先级编码逻辑对通道进行优先级编码,确定在同时接收到不同通道的DMA请求时,能够确定相应的先后次序。
通道的优先级可以通过编程确定为是固定的或者是旋转的。
4.共用寄存器除了每个通道中的寄存器之外,整个芯片还有一些共用的的寄存器:包括1个16位的地址暂存寄存器,1个16位的字节数暂存寄存器,1个8位的状态寄存器,1个8位的命令寄存器,1个8位的暂存寄存器,1个4位的屏蔽寄存器和1个4位的请求寄存器等,我们将对这些寄存器的功能与作用,作较为详细的介绍。
8237内部寄存器的类型和数量如表6-1所示,其中,凡数量为4个的寄存器,则每个通道一个,凡数量只有一个的,则为各通道所公用。
表6-1 8237的内部寄存器5.8237的数据引线,地址引线都有三态缓冲器,因而可以接也可以释放总线。
7.4.2 8237的工作周期在设计8237时,规定它具有两种主要的工作周期(或工作状态),即空闲周期和有效周期,每一个周期又是由若干时钟周期所组成的。
1.空闲周期(lade cycle)当8237的任一通道都无DMA请求时,则其处于空闲周期或称为SI状态,空闲周期由一系列的时钟周期组成,在空闲周期中的每一个时钟周期,8237只做两项工作:● 采样各通道的DREQ 请求输入线,只要无DMA 请求,则其始终停留在SI 状态; ● 由CPU 对8237进行读/写操作,即采样片选信号S C ,只要S C 信号变为有效的低电平,则表明CPU 要对8237进行读/写操作,当8237采样S C 为低电平而DREQ 也为低,即外部设备没有向8237发DMA 请求的情况下,则进入CPU 对8237的编程操作状态,CPU 可以向8237的内部寄存器进行写操作,以决定或者改变8237的工作方式,或者对8237内部的相关寄存器进行读操作,以了解8237的工作状态。
CPU 对8237进行读/写操作时,由地址信号A 3~A 0来选择8237内部的不同寄存器(组),由读/写控制信号R O I 及W O I 来控制读/写操作。
由于8237内部的地址寄存器和字节数计数器都是16位的,而数据线是8位的,所以在8237的内部,有一个高/低字节触发器,称为字节指针寄存器,由它来控制8位信息是写入16位寄存器的高8位还是低8位,该触发器的状态交替变化,当其状态为0时,进行低字节的读/写操作;而当其状态为1时,则进行低字节的读/写操作。
2.有效周期(Active Cycle )当处于空闲状态的8237的某一通道接收到外设提出的DMA 请求DREQ 时,它立即向CPU 输出HRQ 有效信号,在未收到CPU 回答时,8237仍处于编程状态,又称初始状态,记为S 0状态。
经过若干个S 0状态后,当8237收到来自于CPU 的HLDA 应答信号后,则进入工作周期,或称为有效周期,或者说8237由S 0状态进入了S 1状态。
S 0状态是DMA 服务的第一个状态,在这个状态下,8237已接收了外设的请求,向CPU 发出了DMA 请求信号HRQ ,但尚未收到CPU 对DMA 请求的应答信号HLDA ;而S 1状态则是实际的DMA 传送工作状态,当8237接收到CPU 发来的HLDA 应答信号时,就可以由S 0状态转入S 1状态,开始DMA 传送。
在内存与外设之间进行DMA 传送时,通常一个S 1周期由4个时钟周期组成,即S 1、S 2、S 3、S 4,但当外设速度较慢时,可以插入S W 等待周期;而在内存的不同区域之间进行DMA 传送时,由于需要依次完成从存储器读和向存储器写的操作,所以完成每一次传送需要8个时钟周期,在前四个周期S 11、S 12、S 13、S 14完成从存储器源区域的读操作,后四个时钟周期S 21、S 22、S 23、S 24完成向存储器目的区域的写操作。
8237的外部结构8237是具有40个引脚的双列直插式集成电路芯片,其引脚如图6-4所示: 1. CLK :时钟信号输入引脚,对于标准的8237,其输入时钟频率为3MHz ,对于8237-2,其输入时钟频率可达5MHz 。
2.S C :芯片选择信号,输入引脚。
3.RESET :复位信号,输入引脚,用来清除8237中的命令、状态请求和临时寄存器,且使字节指针触发器复位并置位屏蔽触发器的所有位(即使所有通道工作在屏蔽状态),在复位之后,8237工作于空闲周期SI。
4.READY:外设向8237提供的高电平有效的“准备好”信号输入引脚,若8237在S3状态以后的时钟下降沿检测到READY为低电平,则说明外设还未准备好下一次DMA操作,需要插入SW状态,直到READY引脚出现高电平为止。
5.DREQ0~DREQ3:DMA请求信号输入引脚,对应于四个独立的通道,DREQ的有效电平可以通过编程来加以确定,优先级可以固定,也可以旋转。