可編程中斷控制器8259詳解
中斷系統(tǒng)的使用極大的提高了CPU的利用率。
中斷是一種機(jī)制,這種機(jī)制實(shí)現(xiàn)的過程可分為請(qǐng)求-->響應(yīng)-->服務(wù)-->返回。
可編程中斷控制器8259A是Intel公司專為80x86 CPU控制外部中斷而設(shè)計(jì)開發(fā)的芯片。其內(nèi)部結(jié)構(gòu)及引腳圖如下:
中斷申請(qǐng)的過程可大概描述為:中斷源發(fā)生-----》(此中斷未被屏蔽)中斷優(yōu)先級(jí)判定(高于正在服務(wù)的中斷則打斷)------》向cpu發(fā)送中斷請(qǐng)求-----》cpu回復(fù)一個(gè)inta告訴中斷申請(qǐng)成功------》中斷服務(wù)寄存器相應(yīng)的位置位,表示這個(gè)中斷正在被執(zhí)行---------》當(dāng)收到cpu的第二個(gè)inta的時(shí)候,中斷邏輯單元把中斷號(hào)發(fā)給cpu,cpu調(diào)用相應(yīng)的中斷程序執(zhí)行------》發(fā)送中斷號(hào)時(shí),將ISR的相應(yīng)位復(fù)位(利用完了就復(fù)位,主要是把中斷號(hào)拿出來。如果不復(fù)位,則每次邏輯電路放在總線上的中斷號(hào)就會(huì)出錯(cuò)),表示執(zhí)行完畢。
其內(nèi)部涉及的關(guān)鍵型寄存器有:中斷請(qǐng)求寄存器,中斷屏蔽寄存器,中斷優(yōu)先級(jí)判別寄存器,中斷服務(wù)寄存器。
對(duì)于8259A的各個(gè)模塊的“官方”描述如下:
(1)數(shù)據(jù)總線緩沖器
數(shù)據(jù)總線緩沖器為三態(tài)、雙向、8位寄存器,數(shù)據(jù)線D7~D0與CPU系統(tǒng)總線連接,構(gòu)成CPU與8259A之間信息傳送的通道。
(2)讀/寫控制邏輯
讀/寫控制邏輯用來接收CPU系統(tǒng)總線的讀/寫控制信號(hào)和端口地址選擇信號(hào),用于控制8259A內(nèi)部寄存器的讀/寫操作。
(3)級(jí)聯(lián)緩沖/比較器
8259A既可以工作于單片方式,也可以工作于多片級(jí)聯(lián)方式,級(jí)聯(lián)方式硬件連接如圖6.10所示。級(jí)聯(lián)緩沖/比較器提供多片8259A的管理和選擇功能,其中一片為主片,其余為從片。
(4)中斷控制邏輯
中斷控制邏輯按照編程設(shè)定的工作方式管理中斷,負(fù)責(zé)向片內(nèi)各部件發(fā)送控制信號(hào),向CPU發(fā)送中斷請(qǐng)求信號(hào)INT和接收CPU回送的中斷響應(yīng)信號(hào),控制8259A進(jìn)入中斷管理狀態(tài)。
(5)中斷請(qǐng)求寄存器(interrupt request register,IRR)
IRR是一個(gè)8位寄存器,用于記錄外部中斷請(qǐng)求。其中D7~D0分別與外部中斷請(qǐng)求信號(hào)IR7~I(xiàn)R0相對(duì)應(yīng),當(dāng)IRi(i=0~7)有請(qǐng)求(電平或邊沿觸發(fā))時(shí),IRR中的相應(yīng)位Di置1,在中斷響應(yīng)信號(hào)有效時(shí),Di被清除。
(6)中斷服務(wù)寄存器(interrupt service register,ISR)
ISR是一個(gè)8位寄存器,用于記錄CPU當(dāng)前正在服務(wù)的中斷標(biāo)志。當(dāng)外部中斷IRi(i=0~7)的請(qǐng)求得到CPU響應(yīng)進(jìn)入服務(wù)時(shí),由CPU發(fā)來的第一個(gè)中斷響應(yīng)脈沖將ISR中的相應(yīng)位Di(i=0~7)置1,而ISR的復(fù)位則由8259A中斷結(jié)束方式?jīng)Q定。若定義為自動(dòng)結(jié)束方式,則由CPU發(fā)來的第二個(gè)中斷響應(yīng)脈沖的后沿將Di復(fù)位為0;若定義為非自動(dòng)結(jié)束方式,則由CPU發(fā)送來的中斷結(jié)束命令將其復(fù)位。
(7)中斷屏蔽寄存器(interrupt mask register,IMR)
IMR是一個(gè)8位寄存器,用來存放IR7~I(xiàn)R0的中斷屏蔽標(biāo)志。它的8個(gè)屏蔽位D7~D0與外部中斷請(qǐng)求IR7~I(xiàn)R0相對(duì)應(yīng),用于控制IRi的請(qǐng)求是否允許進(jìn)入。當(dāng)IMR中的Di位為1時(shí),對(duì)應(yīng)的IRi請(qǐng)求被禁止;當(dāng)IMR中的Di位為0時(shí),則允許對(duì)應(yīng)的中斷請(qǐng)求進(jìn)入。它可以由軟件設(shè)置或清除,通過編程設(shè)定屏蔽字,可以改變?cè)瓉淼膬?yōu)先級(jí)別。
(8)優(yōu)先權(quán)判決器(priority register,PR)
優(yōu)先權(quán)判決器對(duì)IRR中記錄的內(nèi)容與當(dāng)前ISR中記錄的內(nèi)容進(jìn)行比較,并對(duì)它們進(jìn)行排隊(duì)判優(yōu),以便選出當(dāng)前優(yōu)先級(jí)最高級(jí)的中斷請(qǐng)求。如果IRR中記錄的中斷請(qǐng)求的優(yōu)先級(jí)高于ISR中記錄的中斷請(qǐng)求的優(yōu)先級(jí),則由中斷控制邏輯向CPU發(fā)出中斷請(qǐng)求信號(hào)INT,中止當(dāng)前的中斷服務(wù),進(jìn)行中斷嵌套。如果IRR中記錄的中斷請(qǐng)求的優(yōu)先級(jí)低于ISR中記錄的中斷請(qǐng)求的優(yōu)先級(jí),則CPU繼續(xù)執(zhí)行當(dāng)前的中斷服務(wù)程序。
編輯:admin 最后修改時(shí)間:2018-05-18