構建單片機虛擬實驗仿真平臺
(作者未知) 2009/4/22
摘 要 介紹了構建單片機虛擬實驗仿真平臺的基本思路和各功能的實現(xiàn)方法,詳細敘述了構建仿真平臺所使用的一些技術手段。
關鍵詞 虛擬實驗平臺;中斷;輸入輸出接口;示波器;仿真實驗
1 引言
虛擬仿真實驗是利用計算機創(chuàng)建出一個可視化的實驗操作環(huán)境,其中的每一個可視化仿真物體代表一種實驗儀器或者設備,通過操作這些虛擬的實驗儀器或設備,即可進行各種復雜的實驗,達到與真實實驗環(huán)境相一致的教學要求和目的。與傳統(tǒng)的硬件實驗平臺相比,虛擬實驗平臺可以不受時空的限制,用戶能隨時隨地進行實驗。通過采用虛擬化技術,利用軟件仿真,可以完全不使用真實的實驗儀器,因此不會存在儀器磨損、破壞等情況,既節(jié)省了資金,又有利于資源共享。對于有危險性的實驗,虛擬實驗平臺更具有優(yōu)勢。
2 單片機虛擬實驗仿真平臺的實現(xiàn)
2.1 系統(tǒng)設計思想及總體設計
我們開發(fā)的“單片機虛擬實驗平臺”將“硬件實驗臺”和“軟件調(diào)試環(huán)境”均統(tǒng)一進行虛擬化設計,亦即不僅“硬件實驗臺”設計為軟件形式,原來的匯編程序等調(diào)試工具也要重新專門進行設計,MASM等工具就不能使用。并且由于采用封閉式設計思路,對應用環(huán)境的適應性及其可靠性、穩(wěn)定性相對較強;也就是說,這種虛擬平臺下的實驗結(jié)果與硬件條件下的結(jié)果更為相似。 圖1 傳統(tǒng)單片機實驗系統(tǒng)組成結(jié)構 該仿真平臺可以由如圖2所示的模塊圖來表示。 從圖2可以看出8031和存儲器構成了虛擬的CPU,直接或間接地控制其它所有模塊,并負責執(zhí)行匯編語句。通信橋模塊實際上是一個虛擬的存儲空間,是接口芯片和外設(LED、開關和顯示器等)間數(shù)據(jù)交換的場所。接口芯片和外設之間不直接發(fā)生關系,它們通過通信橋模塊提供的接口將數(shù)據(jù)放入通信橋緩存或從通信橋緩存中取出數(shù)據(jù)。通常,通信橋分為輸入橋、輸出橋、芯片橋三種情況。開關與芯片連接構成輸入橋,LED或者顯示器與芯片連接構成輸出橋,芯片與芯片連接構成芯片橋。 圖2 總體框架圖 2.2 具體設計 2.2.1 仿真平臺編譯原理 仿真平臺對于匯編語言的編譯模擬了真實的CPU。大家都知道,真實的CPU在編譯過程中要使用寄存器(包括通用寄存器、特殊功能寄存器)。在虛擬的CPU環(huán)境下,我們模擬了一些寄存器,并且定義了一些執(zhí)行函數(shù)以及運行規(guī)則。當然,這些運行規(guī)則是根據(jù)匯編指令制定的。虛擬的編譯過程則是逐一與運行規(guī)則進行比較,從而檢查語法錯誤,同時生成數(shù)據(jù)庫存儲所得到的一些數(shù)據(jù)。我們可以更具體地表述一下虛擬編譯系統(tǒng)的工作過程:CPU在執(zhí)行匯編程序的時候,實際上是運行的執(zhí)行函數(shù)。首先啟動一個新的線程mainthread,然后把源程序取出來逐行逐行地執(zhí)行,這個動作是由Qrun函數(shù)執(zhí)行的。Qrun函數(shù)從源程序的第一行開始執(zhí)行,把取得的這一行數(shù)據(jù)先進行預處理,去掉注釋(以“;”開始的說明)和標號(位于行首并以“;”開始的程序),然后再按照匯編語言的固定格式取得指令名稱和操作數(shù),每一個指令名稱都有一個與之相對應的執(zhí)行函數(shù),這些函數(shù)負責完成對應指令的功能,例如:MOV函數(shù)和MOV指令是對應的,此函數(shù)負責把第二個參數(shù)的值放到第一個參數(shù)里面。程序就像這樣一行一行執(zhí)行下去。 值得我們注意的還有指針的實現(xiàn)以及中斷的實現(xiàn)問題。在虛擬的編譯系統(tǒng)中,指針和真實的指針不同。我們用行號代替了內(nèi)存地址。普通情況下,程序每執(zhí)行一行,指針就加一(不論單指令語句、雙指令語句還是多指令語句均同樣處理),跳到下一行繼續(xù)執(zhí)行。但若遇到跳轉(zhuǎn)指令或類跳轉(zhuǎn)指令的時候就不一樣了。首先要根據(jù)跳轉(zhuǎn)的目的標號到在編譯階段建立的數(shù)據(jù)庫中查找相應的行號,然后將獲得的行號賦值給指針I(yè)P,那么此時程序就跳到對應的行繼續(xù)執(zhí)行。對于中斷的處理,我們借助了虛擬的8259A。具體實現(xiàn)過程將在中斷實現(xiàn)模塊中詳細介紹。
2.2.2 虛擬實驗操作臺
虛擬實驗操作臺是硬件設備的一個縮影。它包含了8031的四個并行I/O端口即P0口、P1口、P2口、P3口;以及中斷控制器8259A的IR0~IR7八條中斷請求輸入線;還有8255的三個8位I/O數(shù)據(jù)口PA口、PB口、PC口;最后還有LED、顯示器、開關三種外部設備(示波器是以單獨的界面形式存在的,其設計方法將單獨介紹)。它可以劃分為三個部分:顯示部分、外設部分(LED、開關)、接線部分(一個接口實現(xiàn),用于將外設和實驗中用到的芯片連接起來即建立通信)。 對于顯示部分,我們模擬了八段顯示器。并且在程序中我們給它分配了一個中斷號10H,功能號0(AH=0)表示對顯示屏的操作(例如,AL=1表示清屏)。功能號1(AH=1)表示將AL中的數(shù)據(jù)寫入顯示器。它的實現(xiàn)可以利用一個RichTextBox來模擬,給顯示部分劃分一個線程,讓該線程一直處于不停的檢測狀態(tài)isMonitorIn(未完,下一頁)
|
|
|