8259A

8259A

8259A是專門為了對8085A和8086/8088進行中斷控制而設計的晶片,它是可以用程式控制的中斷控制器。單個的8259A能管理8級向量優先權中斷。在不增加其他電路的情況下,最多可以級聯成64級的向量優級中斷系統。8259A有多種工作方式,能用於各種系統。各種工作方式的設定是在初始化時通過軟體進行的。 在匯流排控制器的控制下,8259A晶片可以處於編程狀態和操作狀態,編程狀態是CPU使用IN或OUT指令對8259A晶片進行初始化編程的狀態。

基本介紹

  • 中文名:8259A
  • 產品本質:晶片
  • 所屬範疇:計算機
  • 實質:中斷控制器
  • 內部結構:中斷請求暫存器等
  • 所屬配件:中斷請求暫存器
工作原理,內部結構,主要功能,初始化命令字,操作命令字,中斷嵌套,初始化編程,

工作原理

一個外部中斷請求信號通過中斷請求線IRQ,傳輸到IMR(中斷禁止暫存器),IMR根據所設定的中斷禁止字(OCW1),決定是將其丟棄還是接受。如果可以接受,則8259A將IRR(中斷請求暫存暫存器)中代表此IRQ的位置置1,以表示此IRQ有中斷請求信號,並同時向CPU的INTR(中斷請求)管腳傳送一個信號。但CPU這時可能正在執行一條指令,因此CPU不會立即回響。而當這CPU正忙著執行某條指令時,還有可能有其餘的IRQ線送來中斷請求,這些請求都會接受IMR的挑選。如果沒有被禁止,那么這些請求也會被放到IRR中,也即IRR中代表它們的IRQ的相應位會被置1。
當CPU執行完一條指令時後,會檢查一下INTR管腳是否有信號。如果發現有信號,就會轉到中斷服務,此時,CPU會立即向8259A晶片的INTA(中斷應答)管腳傳送一個信號。當晶片收到此信號後,判優部件開始工作,它在IRR中,挑選優先權最高的中斷,將中斷請求送到ISR(中斷服務暫存器),也即將ISR中代表此IRQ的位置一,並將IRR中相應位置零,表明此中斷正在接受CPU的處理。同時,將它的編號寫入中斷向量暫存器IVR的低三位(IVR正是由ICW2所指定的,不知你是否還記得ICW2的最低三位在指定時都是0,而在這裡,它們被利用了!)這時,CPU還會送來第二個INTA信號,當收到此信號後,晶片將IVR中的內容,也就是此中斷的中斷號送上通向CPU的數據線。
這個內容看起來仿佛十分複雜,但如果我們用一個很簡單的比喻來解釋就好理解了。CPU就相當於一個公司的老總,而8259A晶片就相當於這個老總的秘書。現在有很多人想見老總,但老總正在打電話,於是交由秘書先行接待。每個想見老總的人都需要把自己的名片交給秘書,秘書首先看看名片,有沒有老總明確表示不願見到的人,如果沒有就把它放到一個盒子裡面。這時老總的電話還沒打完,但不停的有人遞上名片求見老總,秘書就把符合要求的名片全放在盒子裡了。老總打完電話了,探出頭來問秘書:有人想見我嗎?這時,秘書就從盒子裡挑選一個級別最高的,並把他的名片交給老總。
這裡需要理解的是中斷禁止與優先權判定並不是一回事,如果被禁止了,那么參加判定的機會也都沒了。在默認情況下,IRQ0的優先權最高,IRQ7最低。當然我們可以更改這個設定,這樣在下面有詳細描述。
當晶片把中斷號送上通往CPU的數據線後,就會檢測ICW4中的EOI是否被置位。如果EOI被置位表示需要自動清除中斷請求信號,則晶片會自動將ISR中的相應位清零。如果EOI沒有被置位,則需要中斷處理程式向晶片傳送EOI訊息,晶片收到EOI訊息後才會將ISR中的相應位清零。
這裡的機關存在於這樣一個地方。優先權判定是存在於8259A晶片中的,假如CPU正在處理IRQ1線來的中斷,這時ISR中IRQ1所對應的位是置1的。這時來了一個IRQ2的中斷請求,8259A會將其同ISR中的位進行比較,發現比它高的IRQ1所對應的位被置位,於是8259A會很遺憾的告訴IRQ2:你先在IRR中等等。而如果這時來的是IRQ0,晶片會馬上讓其進入ISR,即將ISR中的IRQ0所對應的位置位,並向CPU傳送中斷請求。這時由於IRQ1還在被CPU處理,所以ISR中IRQ1的位也還是被置位的,但由於IRQ0的優先權高,所以IRQ0的位也會被置位,並向CPU傳送新的中斷請求。此時ISR中IRQ0與IRQ1的位都是被置位的,這種情況在多重中斷時常常發生,非常正常。
如果EOI被設為自動的,那么ISR中的位總是被清零的(在EOI被置位的情況下,8259A只要向CPU傳送了中斷號就會將ISR中的相應位清零),也就是如果有中斷來,晶片就會馬上再向CPU發出中斷請求,即使CPU正在處理IRQ0的中斷,CPU並不知道誰的優先權高,它只會簡單的回響8259A送來的中斷,因此,這種情況下低優先權的中斷就可能會中斷高優先權中斷服務程式。所以在PC中,我們總是將EOI位清零,而在中斷服務程式結束的時候才傳送EOI訊息。

