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

下载本文档

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

文档简介

第6章输入输出技术6.3中断方式6.4直接存贮器存取

6.5例题解析6.2程序控制方式

6.1输入输出的基本方法

第6章基本输入输出接口教学重点

I/O接口电路的典型结构无条件传送方式查询传送方式中断工作过程6.1输入输出的基本方法6.1.1输入输出接口的概念及基本结构为什么需要I/O接口(电路)?微机的外部设备多种多样工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大它们不能与CPU直接相连必须经过中间电路再与系统相连这部分电路被称为I/O接口电路1.接口电路6.1.1输入/输出接口概述(续1)什么是I/O接口(电路)?I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路CPU接口电路I/O设备6.1.1输入/输出接口概述(续2)什么是微机接口技术?处理微机系统与外设间联系的技术注意其软硬结合的特点根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备2.接口电路分类⑴按接口电路的通用性⑵按数据传送格式⑶按接口是否可编程⑷按时序控制方式

专用接口通用接口

并行接口串行接口

可编程接口不可编程接口

同步接口异步接口

3.

接口的基本功能⑴对输入输出数据进行缓冲和锁存输出接口有锁存环节输入接口有缓冲环节⑵对信号的形式和数据的格式进行变换微机直接处理:数字量、开关量、脉冲量⑶对I/O端口进行寻址⑷与CPU和I/O设备进行联络⑸中断管理/DMA控制功能4.接口电路的基本结构控制总线CB地址总线ABI/O接口电路数据控制状态数据总线DBCPU外设控制寄存器状态寄存器数据寄存器6.1.2外设接口的编址方式接口电路占用的I/O端口有两类编排形式I/O端口单独编址I/O地址空间独立于存储地址空间如8086/8088I/O端口与存储器统一编址它们共享一个地址空间如M6800、51单片机1.I/O端口与存储器统一编址优点:不需要专门的I/O指令I/O数据存取与存储器数据存取一样灵活缺点:I/O端口要占去部分存储器地址空间程序不易阅读(不易分清访问存储器还是访问外设)内存部分I/O部分存储空间00000HFFFFFH2.I/O端口单独编址优点:I/O端口的地址空间独立控制和地址译码电路相对简单专门的I/O指令使程序清晰易读缺点:I/O指令没有存储器指令丰富内存空间I/O空间FFFFF0FFFF080x86采用I/O端口独立编址补充:8088/8086的输入输出指令输入指令INAL,i8/DX ;字节输入INAX,i8/DX ;字输入输出指令OUTi8/DX,AL ;字节输出OUTi8/DX ;字输出6.1.3输入输出的基本方法1.程序控制方式2.中断控制方式3.直接存储器存取控制方式4.通道方式5.外围处理方式数据传送方式程序控制下的数据传送——通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送查询传送中断传送直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理1.无条件传送方式及其接口在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送适合于简单设备,如LED数码管、按键/按纽等无条件传送的接口和操作均十分简单这种传送有前提:外设必须随时处于就绪状态6.2.程序控制方式无条件传送:输入示例IOR三态缓冲器OEI/O装置地址译码器CSD7~D0A15~A1A00160HMOVDX,160HINAL,DX无条件传送:输入实例MOVDX,160HINAL,DX74LS244+5V10Kx8G1G2数据总线CSRD无条件传送:输出示例地址译码器数据锁存器A15A0~A14-IOWCS0160H输出设备D7~D0MOVDX,160HMOVAL,[BX]OUTDX,AL无条件传送:输出实例MOVDX,160HMOVAL,[BX]OUTDX,AL+5V74LS373300

x8LEOE数据总线CSWRK7K1K0+5V…LED0…无条件传送:输入输出接口+5VD0~D7A0~A15CLKLS06反相驱动器LS2738D锁存器LS244三态缓冲器8000H译码LED7-G-IOW-IOR无条件传送:输入输出接口next: movdx,8000h ;DX指向数据端口

inal,dx

;从输入端口读开关状态

notal ;反相

outdx,al

;送输出端口显示

calldelay ;调子程序延时

jmpnext ;重复2.查询传送方式及其接口CPU先了解(查询)外设的工作状态,在外设就绪(可以交换信息的情况下)实现数据的输入或输出对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换查询传送的特点是:工作可靠,适用面宽,但传送效率低查询传送的两个环节查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪传送环节寻址数据口是输入,通过输入指令从数据口读入数据是输出,通过输出指令向数据口输出数据输入状态就绪?数据交换YN1位三态缓冲器查询输入接口-IOR+5V8D锁存器8位三态缓冲器译码

