第6章 输入输出技术_第1页
第6章 输入输出技术_第2页
第6章 输入输出技术_第3页
第6章 输入输出技术_第4页
第6章 输入输出技术_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

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

文档简介

第6章输入输出技术

6.1外设接口的基本模型6.2程序控制I/O方式6.3中断方式6.4直接存贮器存取(DMA)方式

6.1外设接口的基本模型

1.应答联络大多数外设与计算机进行信息交换时都需要事先进行联络,只有双方建立好联络关系(即握手成功)之后,双方才能进行信息交换。例如,欲将计算机内部的数据输出给外设,常规的工作过程为:首先由CPU读外设与系统连接的状态端口,获得外设的工作状态,CPU根外设状态决定输出数据的时刻。图6.1外设接口基本模型2.端口地址当计算机系统中有多个外设时,CPU在某个时刻只能与一个外设打交道。为了确定此刻哪一个外设可以与计算机打交道,采取与内存同样的处理方法,利用二进制编码为外设编号,该编号被称为外设地址(又称I/O地址),也即通过外设地址来识别不同的外设。3.输入输出方法外设与计算机间的信息交换可以用不同的输入输出方法完成。基本的输入输出方法有:程序控制I/O方式(无条件传送方式与查询方式)、中断方式、直接存贮器存取(DMA)方式。

6.2程序控制I/O方式

6.2.1无条件传送方式所谓无条件传送方式是指可以在需要的时刻让CPU直接与外设进行输入输出操作,也即CPU仅需要通过I/O指令即可由接口获取外设数据或为外设提供数据。这种方式的实现很简单,硬件上只需要提供CPU与外设连接的数据端口,而软件上则只提供相应的输入或输出指令即可。1.输入接口设计对于简单的输入设备,在硬件上只需要设计一个数据输入接口即可以将该外设与CPU连接起来。实现数据输入接口的器件可选用三态门,如74LS244。图6.2开关K与微机系统连接的接口电路如果希望完成如下任务:当开关接通时,CPU执行程序段ON;当开关断开时,CPU执行程序段OFF。下述指令的执行可以完成该任务:

MOVDX,0FFF7HINAL,DXANDAL,01HJZON;假定程序段ON与本程序段在同一内存段中

JMPOFF图6.3三态门作为数据输入接口的一般连接模式2.输出接口设计作为无条件传送方式实现数据输出的例子,下面给出CPU对发光二极管的控制。图6.4为发光二极管与微机系统连接的接口电路。锁存器作为发光二极管与微机系统数据总线连接的中间接口,接收来自CPU的输出数据。当锁存器的CP端出现上升沿信号时,数据总线上的数据被锁存于锁存器内部并输出。图6.4发光二极管与微机系统连接的接口电路反相器对锁存器起保护作用,当发光二极管发亮时,反相器提供足够大的吸入电流,以保护锁存器不受损坏。对于图中电路,CPU执行下述指令可以使两个发光二极管发亮:

MOVDX,0000HMOVAL,81HOUTDX,AL而CPU执行下述指令可以使两个发光二极管不发亮:

MOVDX,0000HMOVAL,00HOUTDX,AL图6.5锁存器作为数据输出接口的一般连接模式6.2.2查询方式1.查询方式的实现当外设已处于准备好数据的状:①在中断处理程序中要有开中断指令。

②要设置足够大的堆栈。

③要正确地操作堆栈。

图6.6典型的查询方式工程流程图6.7查询方式实现I/O传送示例

(a)外设与微机接口电路;(b)外设工作时序DAOUT:MOVAX,0D200HMOVDS,AXMOVBX,0;初始化内存首地址

MOVCX,1000;初始化计数器

MOVDX,02F9HMOVAL,01HOUTDX,AL;初始化选通信号NEXT:MOVDX,02FAHWAT:INAL,DXANDAL,80HJNZWAT;状态查询环

MOVDX,02F8HMOVAL,OUTDX,AL;数据输出

MOVDX,02F9HMOVAL,00HOUTDX,AL图6.8几种轮询控制流程CALLDLY100μs;DLY100μs为100μs的延迟子程序MOVAL,01HOUTDX,AL;产生选通信号INCBX;修改内存指针LOOPNEXT;输出次数的循环控制RET2.多外设的查询控制在微机系统中,希望以查询方式与微机进行信息交换的外设可能有多个。查询方式是一种同步机制,它以轮询的方式依次对各个外设进行服务。轮询的顺序确定了外设的优先级,而轮询的顺序又是根据外设的重要性确定。通常是相对重要的和速度快的外设先被查询、服务,而相对不重要的和速度慢的外设后被查询、服务。6.3中断方式

