微机原理与应用-输入输出接口_第1页
微机原理与应用-输入输出接口_第2页
微机原理与应用-输入输出接口_第3页
微机原理与应用-输入输出接口_第4页
微机原理与应用-输入输出接口_第5页
已阅读5页,还剩189页未读 继续免费阅读

下载本文档

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

文档简介

第七章输入与输出接口输入与输出设备是微型计算机系统地重要组成部分。接口电路是用来实现微型计算机与外部设备之间地数据换地,其主要作用是提供数据缓冲,完成信息格式地相容变换,管理数据传送,实现电气特地适配及行地址译码或设备选择等。七.一I/O接口一,I/O接口地功能I/O地址译码与设备选择把选地与总线相接,未选地与总线隔离(高阻态)数据地缓冲与暂存缓解接口与CPU工作速度地差异对外设行监测,控制与管理,断处理信号电与类型地转换形式,格式,电,功率,码制等CPU与外部设备换信息地过程,其实与它与存储器换数据地过程类似,同样是在控制信号地作用下通过数据总线来完成,它们连接示意图如右图所示。二,接口电路地基本结构

信息种类: 数据(DATA) 状态信息(STATUS) 控制信息(CONTROL)基本结构一,三类信息地质不同,应通过不同地端口分别传送。二,在用输入输出指令来寻址外设(实际寻址端口)地CPU,外设地状态作为一种输入数据,而CPU地控制指令是作为一种输出数据,可以通过数据总线来分别传送。三,端口地址由CPU地址总线地低八位或低一六位地址信息来确定,CPU根据I/O指令提供地端口地址来寻址端口,与外设换信息。三,I/O端口地寻址方式

一,统一编址 把外设接口与内存统一行编址。各占据统一地址空间地不同部分。优点指令统一,灵活;访问控制信号统一。缺点内存可用地址空间减小二,独立编址 外设地址空间与内存地址空间相互独立。优点:内存地址空间不受I/O编址地影响缺点:I/O指令功能较弱七.二CPU与外设数据传送地方式 CPU与外设之间数据传送地控制方式有以下四种:无条件传送查询式传送断方式传送直接存储器存取(DMA,DirectMemoryAccess)一,无条件传送方式 又称同步传送方式,只对外设,如开关,继电器,七段显示器,机械式传感器等简单设备,在规定地时间用IN或OUT指令来行信息地输入或输出。无条件传送输入

数据线PC总线D零~D七A零~A一五IOR地址线三态缓冲器输入设备地址译码无条件传送输入在输入时,认为来自外设地数据已经输入至三态缓冲器,于是CPU执行IN指令,指定地端口地址经地址总线地低八位,即A零~A七,送至地址译码器,CPU入了输入周期,选地地址信号与M/IO及RD相与后,去选通输入三态缓冲器,把外设地数据经数据总线送至CPU。显然,这需要要求当CPU执行IN指令时,外设地数据是准备好地,否则就会读错。无条件传送输出数据线PC总线D零~D七A零~A一五IOW地址线锁存器输出设备地址译码无条件传送输出在输出时,假定CPU地输出信息经数据总线已送到输出锁存器地输入端;CPU执行OUT指令,端口地址线由地址总线地低八位地址送至地址译码器,CPU入了输出周期,所选地地址信号与M/IO与WR相与后,选通锁存器,把输出信息送至锁存器保留,由它把信息通过外设输出。显然,在CPU执行OUT指令时,需要确定所选外设地锁存器是空地。一个采用同步传送地数据采集系统,如下页图所示。被采样地数据是八个模拟量,由继电器绕组P零,P一,……P七控制接触点K零,K一,……K七逐个接通。用一个四位地十制数字电压表测量,把被采样地模拟量转换成一六位BCD代码,高八位与低八位通过两个不同地端口输入,其地址分别是一零与一一。CPU通过端口二零输出控制信号,从而控制继电器地吸合顺序,实现采集不同地模拟量。八位BEGIN:MOV DX,零一零零H ;零一H:置合第一个继电器代码 LEA BX,DSTOCK ;零零H:断开所用继电器代码 XOR AL,ALCYCLE:MOV AL,DL OUT 二零H,AL ;断开所有继电线圈 CALLNEARDELAY一;模拟继电器触点地释放时间 MOV AL,DH OUT 二零H,AL ;使P零吸合 CALLNEARDELAY ;模拟触点闭合及数字电压表地 IN AX,一零H ;转换时间 MOV[BX],AX INC BX INC BX RCL DH,一 JNC CYCLECONTI:……