A0~A158000H8001HD0~D7D0输入设备-IOR-STBRQDD0

==0,重复读取状态D0

==1,开始读取数据查询输入接口

movdx,8000h ;DX指向状态端口status:inal,dx

;读状态端口

testal,01h ;测试标志位D0 jzstatus;D0=0,未就绪,继续查询

incdx;D0=1,就绪,DX指向数据端口

inal,dx;从数据端口输入数据查询输出接口8D锁存器译码1位三态缓冲器RQ

A0~A158000H8001HD0~D7D7D+5V-ACK-IOW-IOR输出设备D7

==1,继续读状态D7

==0,开始写数据查询输出接口

movdx,8000h ;DX指向状态端口status: inal,dx ;读取状态端口的状态数据

testal,80h ;测试标志位D7 jnzstatus ;D7=1,未就绪,继续查询

incdx ;D7=0,就绪,DX指向数据端口

moval,buf ;变量buf送AL

outdx,al ;将数据输出给数据端口6.3中断传送方式程序断点主程序中断请求为外设继续执行返回断点CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序提供服务中断服务程序

入口6.3.1中断的基本概念1.中断的概念2.中断控制方式中断传送是一种效率更高的程序传送方式进行传送的中断服务程序是预先设计好的中断请求是外设随机向CPU提出的CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚本书主要论述中断在输入和输出方面的应用中断还有着非常广泛的应用3.中断源能够引发中断的事件被称为中断源。通常,中断源有两类:内部中断源和外部中断源。由处理机内部产生的中断事件称为内部中断源。常见的内部中断源有计算溢出、指令的单步运行、执行特定的中断指令等。由处理机之外的外围设备产生的中断事件称为外部中断源。常见的外部中断源有外设的输入/输出请求、定时时间到、电源掉电、设备故障等。三态缓冲器中断传送与接口(续)+5V8D锁存器8位三态缓冲器RQ

译码8001H中断向量号D0~D7INTRD输入设备中断允许触发器A0~A15中断请求触发器-IOR-INTA-STB该中断向量号是提前就确定,放在某个地方的根据中断向量号,转到中断服务程序,开始读数据4.中断处理过程中断请求(外设)中断响应(CPU)关中断(CPU)断点保护(CPU)中断识别(硬件/软件)现场保护(用户)中断服务(用户)恢复现场(用户)开中断(CPU/用户)中断返回(用户)中断服务是进行数据交换的实质性环节5.中断系统的功能

①能进入中断和退出中断,即完成上述中断响应和中断返回的过程.②能对某些中断进行屏蔽,并在必要时开放.③能进行优先权排队.④提供中断嵌套能力.

6.3.28086中断系统8086的中断系统采用向量中断机制一共可处理256个中断采用中断向量编号0~255,对256个中断加以区别可屏蔽中断需借助专用的中断控制器Intel8259A对系统中的可屏蔽中断资源进行管理:扩充系统的可屏蔽中断资源,并管理它们:实现中断优先权比较实现中断源的识别1.8086中断类型硬件中断软件中断

⑴硬件中断

硬件中断,又称外部中断,它是由处理器外部的硬件、外围设备的请求而引起的中断。8086有两条硬件中断请求信号线:NMI(非屏蔽中断)和INTR(可屏蔽中断)。8088的中断类型中断逻辑INTO指令单步中断除法错误INTN指令CPUNMI8259A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源

-INTA可屏蔽中断申请

INTR不可屏蔽中断申请可屏蔽中断源不可屏蔽中断源内部中断⑵软件中断(内部中断)内部中断——内部机制产生除法错中断(0号)——除运算结果溢出时产生指令中断(n号)——执行intn指令后产生(操作码CDH)断点中断(3号)——执行int3指令(单字节指令操作码CCH)用于在调试中设置断点,程序遇断点则中断溢出中断(4号)——执行into指令,且前面运算有溢出(OF=1)时产生单步中断(1号)——TF标志置1后,每执行一条子指令将发生一次外部中断——外部引脚触发可屏蔽中断(外设提供向量号)——触发INTR引脚产生非屏蔽中断(2号)——

触发NMI引脚产生⑶中断优先权

8086规定中断优先权从高到低的顺序为:①除法错、溢出中断指令INTO、中断指令INTn。②非屏蔽中断NMI。③可屏蔽中断INTR。④单步中断。2.8088的中断向量表中断向量:指示中断服务程序的入口地址,该地址包括:偏移地址IP

