亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        微機原理軟件模擬實驗的設計與實現(xiàn)

        2012-09-11 10:17:02黃淑玲
        微處理機 2012年6期
        關(guān)鍵詞:模擬實驗模擬器端口

        黃淑玲

        (韓山師范學院物理與電子工程系,潮州 521041)

        1 引言

        軟件模擬實驗具有傳統(tǒng)實驗不可比擬的幾個優(yōu)勢[1]:①實現(xiàn)實驗組數(shù)無限擴展和實驗的“零”維護保障;②實現(xiàn)實驗教學的“一體化”;③突破傳統(tǒng)實驗對“時、空”的限制;④易于開設新型實驗項目;⑤有助于教育資源的共享和實現(xiàn)跨學科教學。微機原理是一門重要的專業(yè)課程。該課程比較抽象,實踐性較強。該課程按大綱要求只開設18學時的實驗,顯然要深入學好這門課程,18學時的實驗是遠遠不夠的。為此,微機原理軟件模擬實驗可以彌補現(xiàn)實情況的不足。

        2 微機原理軟件模擬實驗的設計

        傳統(tǒng)的微機原理實驗設備包括計算機和其相連的專用實驗箱兩部分,“微機原理軟件模擬實驗”則采用以“軟”代“硬”的設計電路,強調(diào)實用性、效益性為主,以最大限度地仿真真實環(huán)境,主要實現(xiàn)了“專用實驗箱”的虛擬化,將它“搬”到了“計算機”的顯示器上。要實現(xiàn)實驗箱的虛擬化首先要完成實驗箱中具有獨立功能的所有部件的虛擬化,主要包括虛擬接口芯片的設計以及每個實驗如何調(diào)用所需用的硬件芯片、如何執(zhí)行程序、如何得出結(jié)果等。

        2.1 虛擬接口芯片的設計

        虛擬接口芯片是用一個類來封裝和構(gòu)造的[2-3]。使得其具有獨立性、擴充性、可重用性和可維護性。根據(jù)芯片的功能、特性抽象出能體現(xiàn)這些功能和特性的屬性、方法、事件。芯片的內(nèi)部屬性與外部通信是通過虛擬芯片的行為來完成的。行為在類中表現(xiàn)為事件與方法。事件是被動行為,由某個內(nèi)部或外部條件的變化來觸發(fā);方法是主動行為,是組件對自身或外部環(huán)境的主動調(diào)用。例如對于并行接口8255芯片,用E8255Chip類來封裝8255虛擬接口芯片。E8255Chip類實現(xiàn)了8255可編程并行I/O接口芯片的邏輯功能,它所包含的主要方法和事件如下:

        void setPortAdress(int num):設置芯片的端口地址

        int getPortAdress():獲取芯片的端口地址

        void setWR(short num):設置寫信號

        short getWR():獲取寫信號

        void setRD(short num):設置讀信號

        short getRD():獲取讀信號

        void setCS(short num):設置片選信號

        short getCS():獲取片選信號

        void setA1A0(short num):設置內(nèi)部地址信號

        short getA1A0():獲取內(nèi)部地址信號

        void setConSignal():設置5個控制信號A1 A0/RD/WR/CS

        short getConSignal():獲取5個控制信號A1 A0/RD/WR/CS

        void setReadConSignal():設置讀端口5個控制信號(A1 A0/RD/WR/CS)

        void setWriteConSignal():設置寫端口5個控制信號(A1 A0/RD/WR/CS)

        void setPortData(short num):設置端口數(shù)據(jù)(D0~D7引腳信號)

        short getPortData():獲取端口數(shù)據(jù)(D0~D7引腳信號)

        short getE8255Areg():獲取A口數(shù)據(jù)(PA0~PA7引腳信號)

        void setE8255Areg(short num):設置A口數(shù)據(jù)(PA0~PA7引腳信號)

        short getE8255Breg():獲取B口數(shù)據(jù)(PB0~PB7引腳信號)

        void setE8255Breg(short num):設置B口數(shù)據(jù)(PB0~PB7引腳信號)

        short getE8255Creg():獲取C口數(shù)據(jù)(PC0~PC7引腳信號)

        void setE8255Creg(short num):設置C口數(shù)據(jù)(PC0~PC7引腳信號)

        short getE8255Conreg():獲取控制口數(shù)據(jù)

        void setE8255Conreg(short num):設置控制口數(shù)據(jù)

        void setE8255work():設置工作方式

        int getE8255AWork():獲取A口工作方式

        int getE8255BWork():獲取B口工作方式

        void PortReadWrite():進行端口讀寫

        void addPropertyChangeListener(PropertyChange-Listener listener):

        注冊屬性改變監(jiān)聽器。

        void removePropertyChangeListener(PropertyChangeListener listener):

        注銷屬性改變監(jiān)聽器。

        E8255Chip類采用JavaBean組件形式封裝,該組件能產(chǎn)生屬性改變事件PropertyChangeEvent。因為E8255Chip對象能產(chǎn)生 PropertyChangeEvent,同時在 setE8255Areg()、setE8255Breg()和setE8255 Creg()三個方法中都利用firePropertyChange()進行點火操作,firePropertyChange()對所注冊的監(jiān)聽器發(fā)出一個PropertyChangeEvent,也就是說只要端口的數(shù)據(jù)改變就通知相應的屬性改變事件監(jiān)聽器PropertyChangeListener,在該監(jiān)聽器中的 property Change()方法作相應的處理。

        2.2 模擬器設計

        每一個實驗對應一個模擬器。模擬器仿真執(zhí)行某一個實驗,它充當CPU的角色,負責調(diào)配實驗所需的軟、硬件。軟件是指解釋程序和用戶輸入的源程序,而硬件是指虛擬實驗平臺。模擬器根據(jù)用戶在虛擬實驗平臺上的連線,調(diào)用解釋程序?qū)R編源程序進行解釋來仿真運行結(jié)果。

        模擬器的設計存在共性和個性的地方,模擬器共性的設計就是一些共享方法和共享類的設計。實現(xiàn)連線操作和源程序的編寫方法都屬于共性的部分,由一個獨立的邏輯類組成的虛擬芯片也屬于模擬器共性的部分。實驗數(shù)據(jù)的輸入和結(jié)果輸出部分屬于個性的東西。模擬器設計采用繼承的方法。共性的東西在基類中實現(xiàn),屬于個性的東西在擴展類中實現(xiàn)。這樣的設計既不會使得方法冗余又能滿足不同實驗的需求。

        3 8255輸出實驗模擬器的實現(xiàn)

        8255可編程并行I/O接口芯片作為輸出口實驗模擬器由基類Simulator.java和擴展類E8255Led Simulator.java 實現(xiàn)[4-5],這個實驗的接線原理圖如圖1所示。8255芯片的A口作為輸出口,在工作方式0。A口的輸出接到八個LED燈(L0~L7),片選信號CS接地址端口218H-21FH。

        圖1 8255芯片輸出實驗接線原理圖

        3.1 基類(Simulator.java)

        基類主要實現(xiàn)跟連線操作、源程序編寫有關(guān)的功能?;惐辉O計成一個抽象類,update()和propertyChange()方法被設計成抽象方法,它們在擴展類中必須被超越。Simulator類繼承Panel類,實現(xiàn)MouseListener,MouseMotionListener,ProtertyChange-Listener和Runnable四個接口:

        abstract public class Simulator extends Panel implements MouseListener,MouseMotionListener,ProtertyChangeListener,Runnable

        Simulator類方法如下:

        private void Init PinArea():存儲引腳坐標信息

        private void Init PinPoint():存儲引腳的屬性

        public void InitImage():初始化本實驗所需圖像

        public void paint(Graphics g):屏幕輸出

        abstract public void update(Graphics g):更新輸出

        public int DelLine(int x,int y):刪除一條連線

        public void ClearLine():刪除所有連線

        public void TwoPinConnection(int from,int to):連接兩個引腳

        public void TwoPinCut(int from,int to):斷開兩個引腳

        public void run():處理Socket連接

        public void mouseClicked(MouseEvent me):處理鼠標點擊事件

        public void mouseMoved(MouseEvent me):處理鼠標移動事件

        abstract public void propertyChange(Property ChangeEvent pcevent):處理屬性改變事件

        3.2 擴展類(E8255LedSimulator.java)

        不同的實驗除了采用不同的虛擬硬件之外,它們的數(shù)據(jù)輸入和結(jié)果輸出也不同,有的實驗需要從鍵盤輸入數(shù)據(jù),有的實驗通過撥實驗平臺上的開關(guān)按鈕向?qū)嶒炋峁┹斎霐?shù)據(jù)。有些實驗的結(jié)果是輸出到屏幕上,而有些實驗是通過二極管燈顯示實驗的結(jié)果。所以對擴展類的設計主要是對這些方法進行編寫。

        擴展類繼承了基類所定義的所有實例變量和方法。而且可以定義它自己特有的元素。那么在E8255LedSimulator類中除了對Simulator類的抽象方法update()和propertyChange()進行超越之外,還增加了檢查硬件連線是否正確的方法Check Line()。而數(shù)據(jù)成員必須增加該實驗所需的虛擬芯片對象。

        E8255LedSimulator類通過超越propertyChanger()方法來完成當8255芯片的端口數(shù)據(jù)改變時所做的事情。因為這個實驗是把A口作為輸出口,所以在propertyChanger()方法中,根據(jù)8255芯片的工作方式把A口的輸出送給它的相連端,實現(xiàn)了A口的數(shù)據(jù)一改變,跟它相連的二極管的數(shù)據(jù)也相應改變,然后在paint()方法中根據(jù)二極管的值點亮或熄滅二極管燈,實現(xiàn)了這個實驗的功能。

        模擬器調(diào)用解釋程序?qū)R編源程序進行解釋執(zhí)行,當執(zhí)行到out指令時會使端口數(shù)據(jù)發(fā)生改變,從前面介紹的8522虛擬芯片可以知道,端口數(shù)據(jù)改變就會執(zhí)行firePropertyChange()方法引發(fā)屬性改變事件,從而執(zhí)行E8255LedSimulator類中的propertyChanger()方法。所以在propertyChanger()方法中主要實現(xiàn)跟8255芯片的A、B、C口相連的端口數(shù)據(jù)的及時改變。也就是說數(shù)據(jù)端口改變跟它相連的端也要跟著改變,在這個實驗中,端口A跟L0~L7燈相連,若向A口送0FFH,則L0~L7燈全亮。

        4 結(jié)束語

        軟件模擬實驗的實現(xiàn)加上計算機和網(wǎng)絡資源的普及為虛擬實驗室的開設提供了必要的基礎(chǔ)條件。虛擬實驗室具有仿真性、實時交互性、共享性、可重用性等特點,能夠大大提高學生的動手和創(chuàng)新能力,節(jié)約大量的人力和物力,對軟件模擬實驗的研究有著深遠的意義。

        [1]Jackson.Johns Hopkins University A VIRTUAL ENGINEERING/SCIENCE LABORATORY[EB/OL].www.jhu.edu/~ virtlab/logic/log_cir.htm.

        [2]應時,康立山,陳毓屏,吳霞.基于Java的代碼組件重用技術(shù) JavaBeans[J].微電子學與計算機,2000,17(3):1-5.

        [3]陸立巧,閔華松,陳奎生.基于組件技術(shù)的虛擬儀器開發(fā)方法[J].武漢科技大學學報(自然科學版),2002,25(2):240-245.

        [4][美]Bruce Eckel.Java編程思想(第二版)[M].候捷,譯.北京:機械工業(yè)出版社,2002.

        [5]Herbert Schildt.James Holmes.the ART of JAVA[M].USA:McGraw - Hill,2003.

        猜你喜歡
        模擬實驗模擬器端口
        了不起的安檢模擬器
        盲盒模擬器
        一種端口故障的解決方案
        科學家(2021年24期)2021-04-25 13:25:34
        劃船模擬器
        斷塊油藏注采耦合物理模擬實驗
        端口阻塞與優(yōu)先級
        輸氣管道砂沖蝕的模擬實驗
        射孔井水力壓裂模擬實驗相似準則推導
        初識電腦端口
        電腦迷(2015年6期)2015-05-30 08:52:42
        生成樹協(xié)議實例探討
        人妻夜夜爽天天爽一区| 99久久精品人妻一区| 美女很黄很色国产av| 精品999日本久久久影院| 亚洲V日韩V精品v无码专区小说 | 亚洲 暴爽 AV人人爽日日碰| 92自拍视频爽啪在线观看| 人人妻人人澡人人爽人人精品浪潮| 国产成人aaaaa级毛片| 综合网在线视频| av网站免费在线不卡| 精品国产av一区二区三区四区 | 两个人看的www免费视频中文| 人妻丰满av∨中文久久不卡| 日本韩国黄色三级三级| 蜜桃av人妻精品一区二区三区| 国产亚洲av无码av男人的天堂| 少妇性俱乐部纵欲狂欢电影| 日本免费人成视频播放| 精品无码人妻久久久一区二区三区 | 人人妻人人澡人人爽人人精品av| 国产三级在线观看播放视频| 久久久久久岛国免费网站| 国产人妖在线视频网站| 日本真人做人试看60分钟| 日韩www视频| 午夜av福利亚洲写真集| 一区二区三区无码高清视频| 中文字幕一区二区人妻| 欧美日韩国产高清| 国产婷婷成人久久av免费| 色www视频永久免费| 亚洲电影一区二区三区| 国产亚洲av一线观看| 色综合久久中文娱乐网| 亚洲男人天堂2019| 国产麻豆一区二区三区在线播放 | 永久亚洲成a人片777777| 欧美做受视频播放| 日本一区二区在线看看| 一区二区三区内射美女毛片 |