6.3.1中断概念所谓中断是指某事件的发生引起CPU暂停当前程序的运行,转入对所发生事件的处理,处理结束又回到原程序被打断处接着执行这样一个过程。

1.中断源2.中断过程中断方式的实现一般需要经历下述过程:中断请求—→中断响应—→断点保护—→中断源识别—→中断服务—→断点恢复—→中断返回1)中断请求①信号形式应满足CPU要求。②中断请求信号应被有效地记录,以便CPU能够检测到它。③一旦CPU对某中断源的请求提供了服务,则该中断源的请求信号应及时撤消。2)中断响应

CPU对内部中断源提出的中断请求必须接受,而对外部中断源提出的中断请求是否响应取决于外中断源类型及响应条件。不同的微机对可屏蔽中断请求有不同的响应条件,8086(88)系统的响应条件为:①指令执行结束;②CPU处于开中断状态(即IF=1);③没有发生复位(RESET)、保持(HOLD)和非屏蔽中断请求(NMI);④开中断指令(STI)、中断返回指令(IRET)执行完,需要再执行一条指令,才能响应INTR请求。图6.9微机系统中实现中断的基本模型图6.10有中断产生的情况下CPU运行程序的轨迹3)断点保护4)中断源识别常用的中断源识别方法有:①软件查询法。

②中断矢量法。

6)断点恢复7)中断返回3.中断优先级及嵌套图6.11中断源识别的软件查询法(a)硬件接口;(b)软件查询流程①不同优先级的多个中断源同时提出中断请求时,CPU应首先响应最高优先级的中断源提出的请求;②CPU正在对某中断源服务时,若有优先级更高的中断源提出请求,则CPU应对高优先级的中断作出响应,即高优先级的中断请求可以中断低优先级的中断服务。目前采用的解决中断优先级控制的方案有:①软件查询。

②硬件链式优先级排队电路。③硬件优先级编码比较电路。④利用可编程中断控制器(PIC)。

图6.12中断嵌套示意图6.3.2中断系统1.8086(88)中断系统8086(88)中断系统可以容纳最多256个中断源,所有中断源统一编码,每个中断源用一个字节型编码标识,该编码称为中断向量码,它是CPU识别中断源的标记。1)中断源类型256个中断源分为两大类:(1)内部中断它由CPU内部事件及执行软中断指令产生。已定义的内部中断有:①除法错中断。②单步中断。③断点中断。④溢出中断。⑤软件中断。(2)外部中断它是由外部中断源产生对CPU的请求而引发的。8086(88)中断系统将外部中断源又分为两种。①非屏蔽中断。②可屏蔽中断。2)中断响应过程在8086(88)系统中,中断控制是由CPU与中断控制器共同完成的,这使得中断过程简化:①中断请求;②中断响应;③中断处理:图6.13中断响应过程图6.14中断响应时CPU查询中断源的顺序3)中断向量表8086(88)微机系统在内存的最低端开辟了1KB的存贮区作为中断向量表。该表以四字节为一组构造而成,共分为256组,按中断向量码的序号排列,如图6.15所示。图6.15中断向量表2.80386(Pentium)中断系统

Pentium及80386、80486,在程序运行过程中由于某种事件的发生而迫使处理器暂停该程序的运行,转去对事件进行处理,待事件处理完以后,再回到原程序接着原状态继续运行。1)分类在80286以后的处理器中均将广义中断分为中断和异常两大类。(1)中断由外部事件引起的中断称为外部中断。表6.1中断及其向量码2)中断或异常的响应过程(1)优先级80386之后的处理器有许多中断和异常发生,它们的优先级如表6.2所示。表6.2中断和异常的优先级(2)实地址模式下的响应过程

Pentium在实地址模式下对中断或异常的响应过程与8086(88)的十分相似,但更加灵活。①获得向量码。②进行断点保护。③获得查表值。查表值=基地址+中断向量码×4