、段地址CS

(共32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。8088微处理器从物理地址000H开始到3FFH(1KB),依次安排各个中断向量,向量号从0到255。256个中断响亮所占用的1KB区域,称中断向量表几个概念:向量号N/中断向量/中断服务程序的入口地址中断向量的存放首址=N×44B4B中断向量表1KB3FFH0H0号中断向量IPCS255号中断向量内部中断是由于8086内部执行程序出现特殊情况而引起的中断除法错中断: 向量号为0指令中断(intn): 向量号为n断点中断(int3): 向量号为3溢出中断(into): 向量号为4单步中断: 向量号为1内部中断的中断向量号已由Intel公司确定外部中断是由于8086外部通过CPU引脚提出中断请求而引起的中断非屏蔽中断(NMI):向量号为2外部通过非屏蔽中断NMI请求,必须响应非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或协处理器运算错误等)可屏蔽中断(INTR):向量号由中断控制器提供外部通过可屏蔽中断INTR

请求,由标志位IF控制是否响应;响应时将产生有效的–INTA

信号可屏蔽中断主要用于外设中断请求(请求交换数据等服务)标志位IF控制可屏蔽中断的响应中断标志IF的状态IF=0:可屏蔽中断不会被响应(禁止中断,关中断,中断屏蔽)系统复位,使IF=0任何一个中断被响应,使IF=0执行指令CLI,使IF=0IF=1:可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令STI,使IF=1执行指令IRET后IF将恢复为中断前的状态明确IF标志的状态是关键3.8086中断处理过程⑴可屏蔽中断的中断过程

中断源通过中断控制器8259向CPU发出中断请求信号

CPU在每一个指令周期的最后一个时钟周期采样INTR信号线当CPU响应可屏蔽级的中断请求时,首先通过信号线向8259连续发出两个负脉冲的中断响应信号。CPU暂停执行当前程序,而转去执行相应的中断处理程序

CPU执行中断服务程序返回断点,继续执行被打断的程序⑵非屏蔽中断和软件中断的执行过程查询中断的先后顺序决定了各中断源的优先级别软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断高低8086的中断响应过程NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF=1NNNNYYYYY执行中断服务8086的中断响应过程(续)Y还有NMIIF=1标志寄存器入栈TEMP=TF,IF=TF=0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)保护标志位(2)保证转移不受影响(3)保护断点的地址(4)获得中断程序地址由中断号*4的地址单元开始连续4字节内容为IP、CS的值(5)中断真正要完成的任务中断服务程序NNY(6)中断返回还原转到中断服务程序前的状态单步中断中断嵌套8086的中断响应过程(续)8088各种中断源的优先权,实际上是指被识别的先后顺序多种中断同时请求时,最先响应的则可能是单步中断或NMI中断6.3.38259中断控制器Intel8259A是可编程中断控制器PIC可配合CPU(I8080/85、I8086/88/286/386等)管理可屏蔽中断8259A的基本功能1片8259A可以管理8级中断,经级联最多可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的调用指令(配合I8080/85)或中断向量号(配合I8086/88/286/386)8259A设计有多种工作方式,通过初始化编程进行设置1.8259A的内部结构和引脚D7~D0-INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器-RD-WRA0-CSCAS0CSA1CAS2-SP/-EN优先权判别电路中断服务寄存器控制逻辑⑴8259的内部结构中断请求寄存器IRR保存8条外界中断请求信号IR0~IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许优先权判别器PR

优先权判别器(PR)用来识别各中断请求的优先级别

读/写控制电路

读/写控制电路接收来自CPU的读/写控制命令和片选控制信息

数据总线缓冲器这是一个8位的双向三态缓冲器,使8259和CPU数据总线D7~D0直接挂接,完成命令和状态信息的传送。

控制电路它是8259内部的控制器,根据CPU对8259编程设定的工作方式产生内部控制信号,向CPU发出中断请求信号INT,请求CPU响应,同时产生与当前中断请求服务有关的控制信号,并在接收到来自CPU的中断响应信号后,将中断类型号送到数据总线。

级联缓冲/比较器该功能部件用来实现多个8259的级联连接及数据缓冲方式。CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN

