大型中断接口器件的功能演示的可视化设计论文文档格式.docx

上传人:b****4 文档编号:17162101 上传时间:2022-11-28 格式:DOCX 页数:30 大小:326.36KB
下载 相关 举报
大型中断接口器件的功能演示的可视化设计论文文档格式.docx_第1页
第1页 / 共30页
大型中断接口器件的功能演示的可视化设计论文文档格式.docx_第2页
第2页 / 共30页
大型中断接口器件的功能演示的可视化设计论文文档格式.docx_第3页
第3页 / 共30页
大型中断接口器件的功能演示的可视化设计论文文档格式.docx_第4页
第4页 / 共30页
大型中断接口器件的功能演示的可视化设计论文文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

大型中断接口器件的功能演示的可视化设计论文文档格式.docx

《大型中断接口器件的功能演示的可视化设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《大型中断接口器件的功能演示的可视化设计论文文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

大型中断接口器件的功能演示的可视化设计论文文档格式.docx

priority;

statemachine;

visual;

emulation

论文总页数:

29页

1引言

1.1实验台的现状说明和设计目标

现今社会,计算机越来越普及,我们只知道计算机的外部结构和某部分软件是远远不够的,至少我们要对和我们日常生活打交道的朋友的一些重要内部情况。

计算机有着许多的寄存器、接口器件、分析器等等。

其中中断接口是特别重要的一个概念。

每敲击一次键盘都相当于一次中断信号。

而主管这个中断信号的就是计算机中的8259芯片。

它最突出的特别是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请后,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。

我们只有对8259A了解后才能进一步了解计算机系统。

而我们在最开始了解到的计算机系统中只是知道可一些表面上的东西,实质上计算机是如何工作、我们为什么能通过键盘向计算机发出命令、打印机是怎么打印文件的等都不明白,通过这个仿真式的实验我们对计算机的内部系统等做个详细的剖析。

键盘上的每一次击打键入都相当于一次信号的发出,对于计算机来说这每击一键都发出了一个中断信号,告诉CPU有“键盘输入”事件发生,要求CPU读入该键的键值;

而打印每一个字符也是一次中断的过程。

这些都需要中断控制器8259A协助CPU进行中断处理和完成工作的。

中断方法是解决外部设备和系统连接的很好途径,它有效地实现了外部设备与CPU的并行工作。

目前仿真式成为计算机实验的一个发展方向,因为它不需要硬件平台,避免了器件的磨损和开销,同时没有实验环境的时空限制,使演示更加生动,以便更好理解电路运行原理。

我们采用实验台这个平台将程序的运行状况直观的展现出来,实验台的设计是通过纯软件的形式模仿硬件接口实验台的逻辑功能,而软件模仿结果与真实硬件实验台的结果是一致的,形象的显示出实验的过程与结果。

它分为器件和连线两个部分:

对于器件,先是设计一个器件基类,然后由他派生出许多不同的器件类;

对于连线,每一个连线可能有很多分支,程序中我们用树的结构表示。

同时,我们用测试程序来作为该器件的电路上层程序。

来管理器件和连线。

在设计中,信号在连线上流动。

我们的程序中对连线森林中对应的连线树进行遍历来实现信号流动的动态显示,当遍历到树的节点时,则是一个器件的引脚。

我们得到器件对象,然后调用该对象的器件基类的虚函数。

对应器件类的这个函数可以实现对该信号的逻辑处理。

我们需要对目前的这个实验台进行改进,在执行显示器件的条件下,能同时将该器件的内部逻辑框图展现出来,基本完全实现了上层电路层,基本实现四个常用的大规模集成接口器件的内部逻辑并能够灵活设置电路图,模仿正确及错误的结果。

在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-18259A外部引脚图

各引脚的作用功能如表1-1

表1-1:

引脚功能

名称

脚号

输入/输出

功能

CS

1

输入

 片选

WR

2

输入

 写

RD

3

 读

D0~D7

  4~11

输入或输出

双向数据总线:

通过它传送命令,接受状态和读取中断向量

CAS0~CAS2

121315

级联总线:

主控8259A与从控8259A的连接线。

主控时该总线为输出,从控时则为输入。

SP/EN

16

主从定义/缓冲器方向:

为双功能脚,在非缓冲方式中用做输入线,指定8259A为主控制器(SP=1)。

在缓冲方式中用做输出线,控制缓冲器的接收/发送。

INT

17

输出

8259A的中断申请:

当8259A收到从外设经IR脚送来的中断申请时,由它输出高电平,对CPU提出中断申请。

该脚连到CPU的INTR引脚。

IR0~IR7

18~25

外设的中断请求:

从外设来的中断请求由这些脚输入到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根中断请求输入线IR7~IR0,内部有8个主要的功能块。