图6.16实模式下中断向量表图6.17保护模式下的中断描述符表图6.18错误码格式3)保护模式下中断响应过程在保护模式下,每个中断源或每个异常都事先构造好自己的中断描述符。①中断描述符表。②错误码。③响应过程。(i)由IDTR的基地址和中断向量码、处理器计算出查表值:查表值=基地址+中断向量码×8(ii)由中断描述符中规定的选择符,在GDT(全局描述符表)或LDT(局部描述符表)中查到代码段描述符。(iii)由段描述符取出基地址(线性基地址),将其与中断描述符中的偏移量结合在一起,构成中断服务程序的入口地址,即:中断服务入口=段线性基地址+偏移量

(iv)断点保护。

图6.19中断响应过程图6.20核心堆栈保存的断点信息6.3.3中断控制器82591.8259内部结构8259内部结构如图6.21所示,它的工作过程如下:①中断请求输入端IR0~IR7接收外部中断源的请求信号;②外部中断源的请求状态锁存在中断请求寄存器IRR(8位)的相应位(即置1),并与中断屏蔽寄存器IMR(8位)相“与”,送给优先级判决电路;

④控制电路接收到中断请求有效信号后,向CPU输出INT信号;⑤CPU接受INT信号,在中断允许(IF=1)的情况下,发出响应信号;⑥8259接收信号,在第1个INTA周期,先设置ISR的相应位,并恢复IRR的相应位,然后,主控8259送出级联地址CAS0~CAS2加载至从属8259上;⑦单独使用的8259或是由CAS0~CAS2选择的从属8259,在第2个INTA周期,将中断向量码输出至数据总线;⑧CPU读取中断向量码,转移到相应的中断处理程序;⑨中断结束时,通过在中断处理程序中向8259送一条EOI(中断结束)命令,使ISR相应位复位;或8259选择自动结束中断方式时,由8259在第2个信号的后沿自动将ISR相应位复位。图6.218259内部结构图2.8259引脚功能8259是具有28个引脚的集成芯片,如图6.22所示,各引脚功能如下:

D0~D7:双向数据线,与系统数据总线相连,接收CPU发来的命令字,给CPU提供中断向量码与内部寄存器状态。

A0:地址输入线,与系统地址总线中某位相连,用来选择8259内部寄存器。:片选输入信号,由系统中地址译码器控制,低电平有效。:写和读控制信号,输入,与系统控制总线中的(外设写)和(外设读)信号相连。

INT:中断请求输出信号,可接入CPU的INTR引脚。:中断响应输入信号,接收CPU送出的

信号。

CAS0~CAS2:级联地址,在8259级联时使用。:双功能线。

IR0~IR7:中断请求输入端,接收可屏蔽中断源的请求信号,信号形式可以是上升沿,也可以是高电平。图6.228259引脚图3.8259工作方式1)中断结束方式(1)非自动结束方式①一般中断结束命令(EOI)。②特殊中断结束命令(SEOI)。(2)自动结束方式2)缓冲方式①非缓冲方式。②缓冲方式。

3)嵌套方式①一般嵌套方式。②特殊全嵌套方式。4)屏蔽方式屏蔽方式也是用于8259进行优先级控制的,它也有两种形式:①一般屏蔽方式。②特殊屏蔽方式。5)优先级规定①固定优先级。

②循环优先级。

4.8259命令字1)初始化命令字初始化命令字用于初始设定8259的工作状态。①ICW1。规定8259的连接方式(单片或级联)与中断源请求信号的有效形式(边沿或电平触发)。命令字格式如图6.23所示,利用A0=0,D4=1寻址。②ICW2。③ICW3。

图6.23ICW1格式图6.24ICW2格式图6.25ICW3格式图6.26ICW4格式2)操作命令字①OCW1。

②OCW2。

③OCW3。

图6.27OCW1格式图6.28OCW2格式图6.29OCW3格式5.8259级联1)级联结构8259采用两级级联,级联结构如图6.30所示。

2)级联方式下8259的中断响应3)级联方式下8259的特殊操作有几项操作应该特别注意:①初始化时,主控器与从属器的ICW3应以不同格式填写;主控器的嵌套方式必须选择为特殊全嵌套方式,从属器的嵌套方式必须选择为一般嵌套方式。②当结束来自从属8259的中断时,中断处理程序中要发送两个EOI命令,一个发给相关的从属8259(由I/O地址确定),一个发给主控8259。图6.308259级联结构6.3.4中断方式的实现1.连接8259表6.38259内部寄存器的寻址控制方式图6.318259在系统中的连接2.编写中断初始化程序1)初始化8259因为8259的内部寄存器寻址与命令字的写入顺序有关,所以,对8259的初始化一定要按规定的顺序进行,见图6.32所示。下面是一段对8259初始化的程序(假定8259连接电路如图6.31所示,占用的I/O地址为FF00H和FF02H):SET59A:MOVDX,0FF00H;8259的地址A0=0

