法律状态公告日
法律状态信息
法律状态
2014-06-04
未缴年费专利权终止 IPC(主分类):G09B25/02 授权公告日:20100707 终止日期:20130411 申请日:20080411
专利权的终止
2010-07-07
授权
授权
2008-10-29
实质审查的生效
实质审查的生效
2008-09-10
公开
公开
技术领域
本发明涉及仿真实验系统。
背景技术
现有的《计算机组成原理》课程配套的实验手段主要有:
(1)、硬件实验仪形式:用电路组成的计算机模块。实验教学中对电路提供操作,得到实验效果。当前高校教学大多数采用此种方式。
问题和缺点:实验教学必须购买实验仪器,价格较贵,实验仪器维护费用高。实验仪器故障会影响教学效果。
(2)、硬件实验仪和软件程序结合形式:用电路组成的计算机模块,实验教学中对电路提供操作,得到实验效果,同时用配套的软件从硬件实验仪上获得数据,在软件界面上显示实验效果。这种方式界面直观。有些高校采用此种方式。
问题和缺点:软件必须依赖硬件实验仪使用,在实验仪故障时,无法使用。问题和缺点同第一种方式。
(3)、纯软件仿真形式:用软件实现计算机硬件模块的功能,用户在软件界面上对虚拟的硬件操作,得到实验结果。这种方法没有硬件实验室投资费用和维护问题,操作简单,界面直观,可以保证实验教学效果。当前还没有此类完整产品。有些高校教师开发了仿真某一模块(如运算器硬件)的软件,但是没有仿真一台计算机的完整产品。
问题和缺点:只有一部分模块的仿真,仍然需要借助实验仪,成本高、且不能辅助解决教学实验的全部要求。
发明内容
为了克服已有的《计算机组成原理》实验设备的成本高、不能辅助解决教学实验的全部要求的不足,本发明提供一种降低成本、有效辅助教学实验的全部要求的《计算机组成原理》仿真实验系统。
本发明解决其技术问题所采用的技术方案是:
一种《计算机组成原理》仿真实验系统,包括单模块实验仿真子系统和整机实验仿真子系统,所述单模块实验仿真子系统包括寄存器组模块仿真单元、通用寄存器发模块仿真单元、运算器模块仿真单元、存储器和总线模块仿真单元、指令部件仿真单元、微程序控制器模块仿真单元和时序和启停模块仿真单元,所述单模块实验仿真子系统包括:初始化模块,用于设置各个对象是否可见,设置变量初始值,所述对象包括硬件芯片、操作开关和模块间信息通道,所述变量包括硬件芯片值、操作开关的信号值、信息通路上信号值、操作开关代表的控制信号含义、信息传输的方向;开关按钮检测模块,用于在flash中按钮元件为自动检测,会激发动作,在该动作中编写代码,判断是数据开关还是控制信号开关;数据开关操作模块,用于显示数据输入到实验模块的信息流动动画,并将数据开关值赋值给模块硬件芯片值;
开关动作操作模块,用于根据该模块信号的定义,判断控制信号对实验模块是否有效,如有效,则执行模块的功能代码,完成要求的功能。若不是,则模块不运行;所述整机实验仿真子系统包括:
初始化模块,用于初始化整机界面上所有对象及变量;
运行模式识别模块,用于检测运行按钮,判断是按下微单步按钮还是全速按钮,设置运行模式标志变量;
取指令模块,用于将值赋值给内存当前地址值,根据内存当前地址值查内存数据数组,得到内存当前数据值,将此值传送到指令寄存器;内存当前地址值、内存当前数据值、指令寄存器值用显示灯显示;
分析指令模块,用于根据指令寄存器的值查表得到该指令对应的微程序的微地址,把微地址作为微程序存储器数组的下标,查找到微程序的第1条微指令,微指令中的代码即为各模块的控制信号,根据微指令代码,给涉及到的模块送控制信号,模块根据控制信号完成相应的功能;显示灯显示微指令值、微地址值、各模块控制信号灯值;
执行指令模块,用于根据取得的微指令,给各单模块剪辑传送控制信号,即各单模块剪辑得到控制信号组合,若控制信号有效,则该模块实现自身的功能,执行结果体现在硬件芯片的变量中。
作为优选的一种方案:所述的寄存器组模块仿真单元、通用寄存器发模块仿真单元、运算器模块仿真单元、存储器和总线模块仿真单元、指令部件仿真单元、微程序控制器模块仿真单元和时序和启停模块仿真单元采用flash Actionscript_开发,发布为HTML形式,实验系统的组织采用HTML超链接形式连接。
本发明的技术构思为:系统单机版开发平台为Macromedia flash 8。用HTML超链接形式将各实验组织在一起。本系统不需在计算机上安装,可直接运行。运行环境为有flash player插件的浏览器(IE 6以上版本自带该插件)。本发明系统网络版开发平台为Macromedia flash 8,ASP。系统需要IIS环境才可运行。
本发明软件通过HTML页面,提供完成实验选择的超链接列表。用户根据内容选择进行的实验。实验1到实验7是单模块实验操作,实验8是整机实验操作。每个实验都包括实验指导说明文档。
实验一是寄存器组模块仿真
实验二是通用寄存器模块仿真
实验三是运算器模块仿真
实验四是存储器和总线模块仿真
实验五是指令部件模块仿真
实验六是微程序控制器模块仿真
实验七是时序和启停模块仿真
实验八是整机综合仿真
用户从实验列表中选择要进行的实验项目,通过阅读实验指导文档,了解实验的基本操作原理和步骤,再进入仿真实验机界面完成操作。仿真实验机界面以真实实验仪照片为背景,这样可以给操作者强烈的真实感。实验涉及到的硬件模块及该模块的逻辑线路都标识和绘制出来,实现虚实结合。
实验指导文档为HTML静态页面形式。
仿真实验机分2类,单模块实验仿真和综合实验机仿真。
1、单模块实验仿真,包括有
1.1、单模块实验仿真功能
操作者连接实验要求的连线,即可操作输入开关,给实验模块提供数据、地址、控制信号。连线时用户通过鼠标点击指定连接的信号插孔和输入开关插孔,连接线路出现在界面上,若连接不正确,则不会有信号线出现。
在连线完成之后,用户可以操作该实验模块了。用鼠标点击开关,开关会有相应的变化,开关上的指示灯会亮灭表示数据“1”和“0”,同时代表信号传递的动画会演示,用户可以看到自己的操作提供的高低电平信号传递到具体哪块芯片上去了。实验过程中,可以将鼠标移至芯片上,该芯片内部的数据值会以二进制形式显示出来。模块的工作逻辑完全仿真硬件工作情况,芯片对控制信号不同组合作出不同操作。
黄色的信号流动动画表示数据信息传递路线,红色的信号流动表示控制信号开关提供了高电平送达连接的芯片引脚。数据开关显示灯、控制开关显示灯、总线显示灯上的值与实验仪显示形式一致。另外还可以直接点击模块中的芯片,查询芯片内的数据值。对于功能较多的芯片,还显示提示信息,提醒用户给出的控制信号选择了该芯片何种功能。
1.2、单模块仿真设计思路
单模块实验中,涉及到的对象及关系有:
1)对象:硬件芯片、操作开关、模块间信息通路。
2)属性:硬件芯片值、操作开关的信号值、信息通路上信号值、操作开关代表的控制信号含义、信息传输的方向(决定动画形式)、硬件芯片完成的功能。
3)动作:操作开关的控制意义经信息传输通路到达硬件芯片,硬件芯片启动内部功能实现。
仿真实验机初始状态,在用户对操作开关做操作后,实验机转数据传递和硬件功能运行状态,将开关的控制作用随时体现出来。
对应单模块仿真分析,我们在flash中建立各对象的实例。Flash中可操作的对象有图形元件、影片剪辑元件、按钮元件。硬件芯片用图形元件表示,属性值用图形元件关联的动态变量值表示,信息传递动作用影片剪辑元件动画表示,操作开关动作用按钮元件表示。
Flash ActionScript编程思路:
(1)初始化操作在第一帧完成,包括各对象是否可见和变量初始值设置
(2)开关按钮检测:在flash中按钮元件为自动检测,会激发on(press)动作。在该动作中编写代码,判断是数据开关还是控制信号开关
(3)如果是数据开关操作,则显示数据输入到实验模块的信息流动动画。并将数据开关值赋值给模块硬件芯片值。
(4)如果是控制开关操作,则根据该模块信号的定义,判断这些控制信号对实验模块是否有效,有效,则执行模块的功能代码,完成要求的功能。若不是,则模块不运行。
2、整机实验机仿真
2.1整机实验机仿真实现功能
整机实验是将所有模块通过总线连接在一起,成为一台完整的计算机。实验任务是采用模型机的指令系统编制程序,在实验机上全速、单步或微单步运行程序,完成程序功能。程序结果可以从硬件芯片测得或读取到显示灯查看。
综合整机仿真内容包括2部分:
第1部分是用户输入自编的汇编级程序被转换为二进制代码存入内存的过程仿真。
第2部分是内存的程序代码微单步或全速运行过程的仿真。
2.1.1汇编程序编译过程仿真
本部分实现允许用户输入自编的汇编程序,编译生成二进制代码。功能模块包括用户程序文件操作模块,用户程序查错模块,用户程序编译生成二进制代码模块。
用户程序文件操作模块提供程序文件的打开、编辑、保存操作。打开操作是将用户已经编辑好的程序文件读入到仿真界面中。我们开发的仿真程序只能读取txt文本文件,所以用户事先要将程序代码写在纯文本文件中。编辑操作是提供在输入文本框实现,可以完成程序输入、添加、删除基本操作。用户程序保存操作模块通过按钮触发,当用户按下保存按钮后,可以将输入文本框中的内容保存为文本文件,用户可以对代码保存和再利用。
用户程序查错模块,是根据实验仪指令系统,检查用户程序文件中的语法错误和指令错误。由于模型实验机的指令系统设计比较简单,一共34条指令,并且都是采用固定操作码形式,指令长度有1字节和2字节两种,只有立即数寻址方式的指令才翻译为2个字节。所以对指令的识别和排错判断就比较容易,利用字符串操作函数,从程序文件中提取一行,去掉首尾空格后,按照指令格式对字符串比较,若出现非指令系统中指令格式,则给出错误提示,返回编辑页面。
若指令符合指令系统规定的指令格式,则用户程序编译生成二进制代码模块,通过查表得到该指令的十六进制代码,放在代表内存空间的数组中,同时根据指令长度,改变内存空间地址编号。
2.1.2程序运行仿真模块
程序的运行实质上是硬件组成的各部分相继协调动作的过程。这部分仿真,涉及到各个模块的功能实现,各模块之间的数据传递,各模块的操作顺序。
各模块的功能实现同单模块仿真部分,不过数据、地址和控制信号的来源则不再由手工操作,而是由总线得到。各模块之间的数据传递都是通过总线来进行的,包括数据总线、地址总线和控制总线。所以各模块之间数据传递时,有动画演示数据的流动方向。各模块的数据值则用变量实现保存。
程序运行初始,各模块的初始变量值为0。用户按下运行按钮后,仿真计算机程序运行的基本顺序:取指令,分析指令,执行指令。
仿真机上的程序运行提供了微单步运行和全速运行2种模式。根据用户按下的微单步按钮还是全速运行按钮,设置一个标志值,根据标志值,设定在每一步微指令动画后的停止语句是否执行。
Flash ActionScript编程思路:
(1)初始化整机界面上所有对象及变量
(2)检测运行按钮,是按下微单步按钮还是全速按钮,设置运行模式标志变量
(3)取指令:这个过程涉及到的硬件对象有程序计数器PC、内存、指令寄存器;这个过程涉及到的变量有PC值、内存当前地址值、内存当前数据值、指令寄存器值。此过程的信号传递是将pc值赋值给内存当前地址值,根据内存当前地址值查内存数据数组,得到内存当前数据值,将此值传送到指令寄存器。此过程除了动画流动外,还包括内存当前地址值、内存当前数据值、指令寄存器值用显示灯显示。
(4)分析指令:控制器模块仿真的是微程序控制器,所以分析指令的过程即为根据指令寄存器中的值查找到微程序的过程。微程序采用水平型微指令格式,事先存储在微程序存储器中,我们设计一个数组保存微程序存储器中的值。本过程涉及到的硬件有指令寄存器、微程序控制存储器;这个过程涉及到的变量有指令寄存器值、微地址值、微指令值。此过程的信号传递是根据指令寄存器的值查表得到该指令对应的微程序的微地址,把微地址作为微程序存储器数组的下标,查找到微程序的第1条微指令。微指令中的代码即为各模块的控制信号,所以可以根据微指令代码,给涉及到的模块送控制信号,模块根据控制信号完成相应的功能。本过程的动画除了演示信号流动外,还要用显示灯显示微指令值、微地址值、各模块控制信号灯值。
实验仪指令系统中各指令的微周期时间不同,有2~4个。我们将所有指令微周期统一为4个,在微周期少于4个指令执行时,空余的微周期执行转移指令即可。
(4)执行指令:根据前一步取得的微指令,给各单模块剪辑传送控制信号,即各单模块剪辑得到控制信号组合,若控制信号有效,则该模块实现自身的功能,执行结果体现在硬件芯片的变量中。4个微指令执行完毕,则重新执行第(3)步。直到遇到停机指令,系统停止运行。
本发明的有益效果主要表现在:降低成本、有效辅助教学实验的全部要求。
附图说明
图1是《计算机组成原理》仿真实验系统的总体结构图。
图2是单模块对象及其关系示意图。
图3是单模块仿真状态转换图。
图4是单模块仿真流程图。
图5是整机仿真流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图5,一种《计算机组成原理》仿真实验系统,包括单模块实验仿真子系统和整机实验仿真子系统,所述单模块实验仿真子系统包括寄存器组模块仿真单元、通用寄存器发模块仿真单元、运算器模块仿真单元、存储器和总线模块仿真单元、指令部件仿真单元、微程序控制器模块仿真单元和时序和启停模块仿真单元,所述单模块实验仿真子系统包括:初始化模块,用于设置各个对象是否可见,设置变量初始值,所述对象包括硬件芯片、操作开关和模块间信息通道,所述变量包括硬件芯片值、操作开关的信号值、信息通路上信号值、操作开关代表的控制信号含义、信息传输的方向;开关按钮检测模块,用于在flash中按钮元件为自动检测,会激发动作,在该动作中编写代码,判断是数据开关还是控制信号开关;数据开关操作模块,用于显示数据输入到实验模块的信息流动动画,并将数据开关值赋值给模块硬件芯片值;开关动作操作模块,用于根据该模块信号的定义,判断控制信号对实验模块是否有效,如有效,则执行模块的功能代码,完成要求的功能。若不是,则模块不运行;所述整机实验仿真子系统包括:初始化模块,用于初始化整机界面上所有对象及变量;运行模式识别模块,用于检测运行按钮,判断是按下微单步按钮还是全速按钮,设置运行模式标志变量;取指令模块,用于将值赋值给内存当前地址值,根据内存当前地址值查内存数据数组,得到内存当前数据值,将此值传送到指令寄存器;内存当前地址值、内存当前数据值、指令寄存器值用显示灯显示;分析指令模块,用于根据指令寄存器的值查表得到该指令对应的微程序的微地址,把微地址作为微程序存储器数组的下标,查找到微程序的第1条微指令,微指令中的代码即为各模块的控制信号,根据微指令代码,给涉及到的模块送控制信号,模块根据控制信号完成相应的功能;显示灯显示微指令值、微地址值、各模块控制信号灯值;执行指令模块,用于根据取得的微指令,给各单模块剪辑传送控制信号,即各单模块剪辑得到控制信号组合,若控制信号有效,则该模块实现自身的功能,执行结果体现在硬件芯片的变量中。
所述的寄存器组模块仿真单元、通用寄存器发模块仿真单元、运算器模块仿真单元、存储器和总线模块仿真单元、指令部件仿真单元、微程序控制器模块仿真单元和时序和启停模块仿真单元采用flashActionscript_开发,发布为HTML形式,实验系统的组织采用HTML超链接形式连接。
实施例1:运算器模块仿真说明
(1)选择实验列表上实验三
(2)进入实验三实验指导文档,文档末尾是仿真操作链接
(3)点击仿真操作,进入运算器仿真机界面
(4)在数据开关总线连接头上单击,再到运算器模块总线连接头上单击,在数据开关和运算器模块总线间出现白色的数据通路
(5)在控制开关EDR1上单击,再到运算器模块的控制信号EDR1上单击,两个点间出现连接信号线。在控制开关EDR2上单击,再到运算器模块的控制信号EDR2上单击,两个点间出现连接信号线。
依次将控制开关上标称的控制信号单击后,单击相应的运算器模块控制信号,使得10个控制信号之间出现连接信号线。
再单击脉冲按钮点CCK1和EDR1CK,CCK2和EDR2CK,出现2个脉冲信号连线。
上述连线操作没有顺序要求,只要求连续2次单击的信号之间是有连线的,否则不会出现连线。
(6)现在可以通过给数据开关和控制开关不同值,使运算器完成运算。假设要完成22H+33H
(7)在数据开关上操作,使开关的二进制组合为00100010,在控制开关中将EDR1对应的开关置为0,其它开关置为1。在EDR1CK上点击。在数据开关到DR1通路上出现信号流动的动画。此时可将鼠标点击DR1硬件芯片,察看到芯片内数值为00100010。
(8)在数据开关上操作,使开关的二进制组合为00110011,在控制开关中将EDR2对应的开关置为0,其它开关置为1。在EDR2CK上点击。在数据开关到DR2通路上出现信号流动的动画。此时可将鼠标点击DR2硬件芯片,察看到芯片内数值为00110011。
(9)将控制开关s0~s3置为1001,将控制开关CN置为0。此时可将鼠标点击ALU硬件芯片,察看到芯片内数值为01010101。
(10)将ALU-O控制开关置为0,由运算器模块到数据总线灯有信号流动动画,数据灯显示ALU硬件芯片的值为01010101。
(11) 此时可调整S0~s3的开关组合,ALU芯片旁提示信息显示现在ALU芯片进行的操作。同时可通过数据灯和点击ALU芯片查看到不同运算的结果。
实施例2:整机仿真说明
(1)选择实验列表上实验八
(2)进入整机实验指导说明文档,文档末尾是仿真操作链接
(3)点击整机仿真操作链接,进入程序编辑页面
(4)在输入文本框中输入程序。假设我们输入程序如下
MOV A,#55
MOV R0,#11
ADD A,R0
(5)按提交按钮,进入程序编译界面,通过点击取指令、翻译指令按钮,将每条指令翻译为十六进制代码形式。代码如下
00 5F
01 55
02 6C
03 11
04 0C
(6)最后一条指令翻译完成后,进入仿真机界面。可以点击内存芯片,查看到前一步翻译得到的代码。可以点击微程序控制器芯片,查看到机器内事先存放好的微程序。
(7)点击微单步或单步运行按钮,执行程序。假设按微单步运行程序。
(8)点击微单步运行按钮,从PC芯片到内存芯片间有信号流动,内存的地址addr=0。地址总线指示灯显示为00000000,内存到IR1芯片有信号流动,数据总线指示灯显示为01011111,指令指示灯显示为01011111。微地址=00H。此时有微信号指示灯显示为010011011111111111111111。控制信号灯PC-O、EIR1、RM、MLD闪烁。完成取指微指令。
(9)点击微单步运行按钮,从IR1芯片到微程序存储器芯片有信号流动,微地址=17H。微地址显示灯为00010111。微指令代码指示灯为110111011111101111111111。完成分析指令
(10)点击微单步运行按钮,从内存芯片到通用寄存器A芯片有信号流动,内存地址addr=1,地址总线指示灯为00000001,数据总线指示灯为01010101。控制信号灯PC-O、ERA、RM、MLD有效。此时点击通用寄存器A芯片,可查看到A内数值为55H。完成第一条指令功能,将55H送A寄存器。
(11)点击微单步运行按钮,从PC芯片到内存芯片间有信号流动,内存的地址addr=2。地址总线指示灯显示为00000010,内存到IR1芯片有信号流动,数据总线指示灯显示为01101100,指令指示灯显示为01101100。微地址=18H。此时有微信号指示灯显示为010011011111111111111111。控制信号灯PC-O、EIR1、RM、MLD闪烁。完成取指微指令。
(12)点击微单步运行按钮,从IR1芯片到微程序存储器芯片有信号流动,微地址=1BH。微地址显示灯为00011011。微指令代码指示灯为110111011011111111111111。完成分析指令
(13)点击微单步运行按钮,从内存芯片到寄存器R0芯片有信号流动,内存地址addr=3,地址总线指示灯为00000011,数据总线指示灯为00010001。控制信号灯PC-O、RM、MLD、WR有效。此时点击寄存器R0芯片,可查看到R0内数值为11H。完成第二条指令功能,将11H送R0寄存器。
(14)点击微单步运行按钮,从PC芯片到内存芯片间有信号流动,内存的地址addr=4。地址总线指示灯显示为00000100,内存到IR1芯片有信号流动,数据总线指示灯显示为00001100,指令指示灯显示为00001100。微地址=03H。此时有微信号指示灯显示为111111111111110011111001。控制信号灯PC-O、EIR1、RM、MLD闪烁。完成取指微指令。
(15)点击微单步运行按钮,从A芯片到DR1芯片有信号流动,可点击DR1查看到DR1值为55H。有控制信号灯ERA、RA-O、RR、EDR1闪烁。完成加法指令ADD微程序的第1条微指令。
(16)点击微单步运行按钮,微地址=04H。此时有微信号指示灯显示为111111110111111101111001。完成取加法指令ADD微程序的第2条微指令。
(17)点击微单步运行按钮,从R0芯片到DR2芯片有信号流动,可点击DR2查看到DR2值为11H。有控制信号灯RR、EDR2闪烁。完成加法指令ADD微程序的第2条微指令。
(18)点击微单步运行按钮,微地址=05H。此时有微信号指示灯显示为111111111111101111111001。完成取加法指令ADD微程序的第3条微指令。
(19)点击微单步运行按钮,从ALU到A芯片有信号流动,点击ALU查看到ALU值为66H,点击A芯片查看到A值为66H。完成取加法指令ADD微程序的第2条微指令,也即完成第3条指令。
(20)点击微单步运行按钮,从PC芯片到内存芯片间有信号流动,内存的地址addr=5。地址总线指示灯显示为00000101,内存到IR1芯片有信号流动,数据总线指示灯显示为11111111,指令指示灯显示为11111111。微地址=3FH。此时有微信号指示灯显示为111111111101111111111111。控制信号灯PC-O、EIR1、RM、MLD闪烁。完成取指微指令。
(21)点击微单步运行按钮,机器没有任何动作,停机。
机译: 实验室复杂操作指导过程的仿真与自动化方法,包括实现基于软件的基础设施仿真,以及实现指导系统与仿真之间的双向数据传输
机译: 煤炭措施故障形成仿真实验装置与正常和反向故障仿真实验方法
机译: 高速列车制动系统的仿真与实验平台及实验方法