田社平,俞水鋒,方向忠,茅旭初
(上海交通大學電子信息與電氣工程學院,上海 200240)
“微機原理與接口技術(shù)”是電類專業(yè)的一門必修專業(yè)基礎(chǔ)課程[1]。其主要任務(wù)是通過課堂教學和實驗環(huán)節(jié),結(jié)合Intel 80x86系列CPU,使學生掌握計算機組成、CPU內(nèi)部結(jié)構(gòu)、存儲器、常用的I/O接口、指令系統(tǒng)、匯編語言等基本原理,培養(yǎng)學生應(yīng)用計算機硬件和軟件基礎(chǔ)知識的能力,達到能夠利用外圍芯片設(shè)計開發(fā)小規(guī)模的計算機應(yīng)用系統(tǒng)的目的,為將計算機運用到現(xiàn)代通訊、信息處理、自動控制與檢測等領(lǐng)域打下堅實的基礎(chǔ)。
在該課程的教學過程中,學生對8086系統(tǒng)中內(nèi)存與I/O編址、內(nèi)存擴展、IO接口芯片與CPU的連接、可編程接口芯片復雜的工作方式等內(nèi)容普遍感覺比較難以掌握,而在微機原理實驗課程中,采用的微機原理試驗箱由于其內(nèi)部線路已經(jīng)連好,沒有給學生實際設(shè)計微機系統(tǒng)的機會,實驗效果不是很理想。尤其是在教學實踐中,往往先進行理論課教學,然后再開展實驗教學,使課程的理論部分和實驗部分存在脫節(jié)的現(xiàn)象。本文基于筆者的教學實踐,討論仿真軟件Proteus在微機原理與接口技術(shù)課程教學的應(yīng)用。
Proteus是由英國Labcenter公司開發(fā)的一款電路與嵌入式系統(tǒng)設(shè)計與仿真平臺,它由ISIS和ARES 2個軟件包構(gòu)成,ISIS是原理圖編輯與仿真軟件包,ARES 是布線編輯軟件包[2,3]。ISIS 軟件可以仿真、分析各種模擬器件和集成電路,支持許多型號的單片機仿真。特別地,從Proteus 7.5 SP3版本開始,Proteus對8086CPU及相關(guān)接口芯片提供了支持。
Proteus虛擬仿真模塊(VSM)包含了基于傳統(tǒng)8086處理器的開發(fā)、測試和虛擬系統(tǒng)建模的幾乎全部功能。所支持的可編程接口芯片包括:可編程外圍接口芯片8255A、可編程計數(shù)器/定時器8253、可編程串行接口芯片8250A和8251A等。該軟件支持全部8086CPU指令集和寄存器,支持8086CPU所有總線、內(nèi)存和其它I/O引腳操作,還支持8086系統(tǒng)的所有中斷模式。目前Proteus的最新版本僅支持8086最小系統(tǒng)模式,不支持8086最大系統(tǒng)模式。
Proteus能夠完全模擬實際微機系統(tǒng)的設(shè)計和調(diào)試過程,利用該軟件進行8086微機系統(tǒng)仿真采用如下步驟。
(1)硬件系統(tǒng)的設(shè)計與輸入—根據(jù)設(shè)計要求,設(shè)計的8086微機硬件系統(tǒng)利用Proteus的ISIS模塊進行原理圖輸入和編輯。圖1所示為可編程芯片8251A、8253A 與8086接口的仿真電路圖[4]。
圖1 8086微機系統(tǒng)仿真電路
(2)程序的編寫和編譯—選擇任一支持8086匯編語言的編譯器,編寫匯編源程序,然后進行編譯、鏈接生成可執(zhí)行的COM或EXE格式的程序文件。
(3)系統(tǒng)調(diào)試—Proteus支持多種程序調(diào)試方式,Proteus中的8086模型能直接加載BIN、COM和EXE格式的文件到內(nèi)部RAM中去,而不需要DOS,并且允許對Microsoft(Codeview)和Borland格式中包含了調(diào)試信息的程序可以進行源和/或反匯編級別的調(diào)試。一種簡單的程序調(diào)試方法為:進入Proteus軟件的ISIS環(huán)境,將程序文件加載到8086模型中;點擊運行鍵,仿真電路開始運行,通過觀察運行效果判斷硬、軟件設(shè)計的正確性。
Proteus幾乎支持“微機原理與接口技術(shù)”課程的全部教學內(nèi)容(8086最大系統(tǒng)模式目前不支持)。下面以8086串行通信電路(圖1)為例介紹Proteus的應(yīng)用方法。
采用可編程串行通信接口芯片8251A和8086CPU進行電路設(shè)計給出了如下說明。
(1)8086CPU的時鐘頻率取8MHz,8251A的發(fā)送時鐘信號和接收時鐘信號由可編程計數(shù)器/定時器芯片8253A提供。8253A的輸入時鐘由系統(tǒng)時鐘(8MHz)經(jīng)過4分頻后提供,即8253A的輸入時鐘頻率為2MHz,該頻率為8253A所能接受的最高頻率。
(2)I/O端口地址采用3-8譯碼器74LS138實現(xiàn)。為簡化設(shè)計,只有低8位地址參與譯碼,由圖1可知,I/O芯片的地址分配可取為:8253A計數(shù)器0的地址為80H,控制口地址為86H;8251A的數(shù)據(jù)口地址為88H,控制口地址為8AH。
(3)串行通信格式為:9600kps波特率,8位數(shù)據(jù),偶校驗,1個停止位。取波特率因子為16,則8253A計數(shù)器0的初始值為2M/(9600×16)=13。
(4)采用Proteus提供的虛擬終端VT與8251A的串行接收數(shù)據(jù)端RxD和串行發(fā)送數(shù)據(jù)端TxD互聯(lián),便于程序運行結(jié)果的觀察。
采用EMU8086軟件提供的編譯環(huán)境進行程序的編寫和編譯。EMU8086是一款基于Windows的8086匯編語言編譯、調(diào)試和仿真軟件,其界面友好、操作簡單,得到了較為廣泛的應(yīng)用。程序編譯正確后,將生成COM格式的可執(zhí)行文件。
啟動Proteus軟件的ISIS環(huán)境,調(diào)入圖1電路,雙擊8086模型(U1),在彈出的“Edit Component”對話框中,輸入COM格式的可執(zhí)行文件名及其文件路徑,同時輸入時鐘頻率為8MHz。雙擊虛擬終端VT,在彈出的“Edit Component”對話框中,設(shè)置串行通訊格式:9600kps波特率,8位數(shù)據(jù),偶校驗,1個停止位。
點擊運行鍵或按F12鍵,打開虛擬終端的輸出窗口,顯示結(jié)果如圖2所示,串行運行結(jié)果和設(shè)計要求一致。
Proteus除了可以進行虛擬電路仿真外,還提供了物理接口模型(Physical Interface Model),利用物理接口模型可建立虛擬電路與外部通信的橋梁,其中與實際外部串行接口通信的模型為COMPIM,如圖3所示。借助于COMPIM,仿真電路可通過本機的RS232接口與外部通信。
2 程序運行結(jié)果
圖3 串口物理接口模型
由于電路是以仿真模型的方式運行,其運行的實時性受到運行Proteus軟件的計算機性能的限制。如果在仿真過程中,電路運行的實時性得不到保證,Proteus會給出“Simulation is not running in real timedue to excessive CPU load.”的提示信息。對串行通信而言,如果通過COMPIM和外部的實際串行接口電路進行通信,則必須保證時序的實時性要求,否則將得不到預(yù)期的結(jié)果。一種解決辦法是盡量降低仿真電路中8086CPU的工作頻率,同時選用較低的波特率。
在“微機原理與接口技術(shù)”課程教學中,我們利用Proteus軟件,完全可以仿真8086系統(tǒng)中內(nèi)存與I/O編址、內(nèi)存擴展、IO接口芯片與CPU的連接、可編程接口芯片編程等內(nèi)容,但Proteus不包括8237A的仿真模型,因此無法仿真8237A DMA控制器的接口與編程。
我們可以在課堂教學中直接引入Proteus軟件,通過邊講授微機原理與接口技術(shù)的理論知識,邊借助Proteus軟件驗證、演示微機系統(tǒng)的運行結(jié)果,有利于發(fā)揮教師的教學想象力。也可以在學生課外學習中使用Proteus軟件,由于軟件操作的簡單性和低成本性,在學生的課前預(yù)習和課后復習中可非常方便地運用Proteus來加深對微機原理與接口技術(shù)知識點的理解。
[1] 吉向東,李新鄂.基于Proteus的微機原理實驗仿真[J].信息技術(shù).2010,No2:36-39
[2] www.labcenter.com/
[3] 周潤景,張麗娜.基于PROTEUS的電路及單片機設(shè)計與仿真[M].北京:北京航空航天大學出版社.2006
[4] 周荷琴,吳秀清.微型計算機原理與接口技術(shù)[M].合肥:中國科學技術(shù)大學出版社.2008