CAS0-INTACAS1CAS2INTIR0IR1-SP/-ENIR7CAS0IR0CAS1IR1CAS2IR2IR3-INTAIR4IR5INTIR6IR7-SP/-EN-INTAINTR+5V8259级联工作示意图8259A的级连输出得到响应的从片编号中断级连8259A可以级连,1个主片最多可以级连8个从片级连时,主片的级连线CAS0~CAS2连至每个从片的CAS0~CAS2,输出被选中的从片编号,每个从片的中断请求信号INT,连至主8259A的一个中断请求输入端IRx;主片的INT

线连至CPU的中断请求输入端INTR在非缓冲方式下,引脚-SP/-EN,通过接地指定该片充当从片(-SP=0);反之若接高电平则该片充当主片(-SP=1)。⑵8259的引脚功能8259芯片有28条引脚,双列直插式封装,如图6.10所示。图6.108259芯片引脚定义2.8259A的中断过程CAS0~CAS2D0~D7-SP/-ENIR0~IR7CPU响应周期8259A工作波形INT第1个总线周期T1T2T3T4ALECLK

第2个总线周期T1T2T3T4第1个-INTA前保持高电平

-INTA-LOCK中断向量主片输出级联信号从片接收3.8259A的工作方式普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式结束中断方式中断屏蔽方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式与CPU配合方式与8080/8085CPU配合与8086/8088CPU配合级连方式级连不级连(1)中断结束处理方式什么是8259A的中断结束?8259A利用中断服务寄存器ISR判断:某位为1,表示正在进行中断服务;该位为0,就是该中断结束服务。这里说明如何使ISR某位为0,不反映CPU的工作状态。(1)中断结束处理方式(续)自动中断结束方式普通中断结束方式配合全嵌套优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR位复位。特殊中断结束方式

配合循环优先权方式使用

CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位。(2)缓冲方式缓冲方式8259A的数据线需加缓冲器予以驱动8259A把SP*/EN*引脚作为输出端,输出允许信号,用以锁存或开启缓冲器非缓冲方式SP*/EN*引脚为输入端若8259A级连,由其确定是主片或从片(3)嵌套方式普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、……IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式只禁止低级优先中断优先权自动循环方式优先权特殊循环方式(4)中断屏蔽方式普通屏蔽方式将IMR的Di位置1,则对应的中断IRi被屏蔽,该中断请求不能从8259A送到CPU如果IMR的Di位置0,则允许IRi中断产生特殊屏蔽方式将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0⑸优先级的控制①固定优先级所谓固定优先级,即是指8259的8个中断源中,IR0优先级最高,IR1优先级次之,依次降低,直到IR7优先级最低,这个顺序固定不变。②循环优先级

8259将中断源IR0~IR7按下标序号顺序构成一个环,有两种规定方式:●自动优先循环级。该方式规定:刚被服务过的中断源,其优先级别被改为最低级,而将最高优先级赋给原来比它低一级的中断源,其它中断源的优先顺序依中断源顺序环确定。例如:CPU对IR3的中断服务刚结束时,IR3的优先级别变为最低,这时8259的8个中断源优先顺序由高到低为IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3。●指定优先循环级。该方式规定:在OCW2中指定的中断源,其优先级别被设为最低级,其它中断源的优先顺序依中断源顺序环确定。例如:CPU在对IR3的中断服务过程中,通过指令在OCW2中指定IR5具有最低优先级,则IR3中断服务结束时,2859A的8个中断源优先顺序由高到低为IR6,IR7,IR0,IR1,IR2,IR3,IR4,IR5。优先权方式普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为: IR0、IR1、IR2、……IR7中断请求后,8259A对当前请求中断中优先权最高的中断

IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式——允许同级中断嵌套(用于级连主片)优先权自动循环方式——最高优先权自动转移到相邻的低优先级中断源优先权特殊循环方式——最高优先权转移到由指令指定的中断源(6)中断触发方式边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号电平触发方式中断请求端出现的高电平是有效的中断请求信号(7)中断级连一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A级连时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*=1)还是从片(SP*=0)级连方式不级连——只用1片,如PC/XT级连——使用2~9片,如PC/AT(2片)-INTAINTRIR0IR7IR7IR0CAS0~CAS2=010INTINTD0~D7初始化编程