MOVAL,13H;写ICW1,边沿触发,单片,需要ICW4OUTDX,ALMOVDX,0FF02H;8259地址A0=1MOVAL,48H;写ICW2,设置中断向量码OUTDX,ALMOVAL,03H;写ICW4,8086/88模式,自动EOI,非缓冲,一般嵌套OUT

DX,ALMOVAL,0E0H;写OCW1,屏蔽IR5、IR6、IR7(假定这3个中断输入未用)OUTDX,ALMOVAL,0OUTDX,AL;写OCW1,将00H写入IMRINAL,DX;读IMRORAL,AL;判断IMR内容为00H否JNZIMRERRMOVAL,0FFHOUTDX,ALINAL,DXADDAL,1JNZIMRERR图6.328259的初始化顺序

CPU对8259的IMR读出时,可利用I/O地址直接寻址,而要读出ISR、IRR或中断状态寄存器时,则需要先设置命令字OCW3。下面是CPU读出ISR内容的一段程序:

MOVDX,0FF00H;8259的地址A0=0MOVAL,0BHOUTDX,AL;写OCW3INAL,DX;读出ISR内容放入AL中2)设置中断向量表①直接写中断向量表。利用写指令,直接将中断处理程序的首地址写入内存地址为4*n的区域中。程序如下:

INTITB:MOVAX,0MOVDS,AX;将内存段设置在最低端

MOVSI,0120H;n=48H,4*n=120HMOVAX,OFFSETCLOCK;获取中断处理程序首地址之段内偏移地址

MOV[SI],AX;段内偏移地址写入中断向量表4*n地址处

MOVAX,SEGCLOCK;获取中断处理程序首地址之段地址

MOV[SI+2],AX;段地址写入中断向量表4*n+2地址处②利用DOS功能调用。若系统运行在DOS环境下,可利用DOS功能调用设置中断向量表,调用格式为:功能号25H→AH

中断向量码→AL

中断处理程序首地址之段地址:偏移地址→DS:DXINT21H程序如下:MOVAH,25HMOVAL,48HMOV

DX,SEGCLOCKMOVDS,DXMOVDX,OFFSETCLOCKINT21H3.编写中断处理程序1)中断嵌套8086(88)中断系统将所有中断源分为三类,即INT、NMI及

INTR,并规定CPU对INT与NMI图6.33可嵌套的中断处理程序流程2)改变中断优先级在中断处理程序中写进如下一段程序,可实现在该中断处理程序结束后将IR7定义为优先级最高:

MOVDX,0FF00H;8259的地址A0=0MOVAL,0C6H;设置指定(特殊)循环优先级及OCW2寻址信息

OUTDX,AL;写OCW2蔽方式的设置用下述指令完成:

MOVDX,0FF00H;8259的地址A0=0MOVAL,68H;设置特殊屏蔽方式(SMM=1)及OCW3寻址信息OUTDX,AL;写OCW3…MOVDX,0FF00H;8259的地址A0=0MOVAL,48H;设置SMM=0及OCW3寻址信息OUTDX,AL;写OCW33)产生EOI命令例如,当来自8259中断输入端IR6的中断请求被CPU响应时,8259自动设置ISR的数据位D6为1(即ISR6=1)。在IR6中断处理程序中,CPU执行以下指令,产生对8259的一般EOI命令:

MOVDX,0FF00H;8259的地址A0=0MOVAL,20H;设置一般EOI命令

OUTDX,AL;写OCW2图6.34特殊屏蔽方式示意图4)举例CLOCKPROCFARPUSHAXPUSHSIMOVAX,SEGTIMERMOVDS,AXMOVSI,OFFSETTIMERMOVAL,[SI];取50次计数

INCALMOV[SI],ALCMPAL,50;判断1s到否?JNETRNEDMOVAL,0MOV[SI],ALMOVAL,[SI+1];取60s计数ADDAL,1DAAMOV[SI+1],ALCMPAL,60H;判断1min到否?JNETRNEDMOVAL,0MOV[SI+1],ALMOVAL,[SI+2];取60min计数ADDAL,1DAAMOV[SI+2],ALCMPAL,60H;判断1h到否?JNETRNEDMOVAL,0MOV[SI+2],ALMOVAL,[SI+3];取小时计数ADDAL,1DAA

