陳智勇,吳星星
(桂林電子科技大學 計算機科學與工程學院,廣西 桂林 541004)
《計算機組成原理》虛擬實驗系統的設計與實現
陳智勇,吳星星
(桂林電子科技大學 計算機科學與工程學院,廣西 桂林 541004)
《計算機組成原理》課程理論性、實踐性強,學生很難在有限的課時中掌握。針對其實驗教學要求,作者結合TDN-CM+教學實驗系統,設計了一個簡單易用的虛擬實驗系統。使用Visual C++6.0軟件作為編程開發工具,運用圖形用戶界面,構造了一個自主的實驗環境,并以存儲器虛擬實驗為例介紹了具體開發過程。通過對虛擬實驗系統的測試,采用全軟件形式模擬計算機硬件實驗系統,不僅能夠完成計算機組成原理實驗的要求,還提高了教師的工作效率,增強了學生的實踐能力,具有在實驗教學中進行推廣和應用的價值。
計算機組成原理;虛擬實驗;Visual C++6.0;圖形用戶界面
《計算機組成原理》是計算機專業的專業基礎課,既具有很強的理論性,生澀難懂,又具有很強的實踐性,需要在搞好課堂教學的同時加強實驗教學。[1]《計算機組成原理》實驗一般分解為運算器、存儲器、微程序控制器等若干個實驗單元,在有限課時的教學進度下逐一安排教學。由于實驗設備電路復雜、排布線密度高、調試困難等眾多因素影響,學生很難在實驗室鞏固和掌握課堂內容。[2]
為此,筆者在實驗教學過程中結合西安唐都公司開發的TDN-CM+計算機組成原理教學實驗系統,采用面向對象的Visual C++6.0軟件,基于Microsoft Foundation Classes(MFC)類庫,分析、設計并實現了一個計算機組成原理虛擬實驗系統。該系統簡單、可靠,能夠移植到大多數Windows環境的PC機,學生能夠在課外自由安排實驗時間,完成對課堂和實驗室內容的補充學習,進而改善教學效果。

TDN-CM+計算機組成原理教學實驗系統采用部件單元式結構,包括運算器、存儲器、控制器、總線、外圍接口及輸入輸出設備、大規模可編程邏輯器件等。線路板上設置了大量的開關、指示燈、插線孔等,學生可根據自己設計的模型計算機結構方案,運用排線連接方式或計算機電子自動邏輯設計方式來構造不同結構及復雜程度的原理性計算機,并觀察系統運行過程中各種數據和控制信號狀態及其時空關系。系統微程序指令、控制器結構及運算器結構的格式及定義均可由學生根據學習需要靈活改變或重新設計,避免了單純驗證性的實驗模式,提高了學生計算機系統的綜合設計能力。

計算機組成原理虛擬實驗系統是對TDN-CM+系統的仿真,設計中除了要保持用戶界面的一致性,還要方便用戶操作和確保實驗結果的高度準確,即簡潔性和可靠性。計算機組成原理這門課程主要介紹各主要功能部件的基本結構和工作原理。[3][4]因此,本系統在設計中利用面向對象程序設計方法,對TDNCM+系統的運算器、存儲器、微程序控制器和數據通路等功能部件進行仿真,并通過課程設計實現一個較完整的模型機,在實驗中了解、熟悉完整的單臺計算機基本組成原理。
為方便教學和師生交流,還需實現教學模塊。學生從實驗列表中選擇要進行的實驗項目。在做實驗之前,用戶可以查看實驗項目的實驗指導,了解實驗的原理、要求和注意事項,然后通過播放實驗項目教學演示錄像加深理解。每個實驗都準備了一定數量的填空題和選擇題,學生在完成實驗后填寫好答案提交后,系統即可自動給出得分。
虛擬實驗系統總體結構如圖1所示。

圖1 計算機組成原理虛擬實驗系統結構圖

為了保證虛擬實驗系統與TDN-CM+系統的一致性,讓用戶獲得良好的體驗,本虛擬實驗系統采用圖形用戶界面。系統界面采用數碼相機拍攝,截取出各個按鈕、元件、開關、LED燈、插頭等圖片,用Photoshop進行優化,并對應加載VC++的靜態控件和按鈕控件。
本系統由學生自主插線,線區位于主界面右側,線型分為二、四、六、八口線。點擊線區內線型號標識生成對應型號的線,拖拽線頭移動到相應接口,在控制信號的控制下產生流通數據。主界面的開關分為數據開關和控制開關,利用鼠標左鍵點擊主界面上的模擬開關,即可產生數據或控制信息。為提高虛擬實驗教學效果,本系統對用戶的錯誤操作做出更正提示。例如,如果在電源打開狀態下進行插線,系統將會彈出“請先關閉電源”的對話框,其他漏連、連錯、反向等錯誤操作產生的效果類似。虛擬實驗界面和操作效果與真實系統保持完全一致,主界面如圖2所示。

圖2 虛擬實驗系統主界面

