微机原理与接口技术学习笔记 数据传送的控制方

发布日期:2018-05-23 12:28:39 编辑整理:天津自考网 【字体: 】   【自考招生老师微信】
立即购买

《自考视频课程》名师讲解,轻松易懂,助您轻松上岸!低至199元/科!

在计算机的操作中最基本和最频繁的操作是数据传送,在微机系统中,数据主要在CPU、内存和I/O接口之间传送,在传送过程中,关键问题是数据传送的控制方式,按照I/O控制组织的演变顺序以及外设与主机并行工作的程度,微机系统中数据传送的控制方式主要有两种,即程序控制方式和DMA(直接存储器存取)方式。

 

    4.2.1  程序控制传送方式

 

    程序控制的数据传送分为无条件传送、查询传送和中断传送,这类传送方式的特点是,以CPU为中心,数据传送的控制来自CPU,通过预先编制好的输入或输出程序(传送指令和I/O指令)实现数据的传送。这种传送方式的数据传送速度较低,传送路径要经过CPU内部的寄存器,同时数据的输入输出的响应也较慢。

 

    1.无条件传送方式

    又称“同步传送方式”。主要用于外设的定时是固定的而且是已知的场合,外设必需在微处理器限定的指令时间内准备就绪,并完成数据的接收或发送。通常采用的办法是:把I/O指令插入到程序中,当程序执行到该I/O指令时,外设必定已为传送数据做好了准备,于是在此指令时间内完成数据传送任务。无条件传送是最简便的传送方式,它所需的硬件和软件都较少。

    一个无条件传送的例子如图4-4所示。这是一个同步传送的数据采集系统,图中U5为继电器(U5a为继电器的8个控制触点,U5b为继电器的8个线圈),继电器线圈PO、P1、…P7控制8个触点K0、K1、…、K7逐个接通,对8个输入模拟量进行采样,采样输入之模拟量送入一个4位10进制数字电压表U1测量,把被采样的模拟量转换成16位BCD码(4位10进制数),高8位和低8位通过两个8位端口U2(端口地址为llH和U3(端口地址为10H)送上系统的数据总线,CPU通过IN指令读入转换后的数字量。至于究竟采集哪一通道的模拟量,则由CPU通过U4(端口地址为20H)输出控制信号,以控制继电器线圈PO~P7中电流的通断,继而控制继电器触点KO~K7的吸合,以实现对不同通道模拟量的采集(“0”使线圈P电流“断”,“1”使线圈P电流“通”)。

 
图4-4 无条件传送

    以下程序可以用来实现图4-4电路的数据采集。

   START:MOV DX,0100H       ;01→DH,设置闭合第一个继电器代码

                              ;00→DL,设置断开所有继电器代码

          LEA BX,DSTOR       ;输入数据缓冲区的地址偏移量→BX

          XOR AL,AL          ;清AL及进位标志

   AGAIN:MOV AL,DL

          OUT 20H,AL         ;断开所有继电器线圈

          CALL NEAR DELAY1    ;模拟继电器触点的释放时间

          MOV AL,DH

          OUT 20H,AL         ;使PO吸合

          CALL NEAR DELAY     ;模拟触点闭合及数字电压表的转换时间

          IN AX,10H          ;输入

          MOV [BX],AX

          INC BX

          INC BX

          RCL DH,1           ;DH左移一位,为下一个触点闭合作准备

          JNC AGAIN           ;8个模拟量未输入完,循环此段程序

 

    2.查询传送方式

    又称“异步传送方式”。当CPU同外设工作不同步时,很难确保CPU在执行输入操作时,外设一定是“准备好”的;而在执行输出操作时,外设寄存器一定是“空”的。这样为保证数据传送的正确进行,提出了查询传送方式。当采用这种方式传送前,CPU必须先对外设进行状态检测。完成一次传送过程的步骤如下:

    (1)通过执行一条输入指令,读取所选外设的当前状态。

    (2)根据该设备的状态决定程序去向,如果外设正处于“忙”或“未准备就绪”,则程序转回重复检测外设状态,如果外设处于“空”或“准备就绪”,则发出一条输入购出指令,进行一次数据传送。

    一个查询传送的例子如图4-5所示。这是一个采用模/数转换器(A/D转换器)对8个模拟量IN0~IN7采样的数据采集系统。8个输入模拟量经过多路开关U5选择后送入A/D转换器 U1,多路开关U5由控制端口U4(端口地址为04H)输出的三位二进制码(对应于b2b1b0位)控制,当b2b1b0=000时选通IN0输入A/D转换器,…b2b1b0=1ll时选通IN7输入A/D转换器,每次只送出一路模拟量到A/D转换器。同时,由控制端口U4的b4位控制A/D转换器的启动(b4=1)与停止(b4=0)。当A/D转换器完成转换后,READ端输出有效信号(高电平)经过状态端口U2(端口地址为02H)的b0位输入到CPU的数据总线。然后,经A/D转换后的数据由数据端口 U3(端口地址为 03H)输入CPU的数据总线。该数据采集系统中,采用了三个端口——数据口U3、控制口U4和状态口U2。


图4-5 查询传送

    根据上述要求,可编写如下数据采集程序:

    START:MOV DL,OF8H          ;设置启动A/D转换的信号

           MOV DI,OFFSET DSTOR  ;输入数据缓冲区的地址偏移量→DI

    AGAIN:MOV AL,DL

           AND AL OEFH           ;使D4=0

           OUT 4,AL             ;停止A/D转换

           CALL DELAY            ;等待停止A/D操作的完成

           MOV AL,DL

           OUT 4,AL             ;启动A/D,且选择模拟量IN0

    POLL: IN AL,2              ;输入状态信息

           SHR AL,1

           JNC POLL              ;若未READY,程序循环等待

           IN AL,3              ;否则,输入数据

           STOSB                 ;存至内存

           INC DL                ;修改多路开关控制信号,指向下一个模拟量

           JNE AGAIN             ;8个模拟量未输入完,循环

            …  

                                 ;已完,执行别的程序段

    3.中断传送方式

    无条件传送和查询传送的缺点是:CPU和外设只能串行工作,各外设之间也只能串行工作。为了使CPU和外设以及外设和外设之间能并行工作,以提高系统的工作效率,充分发挥CPU高速运算的能力,在计算机系统中引入了“中断”系统,利用中断来实现CPU与外设之间的数据传送,这就是中断传送方式。

    在中断传送方式中,通常是在程序中安排好在某一时刻启动某一台外设,然后CPU继续执行其主程序,当外设完成数据传送的准备后,向CPU发出“中断请求”信号,在CPU可以响应中断的条件下,现行主程序被“中断”,转去执行“中断服务程序”,在“中断服务程序” 中完成一次CPU与外设之间的数据传送,传送完成后仍返回被中断的主程序,从断点处继续执行。

    采用中断传送方式时,CPU从启动外设直到外设就绪这段时间,一直仍在执行主程序,而不是像查询方式中处于等待状态,仅仅是在外设准备好数据传送的情况下才中止CPU执行的主程序,在一定程度上实现了主机和外设的并行工作。同时,如果某一时刻有几台外设发出中断请求,CPU可以根据预先安排好的优先顺序,按轻重缓急处理几台外设同CPU的数据传送,这样在一定程度上也可实现几个外设的并行工作。

    (1)中断控制电路。在采用中断传送方式的I/O接口中,通常要采用中断控制电路来实现中断控制,该控制电路必须实现如下功能:

    ①能控制多个中断源(采用中断方式的I/O设备)实现中断传送,即任一个中断源提出中断请求,该中断控制电路必须都能向CPU发出中断请求信号;

    ②能对多个中断源同时发出的中断请求进行优先级判别;

    ③能实现中断嵌套;

    ④能提供对应中断源的中断类型码(用以指示中断服务程序的入口地址,见4.3节)

    目前常用的中断控制器中,常采用如图4-6所示的编码器和比较器组成的中断优先级排队电路来实现上述功能。

    该电路的工作过程如下;

    设有8个中断源,当任何一个有中断请求时,通过“或”门,即可产生一个中断请求信号,但它能否送至CPU的中断请求线,还必须受比较器的控制。

    8条中断输入线的任何一条,经过编码器可以产生三位二进制优先级编码A2A1A0,优先级最高的中断输入线的编码为111,优先级最低的中断输入线的编码为000,而且若有多个中断输入线同时输入,则编码器只输出优先级最高的编码。

    正在进行中断处理的外设的优先级编码,由CPU通过软件,经数据总线送至优先级寄存器,然后输出编码B2B1B0至比较器。

    比较器对编码A2A1A0与B2B1B0的大小进行比较。若A≤B,则“A>B”端输出低电平。封锁与门1,禁止向CPU发出新的中断请求;只有当A>B时,比较器输出端才为高电平,打开与门1,将中断请求信号送至CPU的INT输入端,当CPU响应中断后,就中断正在进行的中断服务程序,转去执行优先级更高的中断服务程序。

    若CPU不在执行中断服务程序时(即在执行主程序),则优先级失效信号为高电平,此时如有任一中断源请求中断,都能通过与门2,向CPU发出INT信号。

 

    当外设的个数≤8时,它们公用一个产生中断向量的电路,该电路有三位比较器的编码A2A1A0供给。据此不同的编码,即可转入不同的入口地址。
    图中IRR为中断请求寄存器、IMR为中断屏蔽寄存器,其作用见4.4节。

    (2)中断传送方式的接口电路。中断传送方式的接口电路如图4-7所示。这是一个输入接口电路。当输入设备准备好一个数据后,发出选通信号STB,该信号一路送数据锁存器U1,使输入设备的8位数据送入锁存器U1;另一路送中断请求触发器U2,将U2置“1”,若系统允许该设备发出中断请求,则中断屏蔽触发器U3已置“l”,从而通过与门U7向CPU发出中断请求信号INTR。若无其它设备的中断请求,在CPU开中的情况下,则在现行指令结束后,CPU响应该设备的中断请求,执行中断响应总线周期,发出中断响应信号INTA,要求提出中断请求的外设把一个字节的中断类型码送上数据总线,然后CPU根据该中断类型码转而去执行中断服务程序,读入数据(通过IN指令,打开三态缓冲器U4),同时复位中断请求触发器U2。中断服务完成后,再返回被中断的主程序。

 

    4.2.2  DMA(直接存储器存取)传送方式

    当某些外设,诸如磁盘、CRT显示器、高速模数转换器等要求高速而大量地传送数据时,采用程序控制方式来传送数据往往无法满足速度的要求,就拿程序控制方式中传送速度

 

最快的中断方式而言,每传送一个字节(或一个字)就得把主程序停下来,转而去执行中断服务程序,在执行中断服务程序前要做好现场保护,执行完中断服务程序后还得恢复现场。由于在程序控制方式中数据传送过程始终受CPU的干预,CPU都需要取出和执行一系列指令,每一字节(或字)数据都必需经过CPU的累加器才能输入输出,这就从本质上限制了数据传送的速度。为此提出了在外设和内存之间直接地传送数据的方式,即DMA传送方式。
    DMA(Direct Memory Access)是一种不需要 CPU干预也不需要软件介入的高速数据传送方式。由于CPU只启动而不干预这一传送过程,同时整个传送过程只由硬件完成而不需软件介入,所以其数据传送速率可以达到很高。在DMA传送方式中,对这一数据传送过程进行控制的硬件称为DMA控制器(DMA)。

 

    1.DMA操作的基本方法

    DMA操作的基本方法有三种:

    (1)周期挪用(Cycle stealing)。利用CPU不访问存储器的那些周期来实现DMA操作,此时,DMAC可以使用总线而不用通知CPU也不会妨碍CPU的工作。这种方法的关键是如何识别合适的可挪用的周期,以避免同CPU的操作发生重叠。有的CPU能产生一个表示存储器是否正在被使用的信号(例如M6800的VMA),有的 CPU则规定在特定状态下(例如Inte18080的T4、T5状态)不访问存储器,此时就可用于实现DMA操作。周期挪用并不减慢CPU的操作,但可能需要复杂的时序电路,而且数据传送过程是不连续的和不规则的。

    (2)周期扩展。使用专门的时钟发生器/驱动器电路,当需要进行DMA操作时,由DMA发出请求信号给时钟电路,时钟电路把供给CPU的时钟周期加宽,而提供给存储器和DMAC的时钟周期不变。这样,CPU在加宽时钟周期内操作不往下进行,而这加宽的时钟周期相当于若干个正常的时钟周期,可用来进行DMA操作。加宽的时钟结束后,CPU仍按正常的时钟继续操作。这种方法会使CPU的处理速度减慢,而且CPU时钟周期的加宽是有限制的。因此用这种方法进行DMA传送,一次只能传送一个字节。

   (3)CPU停机方式。在这种方式下,当DMA要进行DMA传送时,DMAC向CPU发出DMA请求信号,迫使CPU在现行的总线周期(机器周期)结束后,使其地址总线、数据总线和部分控制总线处于高阻态,从而让出对总线的控制权,并给出DMA响应信号。DMA接到该响应信号后,就可以控制总线,进行数据传送的控制工作,直到DMA操作完成,CPU再恢复对总线的控制权,继续执行被中断的程序。注意,采用这种方法进行的DMA传送期间,CPU处于空闲状态,会降低CPU的利用率,而且会影响CPU对中断(包括不可屏蔽中断)的响应和动态hAM的刷新,这是需要加以考虑的。但在实际应用中,这是最常用、最简单的传送方式,大部分DMA都采用这种方式。

 

    2.DMA的传送方式

    通常,大部分DMA都有三种DMA传送方式:

    (1)单字节传送方式。每次DMA传送只传送一个字节的数据,传送后释放总线由CPU控制总线至少一个完整的总线周期。以后又测试DMA请求线DREQ,若有效,再进入DMA周期。在这种方式中要注意:①在DMA响应信号DACK有效前,DREQ必须保持有效;②若DREQ在传送过程中一直保持有效,在两次传送之间也必需释放总线。

    (2)成组传送方式。一个DMA请求可以传送一组信息,这一组信息的字节数由编程决定(在DMA初始化时),只要在DACK有效之前DRFQ保持有效即可。一旦DACK有效,不管DREQ是否有效,DMA一直不放弃总线控制权,直到整个数组传送完。

    (3)请求传送方式。又称查询传送方式。该方式的传送类似于成组传送方式,但每传送一个字节后,DMA就检测DRFQ,若无效,刚挂起;若有效,继续DMA传送,直到:①一组信息传送结束;②外加信号强制DMA中止操作。

 

    3.DMAC(DMA控制器)的基本功能

    在DMA操作中,DMAC是控制存储器和外设之间高速传送数据的硬件电路,是一种完成直接数据传送的专用处理器,它必需能够取代CPU和软件在程序控制传送中的各项功能,因此DMA应该具有如下功能:

    (1)能接受外设的DMA请求信号DREQ,并能向外设发出DMA响应信号DACK;

    (2)能向CPU发出总线请求信号(HOLD或BUSRQ),当CPU发出总线响应信号(HLDA或BUSAK)后能接管对总线的控制权,进入DMA方式;

    (3)能发出地址信息,对存储器寻址并修改地址指针;

    (4)能发出读、写等控制信号,包括存储器访问信号和I/O访问信号;

    (5)能决定传送的字节数,并能判断DMA传送是否结束;

    (6)能发出DMA结束信号,释放总线,使CPU恢复正常工作。

    具有上述功能的DMA工作示意图如图4-8所示。

    该电路的工作过程如下:当输入设备准备好一个字节数据时,发出选通脉冲STB,该信号一方面选通“数据缓冲寄存器”U2,把输入数据通过U2送入“锁存器”U3;另一方面将“DMA请求触发器” U1置“1”,作为锁存器U3的准备就绪信号READY,打开锁存器U3,把输入数据送上数据总线;同时DMA请求触发器U1向DMA发出DMA请求信号。然后,DMA向CPU发出HOLD(总线请求)信号,CPU在现行总线周期结束后给予响


 图4-8 DMA工作示意图

应,发出HLDA信号,DMAC接到该信号后接管总线控制权,发出DMA响应和地址信息,并发出存储器写命令,把外设输入数据(经缓冲器U2、锁存器U3暂存在系统数据总线上)写到内存,然后修改地址指针,修改计数器、检查传送是否结束,若未结束,则循环传送直至整个数据块传送完。在整个数据传送完后,DMA撤除总线请求信号HOLD。在下一个T周期的上升沿,使HLDA变为无效。上述过程如图4-9的波形图所示。


图4-9 DMA工作过程波形图

以上是“微机原理与接口技术学习笔记 数据传送的控制方”的全部内容,关于更多天津自考资讯,请关注《天津自考网微信公众号》或者点击在线咨询 >>

本文标签:天津自考 串讲笔记 微机原理与接口技术学习笔记 数据传送的控制方

转载请注明:文章转载自(http://www.zikaotj.com

本文地址:http://www.zikaotj.com/cj/8736.html



《天津自考网》免责声明:

1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。

2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:812379481@qq.com。

天津自考便捷服务