8259A开始工作前,用户必须对8259A进行初始化编程。通过写入初始化命令字ICW对8259A进行初始化。工作方式编程在8259A工作期间可以随时向8259A写入操作命令字OCW,使之按用户设置的新的工作方式进行工作,用户还可以通过写操作命令字OCW通知8259A,下面的操作要读取8259A中的状态信息,以便了解其工作情况。4.8259A的编程⑴8259的初始化编程8259初始化编程的主要任务有:①复位8259芯片。②设定中断请求信号INT有效的形式,是高电平有效,还是上升沿有效。③设定8259工作在单片方式还是多片级联方式。④设定8259管理的中断类型号的基值,即0级IR0所对应的中断类型号。⑤设定各中断级的优先次序,IR0最高,IR7最低。⑥设定一次中断处理结束时的结束方式。(1)初始化命令字ICW初始化命令字ICW最多有4个8259A在开始工作前必须写入必须按照ICW1~ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决定流程D7D6D5D4D3D2D1D0ICW1×××1LTIM×SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意为1为0都可以(建议为0)1——只能为1,作为标志中断触发方式:LTIM=1,电平触发方式LTIM=0,边沿触发方式规定单片或级连方式:SNGL=1,单片方式SNGL=0,级连方式是否写入ICW4IC4=1,要写入ICW4IC4=0,不写入ICW4,即ICW4规定的位全为0必须写入A0=0的地址ICW2T7T6T5T4T3×××D7D6D5D4D3D2D1D0设置中断向量号T7~T3为中断向量号的高5位低3位由8259A自动确定:IR0为000、IR1为001、……、IR7为111必须写入A0=1的地址,且一定紧跟在ICW1之后写入ICW3S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0级连命令字主片8259A:Si=1对应IRi接有从片;否则IRi没有连接从片从片8259A:ID0~ID2编码说明从片INT引脚接到主片哪个IR引脚必须写入A0=1的地址,级连时紧跟在ICW2之后写入ICW4000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM=1)普通全嵌套方式(SFNM=0)数据线的缓冲方式:缓冲方式(BUF=1)非缓冲方式(BUF=0)主片/从片选择:主片(M/S=1)从片(M/S=0)中断结束方式:自动中断结束(AEOI=1)非自动中断结束(AEOI=0)微处理器类型:16位80x86(PM=1)8位8080/8085(PM=0)必须写入A0=1的地址,由ICW1最低位决定是否需要8259芯片的初始化流程

ICW4(A0=1)SNGL=0?ICW1的IC4=1?初始化完,准备接受中断请求输入是是否ICW1(A0=0,D4=1)ICW2(A0=0)ICW3(A0=0)否初始化主片8259A

moval,11h ;写入ICW1 out20h,al jmpintr1 intr1: moval,08h ;写入ICW2 out21h,al jmpintr2 intr2: moval,04h ;写入ICW3 out21h,al jmpintr3 intr3: moval,1h ;写入ICW4 out21h,al中断控制器的初始化程序段初始化从片8259A

moval,11h ;写入ICW1 out0a0h,al jmpintr5intr5: moval,70h ;写入ICW2 out0a1h,al jmpintr6intr6: moval,02h ;写入ICW3 out0a1h,al jmpintr7intr7: moval,01h ;写入ICW4 out0a1h,al中断控制器的初始化程序段⑵工作方式编程8259工作方式编程主要完成的任务是对中断请求的屏蔽、优先级循环控制、中断结束方式、内部控制寄存器的查询等。8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1~OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWD7D6D5D4D3D2D1D0OCW1M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字内容写入中断屏蔽寄存器IMRDi=Mi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。不是初始化的顺序写入A0=1地址的就是OCW1OCW2RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序L2~L0的3位编码指定IR引脚必须写入A0=0的地址,由特征位与ICW1区分OCW30ESMMSMM01PRRRISD7D6D5D4D3D2D1D0ESMM、SMM设置中断屏蔽方式P、RR和RIS规定随后读取的状态字含义必须写入A0=0的地址,由特征位与ICW1、OCW2区分读取状态字CPU可读出IRR、ISR、IMR和查询字A0为低,由OCW3中RR和RIS位设定读取IRR或ISR,由OCW3中P位设定读取查询字而A0引脚为高电平时读取的都是IMR查询字反映8259A是否有中断请求查询字I----W2W1W0D7D6D5D4D3D2D1D0中断位I位为1,有外设请求中断W2~W0的编码当前中断请求的最高优先级补充:命令字和状态字的区别方法⑴利用读写信号区别写入的控制寄存器和读出的状态寄存器⑵利用地址信号区别不同I/O地址的寄存器⑶由控制字中的标志位说明是哪个寄存器⑷由芯片内顺序控制逻辑按一定顺序识别不同的寄存器⑸由前面的控制字决定后续操作的寄存器接口电路中常用的方法(1)与CPU的配合方式与8080/8085CPU配合——

