基于网络的虚拟接口实验室设计与实现
扫描二维码
随时随地手机看文章
西部大开发为提高西部的教育水平带来了契机。建立一个低成本,易维护,仿真性好,具有灵活性,覆盖面广的系统化的虚拟接口、实验平台来解决西部教育中的实验教学难题,成为目前远程教育实验教学的关键。
基于网络环境的虚拟接口实验平台是一个可以在网络环境下运行的虚拟实验室。为用户提供一个二维的可视化的环境,用户通过汇编指令的调试、执行和分析,最终将指令执行结果反馈给以软件形式展示的硬件系统,驱动虚拟硬件工作,产生正确的时序和波形图。
一个基于网络的虚拟接口实验室必须具备以下功能:①程序的仿真解释执行(程序解释器):模拟执行完整的程序段,利用高级语言的面向对象的技术仿真解释用户提交的低级语言源程序;②虚拟芯片库平台:提供可视化的模拟图形芯片和一些常见的虚拟门电路,用户选择芯片,门电路连线,接受程序执行的结果数据,触发芯片的工作,产生试验结果的模拟时序波形图。
2 系统设计与实现
系统实现基于Web浏览器/业务逻辑层/数据存储层(B/A/S)的三层网络架构计算模型,以Java为主要开发语言。浏览器端的展示层以JSP页面为主,用户登陆试验页面,选择以iava applet应用实现的虚拟芯片进行连线。用户在网页界面的提示处编写试验程序,提交程序到服务器,服务器端的解释器平台调用解释规则库,解释程序结果并可视化的返回给客户端。用户将结果数据提交给已连接好的虚拟接口电路,服务器端通过类库设计定义各类芯片的工作方式、电气特性、I/0特性和几何特性等,确定信号时延。对芯片的各个管脚分别建立子类.定义各管脚的电气特性、I/0特性和几何特性等,达到真实地模拟硬件结构,使运算结果与真实硬件相同,实现对各个接口技术实验环境进行仿真。系统可根据用户端的不同设计进行重新配置执行,使学习者感觉到其所应用的实验平台就是真实接口技术实验室。
3 接口实验流程建模
一个现实的接口实验流程如下:学生接到实验任务,进入实验室:①打开集成实验环境,在计算机上编写汇编、C语言,通过词法、语法检查;②连接集成开发试验箱,连接跳线,烧录程序;③观察实验板上的现象,比对试验结果;④如果与预期结果现象一致,则试验程序正确,此试验结束,课后书写实验报告,否则转向;⑤修改程序,调试程序重复②~④。虚拟接口实验平台的模式如图l所示。
4 汇编程序的仿真解释执行
汇编程序是一个接口实验的基础,由程序的正确执行结果驱动相应的芯片工作产生时序图,模拟真实的接口实验环境,应具备的功能模块如下:
(1)预处理模块 除去注释、伪指令,分析程序语句,分离出指令操作码,第一、二操作数,并存储到指令数据表;
(2)数据表模块建立汇编指令所需的寄存器表、内存表,端口表等,并提供通用的数据读、写接口;
(3)解释执行模块(规则库)核心是建立各类指令的规则库,跟踪模拟程序指针PC的流程,实例化指令码对应的指令类,取出该条指令的操作数传人类对象的成员函数,进行对应的函数操作,返回计算结果,并写入对应的数据表;
(4)通讯模块 建立程序执行与虚拟芯片工作的连接,程序执行结果能透明的传递给虚拟芯片工作接口函数,并接受虚拟芯片工作后的反馈数据,透明的反馈给程序。
仿真解释执行的算法嘲描述:①从用户程序表中取出一条源程序语句,记录此语句对应的程序指针PC;②分离出语句中的操作码、操作数,在指令规则库中查询其对应的指令类,若跳转指令,转至⑦否则转至③;③查找数据字典中的寻址方式表,实例化出该指令对应的寻址类对象,取出操作数,调用指令类对象的函数成员,接受寻址类对象实例处理后的操作数,进行函数运算,刷新其对应的寄存器表或内存表等;④取出各寄存器及内存单元对应的数据,以图表的形式展现在界面上,同时将其与虚拟芯片相关的数据透明的传递给通讯接口;⑤计算该指令的运算时问,以静态变量保存;⑥PC=PC+1取出下一条指令继续执行,转至②;⑦若是无条件跳转指令,计算该标志对应的PC值,转至对应的指令语句执行,转至②;若为有条件跳转指令,取出状态寄存器中该指令对应的PSW值,判断条件是否成立,如成立按无条件跳转指令执行,否则PC=PC+1,转至②;若是子程序(中断程序),则保存该条语句的PC值,便于程序的返回执行,同时按无条件跳转指令执行;若为RET指令则程序结束。
5 虚拟芯片的设计
5.1 设计思想
接口电路设计所用器材包括CPU、TTL门电路、可编程逻辑芯片、负载等。传输信号主要分控制、地址、数据电源和地线。为实现实验电路逻辑性正确与否的检测,其设计方法是:针对每个芯片建立类,定义各种工作方式、电气特性、I/O数据结构。对其各管脚的功能定义(I/0特性、信号类型、电气特性)建立子类,并构造I/0方法,确定信号时延。几何特性描述芯片的外部特征;工作特性描述芯片的数据处理方式(即工作方式);电气特性描述芯片的工作周期;I/O数据结构负责芯片工作前数据的接受与工作中、后的数据输出。
虚拟接口实验室要涉及的硬件比较多,而每个硬件的外部几何特性都不尽相同,在非固定实验的情况下,用户总是希望可以自由的选择各类硬件,这样就可以动态地实现各类硬件的实例化操作。设计时采用硬件多态的思想,最大化的实现虚拟芯片类库的复用,即设计抽象于所有硬件的一个主模块,派生出具体的硬件类,可以实现用户随意选择芯片,也方便硬件链表的统一处理。
5.2 设计实例
5.2.1 设计思想
芯片具体实现包括芯片的几何特性、工作特性、和电气特性。几何特性描述了芯片的外部特征;工作特性描述的是芯片的数据处理方式(即工作方式);电气特性描述的是芯片的工作周期。不失一般性,在此以8253来说明设计思想和类之间的具体关系。
5.2.2 类图关系
为实现硬件多态,设计了硬件模板类、芯片引脚类、8253芯片类3个类,类图及关系如图2所示。
6 虚拟芯片操作
对设计好的虚拟芯片要进行移动、缩放、芯片间连线、连线变形和连线正确性检测等操作。
6.1 芯片移动位置重叠算法
当鼠标点击位置在模型内部或外设输入操作时触发函数,首先跳入一个判断函数,判断鼠标移动释放后的位置或者输入参数使新模型处于以前模型的什么位置,如是左上,则首先判断变化特征点(左上点)的X坐标是否大于在定点(右下点)的第2象限(即左上)区域障碍物特征点X坐标。大于则返回值为ture,操作可行,按照绘制算法重新绘制硬件模型和连线;不大于,函数跳入判断Y坐标函数,变化特征点的Y坐标是否小于在定点(右下点)的第2象限(即左上)区域障碍物特征点Y坐标。小于则返回值为true,操作可行,按照绘制算法重新绘制硬件模型和连线,不小于,则再次判断对角点(右下点)的X坐标是否小于在定点(右下点)的第2象限(即左上)区域障碍物特征点X坐标。小于则返回值为true,操作可行,按照绘制算法重新绘制硬件模型和连线;不小于,函数跳入判断Y坐标函数,变化特征点的Y坐标是否大于在定点(右下点)的第2象限(即左上)区域障碍物特征点Y坐标。大于则返回值为ture,操作可行,按照绘制算法重新绘制硬件模型和连线,不大于,返回值为false,操作失败,返回初值。与缩放算法类似,因为可能存在跨越可行性,要进行两个特征点的两次判断。当移动位置是右上、左下、右下时,函数流程基本相似,只是判断大小的函数载入顺序不同。(以下以2个模块为例.其中坐标前一位是模块号,后一位1表示左上点,2表示右下点)由算法分析得出表1所示结果。由表1可知,只有当X组位置坐标大小关系和Y组位置坐标大小关系都不相同时位置才重叠。
6.2 芯片间连线变形算法
完成对象起点和终点的连线。要求连线不重合,不穿越芯片,尽可能美观,芯片位置参数变化时线条绘制更新等。
连线变形算法的详细描述如图3所示。(DrawLine()表示连线方法,GerPointx()表示获得x轴方向的方法,GetPointy()表示获得Y轴方向的方法)。连线效果图如图4所示。
7 结语
虚拟接口试验平台已实现对8086汇编语言和MCS一51指令系统的仿真模拟解释,同时模拟出8053和8255接口芯片的部分功能,几个重要算法的实现在测试过程中体现出良好的时间与空间性能。由于虚拟接口实验室平台还处于实验性研究阶段,对接口编程语言的解释执行功能比较完善,且可解释的语言种类还比较单一,应丰富可解释语言的种类,同时虚拟芯片库的内容还需大量扩充,达到种类齐全的所有接口芯片的模拟。