![《微機(jī)原理與接口技術(shù)》教學(xué)課件-第7章_第1頁](http://file4.renrendoc.com/view/921cde7aaf7e3f756dddc750b66065a8/921cde7aaf7e3f756dddc750b66065a81.gif)
![《微機(jī)原理與接口技術(shù)》教學(xué)課件-第7章_第2頁](http://file4.renrendoc.com/view/921cde7aaf7e3f756dddc750b66065a8/921cde7aaf7e3f756dddc750b66065a82.gif)
![《微機(jī)原理與接口技術(shù)》教學(xué)課件-第7章_第3頁](http://file4.renrendoc.com/view/921cde7aaf7e3f756dddc750b66065a8/921cde7aaf7e3f756dddc750b66065a83.gif)
![《微機(jī)原理與接口技術(shù)》教學(xué)課件-第7章_第4頁](http://file4.renrendoc.com/view/921cde7aaf7e3f756dddc750b66065a8/921cde7aaf7e3f756dddc750b66065a84.gif)
![《微機(jī)原理與接口技術(shù)》教學(xué)課件-第7章_第5頁](http://file4.renrendoc.com/view/921cde7aaf7e3f756dddc750b66065a8/921cde7aaf7e3f756dddc750b66065a85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)第7章微型計(jì)算機(jī)與外設(shè)間的數(shù)據(jù)傳遞第7章目錄CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷控制器8259ADMA控制器8237ACONTENTS3目錄CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷控制器8259ADMA控引子在微型計(jì)算機(jī)系統(tǒng)的工作過程中,大量數(shù)據(jù)要在CPU、存儲器和輸入輸出設(shè)備接口之間進(jìn)行傳送。為保證數(shù)據(jù)在CPU與外設(shè)之間正確、有效地傳送,不同場合下需要采用不同的數(shù)據(jù)傳遞方式。本章主要介紹微型計(jì)算機(jī)與外設(shè)間數(shù)據(jù)傳遞的基本方式,并在此基礎(chǔ)上學(xué)習(xí)中斷控制器8259A和DMA控制器8237A這兩個(gè)專用芯片的使用方法。內(nèi)容提要掌握CPU與外設(shè)間數(shù)據(jù)傳遞的基本方式及其工作原理。掌握中斷控制器8259A的引腳、內(nèi)部結(jié)構(gòu)、工作過程和編程方式。掌握DMA控制器8237A的引腳、內(nèi)部結(jié)構(gòu)和工作方式。4引子在微型計(jì)算機(jī)系統(tǒng)的工作過程中,大量數(shù)據(jù)要在CPU、存儲器7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽程序控制數(shù)據(jù)傳送方式中斷數(shù)據(jù)傳送方式直接存儲器存取方式7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽程序控制數(shù)據(jù)傳送方式中7.1.1程序控制數(shù)據(jù)傳送方式1無條件數(shù)據(jù)傳送無條件數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,無需查詢外設(shè)端口的狀態(tài),直接通過輸入輸出指令(IN或OUT)與外設(shè)進(jìn)行數(shù)據(jù)傳送。因此,在無條件數(shù)據(jù)傳送方式下,外設(shè)必須總是處于準(zhǔn)備好的狀態(tài),即隨時(shí)準(zhǔn)備接收CPU送來的數(shù)據(jù),或者隨時(shí)準(zhǔn)備向CPU提供數(shù)據(jù)。無條件數(shù)據(jù)傳送是最簡單的數(shù)據(jù)傳送方式,主要用于與慢速、簡單外設(shè)間的數(shù)據(jù)傳送。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.1程序控制數(shù)據(jù)傳送方式1無條件數(shù)據(jù)傳送無條件數(shù)據(jù)7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽無條件數(shù)據(jù)傳送工作原理當(dāng)數(shù)據(jù)由輸入設(shè)備向CPU傳送時(shí),指定的端口地址經(jīng)地址總線送至端口譯碼器,和為低電平,和譯碼器輸出值相與后,輸入緩沖器被選通,要輸入的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線D7~D0到達(dá)CPU。當(dāng)數(shù)據(jù)由CPU向輸出設(shè)備傳送時(shí),指定的端口地址經(jīng)地址總線送至端口譯碼器,和為低電平,和譯碼器輸出值相與后,輸出鎖存器被選通,CPU將要輸出的數(shù)據(jù)通過數(shù)據(jù)總線D7~D0送入輸出鎖存器,再輸出至輸出設(shè)備。無條件數(shù)據(jù)傳送所需要的軟件和硬件少,且接口電路和程序簡單,適用于CPU與外設(shè)的各種動(dòng)作時(shí)間固定且已知的情況。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽無條件數(shù)據(jù)傳送工作原理2查詢式數(shù)據(jù)傳送查詢式數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,必須先查詢一下外設(shè)的狀態(tài),確認(rèn)外設(shè)是否準(zhǔn)備好。如果外設(shè)沒有準(zhǔn)備好,則繼續(xù)查詢,直到外設(shè)準(zhǔn)備好后,才進(jìn)行數(shù)據(jù)傳送。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽工作原理是:當(dāng)CPU要求傳送數(shù)據(jù)時(shí),CPU向外設(shè)發(fā)出命令,并讀入外設(shè)的狀態(tài)信息,確認(rèn)外設(shè)準(zhǔn)備好后再執(zhí)行輸入輸出指令。若Ready=0,表示外設(shè)沒有準(zhǔn)備好或外設(shè)處于忙狀態(tài),則繼續(xù)讀入狀態(tài)信息;直到Ready=1時(shí),表示數(shù)據(jù)已經(jīng)準(zhǔn)備就緒,CPU開始執(zhí)行輸入輸出指令。2查詢式數(shù)據(jù)傳送查詢式數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸入設(shè)備準(zhǔn)備好要輸入的數(shù)據(jù)時(shí),首先將數(shù)據(jù)送入鎖存器中,并同時(shí)對D觸發(fā)器觸發(fā),使READY為1,通過數(shù)據(jù)緩沖器后接到CPU的數(shù)據(jù)總線上。查詢式數(shù)據(jù)傳送方式的輸入接口電路7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸入設(shè)備準(zhǔn)備好要輸入7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸出設(shè)備將數(shù)據(jù)輸出后,會發(fā)出一個(gè)信號,使BUSY為0,表示可以執(zhí)行輸出指令。在查詢式數(shù)據(jù)傳送方式下,CPU在傳送數(shù)據(jù)過程中,要不斷查詢外設(shè),并花費(fèi)很多時(shí)間來等待外設(shè)準(zhǔn)備就緒,大大降低了CPU的工作效率。查詢式數(shù)據(jù)傳送方式的輸出接口電路7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸出設(shè)備將數(shù)據(jù)輸出后7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽假設(shè)接口的數(shù)據(jù)輸入端口地址為40H,數(shù)據(jù)輸出端口地址為42H,狀態(tài)端口地址為44H。(1)假定狀態(tài)寄存器中第1位為輸入狀態(tài)標(biāo)志,為1時(shí)表示輸入緩沖器中已經(jīng)有1個(gè)字節(jié)準(zhǔn)備好,可以進(jìn)行輸入;為0時(shí)表示輸入緩沖器處于忙狀態(tài)。(2)假定狀態(tài)寄存器中第0位為輸出狀態(tài)標(biāo)志,為0時(shí)表示輸出緩沖器為空,CPU可以向外設(shè)輸出數(shù)據(jù)。編寫程序,要求:實(shí)現(xiàn)從輸入設(shè)備輸入一串?dāng)?shù)據(jù)到內(nèi)存緩沖區(qū),再將內(nèi)存緩沖區(qū)中數(shù)據(jù)送到輸出端口輸出,串長度為100。例7-17.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽假設(shè)接口的數(shù)據(jù)輸入端口7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽ESEGSEGMENTBUFFERDB100DUP(?) ;定義內(nèi)存緩沖區(qū)ESEGENDSCSEGSEGMENTASSUMEES:ESEG,CS:CSEGSTART:MOVAX,ESEGMOVDS,AXMOVES,AXMOVDI,OFFSETBUFFERMOVCX,100 ;設(shè)置循環(huán)次數(shù)
CLDDATA_IN:INAL,44H ;讀入狀態(tài)信息
TESTAL,02H ;檢測標(biāo)志位寄存器第1位是否為1JZDATA_IN ;標(biāo)志位為0,則數(shù)據(jù)未準(zhǔn)備好,繼續(xù)讀入狀態(tài)信息7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽ESEGSEGME7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽INAL,40H ;數(shù)據(jù)準(zhǔn)備好,可以從數(shù)據(jù)輸入端口讀入數(shù)據(jù)
ANDAL,7FH ;將數(shù)據(jù)存入緩沖區(qū),數(shù)據(jù)位寬為7位
STOSBLOOPDATA_INMOVCX,100DATA_OUT:INAL,44H ;讀入狀態(tài)信息
TESTAL,01H ;檢測標(biāo)志位寄存器第0位是否為1JNZDATA_OUT ;標(biāo)志位為1,則設(shè)備忙,繼續(xù)讀入狀態(tài)信息
LODSB ;設(shè)備空閑,從數(shù)據(jù)輸出端口輸出數(shù)據(jù)
OUT42H,ALLOOPDATA_OUT……CSEGENDSENDSTART7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽INAL,40H7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.2中斷數(shù)據(jù)傳送方式中斷數(shù)據(jù)傳送方式是指在CPU執(zhí)行程序的過程中,當(dāng)外設(shè)要求與CPU進(jìn)行數(shù)據(jù)傳送時(shí),通過I/O端口向CPU發(fā)出中斷請求,使得CPU暫停當(dāng)前正在執(zhí)行的程序,及時(shí)響應(yīng)接口的中斷請求,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。待輸入輸出操作執(zhí)行完畢后,CPU再返回繼續(xù)執(zhí)行原來被中斷的程序。在中斷數(shù)據(jù)傳送方式下,CPU在沒有收到外設(shè)請求時(shí),可以去處理其他事情,避免了CPU把時(shí)間耗費(fèi)在等待、查詢上,CPU與外設(shè)實(shí)現(xiàn)了并行工作,這樣就大大提高了CPU的效率。但是,每次執(zhí)行中斷時(shí),都需要花費(fèi)時(shí)間保護(hù)現(xiàn)場。在這種方式下,CPU可以同時(shí)管理多個(gè)外設(shè),使CPU進(jìn)行多任務(wù)處理。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.2中斷數(shù)據(jù)1中斷相關(guān)概念CPU在執(zhí)行程序的過程中,由于某種事件的發(fā)生,使得CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序(或中斷處理程序),事件處理完后再繼續(xù)執(zhí)行被中斷的程序,這個(gè)過程稱為中斷。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽1中斷相關(guān)概念CPU在執(zhí)行程序的過程中,由于某種事件的發(fā)生,7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽引起中斷的事件稱為中斷源。按照中斷源的不同,中斷分為內(nèi)部中斷和外部中斷。由CPU運(yùn)行程序錯(cuò)誤或執(zhí)行內(nèi)部程序調(diào)用產(chǎn)生的中斷稱為內(nèi)部中斷或軟件中斷。例如,算術(shù)運(yùn)算發(fā)生溢出、執(zhí)行軟件中斷指令等情況都屬于內(nèi)部中斷。由外部設(shè)備通過硬件請求的方式產(chǎn)生的中斷稱為外部中斷或硬件中斷。例如,外設(shè)請求輸入輸出數(shù)據(jù)、硬件時(shí)鐘定時(shí)到、設(shè)備出現(xiàn)故障等情況都屬于外部中斷。外部中斷又分為非屏蔽中斷和可屏蔽中斷。非屏蔽中斷請求信號由CPU的NMI引腳輸入。NMI為邊沿觸發(fā),信號一旦產(chǎn)生,CPU將立即響應(yīng)非屏蔽中斷請求。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽引起中斷的事件稱為中斷7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽可屏蔽中斷請求由CPU的INTR引腳輸入。當(dāng)INTR為高電平時(shí),產(chǎn)生可屏蔽中斷請求信號。這時(shí),CPU可以響應(yīng),也可以不響應(yīng),能否響應(yīng)此中斷請求信號取決于中斷允許標(biāo)志位IF的狀態(tài)。IF為1時(shí),CPU能響應(yīng)可屏蔽中斷請求,稱為開中斷;否則,CPU不能響應(yīng)此中斷請求,稱為關(guān)中斷。IF的值可以通過指令STI和CLI進(jìn)行設(shè)置。8086CPU最多可以處理256個(gè)中斷源,對這些中斷源引起的中斷統(tǒng)一編號為0~255,稱為中斷類型號(或中斷向量號)。每一個(gè)中斷服務(wù)程序在內(nèi)存中都有一個(gè)確定的入口地址,稱為中斷向量。所有的中斷向量按中斷類型號從小到大的順序排列組成一個(gè)列表,稱為中斷向量表。在8086系統(tǒng)中,中斷向量表存放在內(nèi)存中最低地址開始的1KB地址范圍內(nèi)。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽可屏蔽中斷請求由CPU2中斷處理過程7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷請求中斷判優(yōu)中斷響應(yīng)中斷處理中斷返回2中斷處理過程7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷請求7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(1)中斷請求當(dāng)外設(shè)要求與CPU進(jìn)行數(shù)據(jù)傳送時(shí),首先要向CPU發(fā)出一個(gè)中斷請求信號。發(fā)出中斷請求的外設(shè)就是中斷源,8086CPU的INTR和NMI引腳負(fù)責(zé)接收外部中斷請求信號。每個(gè)中斷源都設(shè)置了一個(gè)中斷請求觸發(fā)器,當(dāng)有中斷請求時(shí),該觸發(fā)器被置位;直到CPU對其進(jìn)行響應(yīng)后,該觸發(fā)器被清除。(2)中斷判優(yōu)當(dāng)若干個(gè)中斷源同時(shí)發(fā)出中斷請求信號時(shí),由于CPU每次只能響應(yīng)并處理一個(gè)中斷請求,故系統(tǒng)會自動(dòng)對各中斷源按照中斷優(yōu)先級進(jìn)行排隊(duì),并對優(yōu)先級別最高的中斷請求信號進(jìn)行響應(yīng),處理完后再轉(zhuǎn)去響應(yīng)優(yōu)先級較低的中斷請求,這個(gè)過程被稱為中斷判優(yōu)。評判中斷優(yōu)先級的方法分為軟件判優(yōu)和硬件判優(yōu)兩種。軟件判優(yōu)是指順序查詢多個(gè)中斷請求標(biāo)志位的狀態(tài),查詢的順序決定了優(yōu)先級別的高低,即先查詢的中斷請求優(yōu)先級別最高。硬件判優(yōu)是采用硬件電路來實(shí)現(xiàn)的,可節(jié)省CPU時(shí)間,但成本較高。一般情況下,系統(tǒng)的內(nèi)部中斷優(yōu)先于外部中斷,非屏蔽中斷優(yōu)先于可屏蔽中斷。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(1)中斷請求當(dāng)外設(shè)要7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(3)中斷響應(yīng)CPU在當(dāng)前指令執(zhí)行的最后一個(gè)時(shí)鐘周期采樣中斷請求信號,執(zhí)行完當(dāng)前指令后,判斷是否允許CPU進(jìn)行響應(yīng)。若允許響應(yīng),CPU就中斷當(dāng)前正在運(yùn)行的程序,轉(zhuǎn)向相應(yīng)的中斷處理程序。如果是內(nèi)部中斷或非屏蔽中斷,CPU必須做出響應(yīng),并自動(dòng)獲得中斷服務(wù)程序的入口地址,轉(zhuǎn)去執(zhí)行相應(yīng)子程序;如果是可屏蔽中斷且IF=1,則CPU向中斷源發(fā)出一個(gè)中斷應(yīng)答信號,進(jìn)入中斷響應(yīng)周期。為保證中斷結(jié)束后CPU能返回被中斷的程序繼續(xù)執(zhí)行,硬件會自動(dòng)進(jìn)行斷點(diǎn)保護(hù),即將標(biāo)志寄存器、CS(被中斷程序下一條指令的段地址)和IP(偏移地址)的內(nèi)容壓入堆棧,將標(biāo)志寄存器IF和TF復(fù)位(關(guān)中斷)。不同的中斷源對應(yīng)著不同的中斷服務(wù)程序,CPU可以根據(jù)中斷類型號自動(dòng)計(jì)算出中斷向量的偏移地址(中斷類型號×4),以便從中斷向量表中取出相應(yīng)的中斷向量,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。每個(gè)中斷向量占據(jù)4個(gè)連續(xù)的內(nèi)存單元,前兩個(gè)單元存放中斷服務(wù)程序的偏移地址,后兩個(gè)單元存放中斷服務(wù)程序的段地址,由此確定中斷服務(wù)程序在內(nèi)存中的入口地址。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(3)中斷響應(yīng)CPU在7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(4)中斷處理CPU對中斷請求做出響應(yīng)后,開始執(zhí)行中斷服務(wù)程序。為使中斷服務(wù)程序不破壞主程序中寄存器的內(nèi)容,首先應(yīng)進(jìn)行現(xiàn)場保護(hù),即將中斷服務(wù)程序中要使用到的寄存器的內(nèi)容壓入堆棧,再調(diào)用中斷服務(wù)程序。(5)中斷返回在中斷處理完畢后,要恢復(fù)現(xiàn)場,即將前面保護(hù)起來的寄存器的內(nèi)容從堆棧中彈出。最后執(zhí)行中斷返回指令I(lǐng)RET,將原來程序中被保護(hù)的斷點(diǎn)地址和標(biāo)志寄存器的內(nèi)容,從堆棧中彈出至CS,IP和標(biāo)志寄存器中。這樣,CPU又回到被中斷程序繼續(xù)執(zhí)行。提示可屏蔽中斷的中斷類型號由外部中斷控制邏輯提供,非可屏蔽中斷的中斷類型號是2,內(nèi)部中斷的中斷類型號由指令給出。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(4)中斷處理CPU對7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.3直接存儲器存?。―MA)方式程序控制數(shù)據(jù)傳送方式和中斷數(shù)據(jù)傳送方式都是通過CPU執(zhí)行程序來實(shí)現(xiàn)數(shù)據(jù)傳送的,過程中取指令、執(zhí)行指令、斷點(diǎn)保護(hù)、斷點(diǎn)恢復(fù)等都要花費(fèi)CPU的時(shí)間。DMA(DirectMemoryAccess)方式是指在內(nèi)存和外設(shè)之間傳送數(shù)據(jù)時(shí),不需要CPU干預(yù),而是通過DMA控制器對系統(tǒng)總線進(jìn)行控制,實(shí)現(xiàn)數(shù)據(jù)在內(nèi)存與外設(shè)之間的傳送,從而大大提高了數(shù)據(jù)傳送速度。DMA方式常用于傳送速度快、數(shù)據(jù)量大的系統(tǒng)中。DMA方式的工作原理7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.3直接存儲7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽①外設(shè)向DMA控制器發(fā)出DMA傳送請求信號DRQ。②
DMA控制器接收到請求信號后,向CPU發(fā)出總線請求信號HOLD。③
CPU在完成當(dāng)前總線周期后,向DMA控制器發(fā)出總線響應(yīng)信號HLDA,將總線使用權(quán)交給DMA控制器。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽①外設(shè)向DMA控制器發(fā)7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽④DMA控制器向外設(shè)發(fā)出DMA響應(yīng)信號DACK。⑤DMA控制器開始控制總線,向地址總線發(fā)送將要傳送數(shù)據(jù)的存儲器地址信號,并向系統(tǒng)發(fā)出讀寫控制信號;數(shù)據(jù)傳送過程中,修改地址寄存器中的內(nèi)容,記錄傳送字節(jié)數(shù),為下一字節(jié)的傳送做準(zhǔn)備。⑥下一字節(jié)傳送時(shí),重復(fù)上一步操作,直到傳送字節(jié)數(shù)為0,數(shù)據(jù)傳送完畢,DMA控制器撤銷HOLD信號和HLDA信號,CPU重新獲得總線使用權(quán),繼續(xù)執(zhí)行指令。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽④DMA控制器向外設(shè)7.2中斷控制器8259A當(dāng)前用于中斷優(yōu)先級管理的最常用的方法是采用中斷控制器。8259A是一種功能很強(qiáng)、使用方便靈活的可編程中斷控制器(ProgrammableInterruptController),常用于中斷優(yōu)先級的控制。它具有強(qiáng)大的中斷管理功能,主要體現(xiàn)在以下幾個(gè)方面:可實(shí)現(xiàn)對8個(gè)中斷源的優(yōu)先級控制。通過級聯(lián)可擴(kuò)展至對64個(gè)中斷源實(shí)現(xiàn)優(yōu)先級控制。每一級中斷都可以被屏蔽或被允許。可根據(jù)中斷源向系統(tǒng)提供不同的中斷類型號。可通過編程設(shè)置不同的工作方式。7.2中斷控制器8259A當(dāng)前用于中斷優(yōu)先級管理的最常用7.2.18259A的引腳及功能8259A是具有28條引腳的雙列直插式芯片。片選信號,低電平有效。該信號為低電平時(shí),表示該芯片被選中,允許CPU對該芯片進(jìn)行訪問。寫信號,低電平有效。該信號為低電平時(shí),允許CPU將數(shù)據(jù)寫入芯片。讀信號,低電平有效。該信號有效時(shí),允許數(shù)據(jù)從芯片讀至CPU。7.2中斷控制器8259A7.2.18259A的引腳及功能8259A是具有28條引中斷請求輸出信號,用于向CPU發(fā)出中斷請求,高電平有效。此引腳直接與CPU的INTR引腳連接。中斷響應(yīng)信號,用于接收CPU發(fā)來的中斷響應(yīng)信號,低電平有效。此引腳直接與CPU的
引腳連接。中斷請求輸入端,用于接收從外設(shè)發(fā)來的中斷請求信號,高電平或上升沿有效。內(nèi)部寄存器選擇信號,用于對芯片內(nèi)部的兩組可編程寄存器進(jìn)行選擇。7.2中斷控制器8259A中斷請求輸出信號,用于向CPU發(fā)出中斷請求,高電平有效。此引7.2.28259A的內(nèi)部結(jié)構(gòu)8259A內(nèi)部結(jié)構(gòu)圖(1)中斷請求寄存器(InterruptRequestRegister,IRR)8位寄存器,用來保存從外設(shè)發(fā)來的中斷請求信號IR0~I(xiàn)R7。如果某一個(gè)中斷請求信號為高電平,則IRR的相應(yīng)位置為1。7.2中斷控制器8259A7.2.28259A的內(nèi)部結(jié)構(gòu)8259A內(nèi)部結(jié)構(gòu)圖(1)(2)優(yōu)先級分析器(PriorityResolver,PR)用來識別各中斷請求信號的優(yōu)先級別。當(dāng)多個(gè)中斷請求信號同時(shí)出現(xiàn)時(shí),由PR判斷哪一個(gè)信號的優(yōu)先級別最高,CPU將首先響應(yīng)優(yōu)先級別最高的中斷請求。如果新出現(xiàn)的中斷請求比當(dāng)前正在處理的中斷具有更高的優(yōu)先級,則進(jìn)入多重中斷處理。(3)中斷服務(wù)寄存器(InterruptServiceRegister,ISR)8位寄存器,用來記錄正在處理中的中斷請求。在收到第一個(gè)中斷響應(yīng)信號
時(shí),根據(jù)優(yōu)先級分析器的判斷結(jié)果,將具有最高優(yōu)先級的中斷請求信號的ISR的相應(yīng)位置為1,表示該請求正在被服務(wù)。當(dāng)它被服務(wù)完畢,將ISR的相應(yīng)位清0。當(dāng)某個(gè)中斷請求尚未服務(wù)完而中途被更高優(yōu)先級的中斷請求中斷時(shí),會有多個(gè)ISR位為1,形成多重中斷。7.2中斷控制器8259A(2)優(yōu)先級分析器(PriorityResolver,PR(4)中斷屏蔽寄存器(InterruptMaskRegister,IMR)8位寄存器,用來保存中斷請求的屏蔽信號。每個(gè)中斷請求都設(shè)置了一個(gè)屏蔽位,它們之間是相互獨(dú)立的。如果IMR的某位被置為1,則與之對應(yīng)的中斷請求被屏蔽,該請求不能進(jìn)入下一級的優(yōu)先級分析器,但不會影響其他沒有被屏蔽的中斷請求。(5)數(shù)據(jù)總線緩沖器8位雙向三態(tài)緩沖器,與CPU數(shù)據(jù)總線相連,用來接收CPU發(fā)來的控制命令字,或者向CPU發(fā)送中斷向量號和狀態(tài)信息。7.2中斷控制器8259A(4)中斷屏蔽寄存器(InterruptMaskRegi(6)控制邏輯用來向CPU發(fā)送中斷請求信號INT和接收CPU發(fā)送來的中斷響應(yīng)信號
。它包括4個(gè)初始化控制寄存器ICW1~I(xiàn)CW4和3個(gè)操作控制寄存器OCW1~OCW3。(7)讀/寫邏輯用來接收來自CPU的讀/寫命令,其操作過程由
,
,
和A0共同控制完成。(8)級聯(lián)緩沖/比較器用來實(shí)現(xiàn)多片8259A的級聯(lián)。級聯(lián)時(shí),一片8259A作為主控制器,IR7~I(xiàn)R0的每一個(gè)中斷輸入端都可以連接一片8259A作為從控制器,所以系統(tǒng)總共可以連接9片8259A,最多能處理64個(gè)中斷請求輸入信號。7.2中斷控制器8259A(6)控制邏輯用來向CPU發(fā)送中斷請求信號INT和接收CPU7.2.38259A的中斷響應(yīng)過程
①當(dāng)某中斷請求IRi有效時(shí),中斷請求寄存器IRR的相應(yīng)位置1。②若中斷屏蔽寄存器IMR中的相應(yīng)位為0,則該中斷請求信號送入優(yōu)先級分析器PR;否則被屏蔽掉。如果此時(shí)沒有正在處理的中斷請求,這次中斷請求使得8259A的INT端輸出高電平,向CPU發(fā)出中斷請求;否則,由PR對新的中斷請求和正在處理的中斷進(jìn)行比較,從而決定哪一個(gè)優(yōu)先級更高。7.2中斷控制器8259A7.2.38259A的中斷響應(yīng)過程①當(dāng)某中斷請求IRi
③CPU進(jìn)入中斷響應(yīng)周期,發(fā)出兩個(gè)中斷響應(yīng)信號
。8259A接收到第一個(gè)
后,使IRR的鎖存功能失效,將中斷服務(wù)寄存器ISR中相應(yīng)位置1,將IRR中的對應(yīng)位清0。④8259A接收到第二個(gè)
后,將相應(yīng)的中斷類型號送到數(shù)據(jù)總線上,恢復(fù)IRR的鎖存功能。⑤中斷響應(yīng)周期結(jié)束后,發(fā)出中斷結(jié)束命令,使相應(yīng)的ISR復(fù)位。7.2中斷控制器8259A③CPU進(jìn)入中斷響應(yīng)周期,發(fā)出兩個(gè)中斷響應(yīng)信號7.2.48259A的初始化編程8259A內(nèi)部有兩組可編程寄存器,一組為4個(gè)初始化控制寄存器,用于存放CPU寫入的初始化命令字ICW1~I(xiàn)CW4;另一組為3個(gè)操作控制寄存器,用于存放CPU寫入的操作命令字OCW1~OCW3。系統(tǒng)在正式工作前,需要先由初始化程序?qū)懭氤跏济钭諭CW1~I(xiàn)CW4,然后再對它的工作方式進(jìn)行設(shè)置。7.2中斷控制器8259A1初始化命令字由于8259A僅使用兩個(gè)端口地址,其中,ICW1使用A0=0的端口,ICW2~I(xiàn)CW4使用A0=1的端口。因此,在進(jìn)行初始化編程時(shí),先寫入ICW1,其他初始化命令字必須按照一定的順序?qū)懭搿3跏蓟钭忠坏懭?,在系統(tǒng)工作過程中就不再改變。8259A的初始化流程圖7.2.48259A的初始化編程8259A內(nèi)部有兩組可編(1)ICW1ICW1用于啟動(dòng)8259A的初始化過程。7.2中斷控制器8259A在8086/8088系統(tǒng)中,此3位無意義,通常設(shè)置為0。ICW1的特征標(biāo)志位,總是設(shè)置為1。設(shè)置中斷請求輸入端IRi的觸發(fā)方式。如果LTIM=1,則中斷請求為電平觸發(fā)方式;如果LTIM=0,則中斷請求為邊沿觸發(fā)方式。。在8080/8085系統(tǒng)中,用于設(shè)置調(diào)用地址間隔。如果ADI=1,則調(diào)用地址間隔為4;如果ADI=0,則調(diào)用地址間隔為8。在8086/8088系統(tǒng)中,該位無效。在8080/8085系統(tǒng)中,用于設(shè)置調(diào)用地址間隔。如果ADI=1,則調(diào)用地址間隔為4;如果ADI=0,則調(diào)用地址間隔為8。在8086/8088系統(tǒng)中,該位無效。指示是否需要初始化ICW4。如果IC4=1,則需要初始化ICW4;如果IC4=0,則不需要初始化ICW4。(1)ICW1ICW1用于啟動(dòng)8259A的初始化過程。7.2提示電平觸發(fā)方式是指中斷請求輸入端IRi出現(xiàn)高電平時(shí)信號有效,表示發(fā)出了中斷請求。上升沿觸發(fā)方式是指中斷請求輸入端IRi由低電平跳變到高電平時(shí)信號有效,表示發(fā)出了中斷請求。7.2中斷控制器8259A提示電平觸發(fā)方式是指中斷請求輸入端IRi出現(xiàn)高電平時(shí)信號有效(2)ICW2ICW2用于設(shè)置中斷類型號。7.2中斷控制器8259A中斷類型號的高5位。中斷類型號的低3位,自動(dòng)填入根據(jù)中斷源IRi下標(biāo)生成的3位二進(jìn)制編碼。(2)ICW2ICW2用于設(shè)置中斷類型號。7.2中斷控制提示8259A為8個(gè)中斷源分配了8位的中斷類型號,其中,中斷類型號的高5位都是相同的。7.2中斷控制器8259A提示8259A為8個(gè)中斷源分配了8位的中斷類型號,其中,中斷主片ICW3的格式(3)ICW3ICW3用于多片8259A的級聯(lián),只有在ICW1中的SNGL=0時(shí)才進(jìn)行設(shè)置。在級聯(lián)系統(tǒng)中,主片和從片都必須設(shè)置ICW3。7.2中斷控制器8259A分別與IR7~I(xiàn)R0對應(yīng)。如果Di=1,則對應(yīng)的IRi端連有從片8259A;如果Di=0,則對應(yīng)的IRi端不接從片。主片ICW3的格式(3)ICW3ICW3用于多片8259A的7.2中斷控制器8259A從片ICW3的格式未用,通常設(shè)置為0。示從片接到主片的哪個(gè)IR,對應(yīng)著IRi的下標(biāo)號的3位二進(jìn)制編碼。7.2中斷控制器8259A從片ICW3的格式未用,通常設(shè)(4)ICW4ICW4用于設(shè)定8259A的工作方式。7.2中斷控制器8259A未用,通常設(shè)置為0。設(shè)置嵌套方式。SFNM=1表示設(shè)置為特殊全嵌套方式;SFNM=0表示設(shè)置為一般全嵌套方式。設(shè)置緩沖方式。BUF=1為緩沖方式;BUF=0為非緩沖方式。設(shè)置在緩沖方式下本片是主片還是從片,只在BUF=1時(shí)有效。M/S=1時(shí)本片為主片;M/S=0時(shí)本片為從片。設(shè)置中斷結(jié)束方式。如果AEOI=1,則設(shè)置為自動(dòng)中斷結(jié)束方式;如果AEOI=0,則設(shè)置為非自動(dòng)中斷結(jié)束方式。設(shè)置CPU模式。μPM=1為8086/8088模式;μPM=0為8080/8085模式。(4)ICW4ICW4用于設(shè)定8259A的工作方式。7.2提示特殊全嵌套方式是指在執(zhí)行中斷處理程序時(shí),允許同級或更高優(yōu)先級的中斷源中斷當(dāng)前的中斷處理程序。特殊全嵌套方式一般適用于8259A級聯(lián)系統(tǒng)的主片。一般全嵌套方式是指在執(zhí)行中斷處理程序時(shí),只允許更高優(yōu)先級的中斷源中斷當(dāng)前的中斷處理程序。7.2中斷控制器8259A提示緩沖方式適用于多片8259A級聯(lián)的大系統(tǒng)。在緩沖方式下,每片8259A通過總線驅(qū)動(dòng)緩沖器與數(shù)據(jù)總線相連。其中,主片的端輸出低電平信號,作為緩沖器的允許信號;從片的端接地。提示特殊全嵌套方式是指在執(zhí)行中斷處理程序時(shí),允許同級或更高優(yōu)提示8259A提供了以下3種中斷結(jié)束方式:自動(dòng)中斷結(jié)束方式:是指某一中斷請求被處理后,自動(dòng)使ISR中的對應(yīng)位清0。一般中斷結(jié)束方式:是指通過在中斷服務(wù)子程序中編程寫入操作命令字OCW2,向8259A傳送一個(gè)一般中斷結(jié)束命令,使ISR中當(dāng)前優(yōu)先級最高位復(fù)位。特殊中斷結(jié)束方式:是指通過在中斷服務(wù)子程序中編程寫入操作命令字OCW2,向8259A傳送一個(gè)一般中斷結(jié)束命令,使ISR的指定位復(fù)位。一般中斷結(jié)束方式和特殊中斷結(jié)束方式屬于非自動(dòng)中斷結(jié)束方式。7.2中斷控制器8259A提示8259A提供了以下3種中斷結(jié)束方式:7.2中斷控制7.2中斷控制器8259A2操作命令字在對8259A進(jìn)行初始化后,可通過寫入操作命令字來設(shè)置對8259A的操作。操作命令字沒有嚴(yán)格的寫入順序。其中,OCW1必須寫入A0=1的端口,OCW2和OCW3寫入A0=0的端口。(1)OCW1D7(M7)~D0(M0):分別與IR7~I(xiàn)R0對應(yīng),如果Mi=1,則對應(yīng)的中斷源IRi被屏蔽,即不允許中斷;如果Mi=0,則允許該IRi中斷。OCW1的各位與中斷屏蔽寄存器IMR的各位相對應(yīng),用于設(shè)置對8259A的中斷屏蔽操作。7.2中斷控制器8259A2操作命令字在對8259A進(jìn)行(2)OCW2OCW2用于設(shè)置中斷優(yōu)先級方式和中斷結(jié)束方式。7.2中斷控制器8259A設(shè)置中斷優(yōu)先級方式。如果R=1,則設(shè)置為循環(huán)優(yōu)先級方式;如果R=0,則設(shè)置為固定優(yōu)先級方式。提示循環(huán)優(yōu)先級方式是指中斷源輪流處于最高優(yōu)先級,即某個(gè)中斷請求被處理后,其優(yōu)先級降為最低,原來比它低一級的中斷請求的優(yōu)先級上升為最高。固定優(yōu)先級方式是指所有中斷請求的中斷優(yōu)先級固定不變。(2)OCW2OCW2用于設(shè)置中斷優(yōu)先級方式和中斷結(jié)束方式。7.2中斷控制器8259A控制L2~L0是否有效。如果SL=1,則L2~L0定義有效;如果SL=0,則L2~L0定義無效。設(shè)置中斷結(jié)束方式,只有在ICW4中的AEOI=0時(shí)使用。如果EOI=1,則在中斷服務(wù)子程序結(jié)束時(shí)向8259A發(fā)出中斷結(jié)束命令EOI,將當(dāng)前中斷服務(wù)寄存器中最高優(yōu)先權(quán)位復(fù)位;如果EOI=0,則不發(fā)出中斷結(jié)束命令EOI。7.2中斷控制器8259A控制L2~L0是否有效。如果S7.2中斷控制器8259AR,SL和EOI的命令編碼7.2中斷控制器8259AR,SL和EOI的命令編碼7.2中斷控制器8259AOCW2的標(biāo)志位,這兩位總是設(shè)置為0。中斷源編碼,在特殊循環(huán)優(yōu)先級方式下指明IRi的最低優(yōu)先級。7.2中斷控制器8259AOCW2的標(biāo)志位,這兩位總是設(shè)(3)OCW3OCW3用于設(shè)置查詢方式和特殊屏蔽方式,以及讀取寄存器的狀態(tài)。7.2中斷控制器8259A未定義,通常設(shè)置為0。設(shè)置特殊屏蔽方式。當(dāng)ESMM=1,SMM=1時(shí),允許特殊屏蔽方式;當(dāng)ESMM=1,SMM=0時(shí),不允許特殊屏蔽方式;當(dāng)ESMM=0時(shí),無效。提示特殊屏蔽方式是指在執(zhí)行較高級的中斷時(shí),允許未被屏蔽的較低優(yōu)先級的中斷源中斷當(dāng)前的中斷處理程序。(3)OCW3OCW3用于設(shè)置查詢方式和特殊屏蔽方式,以及讀7.2中斷控制器8259AOCW3的標(biāo)志位,總是設(shè)置為0和1。設(shè)置查詢方式。如果P=1,則設(shè)置為查詢方式;如果P=0,則設(shè)置為非查詢方式。設(shè)置讀IRR或ISR命令。當(dāng)RR=1,RIS=0時(shí),讀取IRR命令;當(dāng)RR=1,RIS=1時(shí),讀取ISR命令;當(dāng)RR=0時(shí),無效。7.2中斷控制器8259AOCW3的標(biāo)志位,總是設(shè)置為07.2中斷控制器8259A某微機(jī)系統(tǒng)使用單片8259A管理中斷,接口地址為20H和21H,中斷為上升沿觸發(fā),與IR0~I(xiàn)R3對應(yīng)的中斷類型號為08H~0BH,IR4~I(xiàn)R7不使用。根據(jù)要求編寫8259A的初始化程序。MOVDX,20HMOVAL,12H ;上升沿觸發(fā),單片不寫ICW4,ICW1=00010010=12HOUTDX,AL ;A0=0,寫ICW1MOVDX,21HMOVAL,08H ;設(shè)置中斷類型號08HOUTDX,AL ;A0=1,寫ICW2MOVAL,0F0H ;屏蔽IR4~I(xiàn)R7,OCW1=11110000=0F0HOUTDX,AL ;寫OCW1例7-27.2中斷控制器8259A某微機(jī)系統(tǒng)使用單片8259A管7.2.58259A的連接7.2中斷控制器8259A8259A的電路連接圖7.2.58259A的連接7.2中斷控制器8259A7.2中斷控制器8259A8259A的級聯(lián)連接圖在一個(gè)系統(tǒng)中,最多可以有9個(gè)8259A與CPU相連,其中有一個(gè)為主片,其余的為從片。主片上的CAS0,CAS1,CAS2作為輸出線,分別與每一個(gè)從片的CAS0,CAS1,CAS2相連;主片的INT端連至CPU的中斷請求輸入端,每一個(gè)從片的INT端連至主片的一個(gè)中斷請求輸入端。7.2中斷控制器8259A8259A的級聯(lián)連接圖在一個(gè)系7.2中斷控制器8259A8259A的訪問控制通過
有效信號選中8259A,再利用
,
,A0和命令字中的D3,D4標(biāo)志位,可對其內(nèi)部寄存器進(jìn)行訪問控制。7.2中斷控制器8259A8259A的訪問控制通過7.3.18237A的引腳及功能8237A是具有40條引腳的雙列直插式芯片。7.3DMA控制器8237ADMA控制器8237A是一種高性能的可編程芯片,其內(nèi)部有4個(gè)獨(dú)立的DMA通道,每個(gè)通道都有64KB的尋址能力,具有不同的優(yōu)先級,都可以分別被允許和被禁止。多片8237A可以用級聯(lián)的方法擴(kuò)展DMA通道數(shù)。8237A引腳圖7.3.18237A的引腳及功能8237A是具有40條引雙向三態(tài)I/O讀控制信號。在DMA空閑時(shí),此信號為輸入控制信號,CPU利用它讀取8237A內(nèi)部寄存器的狀態(tài);在DMA傳送數(shù)據(jù)時(shí),此信號為輸出控制信號,控制數(shù)據(jù)由外設(shè)輸入至存儲器。雙向三態(tài)I/O寫控制信號。在DMA空閑時(shí),此信號為輸入控制信號,CPU利用它實(shí)現(xiàn)對8237A的寫入;在DMA傳送數(shù)據(jù)時(shí),此信號為輸出控制信號,控制數(shù)據(jù)由存儲器輸出至外設(shè)。三態(tài)輸出的存儲器讀控制信號。在DMA傳送數(shù)據(jù)時(shí),與信號配合,控制存儲器的讀操作。7.3DMA控制器8237A雙向三態(tài)I/O讀控制信號。在DMA空閑時(shí),此信號為輸入控制信三態(tài)輸出的存儲器寫控制信號。在DMA傳送數(shù)據(jù)時(shí),與信號配合,控制存儲器的寫操作。準(zhǔn)備就緒信號輸入端,高電平有效,與CPU上的READY信號類似。此信號為低電平時(shí),將在DMA傳送過程中插入時(shí)鐘周期SW,直到此信號為高電平才進(jìn)入下一個(gè)時(shí)鐘周期。復(fù)位信號輸入端,高電平有效。該信號有效時(shí),將清除命令、狀態(tài)寄存器,并使屏蔽寄存器復(fù)位。復(fù)位后,8237A處于空閑周期。7.3DMA控制器8237A三態(tài)輸出的存儲器寫控制信號。在DMA傳送數(shù)據(jù)時(shí),與信號配合時(shí)鐘輸入信號,用來控制8237A的內(nèi)部操作和DMA的數(shù)據(jù)傳輸速率。地址允許信號,輸出信號,高電平有效。在DMA傳送數(shù)據(jù)時(shí),將DMA傳送的地址送到系統(tǒng)的地址總線上,并屏蔽其他系統(tǒng)總線驅(qū)動(dòng)器。地址選通信號,輸出信號,高電平有效。在DMA傳送數(shù)據(jù)時(shí),此信號用來鎖存DB0~DB7上輸出的高8位地址。7.3DMA控制器8237A時(shí)鐘輸入信號,用來控制8237A的內(nèi)部操作和DMA的數(shù)據(jù)傳輸片選信號,輸入信號,用于對8237A的尋址,低電平有效。DMA請求信號,對應(yīng)4個(gè)DMA通道的輸入信號。當(dāng)某個(gè)通道要求DMA傳送時(shí),就使相應(yīng)的DREQ信號變?yōu)橛行?。DREQ信號的優(yōu)先級可編程指定。在固定優(yōu)先級情況下,DREQ0優(yōu)先級最高,DREQ3優(yōu)先級最低。DREQ信號在產(chǎn)生有效的響應(yīng)信號DACK之前必須保持有效。7.3DMA控制器8237A過程結(jié)束信號,雙向,低電平有效。該信號有效時(shí),當(dāng)前的DMA傳送終止,使請求復(fù)位,并根據(jù)編程而做相應(yīng)的操作。當(dāng)引腳不用時(shí),應(yīng)與數(shù)千歐姆的電阻相連后接到高電平上,防止輸入干擾而引起誤操作。片選信號,輸入信號,用于對8237A的尋址,低電平有效。DMDMA響應(yīng)信號,對應(yīng)4個(gè)DMA通道的輸出信號。8237A接收到DMA請求信號,通過DACK信號通知外設(shè)該請求已被批準(zhǔn)。準(zhǔn)備就緒信號輸入端,高電平有效,與CPU上的READY信號類似。此信號為低電平時(shí),將在DMA傳送過程中插入時(shí)鐘周期SW,直到此信號為高電平才進(jìn)入下一個(gè)時(shí)鐘周期。復(fù)位信號輸入端,高電平有效。該信號有效時(shí),將清除命令、狀態(tài)寄存器,并使屏蔽寄存器復(fù)位。復(fù)位后,8237A處于空閑周期。7.3DMA控制器8237ADMA響應(yīng)信號,對應(yīng)4個(gè)DMA通道的輸出信號。8237A接收時(shí)鐘輸入信號,用來控制8237A的內(nèi)部操作和DMA的數(shù)據(jù)傳輸速率。地址允許信號,輸出信號,高電平有效。在DMA傳送數(shù)據(jù)時(shí),將DMA傳送的地址送到系統(tǒng)的地址總線上,并屏蔽其他系統(tǒng)總線驅(qū)動(dòng)器。地址選通信號,輸出信號,高電平有效。在DMA傳送數(shù)據(jù)時(shí),此信號用來鎖存DB0~DB7上輸出的高8位地址。7.3DMA控制器8237A時(shí)鐘輸入信號,用來控制8237A的內(nèi)部操作和DMA的數(shù)據(jù)傳輸片選信號,輸入信號,用于對8237A的尋址,低電平有效。DMA請求信號,對應(yīng)4個(gè)DMA通道的輸入信號。當(dāng)某個(gè)通道要求DMA傳送時(shí),就使相應(yīng)的DREQ信號變?yōu)橛行АREQ信號的優(yōu)先級可編程指定。在固定優(yōu)先級情況下,DREQ0優(yōu)先級最高,DREQ3優(yōu)先級最低。DREQ信號在產(chǎn)生有效的響應(yīng)信號DACK之前必須保持有效。7.3DMA控制器8237A過程結(jié)束信號,雙向,低電平有效。該信號有效時(shí),當(dāng)前的DMA傳送終止,使請求復(fù)位,并根據(jù)編程而做相應(yīng)的操作。當(dāng)引腳不用時(shí),應(yīng)與數(shù)千歐姆的電阻相連后接到高電平上,防止輸入干擾而引起誤操作。片選信號,輸入信號,用于對8237A的尋址,低電平有效。DMDMA響應(yīng)信號,對應(yīng)4個(gè)DMA通道的輸出信號。8237A接收到DMA請求信號,通過DACK信號通知外設(shè)該請求已被批準(zhǔn)??偩€請求信號,用于向CPU輸出控制總線的DMA請求信號,高電平有效??偩€響應(yīng)信號,是CPU對HRQ信號做出響應(yīng)時(shí)產(chǎn)生的信號,高電平有效。8237A接收到該信號表示芯片獲得系統(tǒng)總線的控制權(quán),開始DMA傳送。7.3DMA控制器8237ADMA響應(yīng)信號,對應(yīng)4個(gè)DMA通道的輸出信號。8237A接收雙向三態(tài)地址線。在空閑周期時(shí),這些引腳作為輸入線,用于選擇8237A內(nèi)部各寄存器。在DMA傳送數(shù)據(jù)時(shí),這些引腳用于輸出要訪問的存儲單元的低4位地址。三態(tài)地址輸出線,在DMA傳送數(shù)據(jù)時(shí),用于輸出要訪問的存儲單元地址低8位中的高4位。7.3DMA控制器8237A雙向三態(tài)數(shù)據(jù)總線,與系統(tǒng)的數(shù)據(jù)總線相連。在CPU控制總線時(shí),這些引腳可用于讀取8237A內(nèi)部寄存器的數(shù)據(jù),也可以對此芯片編程。在DMA傳送數(shù)據(jù)時(shí),這些引腳用于輸出高8位地址,并利用ADSTB信號鎖存該地址信號。在進(jìn)行存儲器到存儲器傳送時(shí),存儲器中要傳送的數(shù)據(jù)通過這些引腳先送入8237A內(nèi)部暫存器中,然后才送至要寫入的存儲器中。雙向三態(tài)地址線。在空閑周期時(shí),這些引腳作為輸入線,用于選擇87.3.28237A內(nèi)部功能結(jié)構(gòu)8237A有4個(gè)獨(dú)立的DMA通道,分別稱為通道0、通道1、通道2和通道3,它們可分別進(jìn)行編程控制響應(yīng)外部DMA請求,完成DMA傳送。每個(gè)通道的結(jié)構(gòu)是相同的,由兩個(gè)地址寄存器、兩個(gè)字節(jié)數(shù)寄存器、一個(gè)方式寄存器、一個(gè)請求寄存器和一個(gè)DMA屏蔽寄存器組成。4個(gè)通道有3個(gè)公用的寄存器,分別是:一個(gè)控制寄存器、一個(gè)狀態(tài)寄存器和一個(gè)暫存寄存器。7.3DMA控制器8237A8237A內(nèi)部結(jié)構(gòu)框圖7.3.28237A內(nèi)部功能結(jié)構(gòu)8237A有4個(gè)獨(dú)立的D7.3DMA控制器8237A控制寄存器(1)控制寄存器8位控制寄存器,用來存放8237A的編程命令字,用于控制芯片的工作。7.3DMA控制器8237A控制寄存器(1)控制寄存器87.3DMA控制器8237A(2)狀態(tài)寄存器8位狀態(tài)寄存器,用來存放各通道的狀態(tài),可供CPU讀取。其中,低4位反映在讀命令瞬間每個(gè)通道的字節(jié)數(shù)是否已減為0(即停止計(jì)數(shù));高4位反映每個(gè)通道是否有DMA請求。狀態(tài)寄存器7.3DMA控制器8237A(2)狀態(tài)寄存器8位狀態(tài)寄存7.3DMA控制器8237A(3)暫存寄存器8位暫存寄存器,在存儲器到存儲器數(shù)據(jù)傳送方式下,用于暫時(shí)存放要傳送的數(shù)據(jù)。傳送完成時(shí)保留傳送的最后一個(gè)字節(jié),它可由CPU讀取,接收到RESET信號后使之復(fù)位。(4)基地址寄存器16位基地址寄存器,用于存放相應(yīng)通道地址寄存器的初始值。初始化時(shí),其內(nèi)容由CPU寫入,同時(shí)此值也寫入地址寄存器中。在自動(dòng)初始化方式下,其內(nèi)容被自動(dòng)寫入地址寄存器。(5)地址寄存器16位地址寄存器,用于存放DMA傳送期間的當(dāng)前地址,每次傳送完后其值自動(dòng)加1或減1。其內(nèi)容可由CPU讀出和寫入。在自動(dòng)初始化方式下,地址寄存器自動(dòng)恢復(fù)到初始值。7.3DMA控制器8237A(3)暫存寄存器8位暫存寄存7.3DMA控制器8237A(6)基字節(jié)數(shù)寄存器16位基字節(jié)數(shù)寄存器,用于存放相應(yīng)通道字節(jié)數(shù)寄存器的初始值。初始化時(shí),其內(nèi)容由CPU寫入,同時(shí)此值也寫入字節(jié)數(shù)寄存器中。在自動(dòng)初始化方式下,其內(nèi)容被自動(dòng)寫入字節(jié)數(shù)寄存器。(7)字節(jié)數(shù)寄存器16位字節(jié)數(shù)寄存器,用于存放當(dāng)前字節(jié)數(shù)。每次傳送完后其值自動(dòng)減1,當(dāng)減至0時(shí),產(chǎn)生結(jié)束信號,字節(jié)數(shù)寄存器恢復(fù)到初始值。其內(nèi)容可由CPU讀出和寫入。7.3DMA控制器8237A(6)基字節(jié)數(shù)寄存器16位基7.3DMA控制器8237A(8)方式寄存器8位方式寄存器,用于指定相應(yīng)通道的工作方式。方式寄存器7.3DMA控制器8237A(8)方式寄存器8位方式寄存7.3DMA控制器8237A(9)請求寄存器4位請求寄存器,其中每一位對應(yīng)一個(gè)通道的請求位。若DREQ端有請求信號,則使其相應(yīng)位置1。也可以向請求寄存器中寫入請求信號。若端為有效低電平,則請求寄存器各位清0。請求寄存器7.3DMA控制器8237A(9)請求寄存器4位請求寄存7.3DMA控制器8237A(10)屏蔽寄存器4位屏蔽寄存器,其中每一位對應(yīng)一個(gè)通道的DMA請求屏蔽位。若某位為1,則對應(yīng)通道的請求被禁止??梢允褂玫?位來選擇通道,也可以使用低4位對應(yīng)設(shè)置4個(gè)通道。若某通道為非自動(dòng)初始化方式,端為有效低電平,則相應(yīng)的屏蔽位置1。RESET信號之后,屏蔽寄存器各位均置1。屏蔽寄存器7.3DMA控制器8237A(10)屏蔽寄存器4位屏蔽寄7.3DMA控制器8237A8237A內(nèi)部共占用16個(gè)I/O端口地址,由地址線A3~A0對各寄存器進(jìn)行尋址。A3A2A1A0寄存器0000寫通道0基地址寄存器和地址寄存器讀通道0地址寄存器0001寫通道0基字節(jié)數(shù)寄存器和字節(jié)數(shù)寄存器讀通道0字節(jié)數(shù)寄存器0010寫通道1基地址寄存器和地址寄存器讀通道1地址寄存器0011寫通道1基字節(jié)數(shù)寄存器和字節(jié)數(shù)寄存器讀通道1字節(jié)數(shù)寄存器0100寫通道2基地址寄存器和地址寄存器讀通道2地址寄存器0101寫通道2基字節(jié)數(shù)寄存器和字節(jié)數(shù)寄存器讀通道2字節(jié)數(shù)寄存器0110寫通道3基地址寄存器和地址寄存器讀通道3地址寄存器0111寫通道3基字節(jié)數(shù)寄存器和字節(jié)數(shù)寄存器讀通道3字節(jié)數(shù)寄存器1000寫控制寄存器,讀狀態(tài)寄存器1001寫DMA請求標(biāo)志寄存器1010寫DMA屏蔽標(biāo)志寄存器1011寫方式寄存器1100清除高/低觸發(fā)器1101讀暫存寄存器,發(fā)復(fù)位命令1110清除屏蔽寄存器1111寫屏蔽寄存器7.3DMA控制器8237A8237A內(nèi)部共占用16個(gè)I注意基地址寄存器和地址寄存器共用一個(gè)端口地址,基字節(jié)數(shù)寄存器和字節(jié)數(shù)寄存器共用另一個(gè)端口地址。7.3DMA控制器8237A注意基地址寄存器和地址寄存器共用一個(gè)端口地址,基字節(jié)數(shù)寄存器7.3.38237A的工作方式7.3DMA控制器8237A單字節(jié)傳送方式在這種工作方式下,8237A每次只傳送一個(gè)字節(jié)。每個(gè)字節(jié)傳送完后,DREQ變?yōu)闊o效,HRQ變?yōu)闊o效,8237A釋放系統(tǒng)總線,CPU獲得總線控制權(quán)。當(dāng)產(chǎn)生下一個(gè)DREQ信號時(shí),重新申請系統(tǒng)總線。塊傳送方式在這種工作方式下,8237A獲得總線控制權(quán)后,可以進(jìn)行連續(xù)的DMA傳送。直到字節(jié)數(shù)寄存器減為0,或者接收到外部輸入的
信號時(shí),8237A才釋放系統(tǒng)總線,DMA傳送終止。塊傳送結(jié)束后可自動(dòng)初始化。7.3.38237A的工作方式7.3DMA控制器827.3DMA控制器8237A請求傳送方式在這種工作方式下,8237A申請一次總線可以連續(xù)地傳送數(shù)據(jù)。當(dāng)字節(jié)數(shù)寄存器減為0,或者接收到外部輸入的
信號,或者DREQ信號變?yōu)榈碗娖綍r(shí),數(shù)據(jù)傳送終止;直到DREQ變?yōu)橛行щ娖?,才繼續(xù)傳送下去。級聯(lián)傳送方式若干個(gè)8237A可以進(jìn)行級聯(lián),構(gòu)成主從式DMA系統(tǒng)。一片8237A用作主片,最多可以連接4個(gè)從片。級聯(lián)時(shí),從片接收到外設(shè)發(fā)來的DMA請求信號后,向主片發(fā)出DREQ請求,主片作出DACK響應(yīng),再向CPU申請總線。這時(shí),主片的方式寄存器設(shè)置為級聯(lián)傳送方式,從片設(shè)置成其他3種方式之一。7.3DMA控制器8237A請求傳送方式在這種工作方式下微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)第7章微型計(jì)算機(jī)與外設(shè)間的數(shù)據(jù)傳遞第7章目錄CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷控制器8259ADMA控制器8237ACONTENTS79目錄CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷控制器8259ADMA控引子在微型計(jì)算機(jī)系統(tǒng)的工作過程中,大量數(shù)據(jù)要在CPU、存儲器和輸入輸出設(shè)備接口之間進(jìn)行傳送。為保證數(shù)據(jù)在CPU與外設(shè)之間正確、有效地傳送,不同場合下需要采用不同的數(shù)據(jù)傳遞方式。本章主要介紹微型計(jì)算機(jī)與外設(shè)間數(shù)據(jù)傳遞的基本方式,并在此基礎(chǔ)上學(xué)習(xí)中斷控制器8259A和DMA控制器8237A這兩個(gè)專用芯片的使用方法。內(nèi)容提要掌握CPU與外設(shè)間數(shù)據(jù)傳遞的基本方式及其工作原理。掌握中斷控制器8259A的引腳、內(nèi)部結(jié)構(gòu)、工作過程和編程方式。掌握DMA控制器8237A的引腳、內(nèi)部結(jié)構(gòu)和工作方式。80引子在微型計(jì)算機(jī)系統(tǒng)的工作過程中,大量數(shù)據(jù)要在CPU、存儲器7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽程序控制數(shù)據(jù)傳送方式中斷數(shù)據(jù)傳送方式直接存儲器存取方式7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽程序控制數(shù)據(jù)傳送方式中7.1.1程序控制數(shù)據(jù)傳送方式1無條件數(shù)據(jù)傳送無條件數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,無需查詢外設(shè)端口的狀態(tài),直接通過輸入輸出指令(IN或OUT)與外設(shè)進(jìn)行數(shù)據(jù)傳送。因此,在無條件數(shù)據(jù)傳送方式下,外設(shè)必須總是處于準(zhǔn)備好的狀態(tài),即隨時(shí)準(zhǔn)備接收CPU送來的數(shù)據(jù),或者隨時(shí)準(zhǔn)備向CPU提供數(shù)據(jù)。無條件數(shù)據(jù)傳送是最簡單的數(shù)據(jù)傳送方式,主要用于與慢速、簡單外設(shè)間的數(shù)據(jù)傳送。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.1程序控制數(shù)據(jù)傳送方式1無條件數(shù)據(jù)傳送無條件數(shù)據(jù)7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽無條件數(shù)據(jù)傳送工作原理當(dāng)數(shù)據(jù)由輸入設(shè)備向CPU傳送時(shí),指定的端口地址經(jīng)地址總線送至端口譯碼器,和為低電平,和譯碼器輸出值相與后,輸入緩沖器被選通,要輸入的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線D7~D0到達(dá)CPU。當(dāng)數(shù)據(jù)由CPU向輸出設(shè)備傳送時(shí),指定的端口地址經(jīng)地址總線送至端口譯碼器,和為低電平,和譯碼器輸出值相與后,輸出鎖存器被選通,CPU將要輸出的數(shù)據(jù)通過數(shù)據(jù)總線D7~D0送入輸出鎖存器,再輸出至輸出設(shè)備。無條件數(shù)據(jù)傳送所需要的軟件和硬件少,且接口電路和程序簡單,適用于CPU與外設(shè)的各種動(dòng)作時(shí)間固定且已知的情況。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽無條件數(shù)據(jù)傳送工作原理2查詢式數(shù)據(jù)傳送查詢式數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,必須先查詢一下外設(shè)的狀態(tài),確認(rèn)外設(shè)是否準(zhǔn)備好。如果外設(shè)沒有準(zhǔn)備好,則繼續(xù)查詢,直到外設(shè)準(zhǔn)備好后,才進(jìn)行數(shù)據(jù)傳送。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽工作原理是:當(dāng)CPU要求傳送數(shù)據(jù)時(shí),CPU向外設(shè)發(fā)出命令,并讀入外設(shè)的狀態(tài)信息,確認(rèn)外設(shè)準(zhǔn)備好后再執(zhí)行輸入輸出指令。若Ready=0,表示外設(shè)沒有準(zhǔn)備好或外設(shè)處于忙狀態(tài),則繼續(xù)讀入狀態(tài)信息;直到Ready=1時(shí),表示數(shù)據(jù)已經(jīng)準(zhǔn)備就緒,CPU開始執(zhí)行輸入輸出指令。2查詢式數(shù)據(jù)傳送查詢式數(shù)據(jù)傳送是指CPU在進(jìn)行數(shù)據(jù)傳送之前,7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸入設(shè)備準(zhǔn)備好要輸入的數(shù)據(jù)時(shí),首先將數(shù)據(jù)送入鎖存器中,并同時(shí)對D觸發(fā)器觸發(fā),使READY為1,通過數(shù)據(jù)緩沖器后接到CPU的數(shù)據(jù)總線上。查詢式數(shù)據(jù)傳送方式的輸入接口電路7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸入設(shè)備準(zhǔn)備好要輸入7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸出設(shè)備將數(shù)據(jù)輸出后,會發(fā)出一個(gè)信號,使BUSY為0,表示可以執(zhí)行輸出指令。在查詢式數(shù)據(jù)傳送方式下,CPU在傳送數(shù)據(jù)過程中,要不斷查詢外設(shè),并花費(fèi)很多時(shí)間來等待外設(shè)準(zhǔn)備就緒,大大降低了CPU的工作效率。查詢式數(shù)據(jù)傳送方式的輸出接口電路7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽當(dāng)輸出設(shè)備將數(shù)據(jù)輸出后7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽假設(shè)接口的數(shù)據(jù)輸入端口地址為40H,數(shù)據(jù)輸出端口地址為42H,狀態(tài)端口地址為44H。(1)假定狀態(tài)寄存器中第1位為輸入狀態(tài)標(biāo)志,為1時(shí)表示輸入緩沖器中已經(jīng)有1個(gè)字節(jié)準(zhǔn)備好,可以進(jìn)行輸入;為0時(shí)表示輸入緩沖器處于忙狀態(tài)。(2)假定狀態(tài)寄存器中第0位為輸出狀態(tài)標(biāo)志,為0時(shí)表示輸出緩沖器為空,CPU可以向外設(shè)輸出數(shù)據(jù)。編寫程序,要求:實(shí)現(xiàn)從輸入設(shè)備輸入一串?dāng)?shù)據(jù)到內(nèi)存緩沖區(qū),再將內(nèi)存緩沖區(qū)中數(shù)據(jù)送到輸出端口輸出,串長度為100。例7-17.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽假設(shè)接口的數(shù)據(jù)輸入端口7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽ESEGSEGMENTBUFFERDB100DUP(?) ;定義內(nèi)存緩沖區(qū)ESEGENDSCSEGSEGMENTASSUMEES:ESEG,CS:CSEGSTART:MOVAX,ESEGMOVDS,AXMOVES,AXMOVDI,OFFSETBUFFERMOVCX,100 ;設(shè)置循環(huán)次數(shù)
CLDDATA_IN:INAL,44H ;讀入狀態(tài)信息
TESTAL,02H ;檢測標(biāo)志位寄存器第1位是否為1JZDATA_IN ;標(biāo)志位為0,則數(shù)據(jù)未準(zhǔn)備好,繼續(xù)讀入狀態(tài)信息7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽ESEGSEGME7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽INAL,40H ;數(shù)據(jù)準(zhǔn)備好,可以從數(shù)據(jù)輸入端口讀入數(shù)據(jù)
ANDAL,7FH ;將數(shù)據(jù)存入緩沖區(qū),數(shù)據(jù)位寬為7位
STOSBLOOPDATA_INMOVCX,100DATA_OUT:INAL,44H ;讀入狀態(tài)信息
TESTAL,01H ;檢測標(biāo)志位寄存器第0位是否為1JNZDATA_OUT ;標(biāo)志位為1,則設(shè)備忙,繼續(xù)讀入狀態(tài)信息
LODSB ;設(shè)備空閑,從數(shù)據(jù)輸出端口輸出數(shù)據(jù)
OUT42H,ALLOOPDATA_OUT……CSEGENDSENDSTART7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽INAL,40H7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.2中斷數(shù)據(jù)傳送方式中斷數(shù)據(jù)傳送方式是指在CPU執(zhí)行程序的過程中,當(dāng)外設(shè)要求與CPU進(jìn)行數(shù)據(jù)傳送時(shí),通過I/O端口向CPU發(fā)出中斷請求,使得CPU暫停當(dāng)前正在執(zhí)行的程序,及時(shí)響應(yīng)接口的中斷請求,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。待輸入輸出操作執(zhí)行完畢后,CPU再返回繼續(xù)執(zhí)行原來被中斷的程序。在中斷數(shù)據(jù)傳送方式下,CPU在沒有收到外設(shè)請求時(shí),可以去處理其他事情,避免了CPU把時(shí)間耗費(fèi)在等待、查詢上,CPU與外設(shè)實(shí)現(xiàn)了并行工作,這樣就大大提高了CPU的效率。但是,每次執(zhí)行中斷時(shí),都需要花費(fèi)時(shí)間保護(hù)現(xiàn)場。在這種方式下,CPU可以同時(shí)管理多個(gè)外設(shè),使CPU進(jìn)行多任務(wù)處理。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.2中斷數(shù)據(jù)1中斷相關(guān)概念CPU在執(zhí)行程序的過程中,由于某種事件的發(fā)生,使得CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序(或中斷處理程序),事件處理完后再繼續(xù)執(zhí)行被中斷的程序,這個(gè)過程稱為中斷。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽1中斷相關(guān)概念CPU在執(zhí)行程序的過程中,由于某種事件的發(fā)生,7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽引起中斷的事件稱為中斷源。按照中斷源的不同,中斷分為內(nèi)部中斷和外部中斷。由CPU運(yùn)行程序錯(cuò)誤或執(zhí)行內(nèi)部程序調(diào)用產(chǎn)生的中斷稱為內(nèi)部中斷或軟件中斷。例如,算術(shù)運(yùn)算發(fā)生溢出、執(zhí)行軟件中斷指令等情況都屬于內(nèi)部中斷。由外部設(shè)備通過硬件請求的方式產(chǎn)生的中斷稱為外部中斷或硬件中斷。例如,外設(shè)請求輸入輸出數(shù)據(jù)、硬件時(shí)鐘定時(shí)到、設(shè)備出現(xiàn)故障等情況都屬于外部中斷。外部中斷又分為非屏蔽中斷和可屏蔽中斷。非屏蔽中斷請求信號由CPU的NMI引腳輸入。NMI為邊沿觸發(fā),信號一旦產(chǎn)生,CPU將立即響應(yīng)非屏蔽中斷請求。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽引起中斷的事件稱為中斷7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽可屏蔽中斷請求由CPU的INTR引腳輸入。當(dāng)INTR為高電平時(shí),產(chǎn)生可屏蔽中斷請求信號。這時(shí),CPU可以響應(yīng),也可以不響應(yīng),能否響應(yīng)此中斷請求信號取決于中斷允許標(biāo)志位IF的狀態(tài)。IF為1時(shí),CPU能響應(yīng)可屏蔽中斷請求,稱為開中斷;否則,CPU不能響應(yīng)此中斷請求,稱為關(guān)中斷。IF的值可以通過指令STI和CLI進(jìn)行設(shè)置。8086CPU最多可以處理256個(gè)中斷源,對這些中斷源引起的中斷統(tǒng)一編號為0~255,稱為中斷類型號(或中斷向量號)。每一個(gè)中斷服務(wù)程序在內(nèi)存中都有一個(gè)確定的入口地址,稱為中斷向量。所有的中斷向量按中斷類型號從小到大的順序排列組成一個(gè)列表,稱為中斷向量表。在8086系統(tǒng)中,中斷向量表存放在內(nèi)存中最低地址開始的1KB地址范圍內(nèi)。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽可屏蔽中斷請求由CPU2中斷處理過程7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷請求中斷判優(yōu)中斷響應(yīng)中斷處理中斷返回2中斷處理過程7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽中斷請求7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(1)中斷請求當(dāng)外設(shè)要求與CPU進(jìn)行數(shù)據(jù)傳送時(shí),首先要向CPU發(fā)出一個(gè)中斷請求信號。發(fā)出中斷請求的外設(shè)就是中斷源,8086CPU的INTR和NMI引腳負(fù)責(zé)接收外部中斷請求信號。每個(gè)中斷源都設(shè)置了一個(gè)中斷請求觸發(fā)器,當(dāng)有中斷請求時(shí),該觸發(fā)器被置位;直到CPU對其進(jìn)行響應(yīng)后,該觸發(fā)器被清除。(2)中斷判優(yōu)當(dāng)若干個(gè)中斷源同時(shí)發(fā)出中斷請求信號時(shí),由于CPU每次只能響應(yīng)并處理一個(gè)中斷請求,故系統(tǒng)會自動(dòng)對各中斷源按照中斷優(yōu)先級進(jìn)行排隊(duì),并對優(yōu)先級別最高的中斷請求信號進(jìn)行響應(yīng),處理完后再轉(zhuǎn)去響應(yīng)優(yōu)先級較低的中斷請求,這個(gè)過程被稱為中斷判優(yōu)。評判中斷優(yōu)先級的方法分為軟件判優(yōu)和硬件判優(yōu)兩種。軟件判優(yōu)是指順序查詢多個(gè)中斷請求標(biāo)志位的狀態(tài),查詢的順序決定了優(yōu)先級別的高低,即先查詢的中斷請求優(yōu)先級別最高。硬件判優(yōu)是采用硬件電路來實(shí)現(xiàn)的,可節(jié)省CPU時(shí)間,但成本較高。一般情況下,系統(tǒng)的內(nèi)部中斷優(yōu)先于外部中斷,非屏蔽中斷優(yōu)先于可屏蔽中斷。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(1)中斷請求當(dāng)外設(shè)要7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(3)中斷響應(yīng)CPU在當(dāng)前指令執(zhí)行的最后一個(gè)時(shí)鐘周期采樣中斷請求信號,執(zhí)行完當(dāng)前指令后,判斷是否允許CPU進(jìn)行響應(yīng)。若允許響應(yīng),CPU就中斷當(dāng)前正在運(yùn)行的程序,轉(zhuǎn)向相應(yīng)的中斷處理程序。如果是內(nèi)部中斷或非屏蔽中斷,CPU必須做出響應(yīng),并自動(dòng)獲得中斷服務(wù)程序的入口地址,轉(zhuǎn)去執(zhí)行相應(yīng)子程序;如果是可屏蔽中斷且IF=1,則CPU向中斷源發(fā)出一個(gè)中斷應(yīng)答信號,進(jìn)入中斷響應(yīng)周期。為保證中斷結(jié)束后CPU能返回被中斷的程序繼續(xù)執(zhí)行,硬件會自動(dòng)進(jìn)行斷點(diǎn)保護(hù),即將標(biāo)志寄存器、CS(被中斷程序下一條指令的段地址)和IP(偏移地址)的內(nèi)容壓入堆棧,將標(biāo)志寄存器IF和TF復(fù)位(關(guān)中斷)。不同的中斷源對應(yīng)著不同的中斷服務(wù)程序,CPU可以根據(jù)中斷類型號自動(dòng)計(jì)算出中斷向量的偏移地址(中斷類型號×4),以便從中斷向量表中取出相應(yīng)的中斷向量,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序。每個(gè)中斷向量占據(jù)4個(gè)連續(xù)的內(nèi)存單元,前兩個(gè)單元存放中斷服務(wù)程序的偏移地址,后兩個(gè)單元存放中斷服務(wù)程序的段地址,由此確定中斷服務(wù)程序在內(nèi)存中的入口地址。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(3)中斷響應(yīng)CPU在7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(4)中斷處理CPU對中斷請求做出響應(yīng)后,開始執(zhí)行中斷服務(wù)程序。為使中斷服務(wù)程序不破壞主程序中寄存器的內(nèi)容,首先應(yīng)進(jìn)行現(xiàn)場保護(hù),即將中斷服務(wù)程序中要使用到的寄存器的內(nèi)容壓入堆棧,再調(diào)用中斷服務(wù)程序。(5)中斷返回在中斷處理完畢后,要恢復(fù)現(xiàn)場,即將前面保護(hù)起來的寄存器的內(nèi)容從堆棧中彈出。最后執(zhí)行中斷返回指令I(lǐng)RET,將原來程序中被保護(hù)的斷點(diǎn)地址和標(biāo)志寄存器的內(nèi)容,從堆棧中彈出至CS,IP和標(biāo)志寄存器中。這樣,CPU又回到被中斷程序繼續(xù)執(zhí)行。提示可屏蔽中斷的中斷類型號由外部中斷控制邏輯提供,非可屏蔽中斷的中斷類型號是2,內(nèi)部中斷的中斷類型號由指令給出。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽(4)中斷處理CPU對7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.3直接存儲器存?。―MA)方式程序控制數(shù)據(jù)傳送方式和中斷數(shù)據(jù)傳送方式都是通過CPU執(zhí)行程序來實(shí)現(xiàn)數(shù)據(jù)傳送的,過程中取指令、執(zhí)行指令、斷點(diǎn)保護(hù)、斷點(diǎn)恢復(fù)等都要花費(fèi)CPU的時(shí)間。DMA(DirectMemoryAccess)方式是指在內(nèi)存和外設(shè)之間傳送數(shù)據(jù)時(shí),不需要CPU干預(yù),而是通過DMA控制器對系統(tǒng)總線進(jìn)行控制,實(shí)現(xiàn)數(shù)據(jù)在內(nèi)存與外設(shè)之間的傳送,從而大大提高了數(shù)據(jù)傳送速度。DMA方式常用于傳送速度快、數(shù)據(jù)量大的系統(tǒng)中。DMA方式的工作原理7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽7.1.3直接存儲7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽①外設(shè)向DMA控制器發(fā)出DMA傳送請求信號DRQ。②
DMA控制器接收到請求信號后,向CPU發(fā)出總線請求信號HOLD。③
CPU在完成當(dāng)前總線周期后,向DMA控制器發(fā)出總線響應(yīng)信號HLDA,將總線使用權(quán)交給DMA控制器。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽①外設(shè)向DMA控制器發(fā)7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽④DMA控制器向外設(shè)發(fā)出DMA響應(yīng)信號DACK。⑤DMA控制器開始控制總線,向地址總線發(fā)送將要傳送數(shù)據(jù)的存儲器地址信號,并向系統(tǒng)發(fā)出讀寫控制信號;數(shù)據(jù)傳送過程中,修改地址寄存器中的內(nèi)容,記錄傳送字節(jié)數(shù),為下一字節(jié)的傳送做準(zhǔn)備。⑥下一字節(jié)傳送時(shí),重復(fù)上一步操作,直到傳送字節(jié)數(shù)為0,數(shù)據(jù)傳送完畢,DMA控制器撤銷HOLD信號和HLDA信號,CPU重新獲得總線使用權(quán),繼續(xù)執(zhí)行指令。7.1CPU與外設(shè)數(shù)據(jù)傳遞方式概覽④DMA控制器向外設(shè)7.2中斷控制器8259A當(dāng)前用于中斷優(yōu)先級管理的最常用的方法是采用中斷控制器。8259A是一種功能很強(qiáng)、使用方便靈活的可編程中斷控制器(ProgrammableInterruptController),常用于中斷優(yōu)先級的控制。它具有強(qiáng)大的中斷管理功能,主要體現(xiàn)在以下幾個(gè)方面:可實(shí)現(xiàn)對8個(gè)中斷源的優(yōu)先級控制。通過級聯(lián)可擴(kuò)展至對64個(gè)中斷源實(shí)現(xiàn)優(yōu)先級控制。每一級中斷都可以被屏蔽或被允許。可根據(jù)中斷源向系統(tǒng)提供不同的中斷類型號??赏ㄟ^編程設(shè)置不同的工作方式。7.2中斷控制器8259A當(dāng)前用于中斷優(yōu)先級管理的最常用7.2.18259A的引腳及功能8259A是具有28條引腳的雙列直插式芯片。片選信號,低電平有效。該信號為低電平時(shí),表示該芯片被選中,允許CPU對該芯片進(jìn)行訪問。寫信號,低電平有效。該信號為低電平時(shí),允許CPU將數(shù)據(jù)寫入芯片。讀信號,低電平有效。該信號有效時(shí),允許數(shù)據(jù)從芯片讀至CPU。7.2中斷控制器8259A7.2.18259A的引腳及功能8259A是具有28條引中斷請求輸出信號,用于向CPU發(fā)出中斷請求,高電平有效。此引腳直接與CPU的INTR引腳連接。中斷響應(yīng)信號,用于接收CPU發(fā)來的中斷響應(yīng)信號,低電平有效。此引腳直接與CPU的
引腳連接。中斷請求輸入端,用于接收從外設(shè)發(fā)來的中斷請求信號,高電平或上升沿有效。內(nèi)部寄存器選擇信號,用于對芯片內(nèi)部的兩組可編程寄存器進(jìn)行選擇。7.2中斷控制器8259A中斷請求輸出信號,用于向CPU發(fā)出中斷請求,高電平有效。此引7.2.28259A的內(nèi)部結(jié)構(gòu)8259A內(nèi)部結(jié)構(gòu)圖(1)中斷請求寄存器(InterruptRequestRegiste
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國湖泊運(yùn)輸行業(yè)發(fā)展前景預(yù)測及投資方向研究報(bào)告
- 電網(wǎng)系統(tǒng)中電能質(zhì)量的監(jiān)控與診斷技術(shù)研究報(bào)告集萃
- 中國氟嗎-錳鋅可濕性粉劑項(xiàng)目投資可行性研究報(bào)告
- 中國注射用美洛西林鈉行業(yè)全景評估及投資規(guī)劃建議報(bào)告
- 中國棉粕行業(yè)市場調(diào)查研究及投資前景預(yù)測報(bào)告
- 中國紙質(zhì)包裝行業(yè)市場深度分析及行業(yè)發(fā)展趨勢報(bào)告
- 校園光伏發(fā)電系統(tǒng)合同
- 2025年中國雜質(zhì)泵行業(yè)市場深度分析及投資策略研究報(bào)告
- 2025-2030年中國三濾紙行業(yè)深度研究分析報(bào)告
- 2025年燒烤魷魚項(xiàng)目投資可行性研究分析報(bào)告
- 新版藥品管理法培訓(xùn)完整版本課件
- 醫(yī)院信息系統(tǒng)HIS知識培訓(xùn)教學(xué)課件-HIS的主要內(nèi)容
- 硝苯地平控釋片
- 合成聚氨酯原料及助劑生產(chǎn)項(xiàng)目
- 四川省瀘州市2019年中考物理考試真題與答案解析
- 部編版語文六年級下冊全套單元基礎(chǔ)??紲y試卷含答案
- 2023年保險(xiǎn)養(yǎng)老地產(chǎn)行業(yè)分析報(bào)告
- 保險(xiǎn)公司防火應(yīng)急預(yù)案
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫的分類(動(dòng)物防疫與檢疫技術(shù))
- 2024醫(yī)師資格考試考生誠信考試承諾書
- 煤礦職業(yè)衛(wèi)生培訓(xùn)課件2023
評論
0/150
提交評論