基于網(wǎng)絡(luò)的虛擬接口實(shí)驗(yàn)室設(shè)計(jì)與實(shí)現(xiàn)
西部大開發(fā)為提高西部的教育水平帶來了契機(jī)。建立一個(gè)低成本,易維護(hù),仿真性好,具有靈活性,覆蓋面廣的系統(tǒng)化的虛擬接口、實(shí)驗(yàn)平臺(tái)來解決西部教育中的實(shí)驗(yàn)教學(xué)難題,成為目前遠(yuǎn)程教育實(shí)驗(yàn)教學(xué)的關(guān)鍵。
基于網(wǎng)絡(luò)環(huán)境的虛擬接口實(shí)驗(yàn)平臺(tái)是一個(gè)可以在網(wǎng)絡(luò)環(huán)境下運(yùn)行的虛擬實(shí)驗(yàn)室。為用戶提供一個(gè)二維的可視化的環(huán)境,用戶通過匯編指令的調(diào)試、執(zhí)行和分析,最終將指令執(zhí)行結(jié)果反饋給以軟件形式展示的硬件系統(tǒng),驅(qū)動(dòng)虛擬硬件工作,產(chǎn)生正確的時(shí)序和波形圖。
一個(gè)基于網(wǎng)絡(luò)的虛擬接口實(shí)驗(yàn)室必須具備以下功能:①程序的仿真解釋執(zhí)行(程序解釋器):模擬執(zhí)行完整的程序段,利用高級(jí)語言的面向?qū)ο蟮募夹g(shù)仿真解釋用戶提交的低級(jí)語言源程序;②虛擬芯片庫平臺(tái):提供可視化的模擬圖形芯片和一些常見的虛擬門電路,用戶選擇芯片,門電路連線,接受程序執(zhí)行的結(jié)果數(shù)據(jù),觸發(fā)芯片的工作,產(chǎn)生試驗(yàn)結(jié)果的模擬時(shí)序波形圖。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)基于Web瀏覽器/業(yè)務(wù)邏輯層/數(shù)據(jù)存儲(chǔ)層(B/A/S)的三層網(wǎng)絡(luò)架構(gòu)計(jì)算模型,以Java為主要開發(fā)語言。瀏覽器端的展示層以JSP頁面為主,用戶登陸試驗(yàn)頁面,選擇以iava applet應(yīng)用實(shí)現(xiàn)的虛擬芯片進(jìn)行連線。用戶在網(wǎng)頁界面的提示處編寫試驗(yàn)程序,提交程序到服務(wù)器,服務(wù)器端的解釋器平臺(tái)調(diào)用解釋規(guī)則庫,解釋程序結(jié)果并可視化的返回給客戶端。用戶將結(jié)果數(shù)據(jù)提交給已連接好的虛擬接口電路,服務(wù)器端通過類庫設(shè)計(jì)定義各類芯片的工作方式、電氣特性、I/0特性和幾何特性等,確定信號(hào)時(shí)延。對(duì)芯片的各個(gè)管腳分別建立子類.定義各管腳的電氣特性、I/0特性和幾何特性等,達(dá)到真實(shí)地模擬硬件結(jié)構(gòu),使運(yùn)算結(jié)果與真實(shí)硬件相同,實(shí)現(xiàn)對(duì)各個(gè)接口技術(shù)實(shí)驗(yàn)環(huán)境進(jìn)行仿真。系統(tǒng)可根據(jù)用戶端的不同設(shè)計(jì)進(jìn)行重新配置執(zhí)行,使學(xué)習(xí)者感覺到其所應(yīng)用的實(shí)驗(yàn)平臺(tái)就是真實(shí)接口技術(shù)實(shí)驗(yàn)室。
3 接口實(shí)驗(yàn)流程建模
一個(gè)現(xiàn)實(shí)的接口實(shí)驗(yàn)流程如下:學(xué)生接到實(shí)驗(yàn)任務(wù),進(jìn)入實(shí)驗(yàn)室:①打開集成實(shí)驗(yàn)環(huán)境,在計(jì)算機(jī)上編寫匯編、C語言,通過詞法、語法檢查;②連接集成開發(fā)試驗(yàn)箱,連接跳線,燒錄程序;③觀察實(shí)驗(yàn)板上的現(xiàn)象,比對(duì)試驗(yàn)結(jié)果;④如果與預(yù)期結(jié)果現(xiàn)象一致,則試驗(yàn)程序正確,此試驗(yàn)結(jié)束,課后書寫實(shí)驗(yàn)報(bào)告,否則轉(zhuǎn)向;⑤修改程序,調(diào)試程序重復(fù)②~④。虛擬接口實(shí)驗(yàn)平臺(tái)的模式如圖l所示。
4 匯編程序的仿真解釋執(zhí)行
匯編程序是一個(gè)接口實(shí)驗(yàn)的基礎(chǔ),由程序的正確執(zhí)行結(jié)果驅(qū)動(dòng)相應(yīng)的芯片工作產(chǎn)生時(shí)序圖,模擬真實(shí)的接口實(shí)驗(yàn)環(huán)境,應(yīng)具備的功能模塊如下:
(1)預(yù)處理模塊 除去注釋、偽指令,分析程序語句,分離出指令操作碼,第一、二操作數(shù),并存儲(chǔ)到指令數(shù)據(jù)表;
(2)數(shù)據(jù)表模塊建立匯編指令所需的寄存器表、內(nèi)存表,端口表等,并提供通用的數(shù)據(jù)讀、寫接口;
(3)解釋執(zhí)行模塊(規(guī)則庫)核心是建立各類指令的規(guī)則庫,跟蹤模擬程序指針PC的流程,實(shí)例化指令碼對(duì)應(yīng)的指令類,取出該條指令的操作數(shù)傳人類對(duì)象的成員函數(shù),進(jìn)行對(duì)應(yīng)的函數(shù)操作,返回計(jì)算結(jié)果,并寫入對(duì)應(yīng)的數(shù)據(jù)表;
(4)通訊模塊 建立程序執(zhí)行與虛擬芯片工作的連接,程序執(zhí)行結(jié)果能透明的傳遞給虛擬芯片工作接口函數(shù),并接受虛擬芯片工作后的反饋數(shù)據(jù),透明的反饋給程序。
仿真解釋執(zhí)行的算法嘲描述:①從用戶程序表中取出一條源程序語句,記錄此語句對(duì)應(yīng)的程序指針PC;②分離出語句中的操作碼、操作數(shù),在指令規(guī)則庫中查詢其對(duì)應(yīng)的指令類,若跳轉(zhuǎn)指令,轉(zhuǎn)至⑦否則轉(zhuǎn)至③;③查找數(shù)據(jù)字典中的尋址方式表,實(shí)例化出該指令對(duì)應(yīng)的尋址類對(duì)象,取出操作數(shù),調(diào)用指令類對(duì)象的函數(shù)成員,接受尋址類對(duì)象實(shí)例處理后的操作數(shù),進(jìn)行函數(shù)運(yùn)算,刷新其對(duì)應(yīng)的寄存器表或內(nèi)存表等;④取出各寄存器及內(nèi)存單元對(duì)應(yīng)的數(shù)據(jù),以圖表的形式展現(xiàn)在界面上,同時(shí)將其與虛擬芯片相關(guān)的數(shù)據(jù)透明的傳遞給通訊接口;⑤計(jì)算該指令的運(yùn)算時(shí)問,以靜態(tài)變量保存;⑥PC=PC+1取出下一條指令繼續(xù)執(zhí)行,轉(zhuǎn)至②;⑦若是無條件跳轉(zhuǎn)指令,計(jì)算該標(biāo)志對(duì)應(yīng)的PC值,轉(zhuǎn)至對(duì)應(yīng)的指令語句執(zhí)行,轉(zhuǎn)至②;若為有條件跳轉(zhuǎn)指令,取出狀態(tài)寄存器中該指令對(duì)應(yīng)的PSW值,判斷條件是否成立,如成立按無條件跳轉(zhuǎn)指令執(zhí)行,否則PC=PC+1,轉(zhuǎn)至②;若是子程序(中斷程序),則保存該條語句的PC值,便于程序的返回執(zhí)行,同時(shí)按無條件跳轉(zhuǎn)指令執(zhí)行;若為RET指令則程序結(jié)束。
5 虛擬芯片的設(shè)計(jì)
5.1 設(shè)計(jì)思想
接口電路設(shè)計(jì)所用器材包括CPU、TTL門電路、可編程邏輯芯片、負(fù)載等。傳輸信號(hào)主要分控制、地址、數(shù)據(jù)電源和地線。為實(shí)現(xiàn)實(shí)驗(yàn)電路邏輯性正確與否的檢測(cè),其設(shè)計(jì)方法是:針對(duì)每個(gè)芯片建立類,定義各種工作方式、電氣特性、I/O數(shù)據(jù)結(jié)構(gòu)。對(duì)其各管腳的功能定義(I/0特性、信號(hào)類型、電氣特性)建立子類,并構(gòu)造I/0方法,確定信號(hào)時(shí)延。幾何特性描述芯片的外部特征;工作特性描述芯片的數(shù)據(jù)處理方式(即工作方式);電氣特性描述芯片的工作周期;I/O數(shù)據(jù)結(jié)構(gòu)負(fù)責(zé)芯片工作前數(shù)據(jù)的接受與工作中、后的數(shù)據(jù)輸出。
虛擬接口實(shí)驗(yàn)室要涉及的硬件比較多,而每個(gè)硬件的外部幾何特性都不盡相同,在非固定實(shí)驗(yàn)的情況下,用戶總是希望可以自由的選擇各類硬件,這樣就可以動(dòng)態(tài)地實(shí)現(xiàn)各類硬件的實(shí)例化操作。設(shè)計(jì)時(shí)采用硬件多態(tài)的思想,最大化的實(shí)現(xiàn)虛擬芯片類庫的復(fù)用,即設(shè)計(jì)抽象于所有硬件的一個(gè)主模塊,派生出具體的硬件類,可以實(shí)現(xiàn)用戶隨意選擇芯片,也方便硬件鏈表的統(tǒng)一處理。
5.2 設(shè)計(jì)實(shí)例
5.2.1 設(shè)計(jì)思想
芯片具體實(shí)現(xiàn)包括芯片的幾何特性、工作特性、和電氣特性。幾何特性描述了芯片的外部特征;工作特性描述的是芯片的數(shù)據(jù)處理方式(即工作方式);電氣特性描述的是芯片的工作周期。不失一般性,在此以8253來說明設(shè)計(jì)思想和類之間的具體關(guān)系。
5.2.2 類圖關(guān)系
為實(shí)現(xiàn)硬件多態(tài),設(shè)計(jì)了硬件模板類、芯片引腳類、8253芯片類3個(gè)類,類圖及關(guān)系如圖2所示。
6 虛擬芯片操作
對(duì)設(shè)計(jì)好的虛擬芯片要進(jìn)行移動(dòng)、縮放、芯片間連線、連線變形和連線正確性檢測(cè)等操作。
6.1 芯片移動(dòng)位置重疊算法
當(dāng)鼠標(biāo)點(diǎn)擊位置在模型內(nèi)部或外設(shè)輸入操作時(shí)觸發(fā)函數(shù),首先跳入一個(gè)判斷函數(shù),判斷鼠標(biāo)移動(dòng)釋放后的位置或者輸入?yún)?shù)使新模型處于以前模型的什么位置,如是左上,則首先判斷變化特征點(diǎn)(左上點(diǎn))的X坐標(biāo)是否大于在定點(diǎn)(右下點(diǎn))的第2象限(即左上)區(qū)域障礙物特征點(diǎn)X坐標(biāo)。大于則返回值為ture,操作可行,按照繪制算法重新繪制硬件模型和連線;不大于,函數(shù)跳入判斷Y坐標(biāo)函數(shù),變化特征點(diǎn)的Y坐標(biāo)是否小于在定點(diǎn)(右下點(diǎn))的第2象限(即左上)區(qū)域障礙物特征點(diǎn)Y坐標(biāo)。小于則返回值為true,操作可行,按照繪制算法重新繪制硬件模型和連線,不小于,則再次判斷對(duì)角點(diǎn)(右下點(diǎn))的X坐標(biāo)是否小于在定點(diǎn)(右下點(diǎn))的第2象限(即左上)區(qū)域障礙物特征點(diǎn)X坐標(biāo)。小于則返回值為true,操作可行,按照繪制算法重新繪制硬件模型和連線;不小于,函數(shù)跳入判斷Y坐標(biāo)函數(shù),變化特征點(diǎn)的Y坐標(biāo)是否大于在定點(diǎn)(右下點(diǎn))的第2象限(即左上)區(qū)域障礙物特征點(diǎn)Y坐標(biāo)。大于則返回值為ture,操作可行,按照繪制算法重新繪制硬件模型和連線,不大于,返回值為false,操作失敗,返回初值。與縮放算法類似,因?yàn)榭赡艽嬖诳缭娇尚行?,要進(jìn)行兩個(gè)特征點(diǎn)的兩次判斷。當(dāng)移動(dòng)位置是右上、左下、右下時(shí),函數(shù)流程基本相似,只是判斷大小的函數(shù)載入順序不同。(以下以2個(gè)模塊為例.其中坐標(biāo)前一位是模塊號(hào),后一位1表示左上點(diǎn),2表示右下點(diǎn))由算法分析得出表1所示結(jié)果。由表1可知,只有當(dāng)X組位置坐標(biāo)大小關(guān)系和Y組位置坐標(biāo)大小關(guān)系都不相同時(shí)位置才重疊。
6.2 芯片間連線變形算法
完成對(duì)象起點(diǎn)和終點(diǎn)的連線。要求連線不重合,不穿越芯片,盡可能美觀,芯片位置參數(shù)變化時(shí)線條繪制更新等。
連線變形算法的詳細(xì)描述如圖3所示。(DrawLine()表示連線方法,GerPointx()表示獲得x軸方向的方法,GetPointy()表示獲得Y軸方向的方法)。連線效果圖如圖4所示。
7 結(jié)語
虛擬接口試驗(yàn)平臺(tái)已實(shí)現(xiàn)對(duì)8086匯編語言和MCS一51指令系統(tǒng)的仿真模擬解釋,同時(shí)模擬出8053和8255接口芯片的部分功能,幾個(gè)重要算法的實(shí)現(xiàn)在測(cè)試過程中體現(xiàn)出良好的時(shí)間與空間性能。由于虛擬接口實(shí)驗(yàn)室平臺(tái)還處于實(shí)驗(yàn)性研究階段,對(duì)接口編程語言的解釋執(zhí)行功能比較完善,且可解釋的語言種類還比較單一,應(yīng)豐富可解釋語言的種類,同時(shí)虛擬芯片庫的內(nèi)容還需大量擴(kuò)充,達(dá)到種類齊全的所有接口芯片的模擬。