下面以存儲器虛擬實驗為例,說明本虛擬實驗系統的虛擬實現原理。存儲器是計算機進行各種信息存儲和交換的中心,存儲器的實驗操作包括寫入數據和讀取數據。[5]寫存儲器的操作步驟為數據開關輸入訪存地址,將地址存入地址寄存器;再從數據開關輸入數據,若ROM存儲器的片選信號和寫信號有效,將數據存入由地址寄存器給出的RAM響應地址的存儲單元中。讀存儲器的操作步驟為數據開關輸入訪存地址,將地址存入地址寄存器;若RAM存儲器的片選信號和讀信號有效,從響應地址中讀出存儲單元中的數據。數據寫入和數據讀取均需要操作相應的控制信號來使相應部件執行所規定的操作。程序流程圖如圖3所示。
線的產生與操作、信號的產生與傳遞的具體實現如下:

圖3 存儲器流程
(1)線的產生
線區共有八口線、六口線、四口線和二口線四種接線供選擇。通過矩形類CRect設置響應產生新線的區域,點擊該區域,調用成員函數PtInRect(),如果生成新線變量 preplug= FALSE,產生新線;如果線的類型變量linetype= 2,產生二口線;如果preplug=TRUE,彈出對話框“當前還有線未用”。
(2)線的操作
包括刪除、移動、旋轉以及與線柱的連接。通過矩形類CRect設置響應刪除線的區域,只有線的兩端portA、portB皆處于刪除區才調用RemoveAt()函數刪除。
移動接口變量movingport='A'表示移動的是A端,B端靜止。調用MoveTo()和LineTo()函數繪制線。
線柱分為橫向線柱和豎向線柱。按下鼠標右鍵時調用函數OnRButtonDown()實現接口的旋轉,鼠標右擊一次,線順時針旋轉90度一次。旋轉接口變量direction等于2和4表示線橫向,等于1和3表示線豎向。
通過矩形類CRect對象設置響應插線區域,如INPUT DEVICE區 SW_B線柱,用 CRect對象 Put-Line_SwitchSWB_click()設置插線響應區域,Removeline_SwitchSWB_click()設置拔線響應區域。調用OnLButtonUp()函數和OnLButtonDown()函數分別完成插線操作和拔線操作。
(3)信號的產生
信號根據其作用可分為數據信號和控制信號兩種。各按鍵的響應函數具體實現如下:

圖4 信號流向圖
①電源開關響應函數:電源變量power=TRUE,電源打開,才會更新數據,包括各種數據的輸入與輸出,控制信號的傳遞等;power=FALSE,電源關閉,通過調用Clearmem()函數清空存儲器,重置地址寄存器地址變量data=255。
②數據開關控制開關響應函數:用字符型變量data代表線與線之間傳遞的信號。data值從高位到低位依次代表數據開關按鈕D7-D0的輸入值,對應位為低電平則加載向上撥的電平開關。因為控制信號均由二口線傳遞,所以用data高二位表示電平的高低,data=0代表低電平,其他非零情況代表高電平。
③start鍵響應函數:按下start鍵時調用OnLButton-Down()函數,將控制信號賦給變量TS3。
(4)信號的傳遞
指針puton為指向插在線柱上的線,為NULL表示沒有插線。在插線狀態下,通過按鈕產生信號并傳遞,例如連接好INPUT DEVICE區和SWITCH UNIT區的SW_B線柱后,點擊SWITCH UNIT區SW_B按鈕,產生控制信號data,通過調用Exportdata()函數和Inportdata()函數分別傳出和接收控制信號data,控制數據開關輸入的數據信號傳遞到數據總線,并通過總線LED燈顯示。存儲器實驗數據信號、控制信號流向如圖4。
《計算機組成原理》實驗連線繁多,操作復雜,虛擬實驗系統可以幫助學生實驗前熟悉實驗操作,減少由于學生錯誤操作導致的芯片損耗、儀器破壞,有效降低維護成本。學生可以隨時隨地做實驗,不再受場地、課時的限制,有助于加深學生對實驗原理的理解,提高教學質量。通過對計算機組成原理虛擬實驗系統的測試,采用全軟件形式模擬計算機硬件實驗系統,具有方便快捷、高效、交互性強等優勢,不僅能夠完成計算機組成原理實驗的要求,還提高了教師工作效率,增強了學生實踐能力,具有在實驗教學中推廣和應用的價值。
[1]王玉華,黃碩之.計算機組成原理課虛擬實驗方案[J].實驗技術與管理,2005(4):73-75,80.
[2]郝尚富,張志強,孫佰利.計算機組成原理虛擬實驗環境的設計及實現[J].計算機仿真,2009(11):320-323.
[3]陳智勇.計算機組成原理[M].西安:西安電子科技大學出版社,2009.
[4]白中英,戴志濤.計算機組成原理[M].北京:科學出版社,2013.
[5]王賢勇,王金亮,許艷麗.基于軟件仿真的存儲器實驗設計[J].實驗室研究與探索,2006(7):803-805.
(編輯:魯利瑞)
G434
:A
:1673-8454(2015)04-0080-03