其中3个寄存器是可编程的,即用户可用程序访问它们,这3个寄存器都是8位的。

8259A内部结构逻辑主要由以下三部分组成:

(1)控制逻辑

(2)中断优先权判优及其屏蔽

(3)辅助电路

8259A内部结构如图1-2所示:

图1-28259A内部逻辑图

根据上图我们必须详细了解到关于8259A中的各个部件及其功能。

其显示如表1-2所示:

表1-2  8259A内部部件功能

名称

中断请求寄存器IRR

保存8条外界中断请求信号IR0~IR7的请求状态,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位D7~D0)对应于连接在IR0~IR7线上的外设的中断请求,哪一根输入线有请求,哪一根输入线就置1。

我们假设现有一中断信号输入,那么中断过程的时序图如1-4所示

图1-4中断时序图

1.6该课题的主要研究方向和研究方法

该课题是对8259A芯片的工作工程进行可视化的演示,同时需要把芯片自身的功能结合程序结构编程演示其内部的工作机理。

同时使我们在学习编写程序的基础上明白计算机系统的内部的构造和系统。

对于计算机使用者来说,我们常常只看到了计算机工作却不知道他是怎么进行和完成工作的,计算机的内部是又许多芯片组成的,每个芯片都有它必不可少的作用,本课题就是让你了解到各个不同芯片的作用、工作原理、工作方式和工作状况等。

通过对每个芯片的了解从而进一步的了解到计算机系统。

笔者所做的是关于中断接口这一模块,而控制中断的芯片是8259A。

它的主要作用是和CPU之间互相交换中断的信息,而8259A的中断屏蔽寄存器IMR可以屏蔽一个或几个IR的中断请求,它加强了对中断的控制能力。

而且8259A是内部主动的初始化芯片,即是我们常说的仿真式的初始化,这是其一个重要的特点。

在以前的学习过程中,我们对8259A这个芯片不是特别的了解,所以我们要通过对其内部的初始化编程、工作方式的编程、操作命令字的编程等将其统一起来。

在这次研究中,我们为了更加明确真实的显示出芯片的工作状况和工作原理,我们用代码仿真式的编程出每个器件和芯片。

使我们在不需要真实物品的情况下同样能把整个中断或是其他的响应过程都真实的展现在大家的眼前。

对于我们一整个小组而言,需要的是把各个芯片结合起来使计算机系统能完成各个响应,同时使其能在实验台上真实的演示,得到直观的视图。

其中运用到C、C++、VC++6.0三种语言,在实验台这个平台上让我们对程序的流程及中断的工作方式得到详细的理解。

2对该课题的部分概念的重点说明

2.1可视化的理解说明

什么叫可视化?

每个语言本身都是“不可视”的,仅仅是语言而已;

所谓“可视化”不过是支持该语言的IDE(通俗点说就是编程工具)所提供的功能,让你在编窗口等一些“看到着”的程序时可以使用拖拽等可视化操作。

可视化就是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。

它涉及到计算机图形学、图像处理、计算机视觉、计算机辅助设计等多个领域,成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。

可视化技术最早运用于计算科学中,并形成了可视化技术的一个重要分支——科学计算可视化(VisualizationinScientificComputing)。

科学计算可视化能够把科学数据,包括测量获得的数值、图像或是计算中涉及、产生的数字信息变为直观的、以图形图像信息表示的、随时间和空间变化的物理现象或物理量呈现在研究者面前,使他们能够观察、模拟和计算。

科学计算可视化自1987年提出以来,在各工程和计算领域得到了广泛的应用和发展。

VisualC++提供了一个支持可视化编程的集成开发环境:

VisualStudio(又名DeveloperStudio)。

DeveloperStudio是一个通用的应用程序集成开发环境。

可视化是指能使程序在实验台上得到实现和得到真实直观的效果图。

这是由我们这组的一个同学单独做到,同时能让我的程序和他的实验台能相互得到实现,相互制约相互响应和发出信号。

使用类视图显示所有已定义的类以及这些类中的数据成员、成员变量。

VisualC++自动从项目工作区中所包含的源程序文件中分离出类。

作为本课题的中心思想,所得到的编程结果最后都需要能通过检测程序得到直观的视图,即为可视化。

在装载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-MaskableInterrupt”(NMI),当检测到严重的、潜在的、不可恢复的错误时就会产生NMI。

之所以叫做“Non-MaskableInterrupt”是因为没有办法阻断它——除了处理器,没有谁能屏蔽它。

引起NMI的一个典型的例子就是内存校验错。

LINT0被用作“InterruptInputLine”(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文件的实现,可以进行编译。

通过对程序的编译和

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1