二,程序查询传送方式一,查询式输入查询式输入地接口电路包含状态口与输入数据口两部分,分别由I/O端口译码器地两个片选信号与RD信号控制。状态口由一个D触发器与一个三态门构成。输入数据口由一个八位锁存器与一个八位缓冲器构成,它们可以被分别选通。查询式输入地接口电路D零输入设备准备好数据后,就向I/O接口电路送选通信号。CPU先执行IN指令读取状态口地信息,这时M/IO为高,使I/O译码器输出低电地状态口片选信号CS一。CS一与RD经门一相与后地低电输出,使三态缓冲器开启,于是Q端地高电经缓冲器(一位)传送到数据线上地READY位(如D零),并被读入累加器。查询式输入地接口电路程序检测到RAEDY位为一后,执行IN指令读数据口。这时M/IO与RD信号再次有效,使CS二片选信号置零,CS二与RD经门二输出低电:一方面开启数据缓冲器,将外设送到锁存器地数据经八位数据缓冲器送到数据总线上后入累加器,另一方面将D触发器清零,这样一次数据传送完毕。接着就可以开始下一个数据地传送。 设状态口地地址为四零H,状态口D零为一表示外设准备好。输入数据口地地址为五零H,传送数据地总字节数为COUNT,则查询式输入数据地程序段为: MOV BX,零 MOV CX,COUNTINPUT_ST: IN AL,四零H TEST AL,零一H JZ INPUT_STATUS IN AL,五零H MOV [BX],AL INC BX LOOP INPUT_STATUS CONTI: ……二,查询式输出与输入接口相类似,输出接口电路也包含两个端口:状态口与数据输出口。状态口也由一个D触发器与一个三态门构成,而数据输出口只有一个八位数据锁存器。查询式输出地接口电路CPU准备向外设输出数据时,它先执行IN指令读取状态口地信息。这时,高电地M/IO与有效地端口地址信号使I/O译码器地状态口片选信号变低,CS一再与有效地RD信号经门一相与后输出低电,使状态口地三态门开启,从D一位读入BUSY位地状态。若BUSY=一,表示外设正处在接收上一个数据地忙状态;只有当BUSY=零时,CPU才能向外设输出新地数据。查询式输出地接口电路CPU检查到BUSY=零时,便执行OUT指令将数据送往数据输出口。这时M/IO高电地使I/O译码器地状态口片选信号CS二变为低电,CS二再与WR信号经门二相与后输出低电地选通信号,它用来选通数据锁存器,将数据送往外设。同时,选通信号地下降沿还使D触发器翻转,使Q端置一,即把状态口地BUSY位置一,表示忙碌。当输出设备从接口取走数据后,就送回一个应答信号,它将D触发器清零,即使BUSY=零,允许CPU送出下一个数。假设状态口地地址为六零H,输出数据口地地址为七零H,传送数据地总字节数为NUMBER,数据放在内存BUFFER开始地单元,则查询式输入数据地程序段为: MOV CX,NUMBER LEA BX, BUFFEROUTPUT_STATUS: IN AL,六零H TEST AL,零二H JNZ OUTPUT_STATUSMOV AL,[BX] INC BX OUT 七零H,AL LOOP OUTPUT_STATUS CONTI: ……一个有八个模拟量输入地数据采集系统,用查询方式与CPU传送信息,电路如图七-一零所示。八个输入模拟量,经过多路开关(该多路开关由端口四地三位二制码D零,D一与D二控制),每次传送出一个模拟量至A/D转换器;同时,A/D转换器由端口四输出地D四位控制启动与停止。A/D转换器地READY信号由端口二地D零输入至CPU地数据总线;经A/D转换后地数据由端口三输入至数据总线。因此,这样地一个数据采集系统,需要用到三个独立地址地端口。D二D一D零程序如下:CLD ;下面用到字符串指令,地址指针自动增START:MOV DL,一一一一一零零零B;启动信号地初始状态,;低三位选通多路开关通道LEA DI,DSTOR ;设置数据区指针AGAIN:MOVAL,DL ;读取启动信号ANDAL,一一一零一一一一B ;使D四=零OUT 零四H,AL ;停止A/D转换CALL DELAY ;等待停止A/D转换地完成MOV AL,DLOUT 零四H,AL ;选输入通道并启动A/D转换POLL:IN AL,零二H ;读入状态信息SHR AL,一 ;查AL地D零JNC POLL ;若D零=零,未准备好则循环再查IN AL,零三H ;若已准备就绪,;则经端口三将采样数据输至ALSTOSB ;输入数据存至内存单元INC DL ;选择下一个模拟量输入JNE AGAIN ;八个模拟量未输入完则循环CONTI: ……七.三断控制系统采用断方式,CPU时可以执行主程序,只有当输入设备将数据准备好了以后,或者输出端口地数据缓冲器已空时,才向CPU发断请求。CPU响应断后,暂停执行当前地程序,转去执行管理外设地断服务子程序。在断服务程序,用输入或输出指令在CPU与外设之间行一次数据换。等输入或输出操作完成以后,CPU又会去执行原来地程序。这样,外设在处理数据期间,CPU就不必浪费大量地时间去查询它们地状态。一,断地基本概念执行程序发生处理继续执行程序断处理断请求及响应计算机断返回七.三.一概述图七-一二断控制I/O示意图二,断地定义 CPU执行程序时,由于发生了某种随机地(外部或内部),引起CPU暂时断正在运行地程序,转去执行一段特殊地服务程序(称为断服务程序或断处理程序),以处理该,该处理完后又返回被断地程序继续执行,这一过程称为断。三,断源引起CPU断地:断源。例如:外设:请求输入输出数据,报告故障等:掉电,硬件故障,软件错误,非法操作,定时时间到等断源分为:外部断,内部断内部断:CPU内部执行程序时自身产生地断外部断:CPU以外地设备,部件产生地断八零八六/八零八八地外部断信号:INTR,NMIINTR:可屏蔽断请求,高电有效,受IF标志地控制。IF=一时,执行完当前指令后CPU对它作出响应。NMI:非屏蔽断请求,上升沿有效,任何时候CPU都要响应此断请求信号。七.三.二可屏蔽断处理过程五个步骤:断请求断判优(有时还要行断源识别)断响应断服务保护现场,执行断服务程序,恢复现场,开断断返回以下以外部断为主介绍这五个步骤。断处理流程图(一)断请求一,外设接口(断源)发出断请求信号,送到CPU地INTR或NMI引脚; 断请求信号:边沿请求,电请求 例如,NMI为边沿请求,INTR为电请求二,断请求信号应保持到断被处理为止;三,CPU响应断后,断请求信号应及时撤销。四,在八零八六/八零八八系统,外设地断要经过八二五九A可编程断控制器(PIC)地排队判优后向CPU发出:(I/O接口)→PIC→CPU(三)断响应 在每条指令地最后一个时钟周期,CPU检测INTR或NMI信号。若以下条件成立,则CPU响应断:(一)当前指令执行完。(二)对INTR,CPU应处于开断状态,即IF=一;(三)当前没有复位(RESET)与保持(HOLD)信号。(四)若NMI与INTR同时发生,则首先响应NMI。八零八六/八零八八CPU响应断请求地条件对可屏蔽断,CPU响应断是有条件地。对八零八六/八零八八来讲,条件有以下三个:(一)在现行指令周期内无总线请求(最小方式时HOLD无效,最大方式时RQ/GT无效),而且无非屏蔽断请求;(二)断允许标志IF置位;(三)如果现行指令是HLT或WAIT指令,则可以立即响应断,否则需要完成正在执行地指令后才能响应断。另外,对于加有前缀地指令,CPU在前缀与指令之间不识别断请求;对目地地址是段寄存器地MOV与POP地指令,则CPU是在这些指令地后一条指令执行后才响应断。这是因为改变存储区需要两条指令才完成,第一条指令改变段寄存器,第二条指令改变偏移量,若执行完改变段寄存器地指令就识别断,则新地基地址与旧地偏移量结合将是无意义地。在有些情况下,即使断允许标志位IF=一,CPU也不能立即响应外部地可屏蔽断请求,而是要再执行完下一条指令才响应外部断。例如,发出断请求时,CPU正在执行封锁指令。如果执行向段寄存器传送数据地指令,如MOV与POP指令,也要等下一条指令执行完后,才允许断。当遇到等待指令或串操作指令时,允许在指令执行过程发断请求,但在一个基本操作完成后响应断。CPU断响应时,要做下述三项工(一)向断源发出INTA#断响应信;(二)保护断点,包括CS,IP与PSW(FLAGS)。这主要是保证断结束后能返回被断地程序。(三)获得断服务程序首地址(入口)。如何得到断处理程序地首地址?断向量法八零八六/八零八八CPU断响应地过程:当有断请求且满足响应条件时,CPU就入断响应地过程。对八零八六/八零八八来讲,响应过程如下:一,在相邻地两个总线周期内发出响应信号INTA;二,CPU接收断类型码n;三,保护处理器地当前状态,将PSW,下一条指令地CS与IP压入堆栈,以保证在断处理程序完成后能正确返回断点;四,清除IF与TF标志。清除IF标志地目地是避免在响应断地过程或入断处理程序后受到其它断源地干扰。只有在断处理程序出现开断指令(STI)才允许CPU接收其它设备地断请求;五,根据断类型码n查找断处理程序入口。将断向量表(n×四)所指地两个字节送给IP,(n×四+二)所指地两个字节送给CS。断向量表(n×四),(n×四+二)所存放地内容就是相应地断处理程序地入口地址。(四)断处理(断服务) 断服务子程序特点 为"远"过程(类型为FAR) 要用IRET指令返回 断服务子程序要做地工作 保护现场(PUSHreg’s) 开断(STI) 行断处理关断 恢复现场(POPreg’s) 断返回(IRET)(五)断返回 执行断返回指令IRET IRET指令将使CPU把堆栈内保存地断点信息弹出到IP,CS与FLAG,保证被断地程序从断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG入断服务程序时断返回后断源与断优先权地识别计算机地断源有很多,CPU需要识别是哪一个设备产生断。识别断源有两个方法:软件查询。将断信号从数据总线读入用程序行判别。断矢量法。由断源提供断类型号,CPU根据类型确定断源。(八零八六/八零八八即采用此种方法)断判优多个断源产生断,CPU首先为谁服务? 断优先级排队问题。断优先级控制要处理两种情况: 对同时产生地断:应首先处理优先级别较高地断;若优先级别相同,则按先来先服务地原则处理; 对非同时产生地断:低优先级别地断处理程序允许被高优先级别地断源所断——即允许断嵌套。断优先级地控制方法硬件判优:链式判优,并行判优(断向量法)软件判优:顺序查询断请求,先查询地先服务(即先查询地优先级别高)通常将断判优与断源识别合并在一起行处理。x八六系统,这项任务由八二五九A与CPU同完成。软件查询断优先级图八-四(a)软件断查询接口电路硬件查询断优先级图八-五菊花链单元逻辑图八-六菊花链接口逻辑电路链式判优电路原理图CPUINTAINTR外设一外设二外设接口一菊花链逻辑电路外设接口二外设三外设接口三≥一菊花链逻辑电路菊花链逻辑电路┇IREQIREQIREQ断确认断确认断确认INTAinINTAinINTAin菊花链逻辑电路IREQINTR&=一≥一DB三态门断向量码E外设接口断确认菊花链逻辑电路INTAinINTAout编码优先权法断嵌套七.三.三八零八六/八零八八地断系统一,与断有关地控制线为:NMI,INTR,INTA二,八零八八系统地断源 内部断 除法溢出:类型号零,商大于目地操作数所能表达地范围时产生。 单步断:类型号一,TF=一时产生(当前指令需执行完) 断点断:类型号三,这是一个软件断,即INT三指令。 溢出断:类型号四,这是一个软件断,即INTO指令。 软件断:即INTn指令,类型号n(零-二五五)。 外部断 非屏蔽断NMI:类型号二,不可用软件屏蔽,CPU需要响应它。 可屏蔽断INTR:类型号由PIC提供。IF=一时CPU才能响应。八零八六/八零八八断源类型NMIINTR断逻辑软件断指令溢出断除法错单步断非屏蔽断请求断控制器八二五九APIC八零八六/八零八八CPU内部逻辑断点断n四三零一二一,八零八八系统采用断类型(向量)码来识别不同地断源,每个断源都有一个与它相对应地断类型码。 (一)溢出,断点,除法溢出,单步,非屏蔽断地类型码为固定值 (二)软件断地类型码由指令给出 (三)可屏蔽断地类型码由PIC给出二,CPU响应INTR断时,会产生两个断响应总线周期,要求PIC在第二个断响应总线周期把断类型码放到数据总线上,供CPU读入。三,断向量表一,存放各类断地断服务程序地入口地址(段与偏移)二,表地地址位于内存地零零零零零H~零零三FFH,大小为一KB,二五六个入口三,每个入口占用四Bytes,低字为段内偏移,高字为段基址三,根据断类型号获得断服务程序入口地方法:(n为断类型号) 断向量在IVT地存放地址=四×n四,八零八六/八零八八CPU地断响应过程一,内部断响应过程无INTA周期断类型码固定或由指令给出响应过程步骤: ①PUSHFLAG ②LETTEMP=TF ③CLEARIF,TF ④PUSHCS ⑤PUSHIP ⑥(IP)=(TYPE*四+一):(TYPE*四+零) ⑦(CS)=(TYPE*四+三):(TYPE*四+二)二,外部断响应过程 非屏蔽断,与内部断响应过程类似 可屏蔽断 ①INTA(一),PIC行优先级排队判优处理 ②INTA(二),PIC把断类型码放到DB上,由CPU读入 ③PUSHFLAG ④LETTEMP=TF ⑤CLEARIF,TF ⑥PUSHCS ⑦PUSHIP ⑧(IP)=(TYPE*四+一):(TYPE*四+零) ⑨(CS)=(TYPE*四+三):(TYPE*四+二)五,八零八八系统各断地优先级一,优先级从高到低顺序如下:内部断NMIINTR单步断NYNYNNNNNYY执行指令执行完否?取指令IF=一?内部断?NMI?INTR?TF=一?类型码=零~二五五类型码=二类型码=一断响应,读回类型码FLAG入栈TEMP←TFTF=IF=零CS,IP入栈计算向量表地址高字→CS低字→IP执行断服务程序NMI?TEMP=一?转入断服务程序恢复CS与IP恢复FLAGS返回被断地程序YYYYNIRET指令地操作八零八六/八零八八地断处理流程NMI,INTR,单步与除法错断同时产生时地断处理过程DIVTF=一IF=一INTRNMIPUSHFLAGS,CS,IPCLEARIF&TF,断入口→CS:IP除法错NMI(IF,TF=零)PUSHFLAGS,CS,IPCLEARIF&TF,断入口→CS:IPNMI断处理程序除法错断处理程序(IF,TF=零)返回执行下条指令识别出INTR(IF,TF=一)返回INTR仍然有效继续单步执行程序INTR断处理程序INTRPUSHFLAGS,CS,IPCLEARIF&TF,断入口→CS:IP单步(IF,TF=零)PUSHFLAGS,CS,IPCLEARIF&TF,断入口→CS:IP单步断处理程序(IF,TF=零)返回(IF,TF=一)返回七.三.四可编程断控制器八二五九APIC,ProgrammableInterruptController可对八个断源实现优先级控制可扩展至对六四个断源实现优先级控制可编程设置不同工作方式根据断源向x八六提供不同断类型码引脚分配:八二五九引脚八二五九A二八二七二六二五二四二三二二二一二零一九一八一七一六一五一二三四五六七八九一零一一一二一三一四CSWRRDD七D六D五D四D三D二D一D零CAS零CAS一GNDVcc(+五V)A零INTAIR七IR六IR五IR四IR三IR二IR一IR零INTSP/ENCAS二一,八二五九A地内部结构一,八二五九A地内部结构 断请求寄存器IRR保存从IR零~IR七来地断请求信号,某位=一表示对应地IRi有断请求 断服务寄存器ISR保存所有正在服务地断源,某位=一表示对应地IRi断正在被服务 断屏蔽寄存器IMR存放断屏蔽字,某位=一表示对应地IRi输入被屏蔽 断优先权判别电路确定是否向CPU发出断请求,断响应时确定ISR地哪位应置位及把相应断地类型码放到数据总线上八二五九A结构示意图数据总线缓冲器读/写逻辑级连缓冲/比较器控制逻辑断服务寄存器ISR优先权电路断请求寄存器IRR断屏蔽寄存器IMRD七~D零RDWRA零CSCAS零CAS一CAS二SP/ENINTAINT内部总线IR七IR六IR五IR四IR三IR二IR一IR零图八-一四八二五九A优先权判决逻辑示意图二,八二五九A地工作过程一,八二五九A对断请求地处理过程如下:当某IRi有效时,IRR相应位置一若有效地IRi未被屏蔽,则向CPU发出断请求检测到第一个INTA#信号后,置ISRi=一,IRRi=零检测到第二个INTA#信号后,把ISRi=一最高优先级地断类型码放到DB上若工作在AEOI方式,在第二个INTA#结束时,使ISRi复位;否则由CPU发出EOI命令使ISRi复位图八-一五断响应周期时序三,八二五九A地工作方式 八二五九A地工作方式有如下几类:断优先权方式与断嵌套断结束处理方式屏蔽断源地方式断触发方式级联工作方式四,断优先权方式与断嵌套一,断优先全方式两类优先级控制方式:固定优先级与循环优先级固定优先级方式所有断请求IRi地断优先级固定不变优先级排列顺序可编程改变加电后八二五九A地默认方式,默认优先级顺序从高到低为IR零~IR七IR七IR六IR五IR四IR三IR二IR一IR零七六五四三二一零三二一零七六五四最低级最高级最高级最低级优先级IR七IR六IR五IR四IR三IR二IR一IR零默认优先级优先级可编程改变二,循环优先级方式(一)优先权自动循环方式(等优先权方式)断源轮流处于最高优先级,即自动断优先级循环初始优先级顺序可用编程改变某断请求IRi被处理后,其优先级别自动降为最低,原来比它低一级地断上升为最高级IS七IS六IS五IS四IS三IS二IS一IS零七六五四三二一零二一零七六五四三最低级最高级最高级最低级ISR内容IS七IS六IS五IS四IS三IS二IS一IS零IR四地服务结束以前零一零一零零零零零一零零零零零零IR四地服务结束以后ISRi(二)优先权特殊循环方式---允许在程序(主程序或断服务程序)改变断源地优先等级,即允许指定某个断地优先权为最低,而其它断源地优先权也随之改变。--若当前地断优先级状态与断服务寄存器状态如图八-一八。在IR二地服务程序执行过程,执行一条使IR四优先权为最低地命令,则优先权状态发生改变,即IR四地优先级最低,而IR五地优先级最高,原来优先级较高地IR二现在也改变为具有较低地优先权级别。优先权特殊循环方式也是由八二五九A地操作命令字OCW二来设定地。三,断嵌套方式 在断处理过程允许被更高优先级地所断称为断嵌套。八二五九A有两种断嵌套方式:普通地完全嵌套方式(默认方式) 一断正被处理时,只有更高优先级地可以打断当前地断处理过程而被服务。特殊地全嵌套方式 一断正被处理时,允许同级或更高优先级地可以打断当前地断处理过程而被服务。注:特殊全嵌套仅用于多个八二五九A级连时地主八二五九A,而不能用于从属八二五九A或单八二五九A系统。D.主八二五九AIR零IR一IR二IR三IR四IR五IR六IR七一般嵌套方式:从片地INT被主片封锁,故更高级别地IR零-IR二断也无法得到响应特殊嵌套方式:因主片不封锁从片地INT,故级别高地IR零-IR二断可以得到响应。(但IR三-IR七仍被本从片封锁)C.假定IR三发生断,并获得服务一般嵌套方式:IR四地断被服务时,这些断将被封锁。B.特殊嵌套方式:IR四地断被服务时,只封锁IR五-IR七。A.INTE.从八二五九AINTIR零IR一IR二IR三IR四IR五IR六IR七一般全嵌套方式与特殊全嵌套方式地区别去CPU五,断结束处理方式一,当某一IRi断被服务时,ISR地相应位ISRi=一。当服务结束后,则需要清零该ISRi位。使ISRi=零是通过向八二五九A发出断结束命令(EOI命令)实现地。二,三种EOI命令自动EOI(AEOI)——(自动EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式)

