毕业设计(论文)-计算机组成原理仿真平台的设计与实现.docx_第1页
毕业设计(论文)-计算机组成原理仿真平台的设计与实现.docx_第2页
毕业设计(论文)-计算机组成原理仿真平台的设计与实现.docx_第3页
毕业设计(论文)-计算机组成原理仿真平台的设计与实现.docx_第4页
毕业设计(论文)-计算机组成原理仿真平台的设计与实现.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

毕业论文计算机组成原理仿真平台的设计与实现计算机科学与技术 xxx指导老师:xxx摘 要:结合具体项目对虚拟仪器、虚拟实验室的体系架构进行了相关学习与研究。基于实时性,采用回调函数作为信息传递的主要方式,并结合了Windows消息机制。从而缩短系统响应的时间,提高程序执行的效率。为了更加快速、逼真地模拟计算机组成原理实验,系统采用Visual C+ 6.0进行开发,使用“真实”的硬件架构模拟界面,使使用者更容易接受和理解。系统能够满足计算机组成原理实验的需求,具有良好的开放性、通用性和一定的智能性。关键词:计算机组成原理;仿真系统;设计The Design and Actualization of Simulation Software Platform of Computer PrincipleComputer Science and Technology Zhang DewenTeacher: Pu HaiboAbstract: Combined with a specific project for virtual instrument and the architecture of virtual laboratory, carry out the related study and research. Based on the real-time, use the callback functions as the main mode of information transmission, and combined with the Windows news mechanism. Shorten the time of the response of the system and improve the efficiency of program execution. In order to more quickly and realistic simulation computer principle, the system adopts experiment Visual C+ 6.0 development, using real chip simulation, user interface are more likely to receive and understanding. Computer system can meet the demand of composition principle of openness, and has good generality and intelligent.Key words: computer principle; simulation system; design虚拟仿真技术的发展有赖于虚拟现实和仿真技术的进步。虚拟现实是由多媒体计算机系统建立的一种使人能身临其境的、并能获得与环境交互体验的虚拟世界。虚拟现实技术综合了计算机图形学、图像处理与模式识别技术、人工智能技术 、传感技术、网络技术、三维建模技术等,它将计算机处理的数字化信息变为人们所能感受到的具有多种表现形式的信息形式,通过对视觉、听觉、触觉甚至嗅觉等感官世界的表现,让用户可以从自己的视点出发,利用自然的技能和相关设备对这一生成的虚拟世界客体进行浏览和交互。 传统的虚拟技术并没有重视研究人对模型的感知和仿真,现代的虚拟技术更多地强调现实与仿真,给人们带来了人机交互的新概念和新方法,用计算机来模拟外界环境对人的感官刺激和心理感受已经成为可能。仿真技术是虚拟现实技术中的一项关键技术,虚拟现实的关键是在于给人们提供一个虚拟的但能真实反映事物对象变化的空间与环境表现形式,这样的表现形式是建立在模拟和仿真的基础上的,所以仿真技术也能在模拟环境下实现和预测事物在实际环境下的场景与变化。虚拟仿真技术应用于实验教学的主要特点是:其一 ,通过虚拟仿真系统的应用,我们可以将实验中所要使用到的仪器通过建模设计出来,让学生对即将进行的实验中所要接触的仪器有一个初步的了解和认识,这样更能加深学生对实验的印象,有利于在实际的实验中提高速度,确保实验的顺利进行。其二,应用虚拟仿真系统可以节省大量资金,很多实验的仪器价格高昂,在财力有限的学校建设硬件实验室显得力不从心,而只要拥有这样的仿真实验系统, 就能完成与硬件实验室相同的教学任务,不必担心教学投资问题。其三,应用虚拟仿真还可以完成许多危险性实验,而避免不必要的人员伤亡问题。其四,利用虚拟仿真系统可以完成不少周期漫长的实验,比如在农业种植中,农作物的生长周期较长,如果要观察它们的实际生长则较为耗时,我们就可以利用在计算机上的虚拟仿真,观测其发展规律, 以此推测它们的生长结果。 本文探讨了以Visual C+ 6.0为开发平台,运用面向对象的设计思想,模块化的设计原理,软件工程的软件开发方法,开发出具有计算机组成原理相关实验功能的仿真软件平台。因为硬件的许多理论知识只有通过实验环节才能加深理解,实验能使学生掌握计算机硬件设计、制造、调试和运行维护等多方面的技能,训练学生的动手能力。该仿真软件平台为8位仿真系统,即数据总线、地址总线均为8位,但是其工作原理与其他机型相同。各单元部件都以计算机结构模型布局,清晰明了,各寄存器、部件均有 8位数据指示灯显示其二进制值,两个8段码LED显示其十六进制值,两个数据流方向指示灯,以直观反映当前数据值及该数据从何处输出,而又是被何单元接收的。使得学生十分容易认识和理解计算机组成结构。实验系统各部件可以通过 J1、J2、J3座之间不同的连线组合完成相关实验,如J1接J2和J3时完成分部实验,J2接J3时完成综合实验,做综合实验时需通过该软件的虚拟键盘输入执行的程序。1 开发环境及相关技术介绍1.1 开发环境简介Visual C+ 6.0是微软90年代推出的开发平台,虽然微软在不断地推出功能更加强大的开发平台,但是使用Visual C+ 6.0的程序员还是很多。这足以说明该开发平台很优秀,使用它可以开发出专业级的Windows应用程序。大多数Visual C+应用程序开发采用MFC(Microsoft Foundation Classes)框架。MFC不仅仅是人们通常理解的一个类库,更是一种程序结构,一种编程风格。MFC是一个很大的、可扩展的C+类层次结构,MFC 中包含了上成千上万行正确、优化和功能强大的 Windows 代码。你所调用的很多成员函数完成了你自己可能很难完成的工作。它能使开Windows应用程序变得更加容易,极大地加快了你的程序开发速度。由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。1.2 技术可行性分析面向对象的设计思想是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。其具有对象唯一性、分类性、继承性、多态性等特点。模块化的设计原理,就是将内部的实现细节封装,只通过一个定义好的接口与外部通讯。作为模块,也不一定要求它是主动的,一样也有被动。模块是有层次化的,在同一层次而言,模块与它同级别的其他模块之间是相互独立的,但对于上一级别而言,这些模块是同属于上一级的一个大模块,大的模块从内部实现的观点看,这些组件之间一定是有关系的,可以用某些组件控制其他组件的运行,同时上一级模块对下一级模块有依赖关系。1.3 关键技术介绍1.3.1 图形设备接口GDI介绍本软件的界面是使用GDI(Graphics Device Interface图形设备接口)设计制作,考虑到用户使用的方便性,将界面模拟为真实的硬件环境,让用户使用起来更具真实感,更能体会计算机的组织架构。GDI的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便地在屏幕、打印机及其它输出设备上输出图形、文本等。GDI的出现使程序员无须关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。1.3.2 信息传递方式(1)消息机制消息机制是Windows应用程序的核心。在Windows中发生的一切都可以用消息来表示,消息用于告诉操作系统发生了什么,所有的Windows应用程序都是消息驱动的。在Windows中,不同的消息由应用程序的不同部分进行处理。MFC库将很多底层的消息都屏蔽了,使用户更加方便、简易地处理消息。一个消息是由消息的名称(UINT)和两个参数(WPARAM, LPARAM)组成。消息的参数中包含有重要的信息。(2)回调函数回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准Windows API的调用方式,即_stdcall,当然,DLL编制者可以自己定义调用方式,但客户程序也必须遵守相同的规定。在_stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负责把参数从堆栈中弹出。1.3.3 动态链接库动态链接库是Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。DLL是一个包含可由多个程序同时使用的代码和数据的库。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。当 DLL中的函数需要更新或修复时,部署和安装 DLL不要求重新建立程序与该 DLL的链接。此外,如果多个程序使用同一个 DLL,那么多个程序都将从该更新或修复中获益。2 系统设计该系统是为实验者创建一个可视化的虚拟环境,使实验者如同在真实的环境中一样,通过鼠标的点击及拖拽,进行操作,开展各种实验,并观察实验的结果。该系统的总体控制采用微程序实现,而没有使用组合逻辑。因为微程序控制比较简单,实现也比较容易。2.1 系统流程设计系统流程设计主要是涉及系统的大概框架,程序的执行流程及其实验的实现流程设计,如图1所示图1 系统流程图2.2 系统功能设计本软件是为计算机组成原理实验而设计,所设计的功能都是围绕实验而展开,主要包括分部实验和综合实验。分部实验主要是让实验者熟悉各功能模块的控制信号的设置以及信息的流向,综合实验则是让实验者了解汇编指令的编码方式,每条汇编指令如何分解为多条微指令,系统是如何输出微指令,产生控制信号,控制各功能模块协调工作。功能架构如图2所示:图2 系统功能结构图2.3 类架结构设计2.3.1 窗口类架模块构设计CDebugerApp是应用程序初始化类,CDebugerDlg是本软件的主窗体类,CaboutDlg为关于对话框类,CCmDataDlg、CEmDataDlg是显EM和CM内部数据的窗体类,CElectricMapDlg是显示内部电路图的窗体类,CMessageDlg用于显示提示信息。结构如图3所示图3 窗口类模块架构图2.3.2 自定义类模块架构CPower为虚基类,是所有模块的基类,其子类可以根据需要实现自己的电源设置函数;CPublicObj为虚基类,是“芯片”模块的基类,其子类可以根据需要实现插孔设置函数,主要用于插孔与芯片引脚之间的电平传递;CObject为程序存储器与微程序存储器的基类用于串行化数据存储。CStaticBitmap类用于在指定位置显示指定图片;CMyLed为两位十六进制LED显示器;CMyLight是8位二进制数据指示灯;CMyReg是通用寄存器类,附带两位的十六进制LED显示器和8位二进制数据指示灯;CMyST是堆栈寄存器类;CMyPC为程序指针寄存器类;CMyuPC为微程序指针寄存器;CExtendMemory为程序存储器类;CControlMemory为微程序存储器类;CMyAlu为运算器类;CMyBus为总线类;CMyKey为二进制开关类;CMySlot为插孔类;CPicture是为保存系统使用的图片类;CInterrupt为中断控制类;CSurface为主界面类,负责系统界面的初始化操作、消息处理、系统协调管理。它们之间的继承关系如图4所示图4 自定义类模块架构图3 系统实现系统主要分为如下模块:一位指示灯模块、二位LED显示器模块、八位二进制数据指示灯模块、寄存器模块、指针寄存器(PC)模块、微程序指针寄存器(uPC)模块、中断控制模块、算术逻辑单元(ALU)模块、存储器(EM)模块、微程序存储器(CM)模块、二进制开关模块、插孔、导线模块。各模块在实现时并没有采用多线程实现,主要考虑到软件的模块太多,使用多线程难于控制,而且资源占用较多。因此采用数据缓冲区来暂存输入,当外部数据发生改变时会改变相应缓冲区的数据,如果模块需要数据数就从缓冲区获取数据。输出数据时,采用回调函数与消息机制实现。虽然回调函数的相应速度比消息机制要快,但是当函数调用比较频繁,并可能出现反复迭代时,使用回调函数可能导致函数栈的溢出。而采用消息机制时,消息投递函数投递完消息后便立即返回,有效的避免了函数栈的溢出。各模块独立完成相应功能,通过微程序控制器输出微指令控制各部件协调完成系统功能。以下就主要功能模块作简单介绍。3.1 寄存器模块寄存器模块是用于封装各寄存器的功能,寄存器输出控制(OE,低电平有效);寄存器数据打入控制(WE,寄存器选择信号,低电平有效;CLK,数据写入信号,上升沿写入)。寄存器输出数据是通过消息机制实现,给每个寄存器一个唯一的标示,通过该标示类判断是哪个寄存器输出数据,从而进行相应的操作。该模块还封装了二位的LED显示器以及八位的二进制数据指示灯,用于显示当前寄存器内部的十六进制数据和二进制数据,跟踪其变化。还提供了一个接口,用于将寄存器的指定的控制端口绑定到指定的插孔,实现插孔数据的控制端口的电平同步。以实现通过插孔改变端口的电平,并且当端口输出时,插孔电平也能随之改变。指针寄存器(PC)是用于保存当前运行程序的指令地址,微程序指针寄存器(uPC)是用于存放当前执行的微程序的地址,他们具有清零、置数和加一功能,RST为清零信号(低电平有效),PC用LDPC信号控制预置数(低电平有效),当LDPC有效时在CLOCK时钟的上升沿将预置数打入寄存器,用PC+1信号(高电平有效)控制加一操作,有效时在CLOCK时钟的上升沿PC加一,PCOE,PCOE_D为输出控制,PCOE为低电平时输出到地址总线,PCOE_D为高电平时输出到数据总线;其中指针寄存器(PC)既可以向数据总线输出数据,也可以向地址总线输出数据。而微程序指针寄存器(uPC)只能输出到微地址总线,控制微程序存储器(CM)的输出。3.2 算术逻辑单元(ALU)模块算术逻辑单元模块主要是用于二进制数据的加减运算和逻辑运算,由控制信号S2、S1、S0来控制执行何种运算,如表1所示;由控制信号CN来控制是否带进位运算,用FEN将标志位存入ALU内部寄存器。在ALU内部有输入、输出数据缓冲区,用于暂存输入的数据与需要输出的数据。虽然没有使用多线程,但是也实现了自动化操作。即在有控制信号及数据输入时就会输出数据。当然在这样的条件下,如果其没有改变就不会有数据的输出,这也是本软件的缺陷所在。数据输出是采用消息传递的,只要数据输出就向主窗口发送消息及数据,并不管窗口是否收到。表1 算术逻辑单元运算控制S2S1S0操作功能000A+W加001A-W减010A|W或011A&W与100A+W+C带进位加101A-W-C带进位减110AA取反111A输出A3.3 存储器(EM)模块存储器(EM)模块用于存储二进制代码,容量为256B。该存储器使用串行化数据存储,每当存储器单元数据发送改变时,就会将存储器各单元数据写入存储器数据文件保存,加电时再从存储器数据文件中获取各单元数据,从而实现了断电保持数据功能,使断电后数据持久存在。该模块被封装在动态链接库ExtendMemory.dll中。存储器(EM)模块输出数据是通过回调函数输出。EM的数据端口是双向端口,可输入和输出。使用一片双向3态数据缓冲器来进行隔离,由EMEN进行控制,EMEN为低电平时,EM输出到数据总线;EMEN为高电平时,EM将数据总线数据输入到EM的数据端口。该模块还实现了中断指令(B8)的输出,由ICOE控制,当ICOE为低电平时输出中断指令。3.4 微程序存储器(CM)模块微程序存储器(CM)模块是该系统的控制中心,用于控制整个系统协调工作。因为整个系统的芯片的输入、输出控制信号都是由微指令实现的,如果微程序不能正常的产生及输出,系统就无法协调工作。该模块被封装在动态链接库ControlMemory.dll中,为只读存储器,内部存放了汇编指令的微指令,每条汇编指令最多有四条微指令,每条微指令完成具体的操作,占一个时钟周期。该模块输出数据是使用回调函数输出。只需要设置好电源,输入微程序地址,其就会输出相应地址的微指令,控制系统执行相应的操作。3.5 插孔、导线模块插孔、导线模块是分部实验的基础,主要解决如图5中各部件之间的电平保持一致,如果一端有变化,其他的也相应发生变化。连接方式如图5所示。图5 引脚,插孔和导线连接图该模块的实现是整个设计中的难点,主要有以下两个问题需要解决:首先,插孔与引脚之间的数据交换,这是一个双向的通信,也就是芯片引脚电平变化会引起插孔电平的变化,插孔电平的变化也会引起芯片引脚的变化。其次,插孔与导线之间的连接及数据交换,主要是解决如何表述两个插孔之间存在导线连接,并且有一端电平发生变化,另一端也相应变化。具体解决方法如下: 插孔与芯片引脚的数据交换:插孔数据输出到引脚是通过类的多态性(动态绑定)来实现的,给每个芯片一个共同的接口类(虚基类),该类提供了一个纯虚函数负责将插孔(具有唯一ID号和唯一名称)电平的变化传递给芯片引脚(使用名称区分),在芯片类(子类)中覆盖该函数实现。由于类的多态性,在调用时将会调用具体子类中的函数,以实现多种芯片与插孔的连接。引脚数据到插孔类似。方式如图6所示:图6 插孔与芯片引脚的数据交换实现图 导线与插孔的数据交换:由于插孔具有唯一ID号(为插孔对象自己地址)和唯一名称,所以可以在导线结构中加入其连接两端插孔的ID号,而在插孔内部可以加入与其相连的导线的编号(唯一且大于零),如果编号为零表示未连接导线,否则表示已连接;如果要实现一个插孔连接多根导线,可以用数组表示。在数据改变时根据ID(插孔对象的地址)改变所连接的导线及插孔的值。实现方式如图7所示:图7 导线与插孔的数据交换实现3.6 系统协调控制该部分主要实现系统是如何将各零散的模块组织在一起,连接成一个整体,完成系统综合功能。这些工作都是由CSurface类完成。CSurface类是系统综合的核心类,它按照电路图将各模块进行连接,并完成了软件界面的绘制,与主窗口信息交付以及系统的控制,所有的单元协调和控制都是由此类完成。其中,系统总线是数据和控制信号的传递载体,起到了暂存数据及信号,并将数据及信号传输到各单元,控制单元的输入输出操作。4 功能演示通过上面的设计与实现,该仿真平台几乎能完成全部的计算机组成原理实验,下面分别从分部实验和综合实验两个方面的实例来演示该软件的功能。4.1 分部实验:R0,R1,R2,R3寄存器实验本实验是演示R0、R1、R2、R3的数据读写实验,通过设置控制信号来控制寄存器的选择和读写控制,通过时钟脉冲信号来控制写入寄存器操作。具体操作如下所示:(1)控制信号的设置表表2 Ri选择控制信号设置表K1 (SA)K0 (SB)K10 (RWR)K11 (RRD)选择操作0001R0写R00010R0读R00101R1写R10110R1读R11001R2写R21010R2读R21101R3写R31110R3读R3(2)线路连接表表3 Ri实验线路连接表连接信号孔接入孔作用有效电平1J1 座J3 座将K23-K16接入DBUS7:02RRDK11寄存器组读使能低电平有效3RWRK10寄存器组写使能低电平有效4SAK1寄存器选择A5SBK0寄存器选择B6RCKCLOCK寄存器工作脉冲上升沿打入(3)具体操作 启动程序,打开电源,连接好导线,如图8所示。图8 线路连接图 将11H写入R0寄存器:将二进制开关K23-K16置数据11H,将K11置1,将K10置0,K1置0,K0置0;这时寄存器R0的黄色选择指示灯亮,表明选择R0寄存器,按下并放开CLOCK键,产生一个上升沿,数据11H写入右上角的R0寄存器。如图9所示。图9 将11H打入R0寄存器将R0寄存器输出到数据总线:将K1置0、K0置0、K11置0、将K10置1。R0输出指示灯亮,数据直接输出到数据总线。在顶部中间,如图10所示。图10 R0寄存器输出数据到总线4.2 综合实验本实验是主要使用调试器执行连续的程序,即使用该系统提供的汇编指令编写汇编程序,并使用软件将其编译成二进制代码,然后将二进制代码输入到存储器(EM)中运行。该实验只需要将J2与J3连接起来,不必连接其他的导线,所有的操作都是在小键盘中完成。编译好程序后,将二进制代码从调试器的小键盘输入到代码存储器中,然后可以单击小键盘的单微程序执行、单指令执行或者全速执行。观察各数据的流向,以及各寄存器,存储器,芯片是如何协调工作的,以更加深刻的理解计算机组成原理。5 总结该软件是自己独立设计,并达到了预期的效果。该软件是针对计算机组成原理实验并采用微程序控制设计实现,针对性强,能完成计算机组成原理的基本实验;软件界面友好,是根据计算机结构布局,各单元清晰明了;操作简单,只需要简单的鼠标点击就可以进行实验,并观察结果。参考文献1朱思峰,李慧敏 计算机组成原理虚拟实验室系统的设计及实现 学位论文 周口师范学院 2006.6.172宋波 计算机虚拟实验系统的研究与实现 硕士学位论文 上海大学 2007 . 1 . 13徐隽 虚拟教学实验室仿真算法及实验规则研究 硕士学位论文 西北工业大学 2006 . 3 . 14孙灏 模型机的指令读取与执行流程 N 南京广播电视大学学报 2004年第 4期5严义.陈佰平.陈文建 计算机组成

温馨提示

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

评论

0/150

提交评论