8259A

可編程中斷控制器8259A是Intel公司專爲80x86 CPU控制外部中斷而設計開發的芯片。 它將中斷源優先級判優、中斷源識別和中斷屏蔽電路集於一體,不需要附加任何電路就可以對外部中斷進行管理,單片可以管理8級外部中斷,在多片級聯方式下,可以管理多達64級的外部中斷。

8259A內部結構及其引腳功能

可編程中斷控制器8259A是28引腳雙列直插式芯片,單一+5V電源供電.

其內部結構及引腳信號如圖6.9所示。



內部結構

(1)數據總線緩衝器

  數據總線緩衝器爲三態、雙向、8位寄存器,數據線D7~D0與CPU系統總線連接,構成CPU與8259A之間信息傳送的通道。

(2)讀/寫控制邏輯

  讀/寫控制邏輯用來接收CPU系統總線的讀/寫控制信號和端口地址選擇信號,用於控制8259A內部寄存器的讀/寫操作。

  

(3)級聯緩衝/比較器

  8259A既可以工作於單片方式,也可以工作於多片級聯方式,級聯方式硬件連接如圖6.10所示。級聯緩衝/比較器提供多片8259A的管理和選擇功能,其中一片爲主片,其餘爲從片。

(4)中斷控制邏輯

  中斷控制邏輯按照編程設定的工作方式管理中斷,負責向片內各部件發送控制信號,向CPU發送中斷請求信號INT和接收CPU回送的中斷響應信號,控制8259A進入中斷管理狀態。

  

(5)中斷請求寄存器(interrupt request register,IRR)

  IRR是一個8位寄存器,用於記錄外部中斷請求。其中D7~D0分別與外部中斷請求信號IR7~IR0相對應,當IRi(i=0~7)有請求(電平或邊沿觸發)時,IRR中的相應位Di置1,在中斷響應信號有效時,Di被清除。

(6)中斷服務寄存器(interrupt service register,ISR)

  ISR是一個8位寄存器,用於記錄CPU當前正在服務的中斷標誌。當外部中斷IRi(i=0~7)的請求得到CPU響應進入服務時,由CPU發來的第一個中斷響應脈衝將ISR中的相應位Di(i=0~7)置1,而ISR的復位則由8259A中斷結束方式決定。若定義爲自動結束方式,則由CPU發來的第二個中斷響應脈衝的後沿將Di復位爲0;若定義爲非自動結束方式,則由CPU發送來的中斷結束命令將其復位。

(7)中斷屏蔽寄存器(interrupt mask register,IMR)

  IMR是一個8位寄存器,用來存放IR7~IR0的中斷屏蔽標誌。它的8個屏蔽位D7~D0與外部中斷請求IR7~IR0相對應,用於控制IRi的請求是否允許進入。當IMR中的Di位爲1時,對應的IRi請求被禁止;當IMR中的Di位爲0時,則允許對應的中斷請求進入。它可以由軟件設置或清除,通過編程設定屏蔽字,可以改變原來的優先級別。

(8)優先權判決器(priority register,PR)

  優先權判決器對IRR中記錄的內容與當前ISR中記錄的內容進行比較,並對它們進行排隊判優,以便選出當前優先級最高級的中斷請求。如果IRR中記錄的中斷請求的優先級高於ISR中記錄的中斷請求的優先級,則由中斷控制邏輯向CPU發出中斷請求信號INT,中止當前的中斷服務,進行中斷嵌套。如果IRR中記錄的中斷請求的優先級低於ISR中記錄的中斷請求的優先級,則CPU繼續執行當前的中斷服務程序。

引腳信號

8259A引腳信號如圖6.11所示:



D7~D0(bidirectional data bus):雙向、三態數據線,與CPU系統總線連接。

RD¯¯¯¯¯\overline {RD}(read):讀信號,輸入,低電平有效。當有效時CPU對8259A進行讀操作。

WR¯¯¯¯¯¯\overline{WR}(write):寫信號,輸入,低電平有效。當有效時CPU對8259A進行寫操作。

A0(address line):端口地址選擇信號,輸入,由8259A片內譯碼,選擇內部寄存器。

CS¯¯¯¯¯\overline{CS}(chip select):片選信號,輸入,低電平有效。當有效時8259A被選中。

有關寄存器的端口地址分配及讀/寫操作功能見表6.2。



SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}(slave program/enable buffer):雙向信號線,用於從片選擇總線驅動器的控制信號。當8259A工作於非緩衝方式時,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}作爲輸入信號線,用於從片選擇。級聯中的從片SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}接低電平,主片SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}接高電平。當8259A工作於緩衝方式時,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}作爲輸出信號線,用做8259A與系統總線驅動器的控制信號。

INT(interrupt request):中斷請求信號,與CPU的中斷請求信號相連。

INTA¯¯¯¯¯¯¯¯¯¯\overline{INTA}(interrupt acknowledge):中斷響應信號,與CPU的中斷應答信號相連。