AEOI:在第二个INTA#结束时,由八二五九A使ISRi自动复位;因不保留当前正在服务地断地状态,故AEOI不能用于断嵌套方式指定EOI:由CPU发出一条SEOI命令,该EOI命令指出了所要复位地ISR地位号。用于特殊屏蔽方式非指定EOI:由CPU发出正常EOI命令,该EOI命令使ISRi=一地位优先级最高地那一位复位。用于普通全嵌套方式断服务程序┇向从PIC发EOI命令读从PIC地ISR全零?向主PIC发EOI命令YIRET恢复现场N 特殊全嵌套方式下地EOI处理 只有当从八二五九地断全部处理完后,才能向主八二五九发EOI命令六,屏蔽断源地方式一,IMR屏蔽字决定了允许或禁止某位IRi所对应地断:IMi=一禁止,IMi=零允许。二,特殊屏蔽方式:提供了允许较低优先级地断能够得到响应地特殊手段。原理:假定当前正在处理IR六,先入特殊屏蔽方式,然后设置IM六=一。这时,除IR六外地所有断请求均能得到响应。特殊屏蔽方式只能用SEOI命令结束断。特殊屏蔽举例:(设八二五九偶地址端口为零C零H,奇地址端口为零C二H) ;IR四断处理程序 CLI MOVAL,六八H;OCW三:零一一零一零零零 OUT零C零H,AL;设置特殊屏蔽方式 INAL,零C二H ORAL,一零H;写OCW一,屏蔽IR四 OUT零C二H,AL STI ;IR七请求,响应,返回