中断响应时,-INTA信号3次有效,8259A送CALLXXXXH指令(3个字节)的机器代码到数据总线;与8086/8088CPU配合——中断响应时,-INTA信号2次有效,8259A送相应的中断向量号(1个字节)到数据总线。8080/85CPU8259A8086/88CPU8259ACALLXXXXH中断向量号-INTAINTR-INTAINTR5.80X86微机的中断控制器(2)与处理器接口-CSA0-RD-WR功能00100110000101010×111×××写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态6.4.3中断识别和中断优先权处理问题1:系统有多个中断请求,CPU如何识别中断源?办法1: 向量中断(硬件)办法2: 中断查询(软/硬件结合)中断源的识别……中断查询接口A0~A15锁存器INTR三态缓冲器译码

8001HD0~D7中断A中断B中断C中断H-IOR6.4.3中断优先权(续2)问题3:中断处理过程中,又有中断提出请求,怎么办?办法1:链式优先权排队电路办法2:优先权编码电路中断嵌套链式中断优先权排队电路A2A1C2C1D2D1B2B1中断源A触发器中断源B触发器中断源C触发器中断矢量D中断矢量C中断矢量B中断矢量A中断源D触发器缓冲器缓冲器缓冲器缓冲器-INTA高优先级…中断优先权编码电路比较器失效信号(先前无中断请求时有效为1)(先前有中断在服务无效为0)比较器8:3优先权编码器优先权寄存器D0~D721A<B中断请求0中断请求1中断请求2A0A1A2INTRB0B1B2有中断请求当前正在执行的中断编号I/O接口的典型结构1.接口电路的内部结构2.接口电路的外部特性3.接口芯片的分类4.接口芯片的可编程性1.接口电路的内部结构CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部: ⑴数据寄存器保存外设给CPU和CPU发往外设的数据 ⑵状态寄存器保存外设或接口电路的状态 ⑶控制寄存器保存CPU给外设或接口电路的命令理解端口2.接口电路的外部特性面向CPU一侧的信号:用于与CPU连接主要是数据、地址和控制信号面向外设一侧的信号:用于与外设连接提供的信号五花八门功能定义、时序及有效电平等差异较大3.接口芯片的分类接口电路核心部分往往是一块或数块大规模集成电路芯片(接口芯片):通用接口芯片支持通用的数据输入输出和控制的接口芯片面向外设的专用接口芯片针对某种外设设计、与该种外设接口

面向微机系统的专用接口芯片与CPU和系统配套使用,以增强其总体功能4.接口电路的可编程性许多接口电路具有多种功能和工作方式,可以通过编程的方法选定其中一种接口需要进行物理连接,还需要编写接口软件接口软件有两类:初始化程序段——设定芯片工作方式等数据交换程序段——管理、控制、驱动外设,负责外设和系统间信息交换IBMPC/AT主机板的I/O译码电路接口芯片内部译码A0~A4DMA控制器1中断控制器1定时计数器并行接口电路DMA页面寄存器中断控制器2DMA控制器2协处理器A5A6A7A8A9ALS138译码器HLDAMASTERABCE1-E2-E3Y0Y1Y2Y3Y4Y5Y6Y7IBMPC/XT主机板的I/O译码电路Y0Y1Y2Y3Y4Y5Y6Y7A5A6A7A8A9AEN-IOWAB

C-G2B-G2AG174LS138-DMACS(8237)-INTRCS(8259)-T/CCS(8253)-PPICS(8255)-WRTDMAPG(写DMA页面寄存器)-WRTNMIREG(写NMI屏蔽寄存器)用门电路实现I/O地址译码A9A8A7A6A5A2A4A3AENA1A074LS03I/O地址3E7H6.4DMA传送方式希望克服程序控制传送的不足: 外设→CPU→存储器 外设←CPU←存储器直接存储器存取DMA:不经CPU,不用指令

外设→存储器(DMA写)

外设←存储器(DMA读)

扩展:外设↔

外设CPU出让系统总线(输出高阻),由DMA控制器(DMAC)接管系统总线6.4.1DMA传送的工作过程⑴CPU对DMA控制器进行初始化设置⑵外设、DMAC、CPU,3者通过应答信号建立联系:CPU将总线暂交DMAC控制,事后再将控制权返还。⑶DMA传送DMA读:存储器→外设DMA写:存储器←