內部結構

(1)中斷請求暫存器(IRR)
中斷請求暫存器(IRR)為8位,接受來自IR0~IR7的中斷請求信號,當IR0~IR7上出現某一中斷請求信號時,IRR對應位被置1;
(2)中斷禁止暫存器IMR
中斷禁止暫存器IMR 為8位(8箇中斷輸入),若IRR(中斷請求暫存器)中記錄的8箇中斷請求中有任何一個需要禁止,只要將IMR的相應位置1即可,未被禁止的中斷請求可以進入優先權判別器;它的內容由CPU通過對8259初始化時設定設定。
(3)中斷服務暫存器ISR
8位,保存當前正在處理的中斷請求,例如,如果ISR的D2=1,表示CPU正在為來自IR2的中斷請求服務。
(4)優先權判別器PR
若某中斷請求正在被處理,8259A外部又有新的中斷請求,則由優先權判別器將新進入的中斷請求和當前正在處理的中斷進行比較,以決定哪一個優先權更高。若新的中斷請求比正在處理的中斷級別高,由PR通過控制邏輯向CPU發出中斷申請INT,正在處理的中斷自動被禁止,先處理級別高的中斷。
(5)數據匯流排緩衝器
用於8259A與數據匯流排的接口,傳輸命令控制字、狀態字和中斷類型碼
(6)讀/寫控制邏輯
確定數據匯流排緩衝器中數據的傳輸方向,選擇內部的各命令字暫存器。當CPU發讀信號時將8259A的狀態信息放到數據匯流排上;當CPU發寫信號時,將CPU發來的命令字信息送入指定的命令字暫存器中。
(7)級聯緩衝/比較器
用來存放和比較在系統中用到的所有8259A的級聯地址。主控8259A通過CAS0、CAS1和CAS2傳送級聯地址,選中從控8259A。

主要功能

功能:就是在有多個中斷源的系統中,接受外部的中斷請求,並進行判斷,選中當前優先權最高的中斷請求,再將此請求送到cpu的INTR端;當cpu回響中斷並進入中斷子程式的處理過程後,中斷控制器仍負責對外部中斷請求的管理。
8259A的主要功能如下:
①一片8259A可以接受並管理8級可禁止中斷請求,通過8片8259A級聯可擴展至63級可禁止中斷優先控制。
②對每一級中斷都可以通過程式來禁止或允許。
③在中斷回響周期,8259A可為CPU提供相應的中斷類型碼
④具有多種工作方式,並可通過編程來加以選擇。

初始化命令字