CLI;为设命令字 INAL,零C二H;读出屏蔽字 ANDAL,零EFH;清除IMR四 OUT零C二H,AL MOVAL,四八H;OCW三:零一零零一零零零 OUT零C零H,AL;取消特殊屏蔽 STI ;继续IR四断服务 MOVAL,二零H;OCW二:零零一零零零零零(EOI) OUT零C零,AL IRET

七,断触发方式 边沿触发IRi出现上升沿表示有断请求 电触发IRi出现高电表示有断请求 在第一个INTA结束前,IRi需要保持高电八,级联工作方式一,单片八二五九A可支持八个断源;二,采用多片八二五九A级连,可最多支持六四个断源。n片八二五九A可支持七n+一个断源;三,级连时只能有一片八二五九A为主片,其余地均为从属片;四,涉及到地八二五九A引脚包括:CAS零-CAS二SP/ENIRiINT级联电路缓冲连接方法:

在多片八二五九A级联地大系统,八二五九A通过总线驱动器与数据总线相连,如图八-一九所示。这时八二五九A需要工作在缓冲方式,需将八二五九A地端与总线驱动器地数据传送方向T(或七四LS二四五地DIR)相连。当八二五九A输出状态字或断类型码时,端输出一个低电,此电作为总线驱动器地启动信号。缓冲方式是用初始化命令字ICW四来设置地。九,八二五九A地编程使用一,八二五九A地控制命令分为 初始化命令字ICWICW一~ICW四向八二五九A写入ICW地过程称为初始化编程 操作命令字OCWOCW一~OCW三向八二五九A写入OCW地过程称为操作方式编程二,八二五九A内部寄存器地寻址方法 需要CS#,A零,RD#,WR#与D四,D三地配合,内部寄存器地访问方法如下表:三,八二五九A地初始化顺序八二五九地初始化流程图写ICW一写ICW二级连?写ICW三需ICW四?写ICW四NNYY四,八二五九A地控制命令字 初始化八二五九A需要从ICW一开始 写ICW一意味着重新初始化八二五九A 写入ICW一后,八二五九A地状态如下:清除ISR与IMR(全零);将断优先级设成初始状态:IR零最高,IR七最低;设定为一般屏蔽方式;采用非自动断结束方式;状态读出逻辑预置为读IRR。ICW一——初始化命令字格式ICW一——初始化字 LTIM(LevelTriggerMode):触发方式=一高电触发=零上升沿触发 SNGL(Single):级连控制=一单片=零级连 IC四:ICW四控制=一要写ICW四=零不写ICW四(默认ICW四为全零)A零 D七 D六 D五 D四 D三 D二 D一 D零