CAS2~CAS0CAS_2~CAS_0(cascade lines):級聯信號線,作爲主片與從片的連接線,主片爲輸出,從片爲輸入,主片通過CAS2~CAS0CAS_2~CAS_0的編碼選擇和管理從片。

IR7~IR0IR_7~IR_0(interrupt requests):中斷請求輸入信號,由外設輸入。

VCC:+5V電源輸入信號。   GND:電源地

8259A的工作方式

8259A的中斷管理功能很強,單片可以管理8級外部中斷,在多片級聯方式下最多可以管理64級外部中斷,並且具有中斷優先權判優、中斷嵌套、中斷屏蔽和中斷結束等多種中斷管理方式。

中斷優先權方式

8259A中斷優先權的管理方式有固定優先權方式和自動循環優先權方式兩種。

1)固定優先權方式

  在固定優先權方式中,IR7~IR0的中斷優先權的級別是由系統確定的。

  它們由高到低的優先級順序是:IR0, IR1, IR2, …, IR7, 其中,IR0的優先級最高,IR7的優先級最低。當有多個IRi請求時,優先權判決器(PR)將它們與當前正在處理的中斷源的優先權進行比較,選出當前優先權最高的IRi,向CPU發出中斷請求INT,請求爲其服務。

(2)自動循環優先權方式

  在自動循環優先權方式中,IR7~IR0優先權級別是可以改變的。

  其變化規律是:當某一箇中斷請求IRi服務結束後,該中斷的優先權自動降爲最低,而緊跟其後的中斷請求IR(i+1)的優先權自動升爲最高,IR7~IR0優先權級別按如下所示的右循環方式改變。

 



  假設在初始狀態IR0IR_0有請求,CPU爲其服務完畢,IR0IR_0優先權自動降爲最低,排在IR7IR_7之後,而其後的IR1IR_1的優先權升爲最高,其餘依次類推。這種優先權管理方式,可以使8箇中斷請求都擁有享受同等優先服務的權利。

  在自動循環優先權方式中,按確定循環時的最低優先權的方式不同,又分爲普通自動循環方式和特殊自動循環方式兩種。

  普通自動循環方式的特點是:IR7~IR0IR_7~IR_0中的初始最高優先級由系統指定,即指定IR0IR_0的優先級最高,以後按右循環規則進行循環排隊。

  而特殊自動循環方式的特點是:IR7~IR0IR_7~IR_0中的初始最低優先級,由用戶通過置位優先權命令指定。

中斷嵌套方式

8259A的中斷嵌套方式分爲完全嵌套和特殊完全嵌套兩種。

(1)完全嵌套方式

  完全嵌套方式是8259A在初始化時自動進入的一種最基本的優先權管理方式. 

  其特點是:中斷優先權管理爲固定方式,即IR0優先權最高,IR7優先權最低,在CPU中斷服務期間(即執行中斷服務子程序過程中),若有新的中斷請求到來,只允許比當前服務的中斷請求的優先權“高”的中斷請求進入,對於“同級”或“低級”的中斷請求禁止響應。

(2)特殊完全嵌套方式

  特殊完全嵌套方式是8259A在多片級聯方式下使用的一種最基本的優先權管理方式。

  其特點是:中斷優先權管理爲固定方式,IR7~IR0的優先順序與完全嵌套規定相同;與完全嵌套方式不同之處是在CPU中斷服務期間,除了允許高級中斷請求進入外,還允許同級中斷請求進入,從而實現了對同級中斷請求的特殊嵌套。

  在級聯方式下,主片通常設置爲特殊完全嵌套方式,從片設置爲完全嵌套方式。當主片爲某一個從片的中斷請求服務時,從片中的IR7~IR0的請求都是通過主片中的某個IRi請求引入的。因此從片的IR7~IR0對於主片IRi來說,它們屬於同級,只有主片工作於特殊完全嵌套方式時,從片才能實現完全嵌套。

  

中斷屏蔽方式

中斷屏蔽方式是對8259A的外部中斷源IR7~IR0實現屏蔽的一種中斷管理方式,有普通屏蔽方式和特殊屏蔽方式兩種。

(1)普通屏蔽方式

  普通屏蔽方式是通過8259A的中斷屏蔽寄存器(IMR)來實現對中斷請求IRiIR_i的屏蔽。由編程寫入操作命令字OCW1OCW_1,將IMR中的DiD_i位置1,以達到對IRiIR_i(i=0~7)中斷請求的屏蔽。

(2)特殊屏蔽方式

  特殊屏蔽方式允許低優先級中斷請求中斷正在服務的高優先級中斷。這種屏蔽方式通常用於級聯方式中的主片,對於同一個請求IRiIR_i上連接有多箇中斷源的場合,可以通過編程寫入操作命令字OCW3來設置或取消。

  在特殊屏蔽方式中,可在中斷服務子程序中用中斷屏蔽命令來屏蔽當前正在處理的中斷,同時可使ISR中的對應當前中斷的相應位清0,這樣一來不僅屏蔽了當前正在處理的中斷,而且也真正開放了較低級別的中斷請求。

  在這種情況下,雖然CPU仍然繼續執行較高級別的中斷服務子程序,但由於ISR中對應當前中斷的相應位已經清0,如同沒有響應該中斷一樣。所以,此時對於較低級別的中斷請求,8259A仍然能產生INT中斷請求,CPU也會響應較低級別的中斷請求。

