时间:2024-05-10
陈智勇 吴星星
摘 要:《计算机组成原理》课程理论性、实践性强,学生很难在有限的课时中掌握。针对其实验教学要求,作者结合TDN-CM+教学实验系统,设计了一个简单易用的虚拟实验系统。使用Visual C++6.0软件作为编程开发工具,运用图形用户界面,构造了一个自主的实验环境,并以存储器虚拟实验为例介绍了具体开发过程。通过对虚拟实验系统的测试,采用全软件形式模拟计算机硬件实验系统,不仅能够完成计算机组成原理实验的要求,还提高了教师的工作效率,增强了学生的实践能力,具有在实验教学中进行推广和应用的价值。
关键词:计算机组成原理;虚拟实验;Visual C++6.0;图形用户界面
中图分类号:G434 文献标志码:A 文章编号:1673-8454(2015)04-0080-03
一、 引言
《计算机组成原理》是计算机专业的专业基础课,既具有很强的理论性,生涩难懂,又具有很强的实践性,需要在搞好课堂教学的同时加强实验教学。[1]《计算机组成原理》实验一般分解为运算器、存储器、微程序控制器等若干个实验单元,在有限课时的教学进度下逐一安排教学。由于实验设备电路复杂、排布线密度高、调试困难等众多因素影响,学生很难在实验室巩固和掌握课堂内容。[2]
为此,笔者在实验教学过程中结合西安唐都公司开发的TDN-CM+计算机组成原理教学实验系统,采用面向对象的Visual C++6.0软件,基于Microsoft Foundation Classes(MFC)类库,分析、设计并实现了一个计算机组成原理虚拟实验系统。该系统简单、可靠,能够移植到大多数Windows环境的PC机,学生能够在课外自由安排实验时间,完成对课堂和实验室内容的补充学习,进而改善教学效果。
二、 虚拟实验系统的设计
1.TDN-CM+计算机组成原理教学实验系统简介
TDN-CM+计算机组成原理教学实验系统采用部件单元式结构,包括运算器、存储器、控制器、总线、外围接口及输入输出设备、大规模可编程逻辑器件等。线路板上设置了大量的开关、指示灯、插线孔等,学生可根据自己设计的模型计算机结构方案,运用排线连接方式或计算机电子自动逻辑设计方式来构造不同结构及复杂程度的原理性计算机,并观察系统运行过程中各种数据和控制信号状态及其时空关系。系统微程序指令、控制器结构及运算器结构的格式及定义均可由学生根据学习需要灵活改变或重新设计,避免了单纯验证性的实验模式,提高了学生计算机系统的综合设计能力。
2.计算机组成原理虚拟实验系统的设计
计算机组成原理虚拟实验系统是对TDN-CM+系统的仿真,设计中除了要保持用户界面的一致性,还要方便用户操作和确保实验结果的高度准确,即简洁性和可靠性。计算机组成原理这门课程主要介绍各主要功能部件的基本结构和工作原理。[3] [4] 因此,本系统在设计中利用面向对象程序设计方法,对TDN-CM+系统的运算器、存储器、微程序控制器和数据通路等功能部件进行仿真,并通过课程设计实现一个较完整的模型机,在实验中了解、熟悉完整的单台计算机基本组成原理。
为方便教学和师生交流,还需实现教学模块。学生从实验列表中选择要进行的实验项目。在做实验之前,用户可以查看实验项目的实验指导,了解实验的原理、要求和注意事项,然后通过播放实验项目教学演示录像加深理解。每个实验都准备了一定数量的填空题和选择题,学生在完成实验后填写好答案提交后,系统即可自动给出得分。
虚拟实验系统总体结构如图1所示。
三、 虚拟实验系统的开发
1.实验操作界面的开发
为了保证虚拟实验系统与TDN-CM+系统的一致性,让用户获得良好的体验,本虚拟实验系统采用图形用户界面。系统界面采用数码相机拍摄,截取出各个按钮、元件、开关、LED灯、插头等图片,用Photoshop进行优化,并对应加载VC++的静态控件和按钮控件。
本系统由学生自主插线,线区位于主界面右侧,线型分为二、四、六、八口线。点击线区内线型号标识生成对应型号的线,拖拽线头移动到相应接口,在控制信号的控制下产生流通数据。主界面的开关分为数据开关和控制开关,利用鼠标左键点击主界面上的模拟开关,即可产生数据或控制信息。为提高虚拟实验教学效果,本系统对用户的错误操作做出更正提示。例如,如果在电源打开状态下进行插线,系统将会弹出“请先关闭电源”的对话框,其他漏连、连错、反向等错误操作产生的效果类似。虚拟实验界面和操作效果与真实系统保持完全一致,主界面如图2所示。
2.存储器虚拟实验的具体实现
下面以存储器虚拟实验为例,说明本虚拟实验系统的虚拟实现原理。存储器是计算机进行各种信息存储和交换的中心,存储器的实验操作包括写入数据和读取数据。[5] 写存储器的操作步骤为数据开关输入访存地址,将地址存入地址寄存器;再从数据开关输入数据,若ROM存储器的片选信号和写信号有效,将数据存入由地址寄存器给出的RAM响应地址的存储单元中。读存储器的操作步骤为数据开关输入访存地址,将地址存入地址寄存器;若RAM存储器的片选信号和读信号有效,从响应地址中读出存储单元中的数据。数据写入和数据读取均需要操作相应的控制信号来使相应部件执行所规定的操作。程序流程图如图3所示。
线的产生与操作、信号的产生与传递的具体实现如下:
(1)线的产生
线区共有八口线、六口线、四口线和二口线四种接线供选择。通过矩形类CRect设置响应产生新线的区域,点击该区域,调用成员函数PtInRect(),如果生成新线变量preplug =FALSE,产生新线;如果线的类型变量linetype=2,产生二口线;如果preplug =TRUE,弹出对话框“当前还有线未用”。
(2)线的操作
包括删除、移动、旋转以及与线柱的连接。通过矩形类CRect设置响应删除线的区域,只有线的两端portA、portB皆处于删除区才调用RemoveAt()函数删除。
移动接口变量movingport='A'表示移动的是A端,B端静止。调用MoveTo()和LineTo()函数绘制线。
线柱分为横向线柱和竖向线柱。按下鼠标右键时调用函数OnRButtonDown()实现接口的旋转,鼠标右击一次,线顺时针旋转90度一次。旋转接口变量direction等于2和4表示线横向,等于1和3表示线竖向。
通过矩形类CRect对象设置响应插线区域,如INPUT DEVICE区SW_B线柱,用CRect对象PutLine_SwitchSWB_click()设置插线响应区域,Removeline_SwitchSWB_click()设置拔线响应区域。调用OnLButtonUp()函数和OnLButtonDown()函数分别完成插线操作和拔线操作。
(3)信号的产生
信号根据其作用可分为数据信号和控制信号两种。各按键的响应函数具体实现如下:
①电源开关响应函数:电源变量power = TRUE,电源打开,才会更新数据,包括各种数据的输入与输出,控制信号的传递等;power = FALSE,电源关闭,通过调用Clearmem()函数清空存储器,重置地址寄存器地址变量data=255。
②数据开关控制开关响应函数:用字符型变量data代表线与线之间传递的信号。data值从高位到低位依次代表数据开关按钮D7-D0的输入值,对应位为低电平则加载向上拨的电平开关。因为控制信号均由二口线传递,所以用data高二位表示电平的高低,data=0代表低电平,其他非零情况代表高电平。
③start键响应函数:按下start键时调用OnLButtonDown()函数,将控制信号赋给变量TS3。
(4)信号的传递
指针puton为指向插在线柱上的线,为NULL表示没有插线。在插线状态下,通过按钮产生信号并传递,例如连接好INPUT DEVICE区和SWITCH UNIT区的SW_B线柱后,点击SWITCH UNIT区SW_B按钮,产生控制信号data,通过调用 Exportdata()函数和Inportdata()函数分别传出和接收控制信号data,控制数据开关输入的数据信号传递到数据总线,并通过总线LED灯显示。存储器实验数据信号、控制信号流向如图4。
四、 结束语
《计算机组成原理》实验连线繁多,操作复杂,虚拟实验系统可以帮助学生实验前熟悉实验操作,减少由于学生错误操作导致的芯片损耗、仪器破坏,有效降低维护成本。学生可以随时随地做实验,不再受场地、课时的限制,有助于加深学生对实验原理的理解,提高教学质量。通过对计算机组成原理虚拟实验系统的测试,采用全软件形式模拟计算机硬件实验系统,具有方便快捷、高效、交互性强等优势,不仅能够完成计算机组成原理实验的要求,还提高了教师工作效率,增强了学生实践能力,具有在实验教学中推广和应用的价值。
参考文献:
[1]王玉华,黄硕之.计算机组成原理课虚拟实验方案[J].实验技术与管理,2005(4):73-75,80.
[2]郝尚富,张志强,孙佰利.计算机组成原理虚拟实验环境的设计及实现[J].计算机仿真,2009(11):320-323.
[3]陈智勇.计算机组成原理[M].西安:西安电子科技大学出版社,2009.
[4]白中英,戴志涛.计算机组成原理[M].北京:科学出版社,2013.
[5]王贤勇,王金亮,许艳丽.基于软件仿真的存储器实验设计[J].实验室研究与探索,2006(7):803-805.
(编辑:鲁利瑞)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!