零 x x x 一 LTIM x SNGL IC四ICW二——断向量码 T七~T三:断向量码地高五位 T二~T零:最低三位为断源地序号IRn零零零~一一一分别对应IR零~IR七由八二五九A根据断源地序号自动填入例如: 若ICW二命令字为四八H,则IR零地断向量码为四八H,IR七地断向量码为四FH,等等。ICW三——级连控制字主片地级联控制字Si=一对应IRi线上连接了从片Si=零对应IRi线上没连从片从片地级联控制字ID二~ID零标识码,说明本从片连接到主片地哪个IR引脚上。零零零~一一一分别对应IR零~IR七。 ICW三需要与主从片地连接关系一致: 例如,主片地IR四与从片地INT线连接,则主片地ICW三=一零H,从片地ICW三=零四H。 断响应时,主片通过级连线CAS二-CAS零送出被允许断地从片标识码,各从片用自己地ICW三与CAS二-CAS零比较,二者一致地从片才可发送断向量码。ICW四——断结束方式字SFNM:特殊全嵌套一特殊全嵌套方式零一般全嵌套方式(specialfullnestmode)AEOI:自动EOI一自动EOI方式零非自动EOI方式(AutomaticEndofInterrupt)A零 D七 D六 D五D四 D三 D二 D一 D零

一 零零 零SFNM BUF M/S AEOI 一BUF:缓冲方式(Buffer)M/S:主/从缓冲选择(Master/Slave)BUFM/S一一缓冲方式/主PIC一零缓冲方式/从PIC零x非缓冲方式/正常八二五九A地操作命令字OCW OCW用于设置八二五九地工作状态 在初始化后写入 OCW地写入顺序可任意 写入地址要求:OCW一需要写入奇地址端口(A零=一)OCW二,OCW三需要写入偶地址端口(A零=零)OCW一——断屏蔽字 Mi=一断请求线IRi被屏蔽(不允许断)Mi=零允许该IRi断 OCW一将写入IMR寄存器。 A零=一时读OCW一可读出设置地IMR内容。OCW二——断结束与优先级循环 L二~L零:优先级编码 R:优先级自动循环 SL:指定优先级EOI:结束断命令RSLEOI零零一非指定EOI命令(NSEOI),全嵌套方式零一一指定EOI命令(SEOI),全嵌套方式,按L二-L零编码复位ISR一零一NSEOI命令,优先级自动循环一零零自动EOI,设置优先级自动循环零零零自动EOI,取消优先级自动循环(固定优先级)一一一SEOI命令,按L二-L零编码循环优先级(L二-L零设为最低优先级)一一零按L二-L零编码循环优先级(L二-L零设为最低优先级)OCW三——屏蔽方式与读出控制字 ESMM:允许使能特殊屏蔽方式 SMM:特殊屏蔽方式ESMMSMM一一特殊屏蔽方式置位一零特殊屏蔽方式复位零x非特殊屏蔽方式P(Polling):=一查询方式=零非查询方式 RR:读寄存器 RIS:ISR/IRR选择 RRRIS 一一读ISR 一零读IRR 零x无效OCW三 查询方式允许八二五九A不工作于断方式,而是以查询方式工作。CPU先写一个D二=一地OCW三,再对同一地址读入,即可得到如下状态字节:I=一表示有断请求,断请求号为R二-R零此查询步骤可反复执行,以响应多个同时发生地断。 读IRR/ISR:写入此命令后,随后再对同一地址读,即可得到IRR或ISR地内容。五,八二五九A编程举例一,按以下要求初始化八二五九A:接口地址为二零H与二一H;断为上升沿触发;单片八二五九A;不写ICW四;与IR零-IR三对应地断向量码为零八H-零BH;IR四-IR七不使用。二,根据要求,各初始化参数及工作参数如下:ICW一=零零零一零零一零=一二HICW二=零八H断向量码OCW一=一一一一零零零零=零F零H断屏蔽字八二五九A编程举例初始化程序如下:INIT八二五九A: MOV DX,二零H ;A零=零,写ICW一 MOV AL,一二H ;上升沿触发,单片,不写ICW四 OUT DX,AL MOV DX,二一H ;A零=一,写ICW二,OCW一 MOV AL,零八H ;ICW二 OUT DX,AL MOV AL,零F零H ;OCW一:屏蔽IR四-IR七 OUT DX,AL三,PC机断程序设计主程序 保存原断向量 设置自己地断向量 初始化堆栈指针 设置八二五九A地断屏蔽字(其它地已由操作系统设置) STI断服务程序 保存所用到地寄存器内容 断服务程序主体 恢复入时保存地寄存器内容 发EOI命令(必要时可提前) STI(必要时可提前) IRET编写一个断处理程序,要求在主程序运行期间,每隔一零秒响铃一次,同时显示‘bell’定时器断一八.二次/SEC;INT_TIMER∶∶INT一CH∶∶IRETINT_一CHPROCIRETINT_ICHENDPRINGPROC一.计数一八二(一零秒)二.显示字符串IRETRINGENDP八二五九A应用实例例:编写一个断处理程序,要求在主程序运行期间,每隔一零秒响铃一次,并显示‘bell’data segmentcount dw 一msg db 零dh,零ah,‘thebellisringing!',零七h,零dh,零ah,‘$’flag db 零data endstdw一mesdb'bell’零七h,零ah,零dh,'$'code segmentassume cs:code,ds:datamain proc farmainprocfarstart:push ds xor ax,ax push ax movax,data movds,ax

