孙会儒
(西安铁路职业技术学院,西安 710014)
计算机硬件实验教学中所涉及的仪器设备繁杂多样,电路连接复杂,操作困难,这增加了实验教学的困难性,而依托于虚拟仿真技术及网络技术的虚拟仿真实验教学系统,有效整合虚拟教学资源、模拟硬件配置,搭建虚拟实验环境,使学生通过Internet即可随时随地进行实验操作,突破了教学资源和环境的限制,是学科与信息技术双向融合下的必然产物,是实验教学时效性的内在要求。基于此,本文将针对传统虚拟仿真实验系统在扩展性、交互性及软件重用方面的不足,以C/S模式、MySQL和Visual Basic作为开发技术进行了系统设计,阐述了系统设计思路、结构及功能,同时,利用面向对象技术和组件技术进行虚拟元器件与虚拟设备的开发,并采用数学模型来描述虚拟元器件,由此,通过虚拟元器件数学模型的构建来实现虚拟元器件数据库的搭建,进而解决了系统设计的难题,该系统超越了传统教学设备和资源的限制,为师生构建了一种更为逼真、实操性更强的教学环境。
本文所设计的虚拟仿真实验教学系统是以现实教学需求为出发点,通过融合虚拟技术、MySQL数据库及Visual C++6.0等多种技术,搭建虚拟的实验教学环境和实验模型,并直接采用与集成电路芯片功能类似的虚拟实验仪器和设备进行仿真实验,如此,用户便可通过网络来构建计算硬件结构,可借助不同的“虚拟芯片”来搭接各类电路,并经由虚拟实验对电路设计方案进行实时验证,获取实验结果,进而实现以“软”代“硬”的仿真实验目的,其总体设计思路如下:
1.该系统是以Internet网络技术为设计基础,并在综合分析B/S和C/S各自优势后,决定采用安全性较高、通讯耗资较低的C/S作为系统架构,以TCP/PI协议实现客户端与服务器之间的通信,同时应用MySQL作为数据访问、存储的支撑,并在Visual Basic集成开发环境下,运用扩展性较强的VC++编程语言对MySQL进行编程,由此为系统设计搭建了基本的开发环境。
2.结合系统设计需求,重点研究虚拟元件库的构建,采用面向对象的虚拟元件模型,课程教学中的实验设备以组件技术进行封装,系统动态组件对象,进行对象属性的设置、对象方法的调用、对象事件的相应,并建立组件之间连接通信的机制,以为用户以组件组合形式进行实验提供支撑。
3.在系统中融入虚拟实验设备和仪器仪表,以建立各类实验模型,以适应实验教学内容的多变性,同时,转变了以往主要应用硬件进行设计的理念,转而以软硬件相结合的方式,以一体化的结构模式进行了开发,不仅有效降低了设备的冗余度,控制了成本,还增强了系统运行效率。
2.1 系统结构
计算机硬件虚拟仿真实验教学系统目的在于让用户通过Internet自由访问和应用虚拟实验设备进行电子电路的虚拟设计、仿真或模拟、程序录入等实验操作,其集成了数据库管理、虚拟实验平台及系统管理等功能模块,系统结构,如图1所示。
本文采用了安全性能高、操作简单的C/S模式来搭建系统架构,主要由客户端和服务器两部分构成,其中,客户端是虚拟实验的仿真运行环境,是进行虚拟实验的平台支撑,而服务器则由系统及数据库两大管理模块组成,在客户端用户可根据认证权限登录系统进行电子连线设计和程序录入操作,而后将电路中各元器件的设定数值通过Internet提交至远程服务器,服务器根据不同的实验操作请求调整仪器状态,进行模拟分析与计算,将所得实验数据反馈给客户端,并通过调用虚拟示波器来显示仿真的实验数据。
2.2 主要功能
2.2.1 虚拟实验平台
虚拟实验平台是虚拟实验仿真运行的环境,其内含的虚拟元器件布局设置、电路连线的设计、实验仿真控制、电路纠错、虚拟仿真实验项目存储等功能是在虚拟面包板、虚拟元器件及虚拟设备等的支撑下才得以完成,具体而言,设计中,利用虚拟元器件布局设置可以准确认识虚拟实验仿真平台中各类虚拟元器件的位置设定方法,并可据此对虚拟仿真实验元器件进行属性修改、插入或删除等操作,电路连线设计功能是计算机硬件电路芯片的电路连线与设计,本文采用启发式迷宫算法,利用最短距离的启发式方法减少E-节点扩展数目来提升连线效率,以此为集成电路芯片的快速连接提供支撑,同时,电路图设计选用与控件方法类似的形式,也即将工具条上的电路设计元素直接拖入图板,并对其进行适当调整即可完成电路设计;实验仿真控制是在完成虚拟元器件布局设置、电路设计之后,将电源接通,输入相应的操作信号,在虚拟仿真交互环境下进行实验运行状态的控制;电路纠错功能模块中,本文利用数字示波器、虚拟探测棒等工具,在模拟实验进行之前,对电路进行除错侦测;实验项目存储操作则是针对已经设计完成的虚拟元器件编辑布局、属性状态、电路连接性能等进行的存储操作,以为用户进行虚拟仿真实验进行相关支撑,可为复杂仿真实验及其前期的电路设计提供基础和条件。
2.2.2 数据库管理模块
该模块包含了虚拟元器件库、虚拟设备库及系统文件库等模块,本文所设计的虚拟元器件库集成了虚拟微型计算机CPU芯片、虚拟存储器芯片、集成电路芯片等,而虚拟设备库主要包含了虚拟电源、数字示波器、模拟信号发生器、探测棒、虚拟电路连接器及显示器等仿真实验设备,其中,虚拟电源可提供直流电源给集成电路芯片,信号发生器可提供脉冲信号给时序逻辑电路,逻辑探测棒通过高低态及浮接时的红、蓝、不亮等各类状态的显示,来对电路进行纠错,数字示波器可通过对2个通路数字信号的监测,对电路进行纠错,并进行信号显示,显示器可结合实验需求,选用LED显示器或其他显示器,电路连线中不同布线层可以差异性的电线颜色予以区别,系统文件管理模块主要以类别表的形式,将实验类别信息、实验信息、学生信息、教师评语、库表备份信息等涵盖其中,以此为教师管理课程设计实验、管理学生信息、批阅学生作业及数据库信息备份提供有效支撑。
2.2.3 系统管理模块
系统管理模块是服务器端的重要组成部分,其包含的各子模块及功能为:用户认证管理是用户根据既定权限登录服务器进行认证注册,以便进入虚拟实验系统进行实验操作;组件注册管理则可从数据库服务器将实验所需的虚拟元器件及设备下载至服务器端;实验提交管理是根据客户端实验完成状态保存实验进度,并向服务器提交实验报告;而用户协作控制系统则为用户提供同步交流和异步交流两个协同操作的工具,以便实时讨论或进行留言。
3.1 虚拟元件模型的定义
计算机硬件虚拟实验系统是以“软”代“硬”,目的在于以虚拟元器件及设备(虚拟元件)替代物理的实验仪器设备,本文通过构建统一的虚拟模型来完成这一设计目的,并将该模型存在数据库中以便用户随时调用,在进行模型设计时,需要对虚拟元器件及设备这些对象进行分类、组织,提取共同点进行抽象,而后加以具体化,由此,便可在正确反映器件的物理特性和电气特性的基础上,简化其结构。从模拟功能的视角出发,可将虚拟元件定义为一个黑箱,其模型,如图2所示。
图2 虚拟元件模型
虚拟元件的模型可以由表达式Ek(P,S,C,f)进行定义,并应用引脚类和虚拟元件模板类来实现,模型属性由类属性实现,其中:
(1)P=I∪O,I={I1,I2,…,In},O={O1,O2,…Om}分别为虚拟元件的端口、输入端口及输出端口。
(2)对于任何一个端口Pt,有Pt={A,V,Pi/i∈R},A、V分别为端口的属性、端口的值,Pi是与Pt端口相连接的其他虚拟元件的端口序列。
(3)S、C分别为虚拟元件的属性描述和行为描述,对于任何一个属性St、行为Ct,有St={SName,SKind,SValue},Ct=C{SName,CSender,CReceivcer,CValue,CParam},其中SName、SKind、SValue分别为属性名称、属性种类及属性值,CName、CSender、CReceiver、CValue、CParam分别为行为名、行为发送者、行为接受者、行为取值、行为相关参数。而f则是虚拟元件功能的描述。
3.2 虚拟元件模型的组件构造
3.2.1 虚拟元件的组件设计方法
虚拟元件的组件设计应该秉承分布、异构、重用及开放的原则性,而基于组件的软件开发以软件架构为组装蓝图,以可重用组件为组装零件,且不受仿真实验平台、运行环境的限制,其可为虚拟元件的全面布局、编辑、装配等过程提供有效支撑,针对此,可选用基于COM的ActiveX控件技术来构建虚拟元件,通过将虚拟元件封装成ActiveX控件是其成为虚拟系统的控制数据库,由此,仿真实验的构造就演变成为在虚拟仿真交互环境下依照实验需求将控件封装组配成虚拟实验平台的过程,在变更虚拟实验项目时,通过各类控件的增删或重组即可完成。同时,ActiveX控件技术支持VisualC++、VisualBasic、Delphi多种语言开发工具,本文开发虚拟元器件库时选用的是VisualBasic,该种语言的多线程、面向对象技术、事件驱动等功能均契合设计要求,可以独立单元的形式,将虚拟元件在ActiveX的User Control中封装成单个虚拟元件的外观属性和内部相匹配的对象,使其自成为一个整体。
3.1.2 虚拟元件的制作
虚拟元件是虚拟元器件及设备的总称,也是虚拟实验系统设计的关键所在,首先,虚拟元器件的外观属性包含规格大小、图形形态、引脚数量等,内部特性包括引脚自身的电气特性、引脚间的逻辑关系等,将虚拟元件的外观属性及内部特性通过Visual Basic封装为ActiveX控件即可完成虚拟元件的制作,实践制作中,可将User Control作为内含虚拟元器件属性与行为的虚拟元件空间的容器,空间外观由初始尺寸、外观图像、图形控制,空间内部特性、由I/O接口、引脚对象、存储单元控制,将I/O接口、存储单元删除可形成常用或简单的虚拟元件,而集成芯片以多个引脚形成虚拟元件I/O接口,其以接口作为数据输入、输出,存储单元为虚拟元件内部寄存器或存储器,具体如图3所示。
图3 虚拟元器件控件的构成
而与此同时,虚拟设备是虚拟实验系统的基本单元,其能够为虚拟实验提供信号显示、检测等服务功能,与虚拟元器件之间存在密切关联性,且因为组件的跨平台性,两者的过程相同,本文仍然利用Visual Basic的ActiveX空间技术进行虚拟设备组件的构造,由此不仅可以控制成本、提升组件的灵活性,而且还能够实现虚拟设备的重复使用,突破实验设备专人专用的限制。
为验证仿真实验教学系统的有效性,本文以“计算机硬件技术基础实验教材”中的8254 实验为例,采用“操作型”实验,重点实现虚拟实验中交互功能及虚拟仪器的建模。
4.1 响应鼠标事件的简单交互
为实现虚拟实验的交互性,可采用Radio Button控件技术,将多个Radio Button控件添加Image控件上,8254实验平台的硬件电路图由Image导入,以图片形式将8254实验中各芯片引脚导入到Radio Button控件中,并将Radio Button控件作为系统的传感器节点,用来感知用户的动作,进行相应的实验操作,通常鼠标的移动、单击及拖动会使得装有传感器的虚拟对象感知用户的动作,进而产生交互式的虚拟现实。
4.2 连线策略
“8254 虚拟实验”目的是对连线策略进行识别和执行,其设计和实现方法如下分析:
(1)各个连接点坐标的获取。可通过各个Radio Button控件窗口指针来获取窗口的矩形窗口坐标,以J10_1节点为例,其代码为:
CRect rt1;
Get Dlg Item(IDC_J10_06)->Get Window Rect(&rt1);
Screen To Client(&rt1);
CPoint Point_J10_1;
Point_J10_1.x=rt1.left+rt1.Width()/2 ;
Point_J10_1.y=rt1.bottom-rt1.Height()/2;
(2)节点响应过程
该过程是用户点击虚拟元件引脚时触发的,8254实验系统的连线平台,如图4所示。
图4 8254实验系统的连线平台
该系统中,各个芯片的引脚以37个布尔型的Radio Button控件变量来表示,鼠标事件的触发由Radio Button控件响应,被点击及未被点击的引脚变量分别赋值为True、False,当选中需要连线的两点,而未选中其他点时,鼠标触发正确,是合法的连接,可实现两点的连线操作,而两次点击相同节点和连线已经连线的节点程序显示非法操作。
(3)策略执行过程
在画图前,需要首选创建Graphics对象,定义画笔工具,并利用Dispose()将未用的资源释放,连线操作采用Graphics类的Draw Line方法,将预先定义的画笔及起始点坐标作为参数,将完成的连线存入vector容器,且在执行完一个连线操作后,需要进行本地检查,以count计数一次,所有连线正确后方可进入下一程序,如连线操作未完成,则会提示用户。连线正确后,可进入汇编程序录入,从实验实例中选取一个实验对硬件电路进行编程,输入控制字和初值,选定的实验及给定的控制字和初值,会对示波器上波形的方式和宽度产生影响,转到示波器页面,示波器最终以动态波形图的形式展现给用户,8354定时器/计数器虚拟实验成功后界面,如图5所示。
图5 8354定时器/计数器虚拟实验平台主界面
目前,随着教育信息化建设的加速发展,传统计算机硬件实验教学的诸多弊端不断凸显,硬件配置更新速度慢、实用功能差,很大程度上影响了教学的实效性,而本文采用C/S体系结构,应用MySQL和Visual C++ 6.0构建的虚拟仿真实验系统,实现了硬件资源的仿真和共享,突破了时间和地域的限制,为用户提供了一个开放性、交互性和扩展性更强的仿真教学环境,并以8254定时器/计数器虚拟实验为例,重点实现了交互性、连线策略及虚拟示波器动态图形显示等内容,验证了仿真实验教学系统的可行性。
[1] 李春娥. 计算机软件虚拟仿真实验教学系统设计[J]. 科技经济导刊,2016(24):20.
[2] 李辉发. 计算机网络虚拟实验教学平台的设计与实现[D].保定:河北农业大学,2015.
[3] 陈耀. 计算机硬件组装虚拟实验系统设计与实现[J]. 电脑与电信,2014(12):67-69.
[4] 韦璐. 虚拟计算机硬件实验平台的设计与开发[D].武汉:中南民族大学,2014.
[5] 徐岚. 虚拟仿真实验在计算机专业实验教学中的应用探索与研究[J]. 牡丹江教育学院学报,2013(6):150-151.