微型计算机原理与接口技术第二版-刘彦文等-第5章.ppt_第1页
微型计算机原理与接口技术第二版-刘彦文等-第5章.ppt_第2页
微型计算机原理与接口技术第二版-刘彦文等-第5章.ppt_第3页
微型计算机原理与接口技术第二版-刘彦文等-第5章.ppt_第4页
微型计算机原理与接口技术第二版-刘彦文等-第5章.ppt_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 输 入 输 出 教学提示: 微处理器同外设的连接和信息交换,是微型机 系统要解决的主要问题之一。 本章描述了输入输出的基础知识,包括外设接 口的一般结构、I/O端口的寻址方式和数据传送 的控制方式,以及PC机I/O地址空间、基本输入 和输出接口等内容。 另外还描述了DMA控制器8237A的结构、功能 及实际应用。 教学目标: 了解微处理器同外设接口交换的3种信息;清楚 端口与接口的区别;了解I/O端口的编址方式。 深刻理解程序控制传送方式的原理、特点及应 用场合,能够编写简单的应用程序。深刻理解 PC机I/O地址空间、基本输入和输出接口、地址 译码器等内容。 理解DMA方式数据传输的基本工作原理。熟知 8237A芯片内部结构以及外部引脚的连接方法 ;熟知8237A的4种工作方式;熟知8237A内部 寄存器的作用;能够读懂并编写简单的初始化 程序和应用程序。 5.1 概 述 5.1.1 接口的功能 如图5.1所示,用户可以根据自己的需要,选择 不同类型的外设,配置相应的接口电路,通过 接口将不同类型的外设连接到系统总线上,构 成不同用途、不同规模的应用系统。 一般情况下,存储器接口电路及相应的控制比 较单一,而I/O设备种类和型号繁多,相应I/O 接口电路逻辑不同,控制较复杂。因此本章及 后续章节接口多指I/O接口,也称为外设接口。 虽然接口因外设的种类繁多而结构各异,但作 为连接计算机系统总线与外部设备的桥梁,一 般均有如下的功能: 图5.1 CPU与外设连接示意图 1. 数据缓冲功能和接口状态的表示 数据缓冲功能主要解决CPU的高速度与外设的低速度 之间的矛盾,从而避免了因速度不一致而导致的数据 丢失。一般在接口中通过设置数据缓冲器或锁存器解 决此类矛盾,通常把具有缓冲或锁存数据能力的寄存 器称为数据端口。 接口从系统总线或外设接收一个数据,通过发出“准备 好”联络信号,通知外设或CPU取走数据。一次数据传 输完成后,接口又可发出“数据缓冲区空”信号,准备 进行下一次传输。接口有向CPU提供接口状态或外设 工作状态的能力。在接口电路中这些用于表示 “空”、“ 满”、“准备好”、“忙”、“闲”等状态信号的寄存器称为 状态端口。 2. 接收和执行CPU命令的功能 CPU对I/O设备的控制命令一般均以代码的形式 发送到接口的命令寄存器,命令寄存器称为控 制端口或命令端口。接口电路将这些命令代码 进行识别和分析,产生若干个控制信号。这些 控制信号的作用一般有两个:一是控制所连接 外设的工作,二是用于设置接口的工作方式。 3. 信号转换功能 因为外设所需的控制信号与外设提供的状态信 号往往与微型机总线的信号不匹配,信号转换 是不可以避免的。信号转换的主要内容是对信 号之间的逻辑关系、时序配合以及电平匹配进 行转换。 4. 设备选择功能 微型机系统中可能带有多种外设,或者多台同 种外设,需要CPU通过地址信号来标识和选择 不同的接口。因此接口应对系统总线上传输的 地址进行译码,检测到本端口地址时,产生相 应的“选中”信号,并按CPU的要求进行信息传输 。一般情况下,端口寻址方法类似存储器的寻 址方法,通过高位地址译码产生片选信号选择 外设接口芯片,低位地址选择芯片内部寄存器 或锁存器。 5. 中断管理功能 外设需要及时得到CPU的服务,所以接口必须 要有简单的中断管理功能。如:发出中断请求 ,提供中断类型码等。在PC机中,有些功能由 专门的中断控制器实现。 6. 数据格式转换功能 CPU能直接处理的是并行数据,如8位、16位和 32位等。而有些外设只能处理串行数据,如串 行通信设备、终端机等。所以当外设使用的数 据格式与CPU数据格式不同时,接口要进行两 种数据格式之间的相互转换。 7. 可编程功能 目前接口芯片大部分是可编程的,可以用命令 字或控制字来设定其工作方式、工作参数。所 以在不改动硬件电路的情况下只修改相应的命 令字或控制字,就可以改变接口的工作方式, 大大增加了接口的灵活性和可扩充性。 8. 错误检测及复位功能 许多数据传输量大、传输速率高的接口,具有 检测信号传输错误的功能。常见的信号传输错 误有以下两种:物理信道上的传输错误(主要由 干扰造成)和数据传输中的覆盖错误(主要由数 据收发不及时造成)。在数据传输的过程中接口 应能及时检错和纠错。常用的检错方法有奇偶 校验法、方阵码校验法和CRC冗余校验法等。 同时,接口在收到系统的复位信号后,应能将 接口电路和所连的外部设备置为初始状态。 5.1.2 接口与端口 图5.2所示的I/O接口,称为输入/输出接口,也 称为外设接口。 外设接口是CPU与外设之间传送信息的一个界 面、一种连接电路。 外设接口一端通过系统三总线(数据总线、地址 总线、控制总线)与CPU相连,另一端与外设相 连并与外设交换三种信息:数据信息、状态信 息和控制信息。 图5.2 I/O接口典型结构 1. 数据信息 数据信息是CPU与外设接口交换信息的主要部 分。外设有数字量、模拟量和开关量三种信号 。 接口电路将输入设备的输入信号,转变成CPU 能够接收的数据信息,保存在寄存器中等待 CPU读取;接口电路将CPU输出到外设的数据信 息,转变成外设能够接收的信号,送往外设。 2. 状态信息 状态信息表明外部设备或接口当前所处的工作 状态,用来协调CPU与外部设备之间的输入/输 出操作。 输入设备在完成一次输入操作后,发出就绪信 号(READY),表明输入设备已经把数据送到接 口,等待CPU给予处理。 输出设备接口在接收从CPU送出的一批数据信 息进行输出的过程中,发出忙信号(BUSY),表 明目前接口不能接收新的数据信息。 状态信息用于协调CPU与外设之间的通信。 3. 控制信息 控制信息是CPU向接口发出的命令,用于控制 外设及接口的工作方式以及外设的启动或停止 。控制信息的格式因设备及接口而异。控制信 息也可以设置接口芯片的工作方式。 数据信息、状态信息和控制信息通常都通过接口 与CPU交换,这些信息分别存放在外设接口的不 同的寄存器中。 CPU同外设之间的信息传送,实际上是CPU对接 口中的寄存器进行读或写操作。 接口中这些可以由CPU进行读或写的寄存器被称 为端口。 按存放信息的不同类型,这些端口可以分为: “数据端口” “状态端口” “控制端口” 分别存放数据信息、状态信息和控制信息。 CPU通过向控制端口发送控制字,对接口工作 方式进行设置。 CPU访问设备是通过访问相关的端口来实现的 。 5.1.3 I/O端口的编址方式 在一个外设接口中往往有多个I/O端口。 将接口中的端口进行编号,将编号加上所在接 口的基地址即为该端口的I/O端口地址。 对I/O端口的编址有存储器映象编址和独立编址 两种方式。 1. 存储器映象编址(存储器与I/O端口统一编址) 存储器映象编址的地址空间分配如图5.3所示。 这种编址方式的特点是存储器和I/O端口共用统 一的地址空间,它把内存的一部分地址分配给 I/O端口,一个8位端口占用一个内存单元地址 。已经用于I/O端口的地址,存储器不能再使用 。 图5.3 统一编址方式地址空间分配 这种编址方式的优点是:访问内存单元和I/O端 口可以使用相同的指令,不需要专用的I/O指令 ,这有助于降低CPU控制电路的复杂性,同时 可使系统变得比较灵活;I/O端口的地址空间是 内存空间的一部分,其地址空间可大可小,从 而使连接外设的数目几乎不受限制。但是,这 种编址方式也存在着一定的缺点,即I/O端口占 用内存地址,相对减少了内存的可用空间;而 且难以区分指令是访问内存还是访问I/O,降低 了程序的可读性和可维护性。 2. 独立编址(I/O端口单独编址) 独立编址方式的地址空间分配如图5.4所示。这种方式 的特点是内存储器和I/O端口各自有自己独立的地址空 间。 访问I/O端口需要专门的I/O指令。 8086CPU采用这种编址方式。 图5.4 单独编址方式地址空间分配 这种编址方式的优点是: I/O端口地址码较短,译码电路较简单; 存储器和I/O 端口的操作指令不同,程序比较 清晰; 存储器和I/O端口的控制结构相互独立,可以分 别设计; 指令执行速度较快。 其缺点是: 需要专用的I/O指令,这些指令的功能一般不如 存储器访问指令丰富,导致程序设计的灵活性 较差。 5.2 数据传送的控制方式 计算机的各种操作中最基本和最频繁的操作是 数据传送,在微型机系统中,数据传送主要在 CPU、存储器和I/O接口之间进行。由于CPU与 外设的工作速度相差很大,所以在CPU与外设 的数据传送过程中,需要解决数据传送的控制 方式,即CPU何时从输入设备读取数据以及何 时向输出设备写入数据。按照I/O控制组织的发 展顺序以及外设与CPU并行工作的程度,微型 机系统中数据传送的控制方式主要有两种:程 序控制传送方式和直接存储器存取(DMA)方式 。 5.2.1 程序控制传送方式 1. 无条件传送方式 图5.5 无条件传送方式电路原理图 例如:要求某数据采集系统每秒钟定时采样某 点的温度信号2次。温度传感器已经将温度信号 转换成电信号,经过A/D转换器转变为数字量送 入输入端口。当CPU读取端口数据时,端口中 的温度数字量已“准备好”。若端口地址为40H, 2次采集之间需要适当延时,并且读端口数据同 时启动了下一次A/D转换。相应的采集程序如下 : ADSTART:MOVCL,2 ;置采集次数 MOV BX,2000H;置存放温度值首地址 LOOPAINAL,40H;取温度值 MOVBX,AL;存入内存 INC BX;修改内存偏移地址 CALL DELAY;调用延时子程序 DEC CL;修改采集次数 JNZ LOOPA;未采完返回LOOPA继续 RET 2. 查询传送方式 查询传送方式也称为条件传送方式。 在这种传送方式下,当CPU需要与一个I/O设备 进行数据传送时,它首先通过程序不断读取并 测试接口的状态。 如果输入设备处于准备好状态,则CPU执行输 入指令从对应端口输入数据,反之CPU就等待 。输出时,当输出设备处于空闲状态,CPU向 该设备接口对应端口输出数据。 为此,接口电路除了有传送数据的端口外,还 应有传送状态的端口。对于输入过程来说,外 设将数据送到接口时,同时使接口状态端口中“ 准备好”标志位置1。 对于输出过程来说,外设取走一个数据后,接 口便将状态端口的对应标志位清零。表示当前 输出寄存器已经处于“空”状态,可以接收CPU传 送的下一个数据。 查询方式输入接口电路原理图见图5.6。从图中 可以看出:当输入设备将准备好的数据传送到 接口的锁存器的同时,发出一个选通信号,该 选通信号一方面将数据锁入锁存器,同时通过D 触发器置1表示数据准备好。CPU在输入数据前 ,应先通过状态端口读取状态信息(在此系统中 ,使用数据总线的D0位),以便查询输入设备的 数据是否准备好。若未准备好,则CPU处于等 待外设的状态;如准备好,则执行输入指令, 该指令同时将触发器清0,表示数据已被CPU 读取。相应的汇编语言程序段如下: LOOP1:IN AL,STATUS_PORT ;读状态端口, ;D0=1表示“数据就绪” TEST AL,01H ;判断“数据就绪”位 JZ LOOP1;未就绪,循环读状态端口等待 IN AL, DATA_PORT;已就绪, ;从数据端口读取数据 图5.6 查询方式输入接口电路原理图 图5.7表示用查询方式进行输出的接口电路工作 原理图。 输出传送的工作原理及编程方式与输入传送有 许多的类似之处。 当CPU需要向外设输出数据时,先读取状态端 口中的状态位(在此系统中使用数据总线的D0位 ),如果状态位表明外设空闲(或不忙),则执行 输出指令,向外设输出数据,否则CPU需查询 等待。 相应的汇编语言程序段如下: LOOP2:IN AL, STATUS_PORT ;读状态端口,D0 =1表示“空闲” TEST AL, 01H;判断“空闲”位 JZ LOOP2;忙,再读状态端口循环等待 MOV AL, DATA;空闲,取数据准备输出 OUT DATA_PORT, AL ;将数据输出至数据端口 图5.7 查询方式输出接口电路原理图 进行多个数据的输入/输出时,每进行一次输入 /输出都要首先查询它的状态字,只有当设备就 绪时才可以进行数据的传输。 图5.8所示为一个查询方式输入的流程图。 图5.8 查询方式输入流程图 如果系统有多个外设需要使用查询方式进行输 入/输出,则可采用循环查询的方式。如假定有 三个设备(A、B、C),分别用状态端口的D7、D6 、D5 位表示它们的状态信息,则CPU可周期性 逐个查询,测试状态端口的相应位是否准备好 。其流程如图5.9(p201)所示,相应的汇编语言 程序如下: PRO:IN AL,STATUS-PORT1;读设备A的状态端口 TEST AL,80H ;测试状态位, ;如果为0表示没准备好 JZ PROB1 ;没准备好, ;转移去读设备B的状态端口 CALL PROAINOUT;准备好了, ;调子程序进行数据交换 PROB1:IN AL,STATUS-PORT2 TEST AL,40H JZ PROC1 CALL PROBINOUT PROC1: IN AL,STATUS-PORT3 TEST AL,20H JZ INPUT1 CALL PROCINOUT INPUT1: 3. 中断传送方式 为了提高CPU的工作效率,同时又能及时地传 送数据,可以采用中断传送方式。 当CPU需要与外设进行数据传送时启动外设。 在外设准备数据的同时,CPU继续执行程序, 此时CPU与外设并行工作。 当外设将传送数据准备好,通过接口向CPU发 出中断请求信号,CPU收到中断请求信号并予 以响应,CPU暂停正在执行的原程序(主程序), 而转去执行中断请求对应的输入输出中断处理 程序,待处理完成,CPU返回原程序继续运行 。由于CPU的工作速度很快,传送一次数据(包 括进入中断、退出中断程序)所需的时间很短。 图5.10 中断传送方式电路原理图 5.2.2 直接存储器存取(DMA)方式 所谓直接存储器存取(Direct Memory Access, DMA)是指在存储器和外设接口之间、存储器和 存储器之间直接进行数据传送(如磁盘接口与内 存交换数据、高速数据采集卡与内存交换数据 、内存与内存的高速数据块传送等),传送过程 无需CPU介入。 使用DMA方式传输时,仍然使用系统的数据总 线、地址总线和控制总线。 但系统总线原来由CPU或者总线控制器管理, 在用DMA方式进行数据传输时,接口电路要向 CPU发出申请,使CPU让出总线的控制权,交由 控制DMA传输的接口电路。 这个接口电路就是DMA控制器,简称DMAC。 DMAC控制DMA传输过程时,应具备如下功能 : (1) 当外设准备就绪,需要进行DMA操作时, 通过外设接口向DMA控制器发出“DMA请求信号 ”。 DMA控制器收到此信号后,向CPU发“总线请求 ”信号。 CPU收到总线请求信号后,如果允许,会在当 前总线周期结束后,发出“总线响应”信号,同 时放弃对总线的控制。 这时DMA控制器开始实行对总线的控制。 (2) DMAC得到总线控制权后,要向地址总线发 送地址信号。 为此,DMA内部设有地址寄存器,事先由程序往 此寄存器中设置DMA首地址。 对于数据输入过程,向外设接口发出“I/O读”控 制信号,同时向存储器发出“存储器写”信号。在 这两个信号的作用下,一字节的数据从外设接口 送往数据总线,而存储器从数据总线接收这个数 据,写入由地址总线上的地址指定的内存单元。 对于数据输出过程,情况正好相反。DMAC向存 储器发读命令,向外设接口发写命令,一字节数 据从存储器传送到外设接口,完成一次输出操作 。 (3) 传送1个字节之后,DMAC自动对地址寄存 器的内容进行修改,指向下一个要传送的字节 。同时,为了判断DMA传送是否结束,在DMA 内部必须有一个字节计数器,用来存放所传送 的字节数,即数据块长度。 在开始传送前,由程序设置数据块长度,在 DMA传送过程中,每传送一个字节,字节计数 器减1,当减到0时,DMA传送结束。 (4) 一次数据传输结束,DMA控制器向CPU申请 撤销“总线请求”信号,于是CPU撤销允许使用总 线的“总线响应”信号,并且收回对总线的控制 权。 以上过程完全由硬件电路实现,速度很快。用 DMA方式进行一字节数据传输所经历的时间称 为“DMA周期”,大体上相当于一次总线读写周 期的时间。 在DMAC的内部,为了实现内存与I/O接口间传 送数据,应包括如下寄存器: 一个地址寄存器,存放内存和I/O交换数据时内 存的起址; 一个字节计数器,存放交换字节的个数; 一个用于存放CPU设定DMA传输方式及各种控 制信息的控制寄存器; 一个用于存放DMAC当前的状态,包括有无 DMA请求、是否结束等状态信息的状态寄存器 。 图5.12 DMAC内部基本结构及在系统中的连接 在系统中,DMAC有如下特点: 它一方面是一个接口电路,因为它也有I/O端口 地址,CPU可以通过端口地址对DMAC进行读写 操作,以便对DMAC进行初始化或读取状态。 另一方面,DMAC在得到总线控制权后,能够控 制系统总线,它可以提供一系列控制信号,像 CPU一样控制外设和内存之间的数据传输,此 时,DMAC又不同于一般的接口电路。 所以,它在系统中具有总线从模块和总线主模 块双重功能。 (1) 总线从模块:当CPU对DMAC进行预置参数 ,即向DMAC写入内存传送区的首地址、传送字 节数和控制字时,DMAC相当于一个外设接口, 称为总线从模块。 (2) 总线主模块:当进行DMA传输时,CPU暂停 对系统总线的控制,DMAC取得了对总线的控制 权,这时的DMAC称为总线主模块。 5.3 PC机I/O地址空间及基本输入、输出接口 5.3.1 I/O地址空间 1. I/O地址空间 基于8086/8088 CPU的I/O地址空间为64KB,每个地址 可以访问1字节数据,从偶地址开始相邻的两个地址中 的2字节数据,也可以使用1条指令访问。 例如: IN AL ,20H ;I/O端口地址20H中的数据,读入AL,访问1字节 IN AX,20H ;I/O端口20H、21H中的数据,读入AX,访问2字节 ;20H端口数据读入AL、21H端口数据读入AH 指定I/O端口地址的方法有2种。一种是在指令 中直接给出地址,但是要求地址小于等于255; 另一种是由DX内容作为地址,地址范围为 065535。例如: OUT 40H,AL ;AL内容输出到40H地址指定的I/O端口 MOV DX,200H ;I/O端口地址为200H,送入DX OUT DX,AX ;AX内容送I/O端口,地址为200H、201H的单元 ;AL内容送200H单元,AH内容送201H单元 错误格式举例: IN AL,100H ;地址100H超过了255 OUT 200H,AX ;地址200H超过了255 对于上述2条指令,必须先把地址送入DX: MOV DX,100H IN AL,DX MOV DX,200H OUT DX,AX 2. 有固定用途的I/O地址 在使用8088 CPU的PC/XT机中,有一些I/O端口 地址已经有了固定用途,如表5.1所示。 5.3.2 PC机I/O指令 下述指令是8086/8088 CPU支持的指令。 输入指令,指的是从I/O端口读数据,通过数据 总线,传输到CPU中AL或AX中的指令; 输出指令,指的是从CPU中AL或AX中,将数据 传输到I/O端口。 I/O端口的地址要在I/O指令中直接或间接给出 。 I/O指令格式如下: IN AL,PORT8 ;输入指令,从端口地址PORT8,读入一字节数据, ;PORT8为8位端口地址,范围为0255 IN AX,PORT8 ;输入指令,从端口PORT8,PORT8+1;读入2字节数据 IN AL,DX ;DX内容作为I/O端口地址,范围为065535 IN AX,DX ;DX内容作为I/O端口地址,范围为065535 OUT PORT8,AL ;输出指令 OUT PORT8,AX ;输出指令 OUT DX,AL ;输出指令 OUT DX,AX ;输出指令 5.3.3 基本输入、输出接口 1. 基本输入接口 图5.13是一个与8个开关相连的基本输入接口, 可以将74LS244三态缓冲器输入端1A12A4的 状态(高电平表示1,低电平表示0),由输入指 令读入AL中。74LS244的输出端1Y12Y4与数 据总线连接,-SEL信号是由另外的译码器产生 的,当指令中指定的地址不为0F0H时,译码器 输出-SEL为高电平,1Y12Y4处于高阻状态, 74LS244与数据总线相当于断开;当指令中指 定的地址为0F0H时,译码器输出-SEL为低电平 ,74LS244输出1Y12Y4与数据总线接通。 图5.13 与8个开关连接的基本输入接口 2. 基本输出接口 图5.14是一个与8个LED发光二极管相连的基本 输出接口。 图5.14 与8个LED灯相连的基本输出接口 5.3.4 地址译码器 地址译码器一端与CPU地址总线、控制总线连 接,另一端是产生的选择信号,用于输入接口 使缓冲器处于接通状态(非高阻),或者用于输 出接口作为锁存器锁存信号。 译码器可以连接全部16位地址,这种方式称为 全译码;或者只连接部分低位地址,称为部分 译码。 图5.15是使用74LS138作为译码器的一个例子 。 图5.15 地址为F0H时能够产生Y0有效的译码电路(读) 通过指令: IN AL,0F0H 能够将图5.13中74LS244连接的状态,读入AL 。 图5.16是使用74LS138的另外一个例子 图5.16 地址为F1H时能够产生Y1有效的译码电路(写) 通过指令: OUT 0F1,AL 能够将AL中数据送图5.14中74LS374。 5.3.5 80386以上微处理器I/O指令及I/O地址 1. I/O指令 IN EAX,PORT8 ;输入32位数据,PORT8指定的I/O地址范围为0255 IN EAX,DX ;输入32位数据,DX指定的I/O地址范围为065535 INSB ;输入8位数据,DX指定端口地址,数据 ;送ES:DI内存单元,DI=DI1 INSW ;输入16位数据,DX指定端口地址,数据 ;送ES:DI内存单元,DI=DI2 INSD ;输入32位数据,DX指定端口地址,数据 ;送ES:DI内存单元,DI=DI4 OUT PORT8,EAX ;输出32位数据,PORT8指定的I/O地址范围为0255 OUT DX,EAX ;输出32位数据,DX指定的I/O地址范围为065535 OUTSB ;从DS:SI寻址的内存单元,输出8位数据,DX ;内容指定端口地址,SI=SI1 OUTSW ;从DS:SI寻址的内存单元读数据输出,输出16 ;位数据,DX内容指定端口地址,SI=SI2 OUTSD ;从DS:SI寻址的内存单元读数据输出,输出 ;32位数据,DX内容指定端口地址,SI=SI4 上述INS、OUTS指令均可以加REP指令前缀。 另外传送前应该设置标志寄存器FR中的方向标 志DF位。 2. I/O地址 80386以上微处理器I/O地址空间为065535。 80386以上微处理器I/O指令允许使用的数据总 线宽度为8位(字节)、16位(字)和32位(双字), 不允许使用64位。 5.4 可编程DMA控制器8237A(DMAC) 5.4.1 8237A的结构和基本功能 1. 8237A芯片的主要特点 (1) 在一个8237A中,有4个独立的DMA通道。 (2) 每一个通道的DMA请求有不同的优先权, 优先权可以固定,也可以循环(由编程确定)。 (3) 对每一个通道的DMA请求都可以分别允许 和禁止。 (4) 每一个通道传送数据的最大长度可以达到 64KB,可以在存储器与外设间进行数据传送, 也可以在存储器的两个区域间进行传送。 (5) 8237A的DMA传送有四种方式可供选择:单 字节传送方式、块传送方式、请求传送方式、 级联方式。 (6)结束处理的信号-EOP有两种用途,用途一表 示DMA内部某一通道指定长度的数据传送完毕 ,是8237A输出信号;用途二把对应引脚作为 输入端,由8237A片外发送信号,强制结束 DMA传送或重新初始化。 (7) 8237A可以级联,扩展通道数。 2. 8237A的内部结构与外部连接 DMA控制器一方面可以控制系统总线,在系统 中处于总线主模块的地位; 另一方面,又可以接受CPU对它的读写操作, 在系统中处于总线从模块的地位。 DMA控制器8237A的内部结构和外部连接与它 在系统中所处的地位是密切相关的。 8237A的内部编程结构和外部连接如图5.17所 示。 由图5.17可知,8237A由两部分构成:一部分是 4个DMA通道以及与外设的连接;另一部分是读 /写控制逻辑、控制逻辑、锁存缓冲器和页面地 址寄存器(另见图5.25)。 1) DMA通道 8237A有四个相互独立的通道(CH0CH3)。图 5.17中给出了通道0的内部编程结构,通道1 通道3与通道0相同。 图5.17 8237A的内部编程结构和外部连接 由图5.17可知,每个通道都包含: 一个基本地址寄存器和一个当前地址寄存器、 基本字节计数器和当前字节计数器。 还有一个6位的方式寄存器(模式寄存器), 一个1位的DMA请求触发器及 一个1位的屏蔽触发器。 同时,每个通道都有两个与外设相连的引脚, DREQ(引入外设的DMA请求信号)和DACK(送给 外设的DMA应答信号)。4个通道共用一个控制 寄存器和一个状态寄存器。在DMA通道工作之 前,必须对相应的寄存器进行初始化设置。 2) 读/写控制逻辑 读/写控制逻辑主要用于控制数据的传送方向。 在DMA传送期间,8237A作为“主模块”控制总 线。 读写控制逻辑发出-IOR、-MEMW或-IOW、 -MEMR信号,控制数据从外设接口读出后写到 存储器单元,或数据从存储器单元读出后写到 外设接口。 8237A在系统中作为“从模块”时,CPU控制总线 ,8237A只作为一般的I/O接口,此时,读/写逻 辑电路接收CPU对I/O接口发出的读(-IOR)或写( -IOW)信号,将所寻址的寄存器内容送到数据总 线或将数据总线的内容写入所寻址的寄存器。 3) 控制逻辑 控制逻辑主要用于控制8237A的工作方式。 初始化时,通过对方式寄存器及各种命令字的 编程,确定DMA如何工作。在DMA周期内,控 制逻辑根据设定的方式产生相应控制信号对各 个通道进行控制。 4) 锁存缓冲器(外接) 使用8237A工作时,需要外接一个8位的地址锁 存缓冲器,它通过可控的三态门连接系统地址 总线A8A15,在DMA传送时,8237A将高8位地 址A8A15通过DB0DB7送入这个锁存器。在 DMA周期里,锁存器将锁存的地址送往系统地 址总线A8A15,同时从A0A7发送地址的低8位 。 5) 页面地址寄存器(外接) 由上文可以看出,8237A产生的地址总线为16 位,所以最多只能寻址64KB。但是8086存储器 空间使用20条地址线,因此需要外接一个4位的 “页面地址寄存器”。寄存器的值由CPU事先写入 ,8237A发送低16位地址时,高4位的地址从页 面地址寄存器发往地址总线的A16A19。在DMA 传送期间,此寄存器在地址允许信号AEN的作 用下保持恒定的4位地址输出。 3. 8237A的工作时序 8237A使用独立的时钟信号,工作过程可以分 为SI、S0、S1、S2、S3、SW、S4几个状态,见图 5.18。每个状态占用1个时钟周期,因此状态也 可以称为周期。 图5.18 8237A工作状态 1) 空闲状态 2) 有效周期 3) 扩展写与压缩时序 4) 8237A工作时各信号的配合 (1) 作为从模块工作时 (2) 作为主模块工作时 4. 8237A的外部引脚 1) 请求与响应信号引脚 (1) DREQ(DMA Request,输入) DREQ0DREQ3。每个通道对应一个DREQ信号 引脚,此引脚连接外设的DMA请求信号。 (2) HRQ(Hold Request,输出)8237A收到 外设接口发来DREQ信号后,如果该通道的DMA 请求没有被屏蔽,则DMA控制器的HRQ端输出 有效电平,向CPU发出总线请求。 (3) HLDA(Hold Acknowledge,输入)DMAC 向CPU发总线请求信号HRQ以后,CPU发回的总 线响应信号。 (4) DACK(DMA channel Acknowledge,输出) DACK0DACK3。这是DMAC送给I/O接口的 回答信号,每个通道对应一个DACK信号引脚。 2) DMA传送控制信号引脚(作为主模块时使用 的接口信号) (1) A0A3(Address,输入/输出) (2) A4A7(Address,输出) (3) DB0DB7(Data Bus,输入/输出) (4) ADSTB(Address Strobe,输出) (5) AEN(Address Enable,输出) (6) -IOR(I/O Read,输入/输出) (7) -IOW(I/O Write,输入/输出) (8) READY(Ready,输入) (9) -MEMR(Memory Read,输出) (10) -MEMW (Memory Write,输出) (11) -EOP(End of Process,输入/输出) 3) 与处理器连接的信号引脚(作为从模块时使用 的接 口信号) (1) RESET(Reset,输入)复位信号 (2) -CS(Chip Select,输入)片选信号 (3) A3A0(Address,输入/输出)低4位地址线 (4) -IOR (I/O Read,输入/输出)设备读信号 (5) -IOW (I/O Write,输入/输出)设备写信号 (6) DB7DB0(Data Bus,输入/输出) (7) CLK(Clock,输入)时钟信号 4) 其他信号引脚 VCC 电源,VSS地 表5.2给出了8237A引脚信号的分类(p217)。 5.4.2 8237A的传送方式和传送类型 1. 8237A的传送方式 8237A的每个通道有4种传送方式可以选择。可 以通过后面介绍的方式寄存器进行设置。 1) 单字节传送方式 在这种方式下,8237A每传送 1个字节,修改 当前字节计数器及当前地址寄存器,然后释放 系统总线,结束一次DMA传送。如果收到新的 一个DMA请求,则重新申请总线,重复上述过 程。在这种方式下,CPU可以在每个DMA周期 结束后控制总线。 2) 块传送方式 在这种方式下,DMA控制器获得总线控制权后 ,可以连续进行多个字节的传送(最多64K字节) 。只有当字节计数器减为 0,或者收到外部输 入的结束命令(从-EOP引脚输入一个低电平信号 )时,8237A才释放总线而结束传送。显然,这 种模式的数据传送速度很高。但在数据传送期 间,CPU不能访问总线。如果一次传送的数据 较多,会对系统产生一定的影响。 3) 请求传送方式 这种方式与块传送方式类似,申请一次总线可 以连续传送多个数据。与块传送方式的区别在 于每传送1个字节后,8237A都对外设接口的 DMA请求信号线DREQ进行测试,如果检测到 DREQ端变为无效电平,则马上暂停传送。当 DREQ又变为有效电平时,就继续进行下一个数 据的传送。当外设由于某种原因传送的数据不 连续时,可采用此方式。 4) 级联传送方式 几个8237A可以进行级联,一片8237A用作主片 ,其余用作从片,构成主从式DMA系统。在级 联方式下,从片收到外设接口的DMA请求信号 后,向主片发出申请,而主片再向CPU申请。 即从片的DREQ端和DACK端与外设相连;从片 的HRQ端连接至主片的DREQ端。主片的DACK 端连至从片的HLDA端。而主片的HRQ和HLDA 通过系统总线与CPU相连。一片主片最多可以 连接4片从片。 2. 8237A的传送类型 8237A提供四种类型的传送: (1) DMA写传送:指I/O设备到存储器的传送。 (2) DMA读传送:指存储器到I/O设备的传送。 (3) DMA检验 (4) 存储器到存储器传送:可通过编程设置,在这种传 送类型下,通道0的地址寄存器设置为存储器源数据区 地址。通道1的地址寄存器存放存储器目标地址,字节 计数器为传送字节数,可通过软件启动传送。传送开 始后,用4个时钟周期从存储器源地址将数据读入 8237A的内部暂存寄存器,另4个时钟周期再将暂存寄 存器的内容写入到目标地址的存储单元中。 5.4.3 8237A内部寄存器含义 8237A是一个可编程的DMA控制器芯片,内部 共有10种不同的寄存器,见表5.3(p219)。每个 寄存器都起着不同的作用,在进行DMA传送前 必须对8237A进行初始化编程,对各寄存器进 行设置以满足所要求的功能,下面分别介绍这 10种寄存器的含义。 1. 8237A通道内寄存器 1) 当前地址寄存器 2) 当前字节计数器 3) 基本地址寄存器和基本字节计数器 4) 方式寄存器 图5.19 8237A方式控制字格式 2. 8237A公用寄存器和命令 1) 控制寄存器 8237A控制寄存器用于控制8237的工作,可以 通过编程改变控制字的内容。其格式如图5.20 所示。 图5.20 8237A控制字格式 2) 状态寄存器 图5.21 8237A状态寄存器格式 3) 请求寄存器与请求命令字 图5.22 8237A请求命令字格式 4) 屏蔽寄存器 图5.23 8237A屏蔽命令字格式 图5.24 8237A综合屏蔽命令字格式 5) 主清除命令(软件复位) 软件复位命令的功能和RESET功能相同。即执 行复位命令后使控制寄存器、状态寄存器、暂 存寄存器、DMA请求寄存器以及高/低触发器复 位,屏蔽寄存器置位,同时使8237A进入空闲 周期,便于编程。 复位命令的执行是通过对端口地址为起始地址 +13的端口实施一次写操作,也就是对该端口 执行一条输出指令,与输出的具体内容无关, 即可完成对8237A的复位操作。 6) 清除高/低触发器命令 8237A内部有一个“高/低触发器”,当这个触发 器为0时,与16位寄存器的低字节进行数据通信 ;为1时,访问高字节。 每访问一次16位寄存器后,能自动翻转,0变1 或1变0。 在写入存储器起始地址到基本、当前地址寄存 器,以及写入基本、当前字节计数器初值之前 ,应将这个触发器清0,然后就可以按照先低后 高的字节顺序写入初值。 5.4.4 8237A的应用编程 18237A端口地址及通道分配 8273A端口地址及通道分配见表5.4(p224)。 2. 8237A的编程步骤 对8237A编程的一般步骤如下: (1) 输出主清除命令。 (2) 清除高/低触发器。 (3) 写入存储器起始地址(先写低字节,后写高字节)。 (4) 写入传送的字节数,其值为传送的字节数减1(先写 低字节,后写高字节)。 (5) 写控制字,设置8237A的工作方式。 (6) 写方式字,设置使用通道的工作方式。 (7) 对该通道的屏蔽位进行清除。 (8) 启动外部设备,如果是内存到输出设备,用软件设 置第一次DMA请求。 3. 应用举例 在IBM-PC/XT微型机中,8237A占据00H0FH 共16个端口地址。 对8237A控制器的4个通道安排如下: (1) CH0:用在系统板上,作为动态存储器的刷 新控制。 (2) CH1:用于扩展选件上,为用户预留的DMA 通道。 (3) CH2:用于扩展选件上,作为软盘驱动器数 据传送用的DMA控制。 (4) CH3:用于扩展选件上,作为硬盘驱动器数 据传送用的DMA控制。 对于IBM-PC系列微型计算机,它的8237A通道0 、2、3已分配使用,而且在开机时已对8237A 作了初始化。在这种情况下,不允许再对它重 新初始化和重新设置控制字,也不允许修改屏 蔽寄存器。只允许对通道1进行设置。 DMAC8237A只能向存储器提供16位地址值即 A15A0。而8086/8088系统的存储器需要20位 地址值即A19A0。在有些系统中,高4位地址 A19A16由页面地址寄存器提供,通道1的页面 地址寄存器的输入端口号为83H。 【例5.1】假设用系统板上的8237A通道1,将 内存起始地址为02000H的300H字节内容直接输 出给外部设备,DMA端口地址从00H到0FH。 程序如下: MOV AL,4;控制字,禁止8237A工作 OUT 08,AL ;写控制寄存器 MOV AL,0 OUT 0DH,AL;主清除,同时清除高/低触发器 OUT 02,AL ;写低位地址00H MOV AL,20H OUT 02,AL;写高位地址20H MOV AL,0;页面地址为0 OUT 83H,AL;写入页面地址寄存器 MOV AX,300H;传输字节数 DEC AX OUT 03,AL;写字节数低位 MOV AL,AH OUT 03,AL;写字节数高位 MOV AL,49H;方式字:单字节读,地址加1 OUT 0BH,AL MOV AL,40H;控制字:DACK和DREQ低电平有效, ;启动8237A工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论