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