8259A有4個初始化命令字ICW1~ICW4, 它們按照一定的順序送入,用於設定8259A的初始狀態。無論何時,當微處理器向8259A傳送一條A0=0和D4=1的命令時,這條命令就解碼為ICW1。 A0=0和D4=1是ICW1的標識位! 利用A0=0,D4=1對ICW1定址。
(1)ICW1:規定8259的連線方式(單片或級聯)與中斷源請求信號的有效形式(邊沿或電平觸發)。命令字格式如圖所示,利用A0=0,D4=1定址。
ICW1ICW1
注意:D7、D6、D5、 D2在8086/8088系統中不用,可為1,也可為0。它們在8080/8085系統中使用。
(2) ICW2(中斷類型碼字)
ICW2是設定中斷類型碼的初始化命令字。
編程時用ICW2設定中斷類型碼高5位T7~T3,低3位自動插入IR的編碼。
ICW2ICW2
例如:寫入ICW2的內容為40H,則IR0~IR7對應的8個中斷類型號依此為:40H、41H、….47H,8箇中斷類型號一定是連號!
ICW2決定了某位中斷請求輸入線所對應的向量類型碼,可以使CPU自動得到相應的中斷請求的中斷類型號。
(3) ICW3(級連控制字)ICW3是標誌主片/從片的初始化命令字。只有在一個系統中包含多片8259A時,ICW3才有意義!!!!
主片主片
主8259A的ICW3命令字
(4) ICW4(中斷結束方式字)
ICW4為方式控制初始化命令字,ICW4的格式如下:
從片從片

操作命令字

在對8259A用初始化命令字進行初始化後,就進入工作狀態,準備好接收IR輸入的中斷請求信號。在8259A工作期間, 可通過操作命令字來使它按不同的方式進行操作。操作命令字是在應用程式內部設定的。操作命令字共有三個,可以獨立使用。
1)OCW1(禁止控制字)
OCW1稱為中斷禁止操作命令字,其格式如右
2) OCW2(中斷結束和優先權循環控制字)
OCW2用來設定優先權循環方式和中斷結束方式
3) OCW3(設定禁止方式和讀狀態控制字)
OCW3的功能有三個方面:一是設定和撤消特殊禁止方式; 二是設定中斷查詢方式;三是用來設定對8259A內部暫存器的讀出命令。其格式如右:

中斷嵌套

(1)(普通)一般完全嵌套方式:是8259A最常用的工作方式,該方式下中斷優先權是固定的,即IR0優先權最高,IR7優先權最低。
在此中斷源中斷服務程式完成之前,與它同級(多片時會有同級)或優先權更低的中斷源的申請就被禁止,只有優先權比它高的中斷源的請求被允許的,對同級或低級的中斷請求禁止回響。
(2) 特殊完全嵌套方式
特殊完全嵌套方式用於多片級聯優先權管理。 在特殊完全嵌套方式下,中斷優先權也是固定的,即IR0優先權最高,IR7優先權最低。當處理某一級中斷時,如果有同級(多片時發生)的中斷請求,那么也會給予回響,從而實現一種對同級中斷請求的特殊嵌套。即多片時,後到的同級別中斷的級別高!!!
注意:特殊全嵌套方式用在8259A級連繫統中。
主片8259A編程為特殊全嵌套方式,當來自某一從片的中斷請求正在處理時,對來自優先權較高的主片其他引腳上的中斷請求進行開放;另一方面,對來自同一從片的較高優先權請求也會開放。

初始化編程

對8259的初始化一定要按規定的順序進行,假定8259占用的I/O地址為FF00和FF02H(奇地址):
MOV DX,0FF00H ;8259的地址A0=0
MOV AL,13H ;寫ICW1,邊沿觸發,單片,
OUT DX,AL
MOV DX,0FF02H ;8259地址A0=1
MOV AL,48H ;寫ICW2,設定中斷類型碼
OUT DX,AL ;中斷向量為48H-4FH(IR0-IR7)單片8259,不對ICW3設定
MOV AL,03H ;寫ICW4,8086/88模式,自動中;斷結束 (EOI),非緩衝,一般嵌套
OUT DX,AL
MOV AL,0E0H ;寫OCW1,禁止IR5、IR6、 IR7中斷源
OUT DX,AL ;(假定這3箇中斷輸入未用),其它開中斷

相關詞條

熱門詞條

聯絡我們