欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    微型计算机原理与接口技术第二版刘彦文等第5章.ppt

    • 资源ID:5293735       资源大小:6.30MB        全文页数:133页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微型计算机原理与接口技术第二版刘彦文等第5章.ppt

    第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;置采集次数MOVBX,2000H;置存放温度值首地址LOOPAINAL,40H;取温度值 MOVBX,AL;存入内存 INCBX;修改内存偏移地址CALL DELAY;调用延时子程序 DECCL;修改采集次数 JNZLOOPA;未采完返回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 PROCINOUTINPUT1:,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超过了255OUT 200H,AX;地址200H超过了255对于上述2条指令,必须先把地址送入DX:MOV DX,100HIN AL,DXMOV DX,200HOUT 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位端口地址,范围为0255IN AX,PORT8;输入指令,从端口PORT8,PORT8+1;读入2字节数据IN AL,DX;DX内容作为I/O端口地址,范围为065535IN AX,DX;DX内容作为I/O端口地址,范围为065535OUT 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,20HOUT 02,AL;写高位地址20HMOV AL,0;页面地址为0OUT 83H,AL;写入页面地址寄存器MOV AX,300H;传输字节数DEC AXOUT 03,AL;写字节数低位MOV AL,AHOUT 03,AL;写字节数高位,MOV AL,49H;方式字:单字节读,地址加1 OUT 0BH,ALMOV AL,40H;控制字:DACK和DREQ低电平有效,;启动8237A工作OUT 08H,AL;普通时序,固定优先级MOV AL,01;清除通道1屏蔽OUT 0AH,AL WAITF:IN AL,08;读通道1状态AND AL,02;传输完成否JZ WAITF;没完成则等待MOV AL,05;完成后屏蔽通道1OUT 0A,AL,【例5.2】编写用8237A实现存储器至存储器传送数据的程序,把从物理地址12000H开始的1000字节传送到从物理地址34000H开始的数据区。解:数据块从存储

    注意事项

    本文(微型计算机原理与接口技术第二版刘彦文等第5章.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开