外设⑷DMAC的功能:对存储器寻址地址动加1/减1计数器减1判断传送是否完成CPU传送-MEMW-IOR数据总线地址总线输入设备存储器CPUDMA传送(以DMA写为例)-MEMW-IOR数据总线地址总线输入设备存储器DMACCPU②③④①HOLDHLDADMA传送流程HLDA发存储器地址传送数据传送结束?DMA结束修改地址指针否是传送方式的比较无条件传送:慢速外设需与CPU保持同步查询传送:简单实用,效率较低中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送6.4.2DMA控制器8237每个8237A芯片有4个DMA通道,就是有4个DMA控制器每个DMA通道具有不同的优先权每个DMA通道可以分别允许和禁止每个DMA通道有4种工作方式一次传送的最大长度可达64KB多个8237A芯片可以级连,扩展通道数1.DMA控制器的功能①编程设定DMA的传输模式及其所访问内存的地址区域。②屏蔽或接受外围设备的DMA请求(DREQ),当有多个设备同时请求时,还要进行优先级排队,首先接受最高级的请求。③向CPU转达DMA请求,DMA控制器要向CPU发出总线请求信号HOLD(高电平有效),请求CPU放弃总线的控制。④接收CPU的总线响应信号(HLDA),接管总线控制权,实现对总线的控制。⑤向相应外围设备转达DMA允许信号DACK。于是在DMA控制器的管理下,实现外围设备和存储器之间的数据直接传送。⑥在传送过程中进行地址修改和字节计数。在传送完要求的字节数后,向CPU发出DMA结束信号(EOP),撤消总线请求(HRQ),将总线控制权交还给CPU。2.可编程DMA控制器Intel8237DMAC的主要性能和内部结构

内部结构和外部引脚都相对比较复杂应用观点,内部主要由两类寄存器组成通道寄存器控制和状态寄存器首先分类展开外部引脚3.8237的

外部引脚(1)请求与响应信号DREQ0~DREQ3:DMA通道请求。当外设需要请求DMA服务时,将DREQ信号置成有效电平,并要保持到产生响应信号。HRQ:总线请求。8237A输出有效的HRQ高电平,向CPU申请使用系统总线。HLDA:总线响应。8237A接受来自CPU的响应信号HLDA,取得了总线的控制权。DACK0~DACK3:DMA通道响应。8237A使请求服务的通道产生相应的DMA响应信号。3.8237的外部引脚(2)DMA传送控制信号A0~A7:地址线。输出低8位存储器地址。DB0~DB7:数据线。输出高8位存储器地址;存贮器与存贮器的传送期间,用于数据传送。ADSTB:地址选通。DMA传送开始时,输出高有效,把在DB0~DB7上输出的高8位地址锁存在外部锁存器中。AEN:地址允许。输出高有效,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址。(2)DMA传送控制信号(续)MEMR*:存储器读。有效将数据从存储器读出MEMW*:存储器写。有效将数据写入存储器IOR*:I/O读。有效将数据从外设读出IOW*:I/O。有效将数据写入外设READY:准备好。DMA传送的S3下降沿检测到为低时,插入等待状态Sw,直到READY为高才进入第4个时钟周期S4。EOP*:过程结束。DMA传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结DMA传送。

(3)处理器接口信号DB0~DB7:数据线。用于8237A与微处理器进行数据交换。A0~A3:地址线。用以选择芯片内部寄存器。CS*:片选。低有效时,微处理器与8237A通过数据线通信,主要完成对8237A的编程。IOR*:I/O读。读取8237A内部寄存器。IOW*:I/O写。写入8237A内部寄存器。CLK:时钟。控制芯片内部操作和数据传输。RESET:复位。使8237A处于初始状态。4.8237DMAC的工作方式DMA传送方式·

单字节传送方式 ·

数据块传送方式·

请求传送方式 ·

级连方式DMA传送类型·DMA读 ·DMA写 ·DMA检验存储器到存储器的传送工作模式(传送方式)和操作类型。