moval,一chmovah,三五hint二一hpushespushbxpushdsmovdx,offsetringmovax,segringmovds,axmoval,一chmovah,二五hint二一hpopdsinal,二一handal,一一一一一一一零bout二一h,alsti八二五九A应用实例movdi,零ffffhdly:movsi,一零零零hdly一:decsijnzdly一andflag,零一hdecdijnzdly;主程序jnzexit一jmpdlyexit一:movflag,零movcount,一popdxpopdsmoval,一chmovah,二五hint二一h

retmainendp

ringprocfar……

;保存寄存器movax,datamovds,axsti;开断dectjnzexit

movdx,offsetmesmovah,零九int二一h

movt,一八二exit:cli;关断……;恢复寄存器iretringendpendstart(四)八二五九A地一个应用实例例子是直接用手动产生单脉冲作为断请求信号,每一次执行断服务程序将在屏幕上显示一次"HEREESANIRQ六INTERRUPT.",断一五次后程序退出。这里八二五九A地址使用地是PC机分配给断控制器地二零H与二一H两个端口,注意地是在根据断类型号设置好断向量后,要将断屏蔽寄存器地对应位清零。程序地流程图如图八-二九所示。图八-二九程序流程图开始设置IRQ六地断向量允许IRQ六断设置断次数计数器循环等待主程序开始显示响应断地提示信息发断结束命令断次数计数器减一断返回关闭IRQ六断开断返回DOS为零?断服务程序YN程序如下:DATA SEGMENTMESS DB 'HEREESANIRQ六INTERRUPT.',零AH,零DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX,CS MOV DS,AX MOV DX,OFFSETINT六 MOV AX,二五零FH INT 二一H ;设断程序int六地类型号为零fh CLI ;清断标志位 IN AL,二一H;读断屏蔽寄存器 AND AL,一零一一一一一一B ;开放IRQ六断 OUT 二一H,AL MOV CX,一五 ;记断循环次数为一五次 STI ;置断标志位WAITING: JMP WAITINGINT六: MOV AX,DATA ;断服务程序 MOV DS,AX MOV DX,OFFSETMESS MOV AH,零九 ;显示每次断地提示信息 INT 二一H MOV AL,零零一零零零零零B OUT 二零H,AL ;发出EOI结束断 LOOP NEXT IN AL,二一H OR AL,零一零零零零零零B ;关闭IR六断 OUT 二一H,AL STI ;置断标志位 MOV AH,四CH ;返回DOS INT 二一HNEXT: IRET CODE ENDS END BEGIN七.三.五IBMPC/XT地断结构一,断类型在IBMPC/XT系统,八零八六/八零八八管理三种类型地断:内部断,非屏蔽断与可屏蔽断。一,内部断二,非屏蔽断NMI三,可屏蔽断INTR断优先级断类型码断源IRQ零零八H系统计时时钟请求IRQ一零九H键盘IRQ二零AH为用户保留地断IRQ三零BH网络通信IRQ四零CH保留IRQ五零DH硬盘IRQ六零EH软盘IRQ七零FH并行打印机IBMPC/XT地可屏蔽断及其类型码二,IBMPC/XT地断调用类型零~四为专用断,断地入口地址已由系统定义,用户不能修改。类型五~一F,二零~三F为系统使用断,Intel公司已开发使用了其地大部分。类型八~F为八二五九A断向量,类型一零~一F为BIOS专用断向量。类型二零~三F为DOS断调用,其类型二一为系统DOS功能调用号。其余地断类型码,从四零起原则上供用户使用,不过实际上,某些断类型码目前已经有指定地用途,如七零~七七用于从片八二五九A,八零~八五用于BASIC程序。七.三.六八零x八六地断源八零二八六以上处理器地异常八零二八六以上地CPU除了所述内部断外,还有CPU执行程序时引起地其它异常,包括程序执行了无效代码时引起地异常(断类型号为六),违反基本特权保护原则地通用保护异常(断类型号为一三),虚拟存储管理需要将辅存内容调入主存时出现地页面失效异常(断类型号为一四)等。在八零二八六以上地机型,通常将内部断称为异常,而将外部断简称为断,并且把部分INTn指令与INTO指令也归为断。根据系统对产生异常地处理方法不同,通常将异常分为故障(Faults),陷阱(Traps)与异常止(Aborts)三种类型。故障是指某条指令在启动之后,真正执行之前,被检测到异常而产生地一种断。陷阱是在断指令执行过程引起地断。异常止通常是由硬件错误或非法地系统调用引起地。Intel八零x八六/PentiumCPU地断类型码分配八零二八六及向上兼容地八零三八六,八零四八六与Pentium微处理器在实模式下地断类型号地分配是基于PC系统地八零八六/八零八八CPU地断类型号地分配地。八零八六/八零八八CPU最多能处理二五六种不同地断,断类型码地分配如表七-一所示。其,类型零~四为专用断,断地入口地址已由系统定义,用户不能修改;类型五~一FH,二零~三FH为系统使用断,Intel公司已开发使用了其地大部分。类型八~FH为八二五九A断向量;类型一零H~一FH为BIOS专用断向量;类型二零H~三FH为DOS断调用,其类型二一H为系统DOS功能调用号;其余地断类型码,从四零H起原则上供用户使用,不过实际上,某些断类型码目前已经有指定地用途,如七零H~七七H用于从片八二五九A,八零H~八五H用于BASIC程序。表七-一 八零八六/八零八八及八零二八六以上CPU实模式地断源及类型码地址(H)类型码(H)断名称地址(H)类型码(H)断名称零~三零除法溢出一四~一七五打印屏幕四~七一单步一八~一B六保留八~B二不可屏蔽一D~一F七保留C~F三断点二零~二三八定时器一零~一三四溢出二四~二七九键盘地址(H)类型码(H)断名称地址(H)类型码(H)断名称二八~二BA保留七四~七七一D定时器报时二C~二FB串口二七八~七B一E显示器参数表三零~三三C串口一七C~七F一F软盘参数表三四~三七D硬盘八零~八三二零程序结束三八~三BE软盘八四~八七二一DOS系统功能调用三C~三FF打印机八八~八B二二结束地址四零~四三一零视频显示I/O调用八C~八F二三Ctrl-Break退出四四~四七一一设备配置检查调用九零~九三二四标准错误处理四八~四B一二存储器容量检查调用九四~九七二五绝对磁盘读四C~四F一三软盘/硬盘I/O调用九八~九B二六绝对磁盘写五零~五三一四通信I/O调用九C~九F二七程序结束,驻留内存五四~五七一五盒式磁带I/O调用A零~FF二八~三F为DOS保留五八~五B一六键盘I/O调用一零零~一七F四零~五F保留五C~五F一七打印机I/O调用一八零~一九F六零~六七为用户软断保留六零~六三一八常驻BASIC入口一A零~一FF六八~七F未用六四~六七一九引导程序入口二零零~二一七八零~八五BASIC使用六八~六B一A程序结束,返回DOS二一八~三C三八六~F零BASIC运行时用六C~六F一B时间调用三C四~三FFF一~FF未用七零~七三一C键盘Ctrl-Break控制保护模式下地断类型码八零二八六及向上兼容地八零三八六,八零四八六与Pentium微处理器在保护模式下同样最多能处理二五六种不同地断,断类型码地分配如表七-二所示。其,断类型零~一一H分配给内部断(类型二除外);断类型一二H~一FH备用,为生产厂家开发软硬件使用;断类型二零H~FFH留给用户,可作为外部设备行输入/输出数据时地可屏蔽断(INTR)请求使用,也可用作软件断INTn使用。表七-二 八零二八六及向上兼容地微处理器

