
Vol.20,No.62004
第6期
NA TURAL SCIENCES JOURNAL OF HARBIN NORMAL UN IV ERSIT Y
数字电路虚拟实验室的设计
李 晶
(哈尔滨师范大学)
【摘要】 本文提出了构建数字电路虚拟实验室的基本思想,阐述了VR 的基本
特性及编程的基本方法,并详细论述了采用面向对象的知识表示方法建立虚拟实验室的过程,及实现中的相关技术问题.
关键词:ICAI ;VR ;面向对象;知识表示
收稿日期:2004-09-11
李晶,女,(1975,2-),哈尔滨师范大学计算机科学系教师,在读CAI 方向研究生
近几年,随计算机网络技术特别是Internet 技术和CAI 技术的蓬勃发展,使基于Internet 的远程教学在世界范围内得到了迅速发展,这种教育方式的变革打破了教育信息传播在时间和空间上的,使先进的教育方法和实验条件等教育资源得以共亨,节省了在基础设施上大量的重复投资.然而随着人工智能不断在CAI 中的渗透,CAI 正向着智能化发展,形成了ICAI (Intelligent CAI ),它是以学生模型和教师模型为主,基本上可以实现因材施教,根据学生的学习情况作出相应的改变,以适应不同情况的学生个体.但是作为某些需要实验教学的课程(如模拟电路、数字电路等)的教学,现在的远程教学多数仅将实验制作成图片或流媒体的形式在网络上进行展示,不能真正锻炼学生的实际动手操作能力,而使这类远程教学仅限于理论的讲授,而没有达到真正的教学目的.这里我们探讨了如何将虚拟现实应用于数字电路ICAI 的实验教学中,并介绍了数字电路虚拟实验室的设计思想.
1 虚拟现实技术概述
虚拟现实(Vitual Reality )是一种可创建和体
验虚拟世界(Virtual World )的计算机系统.它以
仿真的方式给用户创造一个实时反映实体对象变化与相互作用的三维虚拟世界,并通过头盔式显示器、数据手套等辅助传感设备,提供用户一个观测与该虚拟世界交互的3维界面,使用户可直接参与并探索仿真对象在所处环境中的作用与变化.利用VR 技术的手段,可以使我们对所研究的对象和环境获得“身临其境”的感受.1.1 VR 的3个特性
VR 技术具有沉浸性(Immersion )、交互性(Interactivity )、和多感知性(Imagination )等特性.
・沉浸性是指用户感到被虚拟世界所包围,就好像完全融入其中一样.通常有两种实现方法:多“窗口”显示法和头盔法.
・交互性是指用户能通过自然的动作与虚拟世界的物体进行交互作用.这常常需要虚拟设备如数据手套的辅助来实现.
・多感知性是指除了一般计算机所具有的视觉感外,还应包含听觉、触觉,甚至嗅觉和味觉等感知.1.2 VR 的分类
VR 按浸入程度可分为3类:浸入类、非浸入
式及叠加式.
・浸入式VR
在浸入式系统中,以对使用者头部位置、方向作出反映的计算机生成的图像代替真实世界的景观.
・非浸入式VR
在非浸入式系统中,使用者可以视觉上感觉到真实世界,并通过某种显示装置如图形工作站,可对虚拟世界进行观察,并通过像空间鼠标这样的装置在虚拟环境内漫游,所以有的称之为“透过窗口”的虚拟现实系统.
・叠加式VR
叠加式系统允许用户对现实世界进行观察的同时,虚拟图像叠加在现实世界之上.如战斗机驾驶员使用的头盔可使驾驶员同时看到外面的世界及其叠加的地形数据或战略目标等,以帮助驾驶员对现实世界进行分析.1.3 虚拟环境的建模
建模是VR 重要的和不可或缺的组成部分.建模技术大致可以分为2类:几何建模和行为建模.
・几何建模用于处理物体的几何和形状的表示,研究图形数据结构等基本问题.
・行为建模用于处理物体的运动和行为的描述.
2 用Open G L 构造虚拟环境
Open G L 是一种可产生高质量图像的三维图
形程序设计接口,是由运行在SGI 公司的IRIS G L 图形工作站上的IRIS G L 三维图形接口发展
起来的.Open G L 是一个开放的图形标准,与平台无关,可运行在几乎所有的图形工作站上.
Open G L 的设计思想是程序设计人员只需定
义要画出的场景物体及光照条件和视图参数等,然后由Open G L 来完成渲染场景所需的其它一切工作,这包括各种坐标变换和投影变换、复杂的光照计算、裁剪和隐藏面消隐等.编写Open G L 程序的方法通常有四种,辅助库编程方法、Windows 编程方法,MFC 编程方法和面向对象的编程方法.这里我们可以采用MFC 或面向对象的编程方法,将Open G L 代码插入到其视类CView 中,即可生成所需的三维图形,形成非浸如入式VR 系统.
3 数字电路虚拟实验室的构造
数字逻辑电路分为组合逻辑电路和时序逻辑
电路两大部分,根据其特点,我们可以将数字电路虚拟实验室构造为图1所示的结构.下面我们对构造中的相关问题进行讨论.
图1 数字电路虚拟实验室结构
3.1 器件库
在器件库中提供了本虚拟实验室设置的实验
所需的各类器件———TPE -D 型数字电路实验机、各类集成芯片等.在该器件库中,用户可以查看各个器件的组成结构(如TPE -D 型数字电路实验机的各组成部件的功能及使用方法、各芯片管脚的结构及功能等等),并可根据实验要求的需要选择所需的器件,只需输入器件的名称及数量,点击确定按钮后,即可在您的实验平台上得到所需的实验材料.下面我们采用面向对象的知识表示方法实现计算机对各类器件的特征、结构的表示.面向对象的知识表示方法侧重于表述问题的特征和结构.它以抽象数据类型为基础,能方便地描述问题(对象)的静态特性、动态行为和结构特征.我们先以Windows 的通用对象类CObject 类为基类构造实验管理类CExperimentManager ,这样可保证以后的派生类都能接收消息.定义如下:
Class CExperimentManager :public COb 2ject
{protected :
int ProblemNum ;//实验编号
int Problem Type ;//实验类型……}
我们可以将实验箱封装成一个类,即CEx 2perimentalApparatus 类,也由实验管理类继承,包含了实验箱的各个组成部分的信息描述,如电源、8组开关、8组显示灯、单脉冲信号源等,其定义如下:
Class CExperimentalApparatus :Cexperiment 2Manager//实验机类
5
5第6期 数字电路虚拟实验室的设计
bool power-switch;//电源开关
bool out1,out2,…,out8;//8组开关
bool led1,led2…led8;//8组显示灯
}
其次要表明元件之间的联系关系.由于数字逻辑电路分为组合逻辑电路和时序逻辑电路两大部分,所以其元件分为组合逻辑门和时序元件两部分,将组合逻辑门部分封装成一个类,即CZ2 Logic类.该类由问题管理类继承而来,包括了组合逻辑门的类型、连接关系、逻辑值等多方面信息,定义如下:
Class CZ Logic:CExperimentMangager
{public:
Cstring Logic Type;//组合门类型
Cstring IN1,IN2,IN3,…,//输入端连接
Cstring OU T1,OU T2,…;//输出端连接
Int in1,in2,in3,…,//输入端逻辑值
Int out1,out2,…;//输出端逻辑值
CptrListLogic TypeList;//组合门链表
……}
每一个组合门对象都包含了类型、编号、连接关系、各端逻辑值等信息.每增加一个组合门对象,组合门链表就增加一个节点.
最后将时序元件部分封装成一个类,即CTrigger类,也由实验管理类继承,包含了对触发器功能描述的信息,定义如下:
Class CTrigger:CEXperimentManager
{public:
CptrList CList;//真值表链表
CptrList DList;//状态表链表
Int CPflag;//触发器翻转标志
……
}
依电路中触发器类型及个数的差异,可由CTrigger类派生出CTransD、CTrans J K、CTran2 sRS等类,分别描述D、J K、RS等类型的触发器.这些描述包括触发器各控制端
、输出端的连接关系、当前的逻辑值、电路的初始状态等信息.对触发器的各控制端和输出端除定义其连接关系及逻辑值外,还需定义触发器CP端的触发方式,即是上升沿触发还是下降沿触发.
3.2 实验的虚拟过程
无论是组合逻辑电路还是时序逻辑电路,我们最终希望在虚拟实验室的平台上显示出所搭建电路结构的运行结果,即绘出时序图或进行L ED 显示.这里我们以组合逻辑电路为例,描述其实验的模拟过程,其流程图如图2所示.
图2 组合逻辑电路实验模拟过程流程图
其中推理规则库是完成解题过程中各任务的一系列产生式规则的集合,我们可采用函数的方式对规则进行划分,将那些完成相同目标的规则组织成一个函数,再将所有的规则函数组成一个类即Clogiclib类.该类下的成员函数按功能分为: 1)计算逻辑关系;2)形成状态方程;3)函数化简等,如计算逻辑关系的函数如下:
Cstring Clogiclib∷Callogiccon(Cstring logic2 type)
{if(logictype==74L S00)
{out1=(!(in1&in2))
out2=(!(in3&&in4))
out3=(!(in5&&in6))
out4=(!(in7&&in8))
}
if((logictype==74L S20)
{……}
……
}
然而我们最终要生成的输出函数只能由输入端口构成,不能含有中间端口变量,所以我们首先应对端口分类,以便判断输出函数中是否含有中间量,如果含有中间量,必须进行逐层替换,直至输出函数串中不再含有中间量.为了完成中间量的替换,我们可以利用中间数据库存放中间量及其对应的替换表达式.中间数据库中的数据由推理规则库生成.
3.3 时例分析
给出实例连线图如图3所示,下面我们按模拟流程进行分析.
65哈尔滨师范大学自然科学学报 2004年
图3 组合电路实例连线图
・端口分类
该线路图的端口分类如下表所示:
输入端in1、in2、in3、in4
输出端out3中间端
out1、out2
通过调用推理规则库可获得中间数据库,如下表
所示:
out1(!(in1&&in2))out2
(!(in3&&in4))
在创建74L S00对象时的初始化结果为:in1=A 、in2=A 、in3=A 、in4=B 、in5=out1、in6=out2.
・确定输出函数
由端口分类表可知输出端为out3,通过调用
推理规则库可得输出函数为out3=(!(in5&&in6))对象74L S00的in5和in6的初始化结果为in5=out1、in6=out2,即有输出函数out3=(!(out1&&out2))
・化简输出函数
由输出函数out3=(!(out1&&out2))可知其含有中间量,这时通过中间数据库中的信息,可将函数中的中间变量替换掉,即out3=(!((!(in1&&in2))&&(!(in3&&in4)))),此时函
数中只含有输入量,即完成了化简操作.根据输入
信号便可绘制相应的输出信号了.
4 结束
本系统通过虚拟现实技术与面向对象的知识表示的方法相结合的思想,构建了数字电路的虚
拟实验室,希望其能够克服网络实验教学中无法实现锻炼学生的实际动手操作能力的缺陷.
参 考 文 献
1 张秀山.虚拟现实技术及编程技巧.国防科技大学出版社,
1999
2 蒋庆全.虚拟现实技术浅析.兵工自动化,2001,1
3 牛学东,王希鹏.如何在现代远程教学系统中建立VRML 教
学课件.电化教育研究,2001,4
4 刘正光,张惊雷,张军.一个分析时序逻辑电路ICAI 系统的设
计与实现.天津大学学报,2002,1
CONSTRUCTING DIGITAL CIRCUITS ’S
VIRTUAL LABORAT OR Y
Li Jing
(Harbin Normal University )
ABSTRACT
In this paper ,a idea of constructing digital circuits ’s virtual laboratory is bringed forward ,and some basic characteristics and programming methods of VR are seted forth.The design ’process of constructing digital circuits ’s virtual laboratory base that the object -oriented ideology for knowledge indication is de 2scribed in detail.The correlative techniques how to constructing it are slao discussed.
K eyw ords :ICAI ;VR ;Object -oriented ;Knowledge Indication
(责任编辑:红)
7
5第6期 数字电路虚拟实验室的设计