MOV[SI+3],ALCMPAL,24H;判24h到否

JNETRNEDMOVAL,0MOV[SI+3],ALTRNED:POPSI

POPAXSTIIRETENDP

6.4直接存贮器存取(DMA)方式

6.4.1DMA工作过程

DMA方式之所以能够实现外设与计算机系统的高速信息交换,关键在于该方式的实现采用了专用控制器(称之为DMA控制器)而CPU不参与控制,这使得DMA方式与其他I/O方式有了显著的区别:DMA方式不是在程序控制下进行的,而是以纯硬件控制的方式进行的。图6.35DMA方式工作示意图

DMA方式的实现过程如图6.35所示,描述如下:①外设向DMAC发出DMA请求DREQ;②DMAC将此请求传递到CPU的总线保持端HOLD,向CPU提出DMA请求;③CPU在完成当前总线周期后检测HOLD,在非总线封锁条件下,对DMA请求作出响应:一是CPU将地址总线、数据总线、控制总线置高阻,放弃对总线的控制权;二是CPU送出有效的总线响应信号HLDA加载至DMAC,告之可以使用总线;④DMAC接收到有效的总线响应信号后,向外设送出DMA应答信号DACK,通知外设做好数据传送准备,同时占用总线,开始对总线实施控制;⑤DMAC送出内存地址和对内存与外设的控制信号,控制外设与内存或内存与内存之间的数据传送;⑥DMAC通过计数控制将预定的数据传送完后,向CPU发出无效的HOLD信号,撤消对CPU的DMA请求:⑦CPU收到此信号后,送出无效的HLDA,并重新开始控制总线,实现正常的总线控制操作。图6.36不同I/O方式下的数据通路(a)程控或中断方式下的数据传送通路;(b)DMA方式下内存与外设间数据传送通路;(c)DMA方式下内存与内存间数据传送通路6.4.2DMA控制器82371.8237的引线及功能

DMAC8237的外部引线图如图6.37所示。

A0~A3:双向地址线,具有三态输出。

A4~A7:三态输出线。

DB0~DB7:双向三态数据总线。

:双向三态低电平有效的I/O写控制信号。:双向三态低电平有效的I/O读控制信号。:三态输出低电平有效的存贮器写控制信号。

:三态输出低电平有效的存贮器读控制信号。

ADSTB:地址选通信号,高电平有效的输出信号。

AEN:地址允许信号,高电平有效输出信号。:片选信号,低电平有效输入信号。

RESET:复位信号,高电平有效输入信号。

READY:准备好输入信号,当DMAC工作期间遇上慢速内存或I/O接口时,可由它们提供READY信号,使DMAC在传送过程中插入时钟周期SW,以便适应慢速内存或外设。此信号与CPU上的准备好信号类似。

HRQ:保持请求信号,高电平有效的输出信号。

HLDA:保持响应信号,高电平有效的输入信号。

DREQ0~DREQ3:DMA请求(通道0~3)信号。

DACK0~DACK3:DMA响应信号,分别对应通道0~3。

CLK:时钟输入,用来控制8237的内部操作并决定DMA的传输速率。:过程结束,低电平有效的双向信号。

图6.37DMAC8237引脚图2.8237的工作时序8237内部有三种状态,空闲状态SI、请求状态SO和传送状态S1~S4。随着8237在系统中主、从属性的改变,其内部状态的变换构成了8237的工作时序,如图6.38所示。图6.388237工作时序3.8237的工作方式8237工作有两种周期,即空闲周期和工作周期。1)空闲周期2)工作周期①单字节传送方式。

②数据块传送。

③请求传送。

④级联方式。

图6.398237级联结构图3)传送类型①接口到存贮器的传送。

②存贮器到接口。

③存贮器到存贮器。

4)优先级①固定优先级。

②循环优先级。5)传输速率4.8237的内部寄存器8237有4个独立的DMA通道,有许多内部寄存器。表6.4给出这些寄存器的名称、长度和数量。表6.48237的内部寄存器1)基地址寄存器2)基字数寄存器3)

温馨提示

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

评论

0/150

提交评论