基于远程虚拟数字电路实验仿真技术的研究

2019-10-01 版权声明 举报文章

基于远程虚拟数字电路实验仿真技术的研究

摘要: 随着计算机和网络技术的发展,远程教育迅速普及,远程虚拟实验的需求日益强烈。远程虚拟电路实验系统开发的难点在于仿真必须具有真实性、连续性、实时交互性。运用时间片分割策略,把整个电路仿真过程按时间轴分割成若干时间片,再通过状态重置和交互响应机制实现连续仿真的技术,设计并实现了支持连续仿真的可交互的远程虚拟数字电路实验平台。

关键词:: 数字电路;实时连续仿真; 时间片分割

引言:

电路虚拟实验作为虚拟实验的组成部分,正在由以仪器仪表为测量工具的传统分析方法逐步向以计算机为工作平台的虚拟分析方法过渡,同时由于社会对网络教育的强烈需求和相关技术的快速发展,使得虚拟电路实验和远程教育日益结合,成为网络虚拟现实研究的新热点。通过对相关技术进行了可行性分析,结合多年的教学实践经验,开发了虚拟电路实验平台,系统分为客户端的用户界面层、服务器仿真引擎的数据处理层、仿真层以及客户端和仿真引擎之间的传输层。其中实时连续仿真则是在开发的过程中遇到的一个技术难点。由于实时性和多用户同时仿真的需求,系统在后台采用了分割时间片的技术,并根据电路状态的连续性,在时间片的结束点保存电路状态,在开始点重置电路状态,从而支持实时连续的远程电路实验。

一 虚拟实验的研究现状

虚拟实验分为有实验室支撑的实验模式和没有实验室支撑的实验模式。前者是一种"虚拟仪器版面一硬件设备"操作的模式。后者没有真实的实验室作为支撑,全部使用仿真技术、虚拟现实技术以及网络技术等高科技手段创造虚拟实验环境,实验者像在真实的环境中完成实验的各个环节,比前者更经济,更容易建立实验系统,也更方便实验者,是目前乃至今后的主要发展方向。电子电路虚拟实验作为虚拟实验的组成部分,也得到了快速的发展。而针对远程教学的仿真软件,或者着重于多媒体演示,功能简单,交互性差,或者没有强大的后台支持。远程教学仿真软件不能利用单机版的仿真软件,建立功能强大,交互性强,能够实时连续仿真的远程虚拟实验平台,使得远程实验教育难以得到有效发展。

二 虚拟电路实验平台的系统构架设计

要设计的"虚拟电路实验平台"系统,硬件构架采用B/S结构,用户通过装有Flash插件的浏览器与实验平台交互,搭建电路,并观察输出结果。用户信息和实验信息保存在MySql数据库中,后台的核心XSPICE仿真软件,进行仿真计算。系统的软件构架设计如下:1)界面层采用多媒体技术构造实验板及各种元器件,用来与用户交互并显示仿真结果。2)传输层通过socket传输XML格式的实验数据,实现客户端与仿真引擎的数据交换。3)数据处理层解析XML格式的用户实验操作的数据,并转换为.Cir文件所需的语法格式;构造XSPICE所需的仿真输入文件(.Cir);分析XSPICE仿真后的输出文件(.Out),提取实验所需数据; 以XML格式封装仿真数据,准备发送。4)仿真层调用XSPICE进行仿真计算。XSPICE是一个优秀的电路仿真软件,它把Cir文件作为仿真参数文件输入,由仿真程序运算后得到仿真结果,输出到Out文件。

三 实时连续仿真技术的实现

在基于仿真的远程电路虚拟实验系统中,往往需要使用电路仿真软件,如SPICE、XSPICE等,通过它们的瞬态仿真功能获得电路输出数据,先仿真电路状态变化的全过程,再输出全部仿真结果。在电路实验中,模拟电路虚拟实验往往瞬间就可以达到稳定状态的,之后电路状态就不再变化。像这样的电路,在进行仿真的时候可以只显示电路达到稳定之后的状态,也就是只显示一次。正好符合SPICE、XSPICE等仿真软件的要求。类似的还有自动脉冲输入的数字电路。下面以接有自动脉冲输入的时序逻辑电路为例,讨论实时连续仿真技术。

