陳智勇 吳星星
摘 要:《計算機組成原理》課程理論性、實踐性強,學(xué)生很難在有限的課時中掌握。針對其實驗教學(xué)要求,作者結(jié)合TDN-CM+教學(xué)實驗系統(tǒng),設(shè)計了一個簡單易用的虛擬實驗系統(tǒng)。使用Visual C++6.0軟件作為編程開發(fā)工具,運用圖形用戶界面,構(gòu)造了一個自主的實驗環(huán)境,并以存儲器虛擬實驗為例介紹了具體開發(fā)過程。通過對虛擬實驗系統(tǒng)的測試,采用全軟件形式模擬計算機硬件實驗系統(tǒng),不僅能夠完成計算機組成原理實驗的要求,還提高了教師的工作效率,增強了學(xué)生的實踐能力,具有在實驗教學(xué)中進行推廣和應(yīng)用的價值。
關(guān)鍵詞:計算機組成原理;虛擬實驗;Visual C++6.0;圖形用戶界面
中圖分類號:G434 ? ? ? ? ? ? 文獻標(biāo)志碼:A ? ? ? ? ? 文章編號:1673-8454(2015)04-0080-03
一、 引言
《計算機組成原理》是計算機專業(yè)的專業(yè)基礎(chǔ)課,既具有很強的理論性,生澀難懂,又具有很強的實踐性,需要在搞好課堂教學(xué)的同時加強實驗教學(xué)。[1]《計算機組成原理》實驗一般分解為運算器、存儲器、微程序控制器等若干個實驗單元,在有限課時的教學(xué)進度下逐一安排教學(xué)。由于實驗設(shè)備電路復(fù)雜、排布線密度高、調(diào)試困難等眾多因素影響,學(xué)生很難在實驗室鞏固和掌握課堂內(nèi)容。[2]
為此,筆者在實驗教學(xué)過程中結(jié)合西安唐都公司開發(fā)的TDN-CM+計算機組成原理教學(xué)實驗系統(tǒng),采用面向?qū)ο蟮腣isual C++6.0軟件,基于Microsoft Foundation Classes(MFC)類庫,分析、設(shè)計并實現(xiàn)了一個計算機組成原理虛擬實驗系統(tǒng)。該系統(tǒng)簡單、可靠,能夠移植到大多數(shù)Windows環(huán)境的PC機,學(xué)生能夠在課外自由安排實驗時間,完成對課堂和實驗室內(nèi)容的補充學(xué)習(xí),進而改善教學(xué)效果。
二、 虛擬實驗系統(tǒng)的設(shè)計
1.TDN-CM+計算機組成原理教學(xué)實驗系統(tǒng)簡介
TDN-CM+計算機組成原理教學(xué)實驗系統(tǒng)采用部件單元式結(jié)構(gòu),包括運算器、存儲器、控制器、總線、外圍接口及輸入輸出設(shè)備、大規(guī)??删幊踢壿嬈骷取>€路板上設(shè)置了大量的開關(guān)、指示燈、插線孔等,學(xué)生可根據(jù)自己設(shè)計的模型計算機結(jié)構(gòu)方案,運用排線連接方式或計算機電子自動邏輯設(shè)計方式來構(gòu)造不同結(jié)構(gòu)及復(fù)雜程度的原理性計算機,并觀察系統(tǒng)運行過程中各種數(shù)據(jù)和控制信號狀態(tài)及其時空關(guān)系。系統(tǒng)微程序指令、控制器結(jié)構(gòu)及運算器結(jié)構(gòu)的格式及定義均可由學(xué)生根據(jù)學(xué)習(xí)需要靈活改變或重新設(shè)計,避免了單純驗證性的實驗?zāi)J剑岣吡藢W(xué)生計算機系統(tǒng)的綜合設(shè)計能力。
2.計算機組成原理虛擬實驗系統(tǒng)的設(shè)計
計算機組成原理虛擬實驗系統(tǒng)是對TDN-CM+系統(tǒng)的仿真,設(shè)計中除了要保持用戶界面的一致性,還要方便用戶操作和確保實驗結(jié)果的高度準(zhǔn)確,即簡潔性和可靠性。計算機組成原理這門課程主要介紹各主要功能部件的基本結(jié)構(gòu)和工作原理。[3] [4] 因此,本系統(tǒng)在設(shè)計中利用面向?qū)ο蟪绦蛟O(shè)計方法,對TDN-CM+系統(tǒng)的運算器、存儲器、微程序控制器和數(shù)據(jù)通路等功能部件進行仿真,并通過課程設(shè)計實現(xiàn)一個較完整的模型機,在實驗中了解、熟悉完整的單臺計算機基本組成原理。
為方便教學(xué)和師生交流,還需實現(xiàn)教學(xué)模塊。學(xué)生從實驗列表中選擇要進行的實驗項目。在做實驗之前,用戶可以查看實驗項目的實驗指導(dǎo),了解實驗的原理、要求和注意事項,然后通過播放實驗項目教學(xué)演示錄像加深理解。每個實驗都準(zhǔn)備了一定數(shù)量的填空題和選擇題,學(xué)生在完成實驗后填寫好答案提交后,系統(tǒng)即可自動給出得分。
虛擬實驗系統(tǒng)總體結(jié)構(gòu)如圖1所示。
三、 虛擬實驗系統(tǒng)的開發(fā)
1.實驗操作界面的開發(fā)
為了保證虛擬實驗系統(tǒng)與TDN-CM+系統(tǒng)的一致性,讓用戶獲得良好的體驗,本虛擬實驗系統(tǒng)采用圖形用戶界面。系統(tǒng)界面采用數(shù)碼相機拍攝,截取出各個按鈕、元件、開關(guān)、LED燈、插頭等圖片,用Photoshop進行優(yōu)化,并對應(yīng)加載VC++的靜態(tài)控件和按鈕控件。
本系統(tǒng)由學(xué)生自主插線,線區(qū)位于主界面右側(cè),線型分為二、四、六、八口線。點擊線區(qū)內(nèi)線型號標(biāo)識生成對應(yīng)型號的線,拖拽線頭移動到相應(yīng)接口,在控制信號的控制下產(chǎn)生流通數(shù)據(jù)。主界面的開關(guān)分為數(shù)據(jù)開關(guān)和控制開關(guān),利用鼠標(biāo)左鍵點擊主界面上的模擬開關(guān),即可產(chǎn)生數(shù)據(jù)或控制信息。為提高虛擬實驗教學(xué)效果,本系統(tǒng)對用戶的錯誤操作做出更正提示。例如,如果在電源打開狀態(tài)下進行插線,系統(tǒng)將會彈出“請先關(guān)閉電源”的對話框,其他漏連、連錯、反向等錯誤操作產(chǎn)生的效果類似。虛擬實驗界面和操作效果與真實系統(tǒng)保持完全一致,主界面如圖2所示。
2.存儲器虛擬實驗的具體實現(xiàn)
下面以存儲器虛擬實驗為例,說明本虛擬實驗系統(tǒng)的虛擬實現(xiàn)原理。存儲器是計算機進行各種信息存儲和交換的中心,存儲器的實驗操作包括寫入數(shù)據(jù)和讀取數(shù)據(jù)。[5] 寫存儲器的操作步驟為數(shù)據(jù)開關(guān)輸入訪存地址,將地址存入地址寄存器;再從數(shù)據(jù)開關(guān)輸入數(shù)據(jù),若ROM存儲器的片選信號和寫信號有效,將數(shù)據(jù)存入由地址寄存器給出的RAM響應(yīng)地址的存儲單元中。讀存儲器的操作步驟為數(shù)據(jù)開關(guān)輸入訪存地址,將地址存入地址寄存器;若RAM存儲器的片選信號和讀信號有效,從響應(yīng)地址中讀出存儲單元中的數(shù)據(jù)。數(shù)據(jù)寫入和數(shù)據(jù)讀取均需要操作相應(yīng)的控制信號來使相應(yīng)部件執(zhí)行所規(guī)定的操作。程序流程圖如圖3所示。
線的產(chǎn)生與操作、信號的產(chǎn)生與傳遞的具體實現(xiàn)如下:
?(1)線的產(chǎn)生
線區(qū)共有八口線、六口線、四口線和二口線四種接線供選擇。通過矩形類CRect設(shè)置響應(yīng)產(chǎn)生新線的區(qū)域,點擊該區(qū)域,調(diào)用成員函數(shù)PtInRect(),如果生成新線變量preplug =FALSE,產(chǎn)生新線;如果線的類型變量linetype=2,產(chǎn)生二口線;如果preplug =TRUE,彈出對話框“當(dāng)前還有線未用”。
(2)線的操作
包括刪除、移動、旋轉(zhuǎn)以及與線柱的連接。通過矩形類CRect設(shè)置響應(yīng)刪除線的區(qū)域,只有線的兩端portA、portB皆處于刪除區(qū)才調(diào)用RemoveAt()函數(shù)刪除。
移動接口變量movingport='A'表示移動的是A端,B端靜止。調(diào)用MoveTo()和LineTo()函數(shù)繪制線。
線柱分為橫向線柱和豎向線柱。按下鼠標(biāo)右鍵時調(diào)用函數(shù)OnRButtonDown()實現(xiàn)接口的旋轉(zhuǎn),鼠標(biāo)右擊一次,線順時針旋轉(zhuǎn)90度一次。旋轉(zhuǎn)接口變量direction等于2和4表示線橫向,等于1和3表示線豎向。
通過矩形類CRect對象設(shè)置響應(yīng)插線區(qū)域,如INPUT DEVICE區(qū)SW_B線柱,用CRect對象PutLine_SwitchSWB_click()設(shè)置插線響應(yīng)區(qū)域,Removeline_SwitchSWB_click()設(shè)置拔線響應(yīng)區(qū)域。調(diào)用OnLButtonUp()函數(shù)和OnLButtonDown()函數(shù)分別完成插線操作和拔線操作。
(3)信號的產(chǎn)生
信號根據(jù)其作用可分為數(shù)據(jù)信號和控制信號兩種。各按鍵的響應(yīng)函數(shù)具體實現(xiàn)如下:
①電源開關(guān)響應(yīng)函數(shù):電源變量power = TRUE,電源打開,才會更新數(shù)據(jù),包括各種數(shù)據(jù)的輸入與輸出,控制信號的傳遞等;power = FALSE,電源關(guān)閉,通過調(diào)用Clearmem()函數(shù)清空存儲器,重置地址寄存器地址變量data=255。
②數(shù)據(jù)開關(guān)控制開關(guān)響應(yīng)函數(shù):用字符型變量data代表線與線之間傳遞的信號。data值從高位到低位依次代表數(shù)據(jù)開關(guān)按鈕D7-D0的輸入值,對應(yīng)位為低電平則加載向上撥的電平開關(guān)。因為控制信號均由二口線傳遞,所以用data高二位表示電平的高低,data=0代表低電平,其他非零情況代表高電平。
③start鍵響應(yīng)函數(shù):按下start鍵時調(diào)用OnLButtonDown()函數(shù),將控制信號賦給變量TS3。
(4)信號的傳遞
指針puton為指向插在線柱上的線,為NULL表示沒有插線。在插線狀態(tài)下,通過按鈕產(chǎn)生信號并傳遞,例如連接好INPUT DEVICE區(qū)和SWITCH UNIT區(qū)的SW_B線柱后,點擊SWITCH UNIT區(qū)SW_B按鈕,產(chǎn)生控制信號data,通過調(diào)用 Exportdata()函數(shù)和Inportdata()函數(shù)分別傳出和接收控制信號data,控制數(shù)據(jù)開關(guān)輸入的數(shù)據(jù)信號傳遞到數(shù)據(jù)總線,并通過總線LED燈顯示。存儲器實驗數(shù)據(jù)信號、控制信號流向如圖4。
四、 結(jié)束語
《計算機組成原理》實驗連線繁多,操作復(fù)雜,虛擬實驗系統(tǒng)可以幫助學(xué)生實驗前熟悉實驗操作,減少由于學(xué)生錯誤操作導(dǎo)致的芯片損耗、儀器破壞,有效降低維護成本。學(xué)生可以隨時隨地做實驗,不再受場地、課時的限制,有助于加深學(xué)生對實驗原理的理解,提高教學(xué)質(zhì)量。通過對計算機組成原理虛擬實驗系統(tǒng)的測試,采用全軟件形式模擬計算機硬件實驗系統(tǒng),具有方便快捷、高效、交互性強等優(yōu)勢,不僅能夠完成計算機組成原理實驗的要求,還提高了教師工作效率,增強了學(xué)生實踐能力,具有在實驗教學(xué)中推廣和應(yīng)用的價值。
參考文獻:
[1]王玉華,黃碩之.計算機組成原理課虛擬實驗方案[J].實驗技術(shù)與管理,2005(4):73-75,80.
[2]郝尚富,張志強,孫佰利.計算機組成原理虛擬實驗環(huán)境的設(shè)計及實現(xiàn)[J].計算機仿真,2009(11):320-323.
[3]陳智勇.計算機組成原理[M].西安:西安電子科技大學(xué)出版社,2009.
[4]白中英,戴志濤.計算機組成原理[M].北京:科學(xué)出版社,2013.
[5]王賢勇,王金亮,許艷麗.基于軟件仿真的存儲器實驗設(shè)計[J].實驗室研究與探索,2006(7):803-805.
(編輯:魯利瑞)