H2003031228_李婷婷_大型中断接口器件的功能演示的可视化设计_第1页
H2003031228_李婷婷_大型中断接口器件的功能演示的可视化设计_第2页
H2003031228_李婷婷_大型中断接口器件的功能演示的可视化设计_第3页
H2003031228_李婷婷_大型中断接口器件的功能演示的可视化设计_第4页
H2003031228_李婷婷_大型中断接口器件的功能演示的可视化设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

分类号:TP311.1 U D C:D10621-408-(2007) -6112-0密 级:公 开 编 号:2003031228成都信息工程学院学位论文中断接口器件的功能演示的可视化设计 论文作者姓名:李 婷 婷申请学位专业:计算机科学与技术申请学位类别:信息安全学士指导教师姓名(职称):王中科(讲师)论文提交日期:2007年7月 25 日中断接口器件功能演示的可视化设计摘 要中断是计算机系统中十分重要的一种机制。它是解决外部设备和系统连接的很好途径,有效地实现了外部设备与CPU的并行工作。在实际应用中,除了要考虑如何对中断控制器编程进行的问题,还要对采用中断方式进行I/O控制的接口电路进行设计。中断是一种信号,它告诉微处理器已发生了某种需要特别注意的事件,需要去处理或为其服务。在本课题中我们深刻的了解到了8259A的工作方式,工作原理和工作状况;同时知道了中断存在的重要意义,中断通俗的理解可以认为是“异常”,在有异常发生的情况下产生的情况,在两件摆在眼前的事物中选择更需要立刻执行响应的程序,即是在中断中所说的优先级。我们运用编程技术,将8259A芯片仿真式的展现出来,用C+结合程序结构,编程演示其内部的工作机理。利用程序的设计,将芯片的工作原理通过实验平台给大家一个直观的演示,以便对中断的概念理解得更透彻。关键词:8259A;优先级;状态机;可视化;仿真 The Design of Interrupt Controller Functional Demo of Visual DesignAbstractThe interruption is a important function in each computer system. Interruption is the solution of external equipment and systems is a good way to connect, it availably carried out exterior equipments and proceed together of CPU a work.In physically appliedly, in addition to want to consider how to break off a controller plait the distance carry on of problem, also want to break off a way to carry on I/O to control to the adoption of connect a peoples electric circuit to carry on a design.The interruption is a kind of signal, it tells that the microprocessor has already taken place a certain demand specially notices of affairs, need a whereabouts reason or contribute efforts to it.We deeply understood the work method with 8259A in this topic, work principle and work condition;Knew to break off existent important meaning in the meantime, break off the popular comprehension can think to be a abnormality, under the sistuation that have excrescent occurrence output circumstance, at two procedures which put in the at present thing to win election to choose to even need to immediately carry out to respond to, is in the interruption say of have the initiative class.Our usage weaves a distance technique, 8259A the chip imitate the display of true type to come out and use C+combine procedure structure, weave a distance to play to show it inner part of work mechanism.Make use of the design of procedure, pass the work principle of chip experiment terrace to everyones a consciousness which keeps a view, make everyone to understand the mean of interruption more very clear.Key words: 8259A;priority; state machine;visual; emulation 目 录论文总页数:29页1引言11.1实验台的现状说明和设计目标11.28259A的外部引脚图21.38259A的内部结构41.4中断优先级分析器的工作原理51.58259A的工作原理61.6该课题的主要研究方向和研究方法72对该课题的部分概念的重点说明72.1可视化的理解说明72.2访真式编程的理解说明92.3状态机的理解说明92.4CPU与8259A之间的转换方式103代码的编写工作以及说明113.1对代码的初步设计工作113.2对基类和派生类的主要函数的解释说明123.2.1对基类中部分函数的解说123.2.2对派生类中部分函数的解说133.3对各器件的初始化编程143.4对部分代码的说明193.4.1固定值的定义方式203.4.2与CPU之间的连接线定义方式213.4.3判断优先级的引脚设定223.4.5读写信号的设定243.5实现中断要求的程序解说244测试结果与工作总结25结 论26参 考 文 献27致 谢28声 明291引言1.1实验台的现状说明和设计目标现今社会,计算机越来越普及,我们只知道计算机的外部结构和某部分软件是远远不够的,至少我们要对和我们日常生活打交道的朋友的一些重要内部情况。计算机有着许多的寄存器、接口器件、分析器等等。其中中断接口是特别重要的一个概念。每敲击一次键盘都相当于一次中断信号。而主管这个中断信号的就是计算机中的8259芯片。它最突出的特别是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请后,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。我们只有对8259A了解后才能进一步了解计算机系统。而我们在最开始了解到的计算机系统中只是知道可一些表面上的东西,实质上计算机是如何工作、我们为什么能通过键盘向计算机发出命令、打印机是怎么打印文件的等都不明白,通过这个仿真式的实验我们对计算机的内部系统等做个详细的剖析。键盘上的每一次击打键入都相当于一次信号的发出,对于计算机来说这每击一键都发出了一个中断信号,告诉CPU有“键盘输入”事件发生,要求CPU读入该键的键值;而打印每一个字符也是一次中断的过程。这些都需要中断控制器8259A协助CPU进行中断处理和完成工作的。中断方法是解决外部设备和系统连接的很好途径,它有效地实现了外部设备与CPU的并行工作。在实际应用中,除了要考虑如何对中断控制器编程进行的问题,还要对采用中断方式进行I/O控制的接口电路进行设计。目前仿真式成为计算机实验的一个发展方向,因为它不需要硬件平台,避免了器件的磨损和开销,同时没有实验环境的时空限制,使演示更加生动,以便更好理解电路运行原理。我们采用实验台这个平台将程序的运行状况直观的展现出来,实验台的设计是通过纯软件的形式模仿硬件接口实验台的逻辑功能,而软件模仿结果与真实硬件实验台的结果是一致的,形象的显示出实验的过程与结果。它分为器件和连线两个部分:对于器件,先是设计一个器件基类,然后由他派生出许多不同的器件类;对于连线,每一个连线可能有很多分支,程序中我们用树的结构表示。同时,我们用测试程序来作为该器件的电路上层程序。来管理器件和连线。在设计中,信号在连线上流动。我们的程序中对连线森林中对应的连线树进行遍历来实现信号流动的动态显示,当遍历到树的节点时,则是一个器件的引脚。我们得到器件对象,然后调用该对象的器件基类的虚函数。对应器件类的这个函数可以实现对该信号的逻辑处理。我们需要对目前的这个实验台进行改进,在执行显示器件的条件下,能同时将该器件的内部逻辑框图展现出来,基本完全实现了上层电路层,基本实现四个常用的大规模集成接口器件的内部逻辑并能够灵活设置电路图,模仿正确及错误的结果。在8259A芯片中,我们通过OutSig函数对该器件的引脚和其得到的输入信号值来确定在某个时候该器件的哪个引脚得到什么信号,而对此信号做出怎样的响应。这样真正的将8259A的仿真式编程所得到的器件直观的展现出来,得到可视化的视图。1.28259A的外部引脚图8259A为28脚双列直插式芯片,可分为三组。.面向CPU的信号线:数据线(D0-D7)、地址线(CS、A0)和控制线(WR、RD、INT、INTA);.面向I/O设备的信号线:中断请求线(UR0-IR7);.面向同类芯片的信号线:级联控制线(SP/EN、CAS0-CAS2)。8259A有下列工作特点:1、1片8259A能管理8级中断,并且,在基本不增加其他电路的情况下,可以用9片8259A来构成64级的主从式中断系统。2、由于8259A是可编程的,所以使用起来非常灵活。实际系统中,可以通过编程使8259A工作在多种不同的方式。3、8259A用NMOS工艺制造,只需要一组5V电源。8259A具有以下主要功能: 具有8级优先权控制,通过级联可扩展至64级优先权控制; 每一级中断都可以屏蔽或允许; 在中断响应周期,8259A可提供相应的中断向量,从而能迅速转入中断服务程序; 8259A有几种中断管理模式,可以通过编程进行选择。其外部引脚图如1-1所示。 图 1-1 8259A外部引脚图 各引脚的作用功能如表1-1 表1-1: 引脚功能 名 称 脚 号输入/输出功 能CS 1输 入 片 选WR 2 输 入 写RD 3 输 入 读 D0D7 411输入或输出双向数据总线:通过它传送命令,接受状态和读取中断向量CAS0CAS2 12 13 15输入或输出级联总线:主控8259A与从控8259A的连接线。主控时该总线为输出,从控时则为输入。SP/EN 16 输入或输出主从定义/缓冲器方向:为双功能脚,在非缓冲方式中用做输入线,指定8259A为主控制器(SP=1)。在缓冲方式中用做输出线,控制缓冲器的接收/发送。 INT 17 输 出 8259A的中断申请:当8259A收到从外设经IR脚送来的中断申请时,由它输出高电平,对CPU提出中断申请。该脚连到CPU的INTR引脚。IR0IR71825输 入外设的中断请求:从外设来的中断请求由这些脚输入到8259A。在边沿触发方式中IR输入应有由低到高的上升沿,此后保持为高,直到被响应。在电平触发方式中,IR输入应保持高电平直到被响应为止。INTA 26 输 入中断响应:2个中断响应脉冲,第一个INTA用来通知8259A,中断申请已被响应;第二个INTA作为读操作信号,读取8259A提供的中断类型号。A0 27 输 入A0地址线:这个脚与引脚1、2、3联合使用,以便CPU实现对8259A的读写操作。它作为8259A芯片内部端口寻址。 GND 14 输 入地 Vcc 28 输 入 +5V电源 1.38259A的内部结构 它有8根中断请求输入线IR7IR0,内部有8个主要的功能块。其中3个寄存器是可编程的,即用户可用程序访问它们,这3个寄存器都是8位的。8259A内部结构逻辑主要由以下三部分组成:(1)控制逻辑(2)中断优先权判优及其屏蔽(3)辅助电路8259A内部结构如图1-2所示: 图1-2 8259A内部逻辑图根据上图我们必须详细了解到关于8259A中的各个部件及其功能。其显示如表1-2所示: 表1-2 8259A内部部件功能 名 称功 能中断请求寄存器IRR保存8条外界中断请求信号IR0IR7的请求状态,Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态,Di位为1表示IRi中断正在服务中;为0表示没有被服务 中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态,Di位为1表示IRi中断被屏蔽(禁止);为0表示允许优先级比较器用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套数据总线缓冲器是8259A与系统数据总线的接口,是8位双向三态缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该缓冲器传送的。读/写控制器CPU通过它实现对8259A的读/写操作。级联缓冲器用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。逻辑控制电路对整个芯片内部各部件的工作进行协调和控制1.4中断优先级分析器的工作原理可编程中断控制器中断控制器8259A是专门为控制优先级中断而设计开发的芯片。用于实现中断优先管理、中断屏蔽。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需要增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。根据CPU发来的命令字定义和修改IRR中各中断源的优先级别,多个中断源同时请求中断时,可根据各中断源的优先级别判断并选择出最高的优先级别,进而判断该优先权是否高于正在处理的中断,若当前申请中断的最高优先权高于正在处理的中断级,则向CPU发出中断请求信号。该分析器相当于一个优先级编码器和一个比较器电路,可实现中断判优及屏蔽的功能。按优先级设置方法可有如下四种方式:全嵌套方式;特殊全嵌套方式;优先级自动循环方式;优先级特殊循环方式。中断优先级分析器工作的大致过程如图1-3所示: 图1-3 中断优先级分析器的工作原理1.58259A的工作原理IR线上提出了中断请求的中断源,即出现请求,IRR中断请求寄存器(共有8位D7D0)对应于连接在IR0IR7线上的外设的中断请求,哪一根输入线有请求,哪一根输入线就置1。我们假设现有一中断信号输入,那么中断过程的时序图如1-4所示 图1-4 中断时序图1.6该课题的主要研究方向和研究方法该课题是对8259A芯片的工作工程进行可视化的演示,同时需要把芯片自身的功能结合程序结构编程演示其内部的工作机理。同时使我们在学习编写程序的基础上明白计算机系统的内部的构造和系统。对于计算机使用者来说,我们常常只看到了计算机工作却不知道他是怎么进行和完成工作的,计算机的内部是又许多芯片组成的,每个芯片都有它必不可少的作用,本课题就是让你了解到各个不同芯片的作用、工作原理、工作方式和工作状况等。通过对每个芯片的了解从而进一步的了解到计算机系统。笔者所做的是关于中断接口这一模块,而控制中断的芯片是8259A。它的主要作用是和CPU之间互相交换中断的信息,而8259A的中断屏蔽寄存器IMR可以屏蔽一个或几个IR的中断请求,它加强了对中断的控制能力。而且8259A是内部主动的初始化芯片,即是我们常说的仿真式的初始化,这是其一个重要的特点。在以前的学习过程中,我们对8259A这个芯片不是特别的了解,所以我们要通过对其内部的初始化编程、工作方式的编程、操作命令字的编程等将其统一起来。在这次研究中,我们为了更加明确真实的显示出芯片的工作状况和工作原理,我们用代码仿真式的编程出每个器件和芯片。使我们在不需要真实物品的情况下同样能把整个中断或是其他的响应过程都真实的展现在大家的眼前。对于我们一整个小组而言,需要的是把各个芯片结合起来使计算机系统能完成各个响应,同时使其能在实验台上真实的演示,得到直观的视图。其中运用到C、C+、VC+6.0三种语言,在实验台这个平台上让我们对程序的流程及中断的工作方式得到详细的理解。2对该课题的部分概念的重点说明2.1可视化的理解说明 什么叫可视化?每个语言本身都是“不可视”的,仅仅是语言而已;所谓“可视化”不过是支持该语言的IDE(通俗点说就是编程工具)所提供的功能,让你在编窗口等一些“看到着”的程序时可以使用拖拽等可视化操作。可视化就是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及到计算机图形学、图像处理、计算机视觉、计算机辅助设计等多个领域,成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。可视化技术最早运用于计算科学中,并形成了可视化技术的一个重要分支科学计算可视化(Visualization in Scientific Computing)。科学计算可视化能够把科学数据,包括测量获得的数值、图像或是计算中涉及、产生的数字信息变为直观的、以图形图像信息表示的、随时间和空间变化的物理现象或物理量呈现在研究者面前,使他们能够观察、模拟和计算。科学计算可视化自1987年提出以来,在各工程和计算领域得到了广泛的应用和发展。Visual C+提供了一个支持可视化编程的集成开发环境:Visual Studio(又名Developer Studio)。Developer Studio是一个通用的应用程序集成开发环境。可视化是指能使程序在实验台上得到实现和得到真实直观的效果图。这是由我们这组的一个同学单独做到,同时能让我的程序和他的实验台能相互得到实现,相互制约相互响应和发出信号。使用类视图显示所有已定义的类以及这些类中的数据成员、成员变量。Visual C+自动从项目工作区中所包含的源程序文件中分离出类。作为本课题的中心思想,所得到的编程结果最后都需要能通过检测程序得到直观的视图,即为可视化。在装载8259A的DLL以后读取到该芯片的信息,得到的器件图如图2-1所示: 图2-1 测试程序所得器件图 而此时假设输入信号,那么我们能从信息框看到结果,信息框的显示如图2-2所示: 图2-2 信息框显示图2.2访真式编程的理解说明 在该课题中,我们不能做到拿到每一个芯片来真实的展现这个课题的思想。所以我们运用类、对象等来表示该芯片响应外界传来的信号结合自身的功能和程序结构来演示其内部的工作机理。 在本课题我们最重点了解的是8259A芯片的功能,所以我们在这次编程过程中,对8259A进行了详细的编写。相当于把8259A作为了一个类,其中的功能成了被调用的函数。这便形成了访真式编程的中心思想。这样既能得到相对应的芯片方便随时调用,同时也能简洁明了的将芯片的功能和如何实现的通过测试程序展现出来。2.3状态机的理解说明 状态机从设计的角度来讲就是指状态图,理解各个状态之间的迁移关系;从编码上讲,运用状态表或状态模式来实现演示芯片的工作过程。状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模(事件与信号),状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。从定义可知,状态模式是要应对状态转换的。那么状态的转换在哪里定义呢?你可以选择在使用环境角色的代码中来表现出来,当然这便意味着状态转变的规则就固定下来了。 状态模式相当于我们在想象中已经“实现”了一次,状态模式的引入免除了代码中复杂而庸长的逻辑判断语句。而且具体状态角色将具体状态和它对应的行为封装了起来,这使得增加一种新的状态变得简单一些。而且如果设计合理的话,具体状态角色可以被重用。状态机由状态组成,各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。图2- 3 描绘了状态机的各种元素。 图2-3 状态机符号2.4CPU与8259A之间的转换方式 按照8259A和系统总线的连接来分,有以下两种方式。(1) 缓冲方式 在多片8259A级连的大系统中,8259A通过外部总线驱动器和数据总线相连,这就是缓冲方式。在缓冲方式下,8259的SP/EN输出信号作为缓冲器的启动信号,用来启动总线驱动器,在8259A与CPU之间进行信息交换。缓冲方式是用8259A的初始化命令字ICW4来设置的。 (2) 非缓冲方式 当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连,这时8259A处于非缓冲方式下。在这种方式下,8259A的SP/EN信号作为输入端设置,主片应接高电平,从片应接低电平。 CPU 有两条中断线,LINT0 和 LINT1。在8259A的配置中,LINT1 连到了“Non-Maskable Interrupt”(NMI),当检测到严重的、潜在的、不可恢复的错误时就会产生 NMI。之所以叫做“Non-Maskable Interrupt”是因为没有办法阻断它除了处理器,没有谁能屏蔽它。引起 NMI 的一个典型的例子就是内存校验错。LINT0 被用作“Interrupt Input Line”(INTR),它连接在主 8259 的 INT 脚上。8259 通过使 INT 有效来将中断通知给系统。当 CPU 确认后,8259 通过总线向 CPU 发送一个8位的值(之前被 O/S 编程进了 PIC)。这个8位的值就是相应 IRQ 的中断向量。这个中断向量被用作 IDT 的索引来确定中断服务程序(ISR)的地址。然后,CPU 跳转到 ISR,进行服务此中断所需的处理。CPU与8259A之间通过数据线和控制线的直接连接,译码器和地址线的间接连接,同时有INT和INTA之间的相互转换,其线路连接图如图2-4所示。 图 2-4 线路连接图3代码的编写工作以及说明3.1对代码的初步设计工作 在编写该课题时,我们首先需要明白8259A的主要功能。8259A可扩展外部中断源的数目,又有多种中断管理方式.在编写程序中,我们必须了解8259A与其他芯片不同的引脚及其功能。而8259A的主要引脚就是中断响应的引脚和判断中断优先级的引脚。它决定了8259A的一个特大功能就是响应中断。于是我们则需要对每个引脚的功能和在什么情况下哪个引脚做出怎样的反应进行详细的编程说明,同时我们一组的成员在Line、Dcomponent上的编写几乎是一致的,唯一的不同就是对芯片的解说上,使他们都在D8259A.CPP下完成。在对代码的编写中,我们首先要把8259A这块代码从总系统中抽离出来,即建立一个新的DLL工程。这个总系统就是包含各个不同芯片的简单编程文件夹,我们需要在每个独立的芯片编程程序中根据实际情况、在编译后测试文件能更好的显示出器件原理的前提下对芯片编程进行调整和修改,同时我们需要知道做为器件功能演示的share文件夹,在编译代码的时候需要将share这个目录加入到编译环境下,然后在VC+6.0的模板下,重新建立一个新的工程,我们可以将其设为D8259DLL这么一个DLL工程。同时将原本系统中的D8259.h(头文件) 和D8259.cpp(源文件);line.h和line.cpp;Dcomponent.h和Dcomponent.cpp文件都复制到新的D8259A的子文件中,*.h文件是一些变量、类、函数的定义,不能编译;*.cpp文件是.h文件的实现,可以进行编译。通过对程序的编译和链接我们会在建立的新的工程中有个DEBUG文件夹中得到有一个文件名为D8259DLL.dll的文件,这就是我们运行的结果。3.2对基类和派生类的主要函数的解释说明通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。3.2.1对基类中部分函数的解说 基类是相对于派生类而言的,是个相对的概念。任何一个类都能派生出一个新类,基类是对若干个派生类的抽象,基类抽取了它的派生类的公共特征。它具有三种继承方式,按关键字给予表示:public 表示公有基类;private 表示私有基类;protected 表示保护基类。Dcomponent中的OutSig(int iPinNo, int iSigVal)函数是一个基类函数,他是对引脚号与输入信号之间的关系已经各个不同的引脚在接收到不同信号的时所做出的不同响应。该基类中有些操作并未实现,我们可以通过其派生类,在对派生类的定义中实现基类中定义的操作。DrawObject(CDC* pDC)也是一个基类,其表示的是一个画图对象,属于该类的控件有:线段、椭圆、矩形和圆角矩形,其中CDC是一个类,其中用构造参数生成对象,而这里的CDC*pDC是一个CDC类的指针,可以调用或引用CDC类的属性方法事件。3.2.2对派生类中部分函数的解说 在C+语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。派生类的定义格式单继承的定义格式如下:class :;其中,是新定义的一个类的名字,它是从中派生的,并且按指定的派生的。多继承的定义格式如下:class :,;可见,多继承与单继承的区别从定义格式上看,主要是多继承的基类多于一个。 在D8259这个类中的OutSig(int iPinNo, int SigVal)是一个派生类,它将基类中的函数具体化,基类抽取了它的派生类的公共特征,而派生类通过增加行为将抽象类变为某种有用的类型。在这里的OutSig()函数引发了多种功能,使基类中的定义在这里得到延续和实现。 同时在本代码中有两个不同的SetPin()函数,分别为int D8259:SetPin(int iPinNo , int iSigVal)和int D8259:SetPin(unsigned char *iPinName , int iPinOff,int iSigVal)两种,他们都是D8259这个类下的构造函数,而后者与前者的不同则在于参数的个数不一致,在这里后者是前者的重载函数。根据参数的个数作为判断标准,我们知道在OutSig(int iPinNo, int SigVal)函数中调用的是int D8259:SetPin(int iPinNo , int iSigVal)函数。3.3对各器件的初始化编程本代码需要用到C、C+和VC+6.0的编程知识。同时要学会做DLL工程这么一个模板。必不可少的是line、Dcomponent这两个的头文件和执行文件,同时因为我做的是大型中断接口器件,则需要用到8259A芯片。所以必须对8259A是初始化有详细细致的了解。 对8259A芯片要进行初始化编程,我们要进行仿真式的内部编程。同时要在编程之前确定CPU为关中断的状态,要在所有初始化完后才能开中断,而对于系统中的每一片8259A芯片都要进行初始化,并且初始化的流程是固定不变的。初始化编程:向8259送2-4字节的初始化命令字(ICW)。第一个字节送地址0,其余1-3字节送地址1。ICW1用来设置8259A的基本状态7 6 5 4 3 2 1 00 0 0 1 Trig 0 M/S ICW4Trig = 0 边缘触发 1 准位触发M/S = 0 有Master和Slave 1 只有MasterICW4 = 0 没有ICW4 1 有ICW4 ICW通过端口0x20(M)或0xA0(S)传送ICW2用来描叙入口地址7 6 5 4 3 2 1 0Off Off Off Off Off 0 0 0高五位是中断向量地址入口的前五位。ICW1和ICW2是必须要进行初始化传送的。ICW3只在有Master/Slave结构时才送,ICW4只在ICW1的ICW4位置1才送ICW3对于Master和Slave来说,含义不同对于Master来说是决定那个信号引脚用于与Slave的通信。对于Slave来说,低三位的值是Master上的与Slave进行通信的引脚号。这里有个ICW3的例子:outb_p(0x04, 0x21) Master使用2号信号脚与Slave通信则outb_p(0x02, 0x41) Slave的ICW3低三位是2ICW4用来规定8259A的一些其他特征。7 6 5 4 3 2 1 00 0 0 SFNM BUF M/S AEOI uPMSFNM = 0 非特殊的全嵌套模式 1 特殊的全嵌套模式BUF = 0 非缓冲方式 1 缓冲方式 与M/S位配合,M/S = 1 主,M/S = 0 从AEOI = 0 人工中断结束模式 1 自动中断结束模式uPM = 0 MCS-80/85 模式 1 8086模式以上3个ICW通过端口0x21(M)或0xA1(S)传送工作方式编程:向8259送3字节的工作方式命令字(OCW)。第一个字节送地址1,其余2字节送地址0。8259A的OCW与ICW不同,OCW不需要按顺序发送,一般也不要求安排在程序开头,而是根据需要在程序中任意安排。当处理器对中断控制器完成初始化编程后,8259A就处于准备就绪状态,等待接收外界的中断请求,进行完全嵌套的中断管理。若用户要改变初始化设定的操作方式,可以通过CPU发操作命令OCW对中断控制器进行动态控制。OCW1用来设置中断屏蔽,也就是屏蔽掉相应位为1的中断信号线。为0表示中断复位。它通过端口0x20(M)或0xA0(S)传送OCW2是很重要的操作命令字,它可以通过不同的值决定不同的中断优先权7 6 5 4 3 2 1 0R SL EOI 0 0 L2 L1 L0高三位结合决定不同的方式R SL EOI0 0 1 非特殊的EOI命令0 1 1 特殊的EOI命令1 0 1 按非特殊的EOI命令旋转1 0 0 在自动的EOI方式旋转(设置)0 0 0 在自动的EOI方式旋转(清除)1 1 1 按特殊EOI方式旋转1 1 0 置优先权命令0 1 0 使用L2L0决定优先权低三位在有效时表示具有最低优先权的那个中断引脚。8259A芯片不是单纯的初始化,而是需要仿真式的编写,这是理解8259A的一个重点。8259A有两类编程命令:初始化命令字和操作命令字。在我的编程过程中,在Outsig中就是对8259A进行的初始化编程工作。同时,该程序主要是以对每个引脚得到或释放的消息作为评判的标准,表示某个引脚得到某个消息发生何种反应。这是对引脚的一个分析过程,需要详细的编程工作。其中我们了解到8259A的中断顺序为:IR0-7之一或若干条申请线变高,则中断请求寄存器IRR相应位被置位。若其中有允许中断,则由INT引脚向CPU申请中断。CPU若开中断,则响应中断,INTA引脚信号响应。8259接到应答信号后,IRR复位,ISR置位。CPU送出第二个INTA脉冲信号,8259向数据总线送中断向量n(8位中断号),CPU执行INT n指令。若工作在AEOI模式,则ISR自动复位;否则,在中断服务程序结束后要送EOI命令,使ISR复位。 作用于8259,通过给它指令设置IMR,使得相应的IRR不参与ISR,被称为禁止(disable),反之,被称为允许(enable).在本课题中需要对8259A进行初始化,又分为单片和多片的两种初始化方式。所以对单片8259A芯片的初始化与多片的是不一样的。8259A的初始化编程流程图如3-1所示: 图3-1 初始化流程图在单片使用8259A中其特点是:共8级向量中断,因为是采用单片方式,故CAS2-CAS0不用,SP/EN接+5V。8个中断请求输入信号IR0-IR7均为边沿触发。同时其端口地址在020H03F范围内,实际使用020H和021H两个端口。采用完全嵌套的方式,0级为最高优先级,7级为最低优先级;设定0级请求对应中断号为8,1级请求对应中断号为9,依次类推,直到7级请求中断号为0FH。对单片8259A进行初始化编程如下: INTA00 EQU 020H ;8259A端口0 INTA01 EQU 021H ;8259A端口1 MOV AL,13H ;ICW1:边沿触发、单片、要ICW4 OUT INTA00,AL MOV AL,8 ;ICW2:中断号的高5位 OUT INTA01,AL MOV AL,9 ;ICW4:全嵌套,16位微机,非自动结束。 OUT INTA01,AL 单片8259A中断系统的硬件连接如图3-2所示 图3-2 单片8259A中断系统的硬件连接双片使用8259A编程中其特点与要求在于一共15级向量中断,采用两片级连,CAS2-CAS0作互连线,从片的INT直接连到主片的IR2上。同时端口地址主片在020H-03F范围内,实际使用020H和021H两个端口。从片在0A0H-0BFH范围内,实际使用0A0H和0A1H两个端口。主、从片的中断请求信号均采用边沿触发,主要采用的是非缓冲方式,主片的SP/EN端接+5V,从片SP/EN接地。同时采用完全嵌套方式,优先级的排列次序为0级最高,依次为1级,8-15级,37级。同时设定0级7级对应主片的中断号为8H0FH,8级15级对应从片的中断号为70H77H关于双片8259A的初始化要对主片和从片分别进行初始化编程。初始化8259A主片:INTA00 EQU 020H ;8259A主片端口0INTA01 EQU 021H ;8259A主片端口1 MOV AL,11H ;ICW1:边沿触发,多片,要ICW4 OUT INTA00,AL JMP SHORT $ + 2 ;I/O端口延时要求(下同) MOV AL,8 ;ICW2:中断号的高5位 OUT INTA01,ALJMP SHORT $ + 2 MOV AL,04H ;ICW3:主片的IR2上接从片(S2=1) OUT INTA01,AL JMP SHORT $ + 2 MOV AL,01H ;ICW4:非缓冲,全嵌套,16位的CPU,非自动结束 OUT INTA01,AL 初始化8259A从片:INTB00 EQU 0A0H ;8259A从片端口0INTB01 EQU 0A1H ;8259A从片端口1 MOV AL,11H ;ICW1:边沿触发,多片,要ICW4 OUT INTB00,AL JMP SHORT $ + 2 MOV AL,70H ;ICW2:中断号的高5位 OUT INTB01,AL JMP SHORT $ + 2 MOV AL,02H ;ICW3:从片接主片的IR2(ID2 ID1 ID0=010) OUT INTB01,AL JMP SHORT $ + 2 MOV AL,01H ;ICW4:非缓冲,全嵌套,16位的CPU,非自动结束 OUT INTB01,AL 根据上面的要求和特点,在双片8259A的中断系统中硬件连接如图3-3所示: 图3-3 双片8259A中断系统的硬件连接3.4对部分代码的说明 实验台上显示的外部结构图中我们增加了8259A的内部逻辑框图的展示,在这个编写上我们主要是运用把一幅整图分割开为几个等块,然后将我们需要的小的框图填充在分割好的整图里。运用pDC-Rectangle(rx,ry,rx + rcx,ry + rcy);确定图的大小;运用pDC-MoveTo、pDC-LineTo确定之间连线的情况;运用pDC-TextOut(rx+2,ry+2,ISR);或pDC-DrawText(ISR,CRect(rx,ry,rx + rcx,ry + rcy),DT_CENTER | DT_VCENTER | DT_SINGLELINE ) ;标记在小的框图上显示该框图指代的名称。其中在pDC-DrawText中,DT_CENTER是横排居中,DT_VCENTER是竖排居中,DT_SINGLELINE是只有单排文件的情况下,在这里的“或”不是单纯的满足其中一个就能实现的意思,而是需要同时满足这三个条件才能实现。系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW来实现的。系统初始化时,规定IRQ0和IRQ4中断源分别提供给实时时钟和PC微机联机的串口通讯,用户可以使用其余的中断源。在进入监控后,只有IRQ4中断源处于开启状态,其他中断源都被屏蔽了

温馨提示

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

评论

0/150

提交评论