1.分段仿真原理。真实情况下的实时连续仿真,实验者只要按下仿真开关,电路就会源源不断地把数据显示在界面上。但是仿真引擎使用的XSPICE并不是一个实时连续仿真软件,在使用XSPICE进行电路瞬态仿真计算的时候,必须等到XSPICE仿真结束才能得到仿真结果,进而分析显示。而XSPICE的这种功能特性与虚拟实验中所要求的连续不断地计算并显示电路输出数据,并能根据用户的交互实时作出响应是有矛盾的。为此,可以采用分段仿真的方法,即设定一仿真时间段tb,仿真引擎让XSPICE每次瞬态仿真只计算tb 时间长度的电路输出数据,然后将数据发送到客户端,客户端则按照结果数据中的时间戳在相应的时间点上改变显示输出。等到tb时间之后,客户端得到的数据显示完毕.仿真引擎再计算下一个tb 时长度的电路数据并发送给客户端。

在电路实验教学中,多数电路并不复杂,输入时钟信号的频率也不太高,因此基本可以满足这一要求。仿真引擎每次仿真一个时间片的数据,并把它传送给客户端,客户端以仿真结果中的时间戳为序,把数据保存在一个FIFO队列中,然后根据时间戳依次从队列中取出数据进行显示。当客户端发现队列中的仿真数据即将被显示完时,就发送一个队列空的请求到仿真引擎。考虑到网络传输时间和仿真程序的运行时间的消耗,客户端发送继续仿真的请求需要有一个时间上的提前量,尽量避免出现冒泡FIFO队列已空,而客户端还未收到仿真引擎的下个时间片的仿真结果,导致显示出现停顿的情况。

2.电路状态重置。由于时序电路的输出是由电路的输入和当前状态决定的,因此在进行分段仿真时,必须保存每个时间片结束时的电路状态,并在下一个时间片的仿真开始时用它来设置电路的初始状态,从而可以保持在整个仿真过程中电路状态的连续。可以把第i个时间片的t时刻的电路状态表示为:

Sit=[αφ],i∈[i,+∞],t=[0,tb]其中 α=[α1,α2,…,αn]T 为各触发器状态,n为电路中的触发器数,φ= [φ1,φ2,…,φm ] 为各输入时钟脉冲源的相位,m为电路中的输入源数。那么时间片i中,t时刻的电路状态与0时刻电路状态的关系是:Sit=F(Si0,t),其中F是由实验电路决定的状态变换函数。

3.用户交互。上述仿真算法中,整个仿真过程被分割成一个个时间片来分段仿真,每一个时间片的仿真结果是在认为这个时间片内没有用户交互,实验电路的结构和参数没有发生变化的情况下得到的。然而,用户有可能在一个时间片的任何时刻对实验电路进行操作,例如调整了信号发生器的信号输出频率或者幅度、按下了电路板上的按钮等。在发生了用户交互的情况下,由于电路已经发生了变化,有可能导致电路的输出也发生变化,因此这个时间片中剩余的还没有显示的数据就将成为无效数据。所以当发生用户交互时,客户端需要清空未显示的数据队列,向仿真引擎发送交互请求,并传送交互时间t1,仿真引擎根据发生交互的时间点,可以根据当前时间片的输出数据计算出t1时刻的电路状态St1i,其中i是发生交互的时间片编号。

四 结束语

由于目前流行的电路仿真软件或是不支持连续仿真和实时交互,或是不支持远程虚拟实验,为此设计并实现了实时连续仿真平台,该技术从功能上和效率上都能基本满足广大学生用户的需求,但是还存在可以改进的空间。由于该系统是网络应用软件,提高后台效率是项目下一步的工作重点。

作者简介: 任艳婓(1968-),女,河南省濮阳市人,濮阳职业技术学院数学与信息工程系副教授,软件工程硕士,研究方向为:计算机应用技术。

注:本文为网友上传,不代表本站观点,与本站立场无关。举报文章

上一篇:小学科学课教学方法之我见 下一篇:重庆地区中职学生心理问题的分析及对策

被举报文档标题:基于远程虚拟数字电路实验仿真技术的研究

验证码:

点击换图

举报理由:
   (必填)

发表评论  快捷匿名评论,或 登录 后评论
评论