①.DMA传送-单字节方式每次DMA传送时仅传送一个字节传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效8237A释放系统总线,将控制权还给CPU若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化特点:一次传送一个字节,效率略低DMA传送之间CPU有机会重新获取总线控制权⑴工作模式:(每个通道有4种工作模式)②数据块传送方式由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送DREQ只需维持有效到DACK有效特点:一次请求传送一个数据块,效率高整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等)③请求传送方式DREQ信号有效就连续传送数据DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作DMA通道的地址和字节数的中间值仍被保持DREQ信号再次有效,DMA传送就继续进行如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终止计数特点:DMA操作可由外设利用DREQ信号控制传送的过程④级联方式用于通过多个8237A级连以扩展通道第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上第二级芯片的优先权等级与所连通道的优先权相对应第一级只起优先权网络的作用,实际的操作由第二级芯片完成还可由第二级扩展到第三级等⑵操作类型

DMA读——把数据由存储器传送到外设由MEMR*有效从存储器读出数据,由IOW*有效把这一数据写入外设DMA写——把外设输入的数据写入存储器由IOR*有效从外设输入数据,由MEMW*有效把这一数据写入存储器。DMA检验——空操作8237A不进行任何检验外设可以进行DMA校验存储器和I/O控制线保持无效,不进行传送存储器→存储器传送存储器→存储器传送固定使用通道0和通道1通道0的地址寄存器存源区地址通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数传送由设置通道0的软件请求启动每传送一字节需用8个时钟周期前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区5.8237的控制字和编程8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令8237A的“软件命令”不需要通过数据总线写入控制字直接由地址和控制信号译码实现全部都用地址A0~A3区分(1)当前地址寄存器保持DMA传送的当前地址值每次传送后该寄存器的值自动加1或减1这个寄存器的值可由CPU写入和读出基地址寄存器存放初始值㈠内部寄存器(2)当前字节数寄存器保持DMA传送的剩余字节数每次传送后,该寄存器的值减1这个寄存器的值可由CPU写入和读出该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数传送N个字节,初始值为N-1传送N个字节,初始值为N-1基字节数寄存器存放初始值⑶基地址寄存器和基字节计数寄存器每个通道均有一个16位的基地址寄存器和一个16位的基字节计数寄存器。它们用来存放所对应的地址寄存器和字节计数器的初始值。在编程时,这两个寄存器由CPU以连续两字节方式与对应的当前寄存器同时写入,但它们的内容不能读出。在自动预置方式时,基本寄存器的内容被用来恢复当前寄存器的初始值。(4)命令寄存器存放8237A的命令字设置8237A芯片的操作方式影响每个DMA通道复位时使命令寄存器清零设置D2=1才使8237A可以作为DMA控制器请看命令字的格式命令字格式D7D6D5D4D3D2D1D00DACK低有效1DACK高有效0DREQ高有效1DREQ低有效0滞后写1扩展写×若D3=10固定优先权1循环优先权0正常时序1压缩时序×若D0=10允许DMAC工作1禁止DMAC工作0允许通道0地址改变1禁止通道0地址改变×若D0=00禁止存储器之间传送1允许存储器之间传送(5)方式寄存器存放相应通道的方式控制字选择某个DMA通道的工作方式其中用最低2位选择哪个DMA通道请看方式字的格式方式字格式D7D6D5D4D3D2D1D000请求模式01单字节模式10数据块模式11级联模式0地址增量(加1)1地址减量(减1)0禁止自动初始化1允许自动初始化00 DMA校验01 DMA写10 DMA读11 非法×× 若D7D6=1100通道001通道110通道211通道3(6)请求寄存器存放软件DMA请求状态除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求若是存贮器到存贮器传送,则必须由软件请求启动通道0请看请求字的格式请求字格式D7D6D5D4D3D2D1D0任意0复位1置位00通道001通道110通道211通道3(7)屏蔽寄存器控制外设硬件DMA请求是否被响应(为0允许),各个通道互相独立。3种方法:单通道屏蔽字只对一个DMA通道屏蔽位进行设置主屏蔽字对4个DMA通道屏蔽位同时进行设置清屏蔽寄存器命令使4个屏蔽位都清零(允许)复位使4个通道全置于屏蔽状态当一个通道的DMA过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次DMA传送请看屏蔽字的格式单通道屏蔽字格式D7D6D5D4D3D2D1D0任意0清屏蔽位1置屏蔽位00通道001通道110通道211通道3主屏蔽字格式D7D6D5D4D3D2D1D0任意Di=0清通道I屏蔽位Di=1置通道I屏蔽位(8)状态寄存器可由CPU读取低4位反映读命令这个瞬间每个通道是否产生TC(为1,表示该通道传送结束)高4位反映每个通道的DMA请求情况(为1,表示该通道有请求)状态位在复位或被读出后,均被清零(9)暂存寄

温馨提示

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

评论

0/150

提交评论