中斷結束方式

中斷結束方式是指CPU爲某個中斷請求服務結束後,應及時清除中斷服務標誌位,否則就意味着中斷服務還在繼續,致使比它優先級低的中斷請求無法得到響應。中斷服務標誌位存放在中斷服務寄存器(ISR)中,當某個中斷源IRi被響應後,ISR中的Di位被置1,服務完畢應及時清除。

8259A提供了以下三種中斷結束方式:

(1)自動結束方式

  自動結束方式是利用中斷響應信號INTA¯¯¯¯¯¯¯¯¯¯\overline{INTA}的第二個負脈衝的後沿,將ISR中的中斷服務標誌位清除。

  這種中斷服務結束方式是由硬件自動完成的,需要注意的是:ISR中爲“1”位的清除是在中斷響應過程中完成的,並非中斷服務子程序的真正結束,若在中斷服務子程序的執行過程中有另外一個比當前中斷優先級低的請求信號到來,因8259A並沒有保存任何標誌來表示當前服務尚未結束,致使低優先級中斷請求進入,打亂正在服務的程序,因此這種方式只適合用在沒有中斷嵌套的場合,即,這種中斷方法僅僅適用於單級中斷。

(2)普通結束方式 (非自動中斷結束方式EOI)

  普通結束方式是通過在中斷服務子程序中編程寫入操作命令字OCW2,向8259A傳送一個普通EOI(end of interrupt)命令(不指定被複位的中斷的級號)來清除ISR中當前優先級別最高位

  由於這種結束方式是清除ISR中優先權級別最高的那一位,適合使用在完全嵌套方式下的中斷結束。因爲在完全嵌套方式下,中斷優先級是固定的,8259A總是響應優先級最高的中斷,保存在ISR中的最高優先級的對應位,一定對應於正在執行的服務程序。

(3)特殊結束方式 (非自動中斷結束方式EOI)

  特殊結束方式是通過在中斷服務子程序中編程寫入操作命令字OCW2,向8259A傳送一個特殊EOI命令(指定被複位的中斷的級號)來清除ISR中的指定位。

  如果採用了循環優先級方式工作,則中斷源的優先級在動態變化,且此時的正在服務的中斷服務程序的優先級可能不是最高的,因此,必須使用指定中斷結束命令來明確ISR中的待清理的位置。

  由於在特殊EOI命令中明確指出了復位ISR中的哪一位,不會因嵌套結構出現錯誤。因此,它可以用於完全嵌套方式下的中斷結束,更適用於嵌套結構有可能遭到破壞的中斷結束。

中斷觸發方式

8259A中斷請求輸入端IR7~IR0的觸發方式有電平觸發和邊沿觸發兩種,由初始化命令字ICW1中的LTIM位來設定。

當LTIM設置爲1時,爲電平觸發方式,8259A檢測到IRi(i=0~7)端有高電平時產生中斷。在這種觸發方式中,要求觸發電平必須保持到中斷響應信號有效爲止,並且在CPU響應中斷後,應及時撤銷該請求信號,以防止CPU再次響應,出現重複中斷現象。

當LTIM設置爲0時,爲邊沿觸發方式,8259A檢測到IRi端有由低到高的跳變信號時產生中斷。

總線連接方式

8259A數據線與系統數據總線的連接有緩衝和非緩衝兩種方式。

 (1)緩衝方式

  如果8259A通過總線驅動器系統數據總線連接,此時,8259A應選擇緩衝方式,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}引腳作爲輸出端,用於精緻外接總線驅動器輸入/輸出的方向。當定義爲緩衝方式後,即爲輸出引腳。在8259A輸出中斷類型號的時候,輸出一個低電平,用此信號作爲總線驅動器的啓動信號。

 (2)非緩衝方式

  8529A的數據總線具有雙向、三態緩衝功能,因此,它不需要外加總線驅動器就可直接掛到數據總線上使用。總線驅動器是起緩衝和隔離作用,所以這種連接方式成爲非緩衝方式。在這種方式下,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}引腳爲輸入引腳,在級聯方式下,用高/低電平通知8259A工作在主/從片方式下。

8259A初始化編程

在8259A內部有兩組寄存器,一組爲命令寄存器,用於存放CPU寫入的初始化命令字ICW1~ICW4(initialization command words);另一組爲操作命令寄存器,用於存放CPU寫入的操作命令字OCW1~OCW3(operation command words)。

初始化命令字ICW的格式

當地址線A0爲1時,8259A提供了4個(ICW1~ICW4)初始化命令字,並規定了嚴格的初始化步驟。

  8259A是中斷系統的核心器件,對它的初始化編程要涉及中斷系統的軟、硬件的許多問題,而且一旦完成初始化,所有硬件中斷源和中斷處理程序都必須受其制約。

(1)ICW1的格式

  ICW1的格式如圖6.12所示。

  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章