孫會儒
(西安鐵路職業技術學院,西安 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.