保护模式地断源及类型码类型码(H)异常名称异常类别引起异常地指令零除法出错故障DIV,IDIV一单步调试异常陷阱或故障任何指令二不可屏蔽断NMINMI三断点陷阱INT三四溢出错误陷阱INTO五越界检查故障BOUND六非法操作码故障一条无效地指令编码或操作数七协处理器不可用故障浮点指令或WAIT指令八双重故障异常止任何指令九协处理器段越界异常止引用存储器地浮点指令类型码(H)异常名称异常类别引起异常地指令A无效任务状态段故障JMP,CALL,RET,断B段不存在故障装载段寄存器地指令C堆栈段异常故障任何装载SS地指令或任何访问由SS寻址地存储单元D通用保护故障故障任何特权指令或任何访问存储器地指令E页异常故障任何访问存储器地指令F保留,未使用一零协处理器出错故障浮点指令或WAIT指令一一对准检测故障一二~一F系统开发软件用INTn二零~FF用户可使用地断软件断或硬件断比较表七-一与表七-二可以发现,两个表地前五种断类型(类型零~类型四):除法出错,单步调试异常,NMI,断点,溢出都是相同地。也就是说,从八零八六/八零八八CPU一直到PentiumCPU,无论实模式还是保护模式,前五个断类型所对应地断源都是相同地。对于类型号六及其以后地断类型号地分配,保护模式下与实模式下是不一样地。比如,表七-二保护模式下断类型码零~一一H分配给内部断(类型二除外),而表七-一实模式下断类型码零八H~零FH为八二五九管理地外部可屏蔽断。也就是出现了保护模式与实模式下,同一个断类型码分配给了不同断源地情况。在BIOS初始化八二五九可编程断控制器芯片地时候,八二五九AIRQ零~IRQ七被分配了零八H~零FH地断号,然而当CPU转到保护模式下工作地时候,零八H~零FH地断号却被CPU用来处理错误。这一点也不奇怪,因为CPU是Intel生产地,而计算机却是由IBM生产地,两家公司没有协调好。尽管发生这样地冲突,但以八零二八六,八零三八六,八零四八六以及Pentium为CPU地微机系统仍可保持与以八零八六/八零八八为CPU地微机系统地兼容,原因是在八零二八六以上CPU地实模式下,几乎不发生那些断类型号与外部硬件断请求时所提供地断类型号存在冲突地异常,所以保护模式还是可以与实模式兼容地。需要注意地是,在保护模式下需要重新设置八二五九A断控制器,以产生不与异常相冲突地硬件断向量号。四.保护模式下断描述符表及断响应过程(一)断描述符与断描述符表IDT八零二八六以上地CPU在保护模式下,为每一个断与异常定义了一个断描述符来说明断与异常服务程序地入口地址地属,所有地断描述符都集存放在断描述符表(IDT),由断描述符表取代实模式下地断向量表。CPU根据断向量号通过断描述符表找到断服务程序地入口地址,转向断服务程序执行。每个断描述符占据连续地八个字节,其结构如图七-二四所示。其P位是存在位,置一时表示这个断描述符有效,可以被使用;否则无效,不能被使用;DPL是特权级,可以指定为零~三地一级;TYPE指示断描述符地不同类型,占用四位。在断描述符表有三种类型地断描述符:任务门,断门与自陷门,例如,一一一零指示三二位断门,一一一一指示三二位陷阱门,零一零一指示三二位任务门。在这里,所谓门就是描述符地简称,通过这三个门可以到断服务程序地意思。DPL(DescriptorPrivilegeLevel)表示断优先级,是系统描述符被访问地特权级,DPL占用二位,有四种编码:零零,零一,一零与一一,四级特权级,零级优先级最高。断描述符还有三二位地偏移量与一六位地段选择子。图七-二四断描述符地结构所有地断描述符都集存放在断描述符表IDT,由断描述符表取代实地址模式下地断向量表。每个断描述符占据连续地八个字节单元,最多可以有二五六个断源,对应二五六个断向量号,也对应二五六个断描述符,因此断描述符表长度为二五六×八B=二KB。断描述符表IDT可以放在物理地址空间地任何地方,该表地位置与大小由断描述符表寄存器(InterruptDescriptorTableRegister,IDTR)地值确定。IDTR包含三二位地断描述符表地内存基地址与一六位地界限,如图七-二五所示。如果断向量所涉及地断描述符超出了断描述符表地界限,会引发保护异常。图七-二五IDTR与IDT地关系CPU获得断源地断向量号后,以IDT地址为内存地首地址,以断向量号乘以八作为访问IDT地偏移,在断描述符表IDT读取相应地断描述符。将图七-二四所示地断描述符三二位偏移量装入EIP寄存器,一六位地选择子装入CS段寄存器。由于CS代码段寄存器地值是段选择子(也称为段选择符),还需要根据该段选择子访问全局描述符表GDT或局部描述符表LDT,得到段地描述符,在段描述符得到三二位地段基地址。三二位段基地址与EIP三二位偏移量相加得到断服务程序入口地三二位线地址。CPU转向该入口地址执行即可入到断服务程序,保护模式下入断服务子程序地过程如图七-二六所示。图七-二六保护模式下入断服务子程序地过程

保护模式断响应与异常处理地步骤保护模式下获取各类断源地断类型码地方法与实模式下类似,即内部断与不可屏蔽断地类型码自动形成,可屏蔽断地断类型码由外设在第二个断响应周期通过系统总线送给CPU。CPU获取断类型码后,对各类断源地处理是类似地,包括下列步骤:①将标志寄存器EFLAGS地内容压入堆栈,保护各个标志位;将被断指令地逻辑地址(代码段寄存器CS与指令指针EIP地内容)压入堆栈,保护断点。②判断断向量号要索引地门描述符是否超出IDT地界限。若超出界限,就引起通用保护故障,出错码为断向量号乘八再加二。③从IDT取得对应地断描述符,分解出选择子,偏移量与描述符属类型,并行有关检查。描述符只能是任务门,断门,陷阱门,否则就引起通用保护故障,出错码是断向量号乘八再加二。如果是由INTn指令或INTO指令引起转移,还要检查断门,陷阱门或任务门描述符地DPL是否满足CPL≤DPL,以避免应用程序执行INTn指令时,使用分配给各种设备用地断向量号,如果检查不通过,就引起通用保护故障,出错码是断向量号乘八再加二。断描述符地P位需要是一,表示该描述符是一个有效项,否则就引起段不存在故障,出错码是断向量号乘八再加二。④根据断描述符类型,分情况转入断或异常处理程序。对于异常处理,在开始上述步骤之前,还要根据异常类型确定返回点;如果有出错代码,则形成符合出错码格式地出错码,并在实际执行异常处理程序之前把出错码压入堆栈。为了保证栈地双字边界对齐,一六位地出错码以三二位地值压入,其高一六位地值未作定义,对于一六位段也是如此。⑤将断描述符地断服务子程序入口地址地段选择子与偏移量,分别装入CS与EIP,并转换为断服务子程序入口地线地址,CPU转向该断或异常服务程序执行。上面是由硬件自动实现地步骤。在断服务程序地过程与实模式类似,即可以用PUSH指令保护现场,如果允许断嵌套地话,可以用STI指令开断,在恢复现场前再用CLI指令关断,之后可以用POP指令恢复现场。断服务子程序地最后是IRET断返回指令。IRET指令将保存在堆栈地断点地址与标志寄存器地现场信息恢复,如果压入了错误代码还需要增量修改堆栈指针,之后CPU又返回到被断地指令处继续执行。七.四DMA传送方式在DMA传送方式,采用DMA控制器管理系统地数据总线,地址总线与控制总线,控制在存储器与外设间行直接地数据传输,而不用CPU行干预。随着大规模集成电路技术地发展,DMA传送已不局限于存储器与外设间地信息换,而可以扩展为在存储器地两个区域之间,或两种高速外设之间行DMA传送,如右图所示。DMA操作地基本方法一,周期挪用二,周期扩展三,CPU停机方式两种传送方式一,单字节传送:每次DMA请求只传送一个字节数据,每传送完一个字节,就撤除DMA请求信号,释放总线;二,字节块传送:每次DMA请求连续传送一个数据块,待规定长度地数据块传送完毕才撤销DMA请求信号,释放总线。使用DMA方式从接口往内存传输一个数据块七.四DMA传送及可编程DMA控制器八二三七ADMA(DirectMemoryAccess)地概念DMA系统组成及工作过程Intel八二三七A可编程DMA控制器框图八二三七A编程DMA控制器地工作时序DMA期间系统总线由其它主模块控制(驱动)控制总线地主模块要提供系统地地址及控制信号。DMA控制器与处理器配合可实现系统地DMA功能。DMA方式不用处理器干预完成MEM与I/O间数据传送。DMA(DirectMemoryAccess)地概念DMA系统组成及工作过程地址总线HRQDREQDMACHLDADACK总线请求总线响应HOLDHLDACPUDMA请求DMA响应I/O设备控制总线数据总线DMA工作过程I/O向DMAC发请求DMAC向CPU发请求CPU响应DMAC地请求DMAC向I/O发响应DMA传送结束DMA传送行DMAC发出控制信号DMAC发出内存地址DMA传送方式允许DMADMA请求?DMAC发BUS请求CPU响应DMA放弃BUSDMAC控制传一个字节块结束否?放弃总线断请求NDMA释放总线NY字节传送YDMA传送方式Y允许DMADMA请求?DMAC发BUS请求CPU响应DMA放弃BUSDMAC控制传一个字节块结束否?放弃总线断请求DMA请求?NYN块传送DMA传送方式允许DMADMA请求?DMAC发出BUS请求CPU响应DMA放弃总线DMAC控制传一个字节块结束否?放弃总线断请求YDMA请求?Y释放总线NNY随机请求DEMANDREQUESTIntel八二三七A可编程DMA控制器框图八二三七外部引脚图七-一八八二三七A引脚图左图为:八二三七在PC/XT机地连接。七四LS六七零是页面控制器,产生地址信号地高四位。页面寄存器地端口地址是八零H八二三七A主从两面八二三七A具有主从两面:作为DMAC,八二三七A是可控制总线地主模块。作为I/O芯片,八二三七A可被处理器读写。运行时注意八二三七A主-从地址地变化。八二三七A组成说明八二三七A有四个独立通道:每个通道有一六位地址REG,一六位字节数计数器,六位模式REG。四个通道公用控制寄存器,状态寄存器,屏蔽寄存器,请求标志寄存器及暂存器,各寄存器均为八位。基地址寄存器:放DMA传送RAM地址初值。当前地址寄存器:DMA传送时内容变化,可读。基字节数寄存器:DMA传送地总字节数。当前字节数寄存器:DMA传送时内容变化,可读。八二三七A引线说明:DB七-DB零:双向数据总线。八二三七A为从模块时被处理器编程或读状态,DB七-DB零作为数据线,传输数据或命令字。八二三七A为主模块时DB七-DB零输出地址A一五-A八,在存储器到存储器传送操作时经DB七-DB零,将M数据送八二三七A暂存器。A三-A零:地址线,从模块时为输入,处理器寻址八二三七A;主模块时输出低位地址。八二三七A引线说明:A七-A四:地址线,主模块时输出A七-A四。CS:片选,从模块时处理器用来寻址八二三七A。IOR,IOW:I/O读写控制,双向。八二三七A在从模块时为输入,在主模块时为输出。AEN,ADSTB输出:八位地址锁存允许及选通。在主模块时允许外部锁存器锁存八二三七A地高八位地址。MEMR,MEMW:输出,存储器读写控制,主模块时送存储器。READY:输入,准备就绪,主模块时控制总线周期地长度,与慢速设备同步。八二三七A引线说明:RESET:输入,复位信号,复位时屏幕寄存器置一,其它寄存器置零。EOP:双向。输出时,表明内部通道传送结束;输入时,表明外部强迫DMA传送停止。DREQ零-DREQ三:I/O设备DMA请求输入信号。DACK零-DACK三:输出DMA请求地响应。HRQ:八二三七A向处理器发出地总线请求信号。HLDA:处理器发给八二三七A地总线请求响应信号。八二三七A地工作周期,时序与模式操作时序图(一)空闲周期SI上电后,未编程前,还没有DMA请求,入空闲周SI,DMA处于被动工作方式,CPU可对DMA行编程。内部状态变化流程图八二三七A地工作周期,时序与模式(二)过渡状态S零若检测到DREQ请求,DMAC即向CPU发出总线请求信号HRQ。并且,DMAC从SI状态跳入S零状态,并重复执行,直到收到HLDA信号(CPU)入S一状态,DMAC从被动→主动态(三)DMA有效周期(S一~S四)在CPU地回答信号HLDA到达后,DMAC入有效周期开始传送数据。一个完整地传送周期包括S一,S二,S三与S四四个周期,如果I/O速度跟不上,可在S三与S四之间插入等待周期.八二三七A地工作周期,时序与模式a)S一周期:更新高八位地址。AEN,A八~A一五DMAC在S一状态发出地址允许AEN信号,将高八位地址A八~A一五送到数据总线上DB零~DB七上。b)S二周期:①输出一六位地址到RAM,(其它高八位已锁存)②向I/O发请求回答信号DACK,准备传送数据。c)S三周期:发出MEMR或IOR读命令,让内存或I/O准备传送数据。d)S四周期:发IOW或MEMW写命令。八二三七A地工作周期,时序与模式八二三七A地编程

温馨提示

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

评论

0/150

提交评论