《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷
《《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷》由會(huì)員分享,可在線閱讀,更多相關(guān)《《微型計(jì)算機(jī)原理》(王忠民版)PPT電子課件教案第7章輸入輸出與中斷(143頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第7章 輸入/輸出與中斷 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式與外設(shè)之間數(shù)據(jù)傳送的方式 7.3 中斷技術(shù)中斷技術(shù) 7.4 8086/8088 中斷系統(tǒng)中斷系統(tǒng) 7.5 可編程中斷控制器可編程中斷控制器Intel 8259A 第7章 輸入/輸出與中斷 7.1 I/O接口概述接口概述 7.1.1 I/O接口的作用接口的作用 主機(jī)與外界交換信息稱(chēng)為輸入/輸出(I/O)。主機(jī)與外界的信息交換是通過(guò)輸入/輸出設(shè)備進(jìn)行的。一般的輸入/輸出設(shè)備都是機(jī)械的或機(jī)電相結(jié)合的產(chǎn)物,比如常規(guī)的外設(shè)有鍵盤(pán)、顯示器、打印機(jī)、掃描儀、磁盤(pán)機(jī)、鼠標(biāo)器等,它們相對(duì)于高
2、速的中央處理器來(lái)說(shuō),速度要慢得多。此外,不同外設(shè)的信號(hào)形式、數(shù)據(jù)格式也各不相同。因此,外部設(shè)備不能與CPU直接相連,需要通過(guò)相應(yīng)的電路來(lái)完成它們之間的速度匹配、信號(hào)轉(zhuǎn)換,并完成某些控制功能。通常把介于主機(jī)和外設(shè)之間的一種緩沖電路稱(chēng)為I/O接口電路,簡(jiǎn)稱(chēng)I/O接口(Interface),如圖7.1所示。對(duì)于主機(jī),I/O接口提供了外部設(shè)備的工作狀態(tài)及數(shù)據(jù);對(duì)于外部設(shè)備,I/O接口記憶了主機(jī)送給外設(shè)的一切命令和數(shù)據(jù),從而使主機(jī)與外設(shè)之間協(xié)調(diào)一致地工作。 第7章 輸入/輸出與中斷 圖7.1 主機(jī)與外設(shè)的連接CPUI/O接口外設(shè)第7章 輸入/輸出與中斷 對(duì)于微型計(jì)算機(jī)來(lái)說(shuō),設(shè)計(jì)微處理器CPU時(shí),并不設(shè)計(jì)
3、它與外設(shè)之間的接口部分,而是將輸入/輸出設(shè)備的接口電路設(shè)計(jì)成相對(duì)獨(dú)立的部件,通過(guò)它們將各種類(lèi)型的外設(shè)與CPU連接起來(lái),從而構(gòu)成完整的微型計(jì)算機(jī)硬件系統(tǒng)。 因此,一臺(tái)微型計(jì)算機(jī)的輸入/輸出系統(tǒng)應(yīng)該包括I/O接口、I/O設(shè)備及相關(guān)的控制軟件。一個(gè)微機(jī)系統(tǒng)的綜合處理能力,系統(tǒng)的可靠性、兼容性、性價(jià)比,甚至在某個(gè)場(chǎng)合能否使用都和I/O系統(tǒng)有著密切的關(guān)系。輸入/輸出系統(tǒng)是計(jì)算機(jī)系統(tǒng)的重要組成部分之一,任何一臺(tái)高性能計(jì)算機(jī),如果沒(méi)有高質(zhì)量的輸入/輸出系統(tǒng)與之配合工作,計(jì)算機(jī)的高性能便無(wú)法發(fā)揮出來(lái)。 第7章 輸入/輸出與中斷 7.1.2 CPU與外設(shè)交換的信息與外設(shè)交換的信息 主機(jī)與I/O設(shè)備之間交換的信息
4、可分為數(shù)據(jù)信息、狀態(tài)信息和控制信息三類(lèi)。 1數(shù)據(jù)信息 數(shù)據(jù)信息又分為數(shù)字量、模擬量和開(kāi)關(guān)量三種形式。 1) 數(shù)字量 數(shù)字量是計(jì)算機(jī)可以直接發(fā)送、接收和處理的數(shù)據(jù)。例如,由鍵盤(pán)、顯示器、打印機(jī)及磁盤(pán)等I/O外設(shè)與 CPU交換的信息,它們是以二進(jìn)制形式表示的數(shù)或以ASCII碼表示的數(shù)符。 第7章 輸入/輸出與中斷 2) 模擬量 當(dāng)計(jì)算機(jī)應(yīng)用于控制系統(tǒng)中時(shí),輸入的信息一般為來(lái)自現(xiàn)場(chǎng)的連續(xù)變化的物理量,如溫度、壓力、流量、位移、濕度等,這些物理量通過(guò)傳感器并經(jīng)放大處理得到模擬電壓或電流,這些模擬量必須先經(jīng)過(guò)模擬量向數(shù)字量的轉(zhuǎn)換(A/D轉(zhuǎn)換)后才能輸入計(jì)算機(jī)。反過(guò)來(lái),計(jì)算機(jī)輸出的控制信號(hào)都是數(shù)字量,也必
5、須先經(jīng)過(guò)數(shù)字量向模擬量的轉(zhuǎn)換(D/A轉(zhuǎn)換),把數(shù)字量轉(zhuǎn)換成模擬量才能去控制現(xiàn)場(chǎng)。 第7章 輸入/輸出與中斷 3) 開(kāi)關(guān)量 開(kāi)關(guān)量可表示兩個(gè)狀態(tài),如開(kāi)關(guān)的斷開(kāi)和閉合,機(jī)器的運(yùn)轉(zhuǎn)與停止,閥門(mén)的打開(kāi)與關(guān)閉等。這些開(kāi)關(guān)量通常要經(jīng)過(guò)相應(yīng)的電平轉(zhuǎn)換才能與計(jì)算機(jī)連接。開(kāi)關(guān)量只要用一位二進(jìn)制數(shù)即可表示。 第7章 輸入/輸出與中斷 2. 狀態(tài)信息 狀態(tài)信息作為CPU與外設(shè)之間交換數(shù)據(jù)時(shí)的聯(lián)絡(luò)信息,反映了當(dāng)前外設(shè)所處的工作狀態(tài),是外設(shè)通過(guò)接口送往CPU的。CPU通過(guò)對(duì)外設(shè)狀態(tài)信號(hào)的讀取,可得知輸入設(shè)備的數(shù)據(jù)是否準(zhǔn)備好、輸出設(shè)備是否空閑等情況。對(duì)于輸入設(shè)備,一般用準(zhǔn)備好(READY)信號(hào)的高低來(lái)表明待輸入的數(shù)據(jù)是否
6、準(zhǔn)備就緒;對(duì)于輸出設(shè)備,則用忙(BUSY)信號(hào)的高低表示輸出設(shè)備是否處于空閑狀態(tài),如為空閑狀態(tài),則可接收CPU輸出的信息,否則CPU要暫停送數(shù)。因此,狀態(tài)信息能夠保障CPU與外設(shè)正確地進(jìn)行數(shù)據(jù)交換。 第7章 輸入/輸出與中斷 3控制信息 控制信息是CPU通過(guò)接口傳送給外設(shè)的,CPU通過(guò)發(fā)送控制信息設(shè)置外設(shè)(包括接口)的工作模式、控制外設(shè)的工作。如外設(shè)的啟動(dòng)信號(hào)和停止信號(hào)就是常見(jiàn)的控制信息。實(shí)際上,控制信息往往隨著外設(shè)的具體工作原理不同而含義不同。 雖然數(shù)據(jù)信息、狀態(tài)信息和控制信息含義各不相同,但在微型計(jì)算機(jī)系統(tǒng)中,CPU通過(guò)接口和外設(shè)交換信息時(shí),只能用輸入指令(IN)和輸出指令 (OUT)傳送
7、數(shù)據(jù),所以狀態(tài)信息、控制信息也是被作為數(shù)據(jù)信息來(lái)傳送的,即把狀態(tài)信息作為一種輸入數(shù)據(jù),而把控制信息作為一種輸出數(shù)據(jù),這樣,狀態(tài)信息和控制信息也通過(guò)數(shù)據(jù)總線來(lái)傳送。但在接口中,這三種信息是在不同的寄存器中分別存放的。 第7章 輸入/輸出與中斷 7.1.3 I/O接口的基本結(jié)構(gòu)接口的基本結(jié)構(gòu) I/O接口的基本結(jié)構(gòu)如圖7.2所示。每個(gè)接口電路中都包含一組寄存器,CPU與外設(shè)進(jìn)行信息交換時(shí),各類(lèi)信息在接口中存入不同的寄存器,一般稱(chēng)這些寄存器為I/O端口,簡(jiǎn)稱(chēng)為口(Port)。用來(lái)保存CPU和外設(shè)之間傳送的數(shù)據(jù)(如數(shù)字、字符及某種特定的編碼等)、對(duì)輸入/輸出數(shù)據(jù)起緩沖作用的數(shù)據(jù)寄存器稱(chēng)為數(shù)據(jù)端口;用來(lái)存
8、放外設(shè)或者接口部件本身狀態(tài)的狀態(tài)寄存器稱(chēng)為狀態(tài)端口;用來(lái)存放CPU發(fā)往外設(shè)的控制命令的控制寄存器稱(chēng)為控制端口。 第7章 輸入/輸出與中斷 CBABDBCPU數(shù)據(jù)端口狀態(tài)端口I/O設(shè)備譯碼控制端口圖7.2 一個(gè)典型的I/O接口 第7章 輸入/輸出與中斷 正如每個(gè)存儲(chǔ)單元都有一個(gè)物理地址一樣,每個(gè)端口也有一個(gè)地址與之相對(duì)應(yīng),該地址稱(chēng)為端口地址。有了端口地址,CPU對(duì)外設(shè)的輸入/輸出操作實(shí)際上就是對(duì)I/O接口中各端口的讀/寫(xiě)操作。數(shù)據(jù)端口一般是雙向的,數(shù)據(jù)是輸入還是輸出,取決于對(duì)該端口地址進(jìn)行操作時(shí)CPU發(fā)往接口電路的讀/寫(xiě)控制信號(hào)。由于狀態(tài)端口只做輸入操作,控制端口只做輸出操作,因此,有時(shí)為了節(jié)省
9、系統(tǒng)地址空間,在設(shè)計(jì)接口時(shí)往往將這兩個(gè)端口共用一個(gè)端口地址,再用讀/寫(xiě)信號(hào)來(lái)分別選擇訪問(wèn)。 應(yīng)該指出,輸入/輸出操作所用到的地址總是對(duì)端口而言,而不是對(duì)接口而言的。接口和端口是兩個(gè)不同的概念,若干個(gè)端口加上相應(yīng)的控制電路才構(gòu)成接口。 第7章 輸入/輸出與中斷 7.1.4 I/O端口的編址端口的編址 微型計(jì)算機(jī)系統(tǒng)中I/O端口編址方式有兩種:I/O端口與內(nèi)存單元統(tǒng)一編址和 I/O端口與內(nèi)存單元獨(dú)立編址。 1I/O端口與內(nèi)存單元統(tǒng)一編址 這種編址方式是對(duì)I/O端口和存儲(chǔ)單元按照存儲(chǔ)單元的編址方法統(tǒng)一編排地址號(hào),由I/O端口地址和存儲(chǔ)單元地址共同構(gòu)成一個(gè)統(tǒng)一的地址空間。例如,對(duì)于一個(gè)有16根地址線的
10、微機(jī)系統(tǒng),若采用統(tǒng)一編址方式,其地址空間的結(jié)構(gòu)如圖7.3所示。 第7章 輸入/輸出與中斷 圖7.3 I/O端口與內(nèi)存單元統(tǒng)一編址存儲(chǔ)器I/O端口0000HXXXXHFFFFH整個(gè)地址空間(XXXX+1)HI/O端口第7章 輸入/輸出與中斷 采用統(tǒng)一編址方式后,CPU對(duì)I/O端口的輸入/輸出操作如同對(duì)存儲(chǔ)單元的讀/寫(xiě)操作一樣,所有訪問(wèn)內(nèi)存的指令同樣都可用于訪問(wèn)I/O端口,因此無(wú)需專(zhuān)門(mén)的I/O指令,從而簡(jiǎn)化了指令系統(tǒng)的設(shè)計(jì);同時(shí),對(duì)存儲(chǔ)器的各種尋址方式也同樣適用于對(duì)I/O端口的訪問(wèn),給使用者提供了很大的方便。但由于I/O端口占用了一部分存儲(chǔ)器地址空間,因而相對(duì)減少了內(nèi)存的地址可用范圍。 第7章 輸
11、入/輸出與中斷 2I/O端口與內(nèi)存單元獨(dú)立編址 在這種編址方式中,建立了兩個(gè)地址空間,一個(gè)為內(nèi)存地址空間,一個(gè)為I/O地址空間。內(nèi)存地址空間和I/O地址空間是相對(duì)獨(dú)立的,通過(guò)控制總線來(lái)確定CPU到底要訪問(wèn)內(nèi)存還是I/O端口。為確??刂瓶偩€發(fā)出正確的信號(hào),除了要有訪問(wèn)內(nèi)存的指令之外,系統(tǒng)還要提供用于CPU與I/O端口之間進(jìn)行數(shù)據(jù)傳輸?shù)妮斎?輸出指令。 第7章 輸入/輸出與中斷 80 x86 CPU組成的微機(jī)系統(tǒng)都采用獨(dú)立編址方式。在8086/8088系統(tǒng)中,共有20根地址線對(duì)內(nèi)存尋址,內(nèi)存的地址范圍是00000HFFFFFH;用地址總線的低16位對(duì)I/O端口尋址,所以I/O端口的地址范圍是000
12、0HFFFFH,如圖7.4所示。CPU在訪問(wèn)內(nèi)存和外設(shè)時(shí),使用了不同的控制信號(hào)來(lái)加以區(qū)分。例如,當(dāng)8086 CPU的M/IO信號(hào)為1時(shí),表示地址總線上的地址是一個(gè)內(nèi)存地址;為0時(shí),則表示地址總線上的地址是一個(gè)端口地址。 第7章 輸入/輸出與中斷 00000HFFFFFH存儲(chǔ)器I/OFFFFH0000H圖7.4 I/O端口與內(nèi)存單元獨(dú)立編址 第7章 輸入/輸出與中斷 采用獨(dú)立編址方式后,存儲(chǔ)器地址空間不受I/O端口地址空間的影響,專(zhuān)用的輸入/輸出指令與訪問(wèn)存儲(chǔ)器指令有明顯區(qū)別,便于理解和檢查。但是,專(zhuān)用I/O指令增加了指令系統(tǒng)復(fù)雜性,且I/O指令類(lèi)型少,程序設(shè)計(jì)靈活性較差;此外,還要求CPU提供
13、專(zhuān)門(mén)的控制信號(hào)以區(qū)分對(duì)存儲(chǔ)器和I/O端口的操作,增加了控制邏輯的復(fù)雜性。 第7章 輸入/輸出與中斷 3I/O端口的地址譯碼 微機(jī)系統(tǒng)常用的I/O接口電路一般都被設(shè)計(jì)成通用的I/O接口芯片,一個(gè)接口芯片內(nèi)部可以有若干可尋址的端口。因此,所有接口芯片都有片選信號(hào)線和用于片內(nèi)端口尋址的地址線。例如,某接口芯片內(nèi)有四個(gè)端口地址,則該芯片外就會(huì)有兩根地址線。本書(shū)第8章中將詳細(xì)介紹幾種常用的I/O接口芯片。 第7章 輸入/輸出與中斷 I/O端口地址譯碼的方法有多種,一般的原則是把CPU用于I/O端口尋址的地址線分為高位地址線和低位地址線兩部分,將低位地址線直接連到I/O接口芯片的相應(yīng)地址引腳,實(shí)現(xiàn)片內(nèi)尋址
14、,即選中片內(nèi)的端口;將高位地址線與CPU的控制信號(hào)組合,經(jīng)地址譯碼電路產(chǎn)生I/O接口芯片的片選信號(hào)。 第7章 輸入/輸出與中斷 7.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式與外設(shè)之間數(shù)據(jù)傳送的方式 7.2.1 程序傳送方式程序傳送方式 1無(wú)條件傳送方式無(wú)條件傳送方式 微機(jī)系統(tǒng)中的一些簡(jiǎn)單的外設(shè),如開(kāi)關(guān)、繼電器、數(shù)碼管、發(fā)光二極管等,在它們工作時(shí),可以認(rèn)為輸入設(shè)備已隨時(shí)準(zhǔn)備好向CPU提供數(shù)據(jù),而輸出設(shè)備也隨時(shí)準(zhǔn)備好接收CPU送來(lái)的數(shù)據(jù),這樣,在CPU需要同外設(shè)交換信息時(shí),就能夠用IN或OUT指令直接對(duì)這些外設(shè)進(jìn)行輸入/輸出操作。由于在這種方式下CPU對(duì)外設(shè)進(jìn)行輸入/輸出操作時(shí)無(wú)需考慮外設(shè)的狀態(tài),故稱(chēng)之
15、為無(wú)條件傳送方式。 第7章 輸入/輸出與中斷 對(duì)于簡(jiǎn)單外設(shè),若采用無(wú)條件傳送方式,其接口電路也很簡(jiǎn)單。如簡(jiǎn)單外設(shè)作為輸入設(shè)備時(shí),輸入數(shù)據(jù)保持時(shí)間相對(duì)于CPU的處理時(shí)間要長(zhǎng)得多,所以可直接使用三態(tài)緩沖器和數(shù)據(jù)總線相連,如圖7.5(a)所示。當(dāng)執(zhí)行輸入的指令時(shí),讀信號(hào)有效,選擇信號(hào)M/處于低電平,因而三態(tài)緩沖器被選通,使其中早已準(zhǔn)備好的輸入數(shù)據(jù)送到數(shù)據(jù)總線上,再到達(dá)CPU。所以要求CPU在執(zhí)行輸入指令時(shí),外設(shè)的數(shù)據(jù)是準(zhǔn)備好的,即數(shù)據(jù)已經(jīng)存入三態(tài)緩沖器中。 第7章 輸入/輸出與中斷 (b)至外設(shè)數(shù)據(jù)總線(DB)地址總線(AB)鎖存器來(lái)自CPU的數(shù)據(jù)地址譯碼器WRIOM/(a)來(lái)自外設(shè)的數(shù)據(jù)數(shù)據(jù)總線(
16、DB)地址譯碼器地址總線(AB)1三態(tài)緩沖器至CPURDIOM/1圖7.5 無(wú)條件傳送方式(a) 無(wú)條件傳送數(shù)據(jù)輸入;(b) 無(wú)條件傳送數(shù)據(jù)輸出 第7章 輸入/輸出與中斷 簡(jiǎn)單外設(shè)為輸出設(shè)備時(shí),由于外設(shè)取數(shù)的速度比較慢,要求CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時(shí)間,因而一般都需要鎖存器,如圖7.5(b)所示。CPU執(zhí)行輸出指令時(shí),M/IO和WR信號(hào)有效,于是,接口中的輸出鎖存器被選中,CPU輸出的信息經(jīng)過(guò)數(shù)據(jù)總線送入輸出鎖存器中,輸出鎖存器保持這個(gè)數(shù)據(jù),直到外設(shè)取走。 無(wú)條件傳送方式下,程序設(shè)計(jì)和接口電路都很簡(jiǎn)單,但是為了保證每一次數(shù)據(jù)傳送時(shí)外設(shè)都能處于就緒狀態(tài),傳送不能太頻繁。對(duì)少量的
17、數(shù)據(jù)傳送來(lái)說(shuō),無(wú)條件傳送方式是最經(jīng)濟(jì)實(shí)用的一種傳送方法。 第7章 輸入/輸出與中斷 2查詢傳送方式查詢傳送方式 查詢傳送也稱(chēng)為條件傳送,是指在執(zhí)行輸入指令(IN)或輸出指令(OUT)前,要先查詢相應(yīng)設(shè)備的狀態(tài),當(dāng)輸入設(shè)備處于準(zhǔn)備好狀態(tài),輸出設(shè)備處于空閑狀態(tài)時(shí),CPU才執(zhí)行輸入/輸出指令與外設(shè)交換信息。為此,接口電路中既要有數(shù)據(jù)端口,還要有狀態(tài)端口。 查詢傳送方式的流程圖見(jiàn)圖7.6。從圖中可以看出,采用查詢方式完成一次數(shù)據(jù)傳送要經(jīng)歷如下過(guò)程: (1) CPU從接口中讀取狀態(tài)字。 (2) CPU檢測(cè)相應(yīng)的狀態(tài)位是否滿足“就緒”條件。 (3) 如果不滿足,則重復(fù)(1)、(2)步;若外設(shè)已處于“就緒”
18、狀態(tài),則傳送數(shù)據(jù)。 第7章 輸入/輸出與中斷 圖7.6 查詢傳送方式的流程圖NYY取外設(shè)狀態(tài)外設(shè)準(zhǔn)備就緒?N開(kāi)始傳送數(shù)據(jù)傳送完否?結(jié)束第7章 輸入/輸出與中斷 圖7.7給出的是采用查詢傳送方式進(jìn)行輸入操作的接口電路。輸入設(shè)備在數(shù)據(jù)準(zhǔn)備好之后向接口發(fā)選通信號(hào),此信號(hào)有兩個(gè)作用:一方面將外設(shè)中的數(shù)據(jù)送到接口的鎖存器中;另一方面使接口中的一個(gè)D觸發(fā)器輸出“1”,從而使三態(tài)緩沖器的READY位置“1”。CPU輸入數(shù)據(jù)前先用輸入指令讀取狀態(tài)字,測(cè)試READY位,若READY位為“1”,說(shuō)明數(shù)據(jù)已準(zhǔn)備就緒,再執(zhí)行輸入指令讀入數(shù)據(jù)。由于在讀入數(shù)據(jù)時(shí)信號(hào)已將狀態(tài)位READY清0,于是可以開(kāi)始下一個(gè)數(shù)據(jù)輸入過(guò)程
19、。 第7章 輸入/輸出與中斷 選通狀態(tài)信息READY數(shù)據(jù)總線DB至CPU地址譯碼器&5 V鎖存器數(shù)據(jù)緩沖器三態(tài)緩沖器Q D輸入設(shè)備數(shù)據(jù)狀態(tài)端口譯碼輸出數(shù)據(jù)端口譯碼輸出RRD&IO/MRD地址總線AB圖7.7 查詢式輸入的接口電路 第7章 輸入/輸出與中斷 圖7.8給出的是采用查詢傳送方式進(jìn)行輸出操作的接口電路。CPU輸出數(shù)據(jù)時(shí),先用輸入指令讀取接口中的狀態(tài)字,測(cè)試BUSY位,若BUSY位為0,表明外設(shè)空閑,此時(shí)CPU才執(zhí)行輸出指令,否則CPU必須等待。執(zhí)行輸出指令時(shí)由端口選擇信號(hào)、M/IO信號(hào)和寫(xiě)信號(hào)共同產(chǎn)生的選通信號(hào)將數(shù)據(jù)總線上的數(shù)據(jù)打入接口中的數(shù)據(jù)鎖存器,同時(shí)將D觸發(fā)器置1。D觸發(fā)器的輸出
20、信號(hào)一方面為外設(shè)提供一個(gè)聯(lián)絡(luò)信號(hào),通知外設(shè)將鎖存器鎖存的數(shù)據(jù)取走;另一方面使?fàn)顟B(tài)寄存器的BUSY位置1,告訴CPU當(dāng)前外設(shè)處于忙狀態(tài),從而阻止CPU輸出新的數(shù)據(jù)。輸出設(shè)備從接口中取走數(shù)據(jù)后,會(huì)送一個(gè)回答信號(hào)ACK,該信號(hào)使接口中的D觸發(fā)器置0,從而使?fàn)顟B(tài)寄存器中的BUSY位清0,以便開(kāi)始下一個(gè)數(shù)據(jù)輸出過(guò)程。 第7章 輸入/輸出與中斷 去CPUDB輸出設(shè)備&數(shù)據(jù)地址譯碼器數(shù)據(jù)端口譯碼輸出地址總線DB狀態(tài)端口譯碼輸出狀態(tài)寄存器BUSY5 V鎖存器QD數(shù)據(jù)總線DB來(lái)自CPU選通信號(hào)ACKWRIO/MR&RDIO/M圖7.8 查詢式輸出的接口電路 第7章 輸入/輸出與中斷 查詢傳送方式的主要優(yōu)點(diǎn)是能保
21、證主機(jī)與外設(shè)之間協(xié)調(diào)同步地工作,且硬件線路比較簡(jiǎn)單,程序也容易實(shí)現(xiàn)。但是,在這種方式下,CPU花費(fèi)了很多時(shí)間查詢外設(shè)是否準(zhǔn)備就緒,在這些時(shí)間里CPU不能進(jìn)行其他的操作;此外,在實(shí)時(shí)控制系統(tǒng)中,若采用查詢傳送方式,由于一個(gè)外設(shè)的輸入/輸出操作未處理完畢就不能處理下一個(gè)外設(shè)的輸入/輸出,故不能達(dá)到實(shí)時(shí)處理的要求。因此,查詢傳送方式有兩個(gè)突出的缺點(diǎn):浪費(fèi)CPU時(shí)間,實(shí)時(shí)性差。所以,查詢傳送方式適用于數(shù)據(jù)輸入/輸出不太頻繁且外設(shè)較少、對(duì)實(shí)時(shí)性要求不高的情況。 不論是無(wú)條件傳送方式還是查詢傳送方式,都不能發(fā)現(xiàn)和處理預(yù)先無(wú)法估計(jì)的錯(cuò)誤和異常情況。為了提高CPU的效率、增強(qiáng)系統(tǒng)的實(shí)時(shí)性,并且能對(duì)隨機(jī)出現(xiàn)的各
22、種異常情況做出及時(shí)反應(yīng),通常采用中斷傳送方式。 第7章 輸入/輸出與中斷 7.2.2 中斷傳送方式中斷傳送方式 中斷傳送方式是指當(dāng)外設(shè)需要與CPU進(jìn)行信息交換時(shí),由外設(shè)向CPU發(fā)出請(qǐng)求信號(hào),使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行數(shù)據(jù)的輸入/輸出操作,數(shù)據(jù)傳送結(jié)束后,CPU再繼續(xù)執(zhí)行被暫停的程序。 查詢傳送方式是由CPU來(lái)查詢外設(shè)的狀態(tài),CPU處于主動(dòng)地位,而外設(shè)處于被動(dòng)地位。中斷傳送方式則是由外設(shè)主動(dòng)向CPU發(fā)出請(qǐng)求,等候CPU處理,在沒(méi)有發(fā)出請(qǐng)求時(shí),CPU和外設(shè)都可以獨(dú)立進(jìn)行各自的工作。目前的微處理器都具有中斷功能,而且已經(jīng)不僅僅局限于數(shù)據(jù)的輸入/輸出,而是在更多的方面有重要的應(yīng)用。例如實(shí)時(shí)控
23、制、故障處理以及BIOS和DOS功能調(diào)用等。第7章 輸入/輸出與中斷 中斷傳送方式的優(yōu)點(diǎn)是:CPU不必查詢等待,工作效率高,CPU與外設(shè)可以并行工作;由于外設(shè)具有申請(qǐng)中斷的主動(dòng)權(quán),故系統(tǒng)實(shí)時(shí)性比查詢方式要好得多。但采用中斷傳送方式的接口電路相對(duì)復(fù)雜,而且每進(jìn)行一次數(shù)據(jù)傳送就要中斷一次CPU,CPU每次響應(yīng)中斷后,都要轉(zhuǎn)去執(zhí)行中斷處理程序,且都要進(jìn)行斷點(diǎn)和現(xiàn)場(chǎng)的保護(hù)和恢復(fù),浪費(fèi)了很多CPU的時(shí)間。故這種傳送方式一般適合于少量的數(shù)據(jù)傳送。對(duì)于大批量數(shù)據(jù)的輸入/輸出,可采用高速的直接存儲(chǔ)器存取方式,即DMA方式。 第7章 輸入/輸出與中斷 7.2.3 直接存儲(chǔ)器存取直接存儲(chǔ)器存取(DMA)傳送方式傳
24、送方式 1DMA傳送方式簡(jiǎn)介傳送方式簡(jiǎn)介 DMA傳送方式是在存儲(chǔ)器和外設(shè)之間、存儲(chǔ)器和存儲(chǔ)器之間直接進(jìn)行數(shù)據(jù)傳送(如磁盤(pán)與內(nèi)存間交換數(shù)據(jù)、高速數(shù)據(jù)采集、內(nèi)存和內(nèi)存間的高速數(shù)據(jù)塊傳送等),傳送過(guò)程無(wú)需CPU介入,這樣,在傳送時(shí)就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)等一系列額外操作,傳輸速度基本取決于存儲(chǔ)器和外設(shè)的速度。DMA傳送方式需要一個(gè)專(zhuān)用接口芯片DMA控制器(DMAC)對(duì)傳送過(guò)程加以控制和管理。在進(jìn)行DMA傳送期間,CPU放棄總線控制權(quán),將系統(tǒng)總線交由DMAC控制,由DMAC發(fā)出地址及讀/寫(xiě)信號(hào)來(lái)實(shí)現(xiàn)高速數(shù)據(jù)傳輸。傳送結(jié)束后DMAC再將總線控制權(quán)交還給CPU。一般微處理器都設(shè)有用于DMA傳送的聯(lián)絡(luò)線。 第7章
25、 輸入/輸出與中斷 控制/狀態(tài)DMA響應(yīng)數(shù)據(jù)READYDMA請(qǐng)求HLDAHOLDDMA控制器數(shù)據(jù)端口控制/狀態(tài)端口地址寄存器CPUDMA請(qǐng)求觸發(fā)器數(shù)據(jù)緩沖輸入設(shè)備數(shù)據(jù)計(jì)數(shù)器存儲(chǔ)器圖7.9 DMA系統(tǒng)結(jié)構(gòu)框圖 第7章 輸入/輸出與中斷 2DMA控制器的工作方式 1) 單字節(jié)傳輸方式 在該方式下,DMAC每次控制總線后只傳輸一個(gè)字節(jié),傳輸完后即釋放總線控制權(quán)。這樣CPU至少可以得到一個(gè)總線周期,并進(jìn)行有關(guān)操作。 2) 成組傳輸方式(塊傳輸方式) 第7章 輸入/輸出與中斷 3) 請(qǐng)求傳輸方式 在該方式下,每傳輸完一個(gè)字節(jié),DMAC都要檢測(cè)I/O接口發(fā)來(lái)的DMA請(qǐng)求信號(hào)是否有效。若有效,則繼續(xù)進(jìn)行DM
26、A傳輸;否則就暫停傳輸,將總線控制權(quán)交還給CPU,直至DMA請(qǐng)求信號(hào)再次變?yōu)橛行В購(gòu)膭偛艜和5哪且稽c(diǎn)繼續(xù)傳輸。 第7章 輸入/輸出與中斷 3DMA操作的基本過(guò)程 1) DMAC的初始化 DMAC的初始化主要做如下幾方面工作: (1) 指定數(shù)據(jù)的傳送方向。即指定外設(shè)對(duì)存儲(chǔ)器是做讀操作還是寫(xiě)操作,這就要對(duì)控制/狀態(tài)寄存器中的相應(yīng)控制位置數(shù)。 (2) 指定地址寄存器的初值。即給出存儲(chǔ)器中用于DMA傳送的數(shù)據(jù)區(qū)的首地址。 (3) 指定計(jì)數(shù)器的初值。即明確有多少數(shù)據(jù)需要傳送。 第7章 輸入/輸出與中斷 2) DMA數(shù)據(jù)傳送 DMA數(shù)據(jù)傳送(以數(shù)據(jù)輸入為例)按以下步驟進(jìn)行: (1) 外圍設(shè)備發(fā)選通脈沖,
27、把輸入數(shù)據(jù)送入緩沖寄存器,并使DMA請(qǐng)求觸發(fā)器置1。 (2) DMA請(qǐng)求觸發(fā)器向控制/狀態(tài)端口發(fā)準(zhǔn)備就緒信號(hào),同時(shí)向DMA控制器發(fā)DMA請(qǐng)求信號(hào)。 (3) DMA控制器向CPU發(fā)出總線請(qǐng)求信號(hào)(HOLD)。 第7章 輸入/輸出與中斷 (4) CPU在完成了現(xiàn)行機(jī)器周期后,即響應(yīng)DMA請(qǐng)求,發(fā)出總線允許信號(hào)(HLDA),并由DMA控制器發(fā)出DMA響應(yīng)信號(hào),使DMA請(qǐng)求觸發(fā)器復(fù)位。此時(shí),由DMA控制器接管系統(tǒng)總線。 (5) DMA控制器發(fā)出存儲(chǔ)器地址,并在數(shù)據(jù)總線上給出數(shù)據(jù),隨后在讀/寫(xiě)控制信號(hào)線上發(fā)出寫(xiě)的命令。 (6) 來(lái)自外設(shè)的數(shù)據(jù)被寫(xiě)入相應(yīng)存儲(chǔ)單元。 (7) 每傳送一個(gè)字節(jié),DMA控制器的地
28、址寄存器加1,從而得到下一個(gè)地址,字節(jié)計(jì)數(shù)器減1。返回(5),傳送下一個(gè)數(shù)據(jù)。如此循環(huán),直到計(jì)數(shù)器的值為0,數(shù)據(jù)傳送完畢。 第7章 輸入/輸出與中斷 3) DMA結(jié)束 DMA傳送完畢,由DMAC撤消總線請(qǐng)求信號(hào),從而結(jié)束DMA操作。CPU撤消總線允許信號(hào),恢復(fù)對(duì)總線的控制。 前面介紹的三種傳送方式各有利弊,在實(shí)際使用時(shí),要根據(jù)具體情況選擇既能滿足要求,又盡可能簡(jiǎn)單的方式。 第7章 輸入/輸出與中斷 7.3 中中 斷斷 技技 術(shù)術(shù) 7.3.1 中斷的基本概念中斷的基本概念 1中斷的定義 在CPU執(zhí)行程序的過(guò)程中,出現(xiàn)了某種緊急或異常的事件(中斷請(qǐng)求),CPU需暫停正在執(zhí)行的程序,轉(zhuǎn)去處理該事件(
29、執(zhí)行中斷服務(wù)程序),并在處理完畢后返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行被暫停的程序,這一過(guò)程稱(chēng)為中斷。斷點(diǎn)處是指返回主程序時(shí)執(zhí)行的第一條指令的地址。中斷過(guò)程如圖7.10所示。為實(shí)現(xiàn)中斷功能而設(shè)置的硬件電路和與之相應(yīng)的軟件,稱(chēng)為中斷系統(tǒng)。 第7章 輸入/輸出與中斷 圖7.10 中斷過(guò)程示意圖繼續(xù)執(zhí)行斷點(diǎn)主程序中斷服務(wù)程序有中斷請(qǐng)求中斷處理返回?cái)帱c(diǎn)第7章 輸入/輸出與中斷 2中中斷源斷源 任何能夠引發(fā)中斷的事件都稱(chēng)為中斷源,可分為硬件中斷源和軟件中斷源兩類(lèi)。硬件中斷源主要包括外設(shè)(如鍵盤(pán)、打印機(jī)等)、數(shù)據(jù)通道(如磁盤(pán)機(jī)、磁帶機(jī)等)、時(shí)鐘電路(如定時(shí)計(jì)數(shù)器8253)和故障源(如電源掉電)等;軟件中斷源主要包括為調(diào)試程
30、序設(shè)置的中斷(如斷點(diǎn)、單步執(zhí)行等)、中斷指令(如INT 21H等)以及指令執(zhí)行過(guò)程出錯(cuò)(如除法運(yùn)算時(shí)除數(shù)為零)等。 第7章 輸入/輸出與中斷 3中斷處理過(guò)程中斷處理過(guò)程 對(duì)于一個(gè)中斷源的中斷處理過(guò)程應(yīng)包括以下幾個(gè)步驟,即中斷請(qǐng)求、中斷響應(yīng)、保護(hù)斷點(diǎn)、中斷處理和中斷返回。 1) 中斷請(qǐng)求 中斷請(qǐng)求是中斷源向CPU發(fā)出的請(qǐng)求中斷的要求。軟件中斷源是在CPU內(nèi)部由中斷指令或程序出錯(cuò)直接引發(fā)中斷;而硬件中斷源必須通過(guò)專(zhuān)門(mén)的電路將中斷請(qǐng)求信號(hào)傳送給CPU,CPU也有專(zhuān)門(mén)的引腳接收中斷請(qǐng)求信號(hào)。例如,8086/8088 CPU用INTR引腳(可屏蔽中斷請(qǐng)求)和NMI引腳(非屏蔽中斷請(qǐng)求)接收硬件中斷請(qǐng)求信
31、號(hào)。一般外設(shè)發(fā)出的都是可屏蔽中斷請(qǐng)求。 第7章 輸入/輸出與中斷 &輸入鎖存器數(shù)據(jù)總線中斷請(qǐng)求D端口譯碼地址總線Q中斷屏蔽INT5 V輸入設(shè)備三態(tài)緩沖器Q&RD圖7.11 中斷請(qǐng)求與屏蔽接口電路 第7章 輸入/輸出與中斷 當(dāng)外設(shè)準(zhǔn)備好一個(gè)數(shù)據(jù)時(shí),便發(fā)出選通信號(hào),該信號(hào)一方面把數(shù)據(jù)存入接口的鎖存器中,另一方面使中斷請(qǐng)求觸發(fā)器置1。此時(shí),如果中斷屏蔽觸發(fā)器Q端的狀態(tài)為1,則產(chǎn)生了一個(gè)發(fā)往CPU的中斷請(qǐng)求信號(hào)INT。中斷屏蔽觸發(fā)器的狀態(tài)決定了系統(tǒng)是否允許該接口發(fā)出中斷請(qǐng)求。可見(jiàn),要想產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào),需滿足兩個(gè)條件:一是要由外設(shè)將接口中的中斷請(qǐng)求觸發(fā)器置1,二是要由CPU將接口中的中斷屏蔽觸發(fā)器
32、Q端置1。 第7章 輸入/輸出與中斷 2) 中斷響應(yīng) CPU在每條指令執(zhí)行的最后一個(gè)時(shí)鐘周期檢測(cè)其中斷請(qǐng)求輸入端,判斷有無(wú)中斷請(qǐng)求,若CPU接收到了中斷請(qǐng)求信號(hào),且此時(shí)CPU內(nèi)部的中斷允許觸發(fā)器的狀態(tài)為1,則CPU在現(xiàn)行指令執(zhí)行完后,發(fā)出INTA信號(hào)響應(yīng)中斷。從圖7.11中可以看到,一旦進(jìn)入中斷處理,立即清除中斷請(qǐng)求信號(hào)。這樣可以避免一個(gè)中斷請(qǐng)求被CPU多次響應(yīng)。 圖7.12給出了CPU內(nèi)部產(chǎn)生中斷響應(yīng)信號(hào)的邏輯電路。對(duì)于8086/8088 CPU可以用開(kāi)中斷(STI)或關(guān)中斷(CLI)指令來(lái)改變中斷允許觸發(fā)器(即IF標(biāo)志位)的狀態(tài)。 第7章 輸入/輸出與中斷 &R1允許中斷開(kāi)中斷指令關(guān)中斷指
33、令CPUCPU響應(yīng)中斷信號(hào)INTRRESETSQ圖7.12 CPU內(nèi)部設(shè)置中斷允許觸發(fā)器 第7章 輸入/輸出與中斷 3) 保護(hù)斷點(diǎn) CPU一旦響應(yīng)中斷,需要對(duì)其正在執(zhí)行程序的斷點(diǎn)信息進(jìn)行保護(hù),以便在中斷處理結(jié)束后仍能回到該斷點(diǎn)處繼續(xù)執(zhí)行。對(duì)于8086/8088 CPU,保護(hù)斷點(diǎn)的過(guò)程由硬件自動(dòng)完成,主要工作是關(guān)中斷、將標(biāo)志寄存器內(nèi)容入棧保存以及將CS和IP內(nèi)容入棧保存。 第7章 輸入/輸出與中斷 4) 中斷處理 中斷處理的過(guò)程實(shí)際就是CPU執(zhí)行中斷服務(wù)程序的過(guò)程。用戶編寫(xiě)的用于CPU為中斷源進(jìn)行中斷處理的程序稱(chēng)為中斷服務(wù)程序。由于不同中斷源在系統(tǒng)中的作用不同,所要完成的功能不同,因此,不同中斷
34、源的中斷服務(wù)程序內(nèi)容也各不相同。例如,對(duì)于圖7.11所示的輸入設(shè)備,其中斷服務(wù)程序的主要任務(wù)是用輸入指令(IN)從接口中的數(shù)據(jù)端口向CPU輸入數(shù)據(jù)。 第7章 輸入/輸出與中斷 另外,主程序中有些寄存器的內(nèi)容在中斷前后需保持一致,不能因中斷而發(fā)生變化,但在中斷服務(wù)程序中又用到了這些寄存器,為了保證在返回主程序后仍能從斷點(diǎn)處繼續(xù)正確執(zhí)行,還需要在中斷服務(wù)程序的開(kāi)頭對(duì)這些寄存器內(nèi)容進(jìn)行保護(hù)(即保護(hù)現(xiàn)場(chǎng)),在中斷服務(wù)程序的末尾恢復(fù)這些寄存器的內(nèi)容(即恢復(fù)現(xiàn)場(chǎng))。保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)一般用PUSH和POP指令實(shí)現(xiàn),所以要特別注意寄存器內(nèi)容入棧和出棧的次序。 第7章 輸入/輸出與中斷 5) 中斷返回 執(zhí)行完
35、中斷服務(wù)程序,返回到原先被中斷的程序,此過(guò)程稱(chēng)為中斷返回。為了能正確返回到原來(lái)程序的斷點(diǎn)處,在中斷服務(wù)程序的最后應(yīng)專(zhuān)門(mén)放置一條中斷返回指令(如8086/8088的IRET指令)。中斷返回指令的作用實(shí)際上是恢復(fù)斷點(diǎn),也就是保護(hù)斷點(diǎn)的逆過(guò)程。 第7章 輸入/輸出與中斷 7.3.2 中斷優(yōu)先級(jí)和中斷的嵌套中斷優(yōu)先級(jí)和中斷的嵌套 1中斷優(yōu)先級(jí) 中斷請(qǐng)求是隨機(jī)發(fā)生的,當(dāng)系統(tǒng)具有多個(gè)中斷源時(shí),有時(shí)會(huì)同時(shí)出現(xiàn)多個(gè)中斷請(qǐng)求,CPU只能按一定的次序予以響應(yīng)和處理,這個(gè)響應(yīng)的次序稱(chēng)為中斷優(yōu)先級(jí)。對(duì)于不同級(jí)別的中斷請(qǐng)求,一般的處理原則是: (1) 不同優(yōu)先級(jí)的多個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求,按優(yōu)先級(jí)由高到低依次處理。
36、第7章 輸入/輸出與中斷 (2) 低優(yōu)先級(jí)中斷正在處理,出現(xiàn)高優(yōu)先級(jí)請(qǐng)求,應(yīng)轉(zhuǎn)去處理高優(yōu)先級(jí)請(qǐng)求,服務(wù)結(jié)束后再返回原優(yōu)先級(jí)較低的中斷服務(wù)程序繼續(xù)執(zhí)行。 (3) 高優(yōu)先級(jí)中斷正在處理,出現(xiàn)低優(yōu)先級(jí)請(qǐng)求,可暫不響應(yīng)。 (4) 中斷處理時(shí),出現(xiàn)同級(jí)別請(qǐng)求,應(yīng)在當(dāng)前中斷處理結(jié)束以后再處理新的請(qǐng)求。 第7章 輸入/輸出與中斷 2中斷優(yōu)先級(jí)的確定 在微機(jī)系統(tǒng)中通常用三種方法來(lái)確定中斷源的優(yōu)先級(jí)別,即軟件查詢法、硬件排隊(duì)電路法和專(zhuān)用中斷控制芯片法。本節(jié)簡(jiǎn)要介紹前兩種方法,第三種方法將在本章的最后一節(jié)作詳細(xì)介紹。 1) 軟件查詢法 軟件查詢法需要簡(jiǎn)單的硬件電路支持。以8個(gè)中斷源為例,其硬件電路如圖7.13所示
37、,將8個(gè)外設(shè)的中斷請(qǐng)求組合起來(lái)作為一個(gè)端口(中斷寄存器),并將各個(gè)外設(shè)的中斷請(qǐng)求信號(hào)相或,產(chǎn)生一個(gè)總的INT信號(hào)。 第7章 輸入/輸出與中斷 任一個(gè)外設(shè)有中斷請(qǐng)求,該電路都可向CPU發(fā)中斷請(qǐng)求信號(hào)(INT),CPU響應(yīng)后進(jìn)入中斷處理程序,在中斷處理程序的開(kāi)始先把中斷寄存器的內(nèi)容讀入CPU,再對(duì)寄存器內(nèi)容進(jìn)行逐位查詢,查到某位狀態(tài)為1,表示與該位相連的外設(shè)有中斷請(qǐng)求,于是轉(zhuǎn)到與其相應(yīng)的中斷服務(wù)程序,同時(shí)該外設(shè)撤消其中斷請(qǐng)求信號(hào)。軟件查詢方式的流程圖如圖7.14所示。 第7章 輸入/輸出與中斷 1CPUD7INTRINT 1中斷寄存器INTD0INT 2INT 8圖7.13 軟件查詢法的硬件電路
38、第7章 輸入/輸出與中斷 對(duì)1號(hào)中斷源服務(wù)NNNYYY斷點(diǎn)保護(hù)INT 1?INT 2?對(duì)2號(hào)中斷源服務(wù)對(duì)n號(hào)中斷源服務(wù)INT n?圖7.14 軟件查詢方式的流程圖 第7章 輸入/輸出與中斷 對(duì)于圖7.13所示電路,設(shè)中斷寄存器端口號(hào)為n,則軟件查詢的程序段如下: IN AL,n TEST AL,80H ;1號(hào)外設(shè)有請(qǐng)求? JNZ II1;有,轉(zhuǎn)1號(hào)中斷服務(wù)程序 TEST AL,40H ;2號(hào)外設(shè)有請(qǐng)求? JNZ II2 ;有,轉(zhuǎn)2號(hào)中斷服務(wù)程序第7章 輸入/輸出與中斷 可以看出,采用軟件查詢方式,各中斷源的優(yōu)先級(jí)是由查詢順序決定的,最先查詢的設(shè)備,其優(yōu)先級(jí)最高,最后查詢的設(shè)備,其優(yōu)先級(jí)最低。采
39、用軟件查詢方式的優(yōu)點(diǎn)是節(jié)省硬件。但是,由于CPU每次響應(yīng)中斷時(shí)都要對(duì)各中斷源進(jìn)行逐一查詢,所以其響應(yīng)速度較慢。對(duì)于優(yōu)先級(jí)較低的中斷源來(lái)說(shuō),該缺點(diǎn)更為明顯。 第7章 輸入/輸出與中斷 2) 硬件排隊(duì)電路硬件排隊(duì)電路 采用硬件排隊(duì)電路法,各個(gè)外設(shè)的優(yōu)先級(jí)與其接口在排隊(duì)電路中的位置有關(guān)。常用的硬件優(yōu)先權(quán)排隊(duì)電路有鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路、硬件優(yōu)先級(jí)編碼加比較器的排隊(duì)電路等。圖7.15給出了一個(gè)鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)電路。 第7章 輸入/輸出與中斷 圖7.15中,當(dāng)響應(yīng)信號(hào)沿鏈?zhǔn)诫娐愤M(jìn)行傳遞時(shí),最靠近CPU并發(fā)出中斷請(qǐng)求的接口將首先攔截住響應(yīng)信號(hào),CPU進(jìn)入相應(yīng)外設(shè)的中斷處理程序,在服務(wù)完成后,該外設(shè)撤消其中斷請(qǐng)求
40、,解除對(duì)下一級(jí)外設(shè)的封鎖。例如,當(dāng)CPU收到中斷請(qǐng)求信號(hào)并響應(yīng)中斷時(shí),若1號(hào)外設(shè)有中斷請(qǐng)求(高電平),則立即向1號(hào)外設(shè)接口發(fā)出應(yīng)答信號(hào),同時(shí)封鎖2號(hào)、3號(hào)等外設(shè)的中斷請(qǐng)求,轉(zhuǎn)去對(duì)1號(hào)外設(shè)服務(wù);若1號(hào)外設(shè)沒(méi)有中斷請(qǐng)求,而2號(hào)外設(shè)有中斷請(qǐng)求時(shí),響應(yīng)信號(hào)便傳遞給2號(hào)外設(shè),向2號(hào)外設(shè)接口發(fā)出應(yīng)答信號(hào),同時(shí)封鎖3號(hào)外設(shè)的中斷請(qǐng)求;若CPU在為2號(hào)外設(shè)進(jìn)行中斷服務(wù)時(shí)1號(hào)外設(shè)發(fā)出了中斷請(qǐng)求,CPU會(huì)掛起對(duì)2號(hào)外設(shè)的服務(wù)轉(zhuǎn)去對(duì)1號(hào)外設(shè)服務(wù),1號(hào)外設(shè)處理結(jié)束后,再繼續(xù)為2號(hào)外設(shè)服務(wù)。可以看出,鏈?zhǔn)絻?yōu)先級(jí)排隊(duì)電路不僅能夠確定各中斷源的優(yōu)先級(jí),而且在相應(yīng)軟件的配合下,可實(shí)現(xiàn)高級(jí)別的請(qǐng)求中斷低級(jí)別的服務(wù)(即中斷的嵌套
41、)。 第7章 輸入/輸出與中斷 響應(yīng)3#中斷請(qǐng)求“ 1”應(yīng)答2#應(yīng)答3#應(yīng)答1#1#中斷請(qǐng)求2#中斷請(qǐng)求&INT&圖7.15 鏈?zhǔn)街袛鄡?yōu)先級(jí)電路 第7章 輸入/輸出與中斷 上述兩種方法雖然可以解決中斷優(yōu)先級(jí)控制問(wèn)題,但實(shí)現(xiàn)起來(lái)在硬件和軟件上都要做大量的工作,十分麻煩。目前,最方便的辦法就是利用廠家提供的可編程中斷控制器,這樣的器件在各種微機(jī)中得到普遍應(yīng)用。本章后面將介紹廣泛應(yīng)用于80 x86微機(jī)系統(tǒng)中的專(zhuān)用可編程中斷控制芯片8259A。 第7章 輸入/輸出與中斷 3中斷嵌套中斷嵌套 CPU在執(zhí)行低級(jí)別中斷服務(wù)程序時(shí),又收到較高級(jí)別的中斷請(qǐng)求,CPU暫停執(zhí)行低級(jí)別中斷服務(wù)程序,轉(zhuǎn)去處理這個(gè)高級(jí)別
42、的中斷,處理完后再返回低級(jí)別中斷服務(wù)程序,這個(gè)過(guò)程稱(chēng)為中斷嵌套,如圖7.16所示。 高級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求STISTI主程序低級(jí)中斷服務(wù)程序高級(jí)中斷服務(wù)程序圖7.16 中斷嵌套示意圖 第7章 輸入/輸出與中斷 一般CPU響應(yīng)中斷請(qǐng)求后,在進(jìn)入中斷服務(wù)程序前,硬件會(huì)自動(dòng)實(shí)現(xiàn)關(guān)中斷,這樣,CPU在執(zhí)行中斷服務(wù)程序時(shí)將不能再響應(yīng)其他中斷請(qǐng)求。為了實(shí)現(xiàn)中斷嵌套,應(yīng)在低級(jí)別中斷服務(wù)程序的開(kāi)始處加一條開(kāi)中斷指令STI。能夠?qū)崿F(xiàn)中斷嵌套的中斷系統(tǒng),其軟、硬件設(shè)計(jì)都非常復(fù)雜,如果采用了可編程中斷控制器,就會(huì)方便很多。 第7章 輸入/輸出與中斷 7.4 8086/8088中斷系統(tǒng)中斷系統(tǒng) 7.4.1 8086
43、/8088的中斷源類(lèi)型的中斷源類(lèi)型 8086/8088 CPU可以處理256種不同類(lèi)型的中斷,每一種中斷都給定一個(gè)編號(hào)(0255),稱(chēng)為中斷類(lèi)型號(hào),CPU根據(jù)中斷類(lèi)型號(hào)來(lái)識(shí)別不同的中斷源。8086/8088的中斷源如圖7.17所示。從圖中可以看出8086/8088的中斷源可分為兩大類(lèi):一類(lèi)來(lái)自CPU的外部,由外設(shè)的請(qǐng)求引起,稱(chēng)為硬件中斷(又稱(chēng)外部中斷);另一類(lèi)來(lái)自CPU的內(nèi)部,由執(zhí)行指令時(shí)引起,稱(chēng)為軟件中斷(又稱(chēng)內(nèi)部中斷)。 第7章 輸入/輸出與中斷 NMI(17號(hào)引腳)中 斷 邏 輯非屏蔽中斷請(qǐng)求INT 2硬件(外部)中斷軟件(內(nèi)部)中斷可屏蔽中斷請(qǐng)求中斷類(lèi)型號(hào)32255INTR(18號(hào)引腳
44、)中斷指令I(lǐng)NT nN32255溢出中斷INTOINT 4斷點(diǎn)中斷INT 3單步中斷(TF1)INT 1除法錯(cuò)誤INT 0圖7.17 8086/8088中斷源 第7章 輸入/輸出與中斷 1軟件中斷軟件中斷(內(nèi)部中斷內(nèi)部中斷) 8086/8088的軟件中斷主要有五種,分為三類(lèi)。 1) 處理運(yùn)算過(guò)程中某些錯(cuò)誤的中斷處理運(yùn)算過(guò)程中某些錯(cuò)誤的中斷 執(zhí)行程序時(shí),為及時(shí)處理運(yùn)算中的某些錯(cuò)誤,CPU以中斷方式中止正在運(yùn)行的程序,提醒程序員改錯(cuò)。 (1) 除法錯(cuò)中斷(中斷類(lèi)型號(hào)為0)。在8086/8088 CPU執(zhí)行除法指令(DIV/IDIV)時(shí),若發(fā)現(xiàn)除數(shù)為0,或所得的商超過(guò)了CPU中有關(guān)寄存器所能表示的最
45、大值,則立即產(chǎn)生一個(gè)類(lèi)型號(hào)為0的內(nèi)部中斷,CPU轉(zhuǎn)去執(zhí)行除法錯(cuò)中斷處理程序。 第7章 輸入/輸出與中斷 (2) 溢出中斷INTO(中斷類(lèi)型號(hào)為4)。CPU進(jìn)行帶符號(hào)數(shù)的算術(shù)運(yùn)算時(shí),若發(fā)生了溢出,則標(biāo)志位OF=1,若此時(shí)執(zhí)行INTO指令,會(huì)產(chǎn)生溢出中斷,打印出一個(gè)錯(cuò)誤信息,結(jié)束時(shí)不返回,而把控制權(quán)交給操作系統(tǒng)。若OF=0,則INTO不產(chǎn)生中斷,CPU繼續(xù)執(zhí)行下一條指令。INTO指令通常安排在算術(shù)指令之后,以便在溢出時(shí)能及時(shí)處理。例如: ADD AX,BXINTO;測(cè)試加法的溢出 第7章 輸入/輸出與中斷 2) 為調(diào)試程序設(shè)置的中斷 (1) 單步中斷(中斷類(lèi)型號(hào)為1)。當(dāng)TF=1時(shí),每執(zhí)行一條指令
46、,CPU會(huì)自動(dòng)產(chǎn)生一個(gè)單步中斷。單步中斷可一條一條指令地跟蹤程序流程,觀察各個(gè)寄存器及存儲(chǔ)單元內(nèi)容的變化,幫助分析錯(cuò)誤原因。單步中斷又稱(chēng)為陷阱中斷,主要用于程序調(diào)試。 (2) 斷點(diǎn)中斷(中斷類(lèi)型號(hào)為3)。調(diào)試程序時(shí)可以在一些關(guān)鍵性的地方設(shè)置斷點(diǎn),它相當(dāng)于把一條INT 3 指令插入到程序中,CPU每執(zhí)行到斷點(diǎn)處,INT 3 指令便產(chǎn)生一個(gè)中斷,使CPU轉(zhuǎn)向相應(yīng)的中斷服務(wù)程序。 第7章 輸入/輸出與中斷 3) 中斷指令I(lǐng)NT n引起的中斷(中斷類(lèi)型號(hào)為n) 程序設(shè)計(jì)時(shí),可以用INT n指令來(lái)產(chǎn)生軟件中斷,中斷指令的操作數(shù)n給出了中斷類(lèi)型號(hào),CPU執(zhí)行INT n指令后,會(huì)立即產(chǎn)生一個(gè)類(lèi)型號(hào)為n的中斷
47、,轉(zhuǎn)入相應(yīng)的中斷處理程序來(lái)完成中斷功能。 第7章 輸入/輸出與中斷 2硬件中斷(外部中斷) 8086/8088 CPU有兩條外部中斷請(qǐng)求線NMI(非屏蔽中斷)和INTR(可屏蔽中斷)。 1) 非屏蔽中斷NMI(中斷類(lèi)型號(hào)為2) 整個(gè)系統(tǒng)只有一個(gè)非屏蔽中斷,它不受IF標(biāo)志位的屏蔽。出現(xiàn)在NMI上的請(qǐng)求信號(hào)是上升沿觸發(fā)的,一旦出現(xiàn),CPU將予以響應(yīng)。非屏蔽中斷一般用于緊急故障處理。 第7章 輸入/輸出與中斷 2) 可屏蔽中斷INTR 可屏蔽中斷請(qǐng)求信號(hào)從INTR引腳送往CPU,高電平有效,受IF標(biāo)志位屏蔽,IF0時(shí),對(duì)于所有從INTR引腳進(jìn)入的中斷請(qǐng)求,CPU均不予響應(yīng);另外,也可以在CPU外部的
48、中斷控制器(8259A)中以及各個(gè)I/O接口電路中對(duì)某一級(jí)中斷或某個(gè)中斷源單獨(dú)進(jìn)行屏蔽。 第7章 輸入/輸出與中斷 當(dāng)外設(shè)的中斷請(qǐng)求未被屏蔽,且IF=1,則CPU在當(dāng)前指令周期的最后一個(gè)T狀態(tài)去采樣INTR引腳,若有效,CPU予以響應(yīng)。CPU將執(zhí)行兩個(gè)連續(xù)的中斷響應(yīng)周期,送出兩個(gè)中斷響應(yīng)信號(hào) INTA。第一個(gè)響應(yīng)周期,CPU將地址及數(shù)據(jù)總線置高阻;在第二個(gè)響應(yīng)周期,外設(shè)向數(shù)據(jù)總線輸送一個(gè)字節(jié)的中斷類(lèi)型號(hào),CPU讀入后,就可在中斷向量表中找到該類(lèi)型號(hào)的中斷服務(wù)程序的入口地址,轉(zhuǎn)入中斷處理。 值得注意的是,對(duì)于非屏蔽中斷和軟件中斷,其中斷類(lèi)型號(hào)由CPU內(nèi)部自動(dòng)提供,不需去執(zhí)行中斷響應(yīng)周期讀取中斷類(lèi)
49、型號(hào)。 第7章 輸入/輸出與中斷 38086/8088中斷源的優(yōu)先級(jí) 8086/8088中斷源的優(yōu)先級(jí)順序由高到低依次為:軟件中斷(除單步中斷外)、非屏蔽中斷、可屏蔽中斷、單步中斷。 在PC機(jī)系統(tǒng)中,外設(shè)的中斷請(qǐng)求通過(guò)中斷控制器8259A連接到CPU的INTR引腳,外設(shè)中斷源的優(yōu)先級(jí)別由8259A進(jìn)行管理。 第7章 輸入/輸出與中斷 7.4.2 中斷向量表中斷向量表 中斷向量表是存放中斷向量的一個(gè)特定的內(nèi)存區(qū)域。所謂中斷向量,就是中斷服務(wù)程序的入口地址。對(duì)于8086/8088系統(tǒng),所有中斷服務(wù)程序的入口地址都存放在中斷向量表中。 8086/8088可以處理256種中斷,每種中斷對(duì)應(yīng)一個(gè)中斷類(lèi)型
50、號(hào),每個(gè)中斷類(lèi)型號(hào)與一個(gè)中斷服務(wù)程序的入口地址相對(duì)應(yīng)。每個(gè)中斷服務(wù)程序的入口地址占4個(gè)存儲(chǔ)單元,其中低地址的兩個(gè)單元存放中斷服務(wù)程序入口地址的偏移量(IP);高地址的兩個(gè)單元存放中斷服務(wù)程序入口地址的段地址(CS)。256個(gè)中斷向量要占25641024個(gè)單元,即中斷向量表長(zhǎng)度為1K個(gè)單元。8086/8088系統(tǒng)的中斷向量表位于內(nèi)存的前1K字節(jié),地址范圍為00000H003FFH。8086/8088的中斷向量表如圖7.18所示。 第7章 輸入/輸出與中斷 00000H00003H00008H0000BH00004H00007H0000CH0000FH00010H00013H00014H0007F
51、H00080H003FCHIP內(nèi)容CS內(nèi)容類(lèi)型0中斷入口地址(除法出錯(cuò))專(zhuān)用中斷(5個(gè))用戶自定義中斷(224個(gè))系統(tǒng)保留中斷(27個(gè))類(lèi)型1中斷入口地址(單步中斷)類(lèi)型2中斷入口地址(NMI)類(lèi)型3中斷入口地址(斷點(diǎn)中斷)類(lèi)型4中斷入口地址(溢出中斷)類(lèi)型5中斷入口地址類(lèi)型31中斷入口地址類(lèi)型32中斷入口地址類(lèi)型255中斷入口地址圖7.18 8086/8088的中斷向量表 第7章 輸入/輸出與中斷 圖7.18所示的中斷向量表中有5個(gè)專(zhuān)用中斷(類(lèi)型0類(lèi)型4),它們已經(jīng)有固定用途;27個(gè)系統(tǒng)保留的中斷(類(lèi)型5類(lèi)型31)供系統(tǒng)使用,不允許用戶自行定義;224個(gè)用戶自定義中斷(類(lèi)型32類(lèi)型255),
52、這些中斷類(lèi)型號(hào)可供軟中斷INT n或可屏蔽中斷INTR使用,使用時(shí),要由用戶自行填入相應(yīng)的中斷服務(wù)程序入口地址。(其中有些中斷類(lèi)型已經(jīng)有了固定用途,例如,類(lèi)型21H的中斷已用做DOS的系統(tǒng)功能調(diào)用)。 第7章 輸入/輸出與中斷 由于中斷服務(wù)程序入口地址在中斷向量表中是按中斷類(lèi)型號(hào)順序存放的,因此每個(gè)中斷服務(wù)程序入口地址在中斷向量表中的位置可由“中斷類(lèi)型號(hào)4”計(jì)算出來(lái)。CPU響應(yīng)中斷時(shí),把中斷類(lèi)型號(hào)N乘以4,得到對(duì)應(yīng)地址4N(該中斷服務(wù)程序入口地址所占4個(gè)單元的第一個(gè)單元的地址),然后把由此地址開(kāi)始的兩個(gè)低字節(jié)單元(4N,4N+1)的內(nèi)容裝入IP寄存器,再把兩個(gè)高字節(jié)單元(4N+2,4N+3)的
53、內(nèi)容裝入CS寄存器,于是CPU轉(zhuǎn)入中斷類(lèi)型號(hào)為N的中斷服務(wù)程序。 這種采用向量中斷的方法,CPU可直接通過(guò)向量表轉(zhuǎn)向相應(yīng)的處理程序,而不需要去逐個(gè)檢測(cè)和確定中斷源,因而可以大大加快中斷響應(yīng)的速度。 第7章 輸入/輸出與中斷 7.4.3 8086/8088的中斷處理過(guò)程的中斷處理過(guò)程 FLAGS 入棧NNN完成當(dāng)前指令有內(nèi)部中斷嗎?從指令中或內(nèi)部獲得中斷類(lèi)型號(hào)從外部得到中斷類(lèi)型號(hào)TEMP=1?令TEMPTF調(diào)中斷處理程序YYY有NMI中斷嗎?有INTR中斷嗎?TF1?執(zhí)行下一條指令NNNNY中斷類(lèi)型號(hào)2YIF1?中斷類(lèi)型號(hào)1清IF、TFCS、IP入棧返回?cái)帱c(diǎn)FLAGS出棧IP、CS出棧中斷服務(wù)有
54、NMI?(1)(1)(1)(1)(2)(3)(4)(5)YY圖7.19 8086/8088 CPU中斷處理的基本過(guò)程 第7章 輸入/輸出與中斷 在圖示流程中,(1)(5)是CPU的內(nèi)部處理,由硬件自動(dòng)完成。 所有內(nèi)部中斷(除法錯(cuò)、INT n、INTO、單步和斷點(diǎn)中斷)以及NMI中斷不需要從數(shù)據(jù)總線上讀取中斷類(lèi)型碼,而INTR中斷需由CPU讀取中斷類(lèi)型碼,其中斷類(lèi)型碼由發(fā)出INTR信號(hào)的接口電路提供。 該流程圖還反映出了8086/8088系統(tǒng)中各中斷源優(yōu)先級(jí)的高低。 第7章 輸入/輸出與中斷 7.4.4 中斷服務(wù)程序的設(shè)計(jì)中斷服務(wù)程序的設(shè)計(jì) 中斷服務(wù)程序的一般結(jié)構(gòu)如圖7.20所示。如前所述,若該
55、中斷處理能被更高級(jí)別的中斷源中斷,則需加入開(kāi)中斷指令。在中斷服務(wù)程序的最后,一定要有中斷返回指令,以保證斷點(diǎn)的恢復(fù)。 用戶在設(shè)計(jì)中斷服務(wù)程序時(shí)要預(yù)先確定一個(gè)中斷類(lèi)型號(hào),不論是采用軟件中斷還是硬件中斷,都只能在系統(tǒng)預(yù)留給用戶的類(lèi)型號(hào)中選擇。 第7章 輸入/輸出與中斷 關(guān)中斷保護(hù)現(xiàn)場(chǎng)開(kāi)中斷中斷服務(wù)恢復(fù)現(xiàn)場(chǎng)中斷返回圖7.20 中斷服務(wù)程序的一般結(jié)構(gòu) 第7章 輸入/輸出與中斷 1DOS系統(tǒng)功能調(diào)用法系統(tǒng)功能調(diào)用法 功能號(hào):(AH)=25H。 入口參數(shù):(AL)=中斷類(lèi)型號(hào) (DS)=中斷服務(wù)程序入口地址的段地址 (DX)=中斷服務(wù)程序入口地址的偏移地址 第7章 輸入/輸出與中斷 下面程序段完成中斷類(lèi)型
56、號(hào)為60H的入口地址置入。PUSH DS;保護(hù)DSMOV DX,OFFSET INT60;取服務(wù)程序偏移地址MOV AX,SEG INT60;取服務(wù)程序段地址MOV DS,AXMOV AH,25H;送功能號(hào)MOV AL,60H;送中斷類(lèi)型號(hào)INT 21H;DOS功能調(diào)用 POP DS;恢復(fù)DS 第7章 輸入/輸出與中斷 2直接裝入法 用傳送指令直接將中斷服務(wù)程序首地址置入矢量表中。設(shè)中斷類(lèi)型號(hào)為60H(此類(lèi)型號(hào)對(duì)應(yīng)的矢量表地址為從00180H開(kāi)始的四個(gè)連續(xù)存儲(chǔ)單元)。程序段如下:XOR AX,AXMOV DS,AXMOV AX,OFFSET INT60MOV DS:0180H,AX;置服務(wù)程序
57、偏移地址MOV AX,SEG INT60 MOV DS:0180H+2,AX;置服務(wù)程序所在代碼段的段地址 第7章 輸入/輸出與中斷 7.5 可編程中斷控制器可編程中斷控制器Intel 8259A 7.5.1 8259A的功能的功能 8259A是可編程中斷控制器(Programmable Interrupt Controller)芯片,用于管理和控制80 x86的外部中斷請(qǐng)求,可實(shí)現(xiàn)中斷優(yōu)先級(jí)判定,提供中斷類(lèi)型號(hào),屏蔽中斷輸入等功能。單片8259A可管理8級(jí)中斷,若采用級(jí)聯(lián)方式,最多可以用9片8259A構(gòu)成兩級(jí)中斷機(jī)構(gòu),管理64級(jí)中斷。8259A是可編程器件,它所具有的多種中斷優(yōu)先級(jí)管理方式可
58、以通過(guò)主程序在任何時(shí)候進(jìn)行改變或重新組織。 第7章 輸入/輸出與中斷 7.5.2 8259A的內(nèi)部結(jié)構(gòu)及外部引腳的內(nèi)部結(jié)構(gòu)及外部引腳 18259A的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 內(nèi)部總線CAS0D7D0數(shù)據(jù)總線緩沖器控制電路INT讀/寫(xiě)控制邏輯RDWRA0CS級(jí)聯(lián)緩沖/比較器CAS1CAS2EN/SPINTA中斷服務(wù)寄存器(ISR)優(yōu)先權(quán)判別器(PR)中斷請(qǐng)求寄存器(IRR)中斷屏蔽寄存器(IMR)IR7IR1IR0圖7.21 8259A內(nèi)部結(jié)構(gòu)框圖 第7章 輸入/輸出與中斷 中斷請(qǐng)求寄存器IRR(Interrupt Request Register),8位,接受并鎖存來(lái)自IR0IR7的中斷請(qǐng)求信號(hào),當(dāng)
59、IR0IR7上出現(xiàn)某一中斷請(qǐng)求信號(hào)時(shí),IRR對(duì)應(yīng)位被置1;中斷屏蔽寄存器IMR(Interrupt Mask Register),8位,若IRR中記錄的各級(jí)中斷中有任何一級(jí)需要屏蔽,只要將IMR的相應(yīng)位置1即可,未被屏蔽的中斷請(qǐng)求進(jìn)入優(yōu)先權(quán)判別器;中斷服務(wù)寄存器ISR(In-Service Register),8位,保存當(dāng)前正在處理的中斷請(qǐng)求,例如,如果ISR的D2=1,表示CPU正在為來(lái)自IR2的中斷請(qǐng)求服務(wù);優(yōu)先權(quán)判別器PR(Priority Resolver)能夠?qū)⒏髦袛嗾?qǐng)求中優(yōu)先級(jí)最高者選中,并將ISR中相應(yīng)位置1。若某中斷請(qǐng)求正在被處理,8259A外部又有新的中斷請(qǐng)求,則由優(yōu)先權(quán)判別
60、器將新進(jìn)入的中斷請(qǐng)求和當(dāng)前正在處理的中斷進(jìn)行比較,以決定哪一個(gè)優(yōu)先級(jí)更高。若新的中斷請(qǐng)求比正在處理的中斷級(jí)別高,則正在處理的中斷自動(dòng)被禁止,先處理級(jí)別高的中斷,由PR通過(guò)控制邏輯向CPU發(fā)出中斷申請(qǐng)INT。 第7章 輸入/輸出與中斷 CPU收到中斷請(qǐng)求后,若IF=1,則CPU完成當(dāng)前指令后,響應(yīng)中斷,即執(zhí)行兩個(gè)中斷響應(yīng)總線周期,在 引腳上發(fā)出兩個(gè)負(fù)脈沖。8259A收到第一個(gè)負(fù)脈沖后,使IRR鎖存功能失效,不接受IR0IR7上的中斷請(qǐng)求信號(hào);直到第二個(gè)負(fù)脈沖結(jié)束后,才又使IRR鎖存功能有效,并清除IRR的相應(yīng)位,使ISR的對(duì)應(yīng)位置1,以便為優(yōu)先級(jí)裁決器以后的裁決提供依據(jù)。收到第二個(gè)負(fù)脈沖后,82
61、59A把當(dāng)前中斷的中斷類(lèi)型號(hào)送到D7D0,CPU根據(jù)此類(lèi)型號(hào)進(jìn)入相應(yīng)的中斷服務(wù)程序。在中斷服務(wù)程序結(jié)束時(shí)向8259A發(fā)中斷結(jié)束命令,該命令將ISR寄存器的相應(yīng)位清0,中斷處理結(jié)束。 INTA第7章 輸入/輸出與中斷 數(shù)據(jù)總線緩沖器是8259A與系統(tǒng)之間傳送信息的數(shù)據(jù)通道。 讀/寫(xiě)控制邏輯包含了初始化命令字寄存器和操作命令字寄存器。其功能是確定數(shù)據(jù)總線緩沖器中數(shù)據(jù)的傳輸方向,選擇內(nèi)部的各命令字寄存器。當(dāng)CPU發(fā)讀信號(hào)時(shí)將8259A的狀態(tài)信息放到數(shù)據(jù)總線上;當(dāng)CPU發(fā)寫(xiě)信號(hào)時(shí),將CPU發(fā)來(lái)的命令字信息送入指定的命令字寄存器中。 級(jí)聯(lián)緩沖/比較器用來(lái)存放和比較在系統(tǒng)中用到的所有8259A的級(jí)聯(lián)地址。
62、主控8259A通過(guò)CAS0、CAS1和CAS2發(fā)送級(jí)聯(lián)地址,選中從控8259A。 第7章 輸入/輸出與中斷 圖7.22 8259A引腳CAS28259AD7CAS0GNDVCCA0IR7INT12345678910111213142827262524232221201918171615INTAIR6IR5IR4IR3IR2IR1IR0EN / SPCSWRRDD6D5D4D3D2D1D0CAS1第7章 輸入/輸出與中斷 28259A的外部引腳的外部引腳 8259A采用28腳雙列直插封裝形式,如圖7.22所示。 CS:片選信號(hào),輸入,低電平有效,來(lái)自地址譯碼器的輸出。只有該信號(hào)有效時(shí),CPU才能
63、對(duì)8259A進(jìn)行讀/寫(xiě)操作。 WR:寫(xiě)信號(hào),輸入,低電平有效,通知8259A接收CPU從數(shù)據(jù)總線上送來(lái)的命令字。 RD:讀信號(hào),輸入,低電平有效,用于讀取8259A中某些寄存器的內(nèi)容(如IMR、ISR或IRR)。 第7章 輸入/輸出與中斷 D7D0:雙向、三態(tài)數(shù)據(jù)線,接系統(tǒng)數(shù)據(jù)總線的D7D0,用來(lái)傳送控制字、狀態(tài)字和中斷類(lèi)型號(hào)等。 IR7IR0:中斷請(qǐng)求信號(hào),輸入,從I/O接口或其他8259A(從控制器)上接收中斷請(qǐng)求信號(hào)。在邊沿觸發(fā)方式中,IR輸入應(yīng)由低到高,此后保持為高,直到被響應(yīng)。在電平觸發(fā)方式中,IR輸入應(yīng)保持高電平。 INT:8259A向CPU發(fā)出的中斷請(qǐng)求信號(hào),高電平有效,該引腳接
64、CPU的INTR引腳。 INTA:中斷響應(yīng)信號(hào),輸入,接收CPU發(fā)來(lái)的中斷響應(yīng)脈沖以通知8259A中斷請(qǐng)求已被響應(yīng),使其將中斷類(lèi)型號(hào)送到數(shù)據(jù)總線上。 第7章 輸入/輸出與中斷 CAS0CAS2:級(jí)聯(lián)總線,輸入或輸出,用于區(qū)分特定的從控制器件。8259A作為主控制器時(shí),該總線為輸出,作為從控制器時(shí),為輸入。 SP/EN:從片/允許緩沖信號(hào),輸入或輸出,該引腳為雙功能引腳。在緩沖方式中(即8259A通過(guò)一個(gè)數(shù)據(jù)總線收發(fā)器與系統(tǒng)總線相連),該引腳被用做輸出線,控制收發(fā)器的接收或發(fā)送;在非緩沖方式中,該引腳作為輸入線,確定該8259A是主控制器(SP/EN1)還是從控制器(SP/EN0)。8259A的
65、級(jí)聯(lián)方式如圖7.23所示。 第7章 輸入/輸出與中斷 A0為地址輸入信號(hào),用于對(duì)8259A內(nèi)部寄存器端口的尋址。每片8259A對(duì)應(yīng)兩個(gè)端口地址,一個(gè)為偶地址,一個(gè)為奇地址,且偶地址小于奇地址。在與8088系統(tǒng)相連時(shí),可直接將該引腳與地址總線的A0連接;與8086系統(tǒng)連接時(shí)要特別注意,因?yàn)?259A只有8根數(shù)據(jù)線,8086有16根,8086與8259A的所有數(shù)據(jù)傳送都用16位數(shù)據(jù)總線的低8位進(jìn)行。要保證所有傳送都用總線的低8位,最簡(jiǎn)單的方法是將8086地址總線的A1和8259A的A0端相連,這樣,就可以用兩個(gè)相鄰的偶地址作為8259A的端口地址,從而保證用數(shù)據(jù)總線的低8位和8259A交換數(shù)據(jù)。
66、第7章 輸入/輸出與中斷 在這種情況下,從CPU的角度來(lái)看,對(duì)兩個(gè)端口尋址時(shí),使A0總是為0,而A1為1或者為0,即這兩個(gè)端口用的是相鄰的兩個(gè)偶地址;從8259A的角度來(lái)看,只有地址總線的A1和8259A的A0端相連,地址總線的A0未與8259A相連,所以,當(dāng)?shù)刂房偩€的A1為0時(shí),8259A認(rèn)為是對(duì)偶地址端口進(jìn)行訪問(wèn),當(dāng)?shù)刂房偩€的A1為1時(shí),8259A認(rèn)為是對(duì)奇地址端口進(jìn)行訪問(wèn),從而將兩個(gè)本來(lái)相鄰的偶地址看成是一奇一偶兩個(gè)相鄰地址。這樣,又正好符合了8259A對(duì)端口地址的要求。因此,在實(shí)際的8086系統(tǒng)中,總是給8259A分配兩個(gè)相鄰的偶地址,其中,一個(gè)為4的倍數(shù),對(duì)應(yīng)于A1=0,A0=0,并使這個(gè)地址較低;另一個(gè)為2的倍數(shù),對(duì)應(yīng)于A1=1,A0=0,并使這個(gè)地址較高。 第7章 輸入/輸出與中斷 7.5.3 8259A的工作方式的工作方式 1中斷優(yōu)先級(jí)管理方式 1) 全嵌套方式 全嵌套方式也稱(chēng)固定優(yōu)先級(jí)方式。在這種方式下,由IR端引入的中斷請(qǐng)求具有固定的優(yōu)先級(jí),IR0最高,IR7最低。在對(duì)8259A初始化后若沒(méi)有設(shè)置其他優(yōu)先級(jí)方式,則默認(rèn)為全嵌套方式。 第7章 輸入/輸出與中斷 當(dāng)一個(gè)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版教材三年級(jí)上冊(cè)道德與法治第四單元家是最溫暖的地方教學(xué)ppt課件 (全套)
- 蘇教版小學(xué)科學(xué)三年級(jí)下冊(cè)《雨下得有多大》課件1
- 花的形態(tài)與結(jié)構(gòu)課件匯總
- 一年級(jí)-數(shù)學(xué)下冊(cè)十幾減九人教版課件
- 電影膠片動(dòng)態(tài)課件
- 高電壓技術(shù)課件第六章
- 項(xiàng)目采購(gòu)管理(6)
- 四川省攀枝花市XX小學(xué)一年級(jí)數(shù)學(xué)下冊(cè)六100以內(nèi)的加法和減法二練習(xí)十三2課件蘇教版
- 山東省青島市黃島區(qū)海青鎮(zhèn)中心中學(xué)七年級(jí)歷史下冊(cè) 15 明朝君權(quán)的加強(qiáng)課件 新人教版
- 把握人物的性格特征
- 剪小紙人PPT課件
- 八年級(jí)物理探究凸透鏡成像規(guī)律8
- 1[1]22配方法2
- 近代機(jī)械行業(yè)唯物主義管理分析自然觀
- 全國(guó)科技創(chuàng)新大賽“科學(xué)幻想畫(huà)”獲獎(jiǎng)作品ppt課件