0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

8259A芯片是一種什么類型的芯片?從硬件看中斷之8259A

冬至子 ? 來源:TrustZone ? 作者:Hcoco ? 2023-08-04 17:17 ? 次閱讀

1、中斷控制器8259A

在中斷控制過程中,中斷源的識別和優(yōu)先權(quán)的確定可以用硬件排隊電路等實現(xiàn), Intel 8259A可編程中斷控制器就是為完成這些任務(wù)而設(shè)計的一種器件 。(之前看中斷總會看到這個控制器,現(xiàn)在總算知道踏實干什么的了)

它不是I/O接口,而是一種中斷管理芯片,統(tǒng)稱PIC(Programmable Interrupt Controller)。

8259A可編程中斷控制器用來管理8級優(yōu)先中斷,并可將多個8259A級聯(lián)起來,構(gòu)成64級中斷優(yōu)先級管理系統(tǒng),而無需外加電路;

它具有多種工作方式,CPU可以通過編程設(shè)定或改變它的工作方式;

CPU響應(yīng)中斷時,8259A能自動提供中斷入口地址,而使CPU轉(zhuǎn)向相應(yīng)的中斷處理程序。

中斷入口地址可以由用戶設(shè)定,且入口地址可以選定在任何存儲單元。

8259A的主要功能為:

  • ① 具有8級優(yōu)先權(quán)控制,通過芯片級聯(lián)可擴(kuò)展至64級優(yōu)先權(quán)控制。
  • ② 每一級中斷均可通過編程屏蔽或允許。
  • ③ 在中斷響應(yīng)周期可提供相應(yīng)的中斷類型號。
  • ④ 有多種工作方式,可通過編程選擇。
  • ⑤ 可與CPU直接連接,不需外加硬件電路。

1 8259A的內(nèi)部結(jié)構(gòu)

8259A采用NMOS工藝,只需要單一的+5V電源,它的內(nèi)部電路為靜態(tài)電路,因此不需要時鐘輸入,其內(nèi)部結(jié)構(gòu)如圖12所示。

image.png
8259A內(nèi)部結(jié)構(gòu)

1.?dāng)?shù)據(jù)總線緩沖器

數(shù)據(jù)總線緩沖器是三態(tài)、雙向、8位的緩沖器,D7~D0用于和CPU的數(shù)據(jù)總線連接, CPU通過數(shù)據(jù)總線緩沖器向8259A傳送命令碼,或從8259A讀取狀態(tài)字。

在中斷響應(yīng)時, 8259A通過數(shù)據(jù)總線緩沖器向CPU提供CALL指令的操作碼和調(diào)用子程序入口地址的低8位和高8位,以及中斷類型碼。

2.中斷請求寄存器(IRR)

中斷請求寄存器用來寄存所有IR輸入線輸入的中斷請求信號,即保存正在請求服務(wù)的中斷級。有一個請求輸入線就有一個觸發(fā)器來保存相應(yīng)的狀態(tài),共有IR0~I(xiàn)R7 8條輸入線,連接8個I/O設(shè)備的中斷請求信號。

當(dāng)IR0~I(xiàn)R7中的某一條請求線上升為高電平時,IRR中的相應(yīng)位置“1”。

3.優(yōu)先權(quán)電路

優(yōu)先權(quán)電路的主要作用是確定中斷請求寄存器IRR中各位的優(yōu)先級,并確定能否向CPU申請中斷。當(dāng)IRR中有中斷請求觸發(fā)器置位時,優(yōu)先權(quán)電路就選出其中的未被屏蔽的最高優(yōu)先級,并對該優(yōu)先級編碼;然后再按照一定的優(yōu)先級方式同中斷服務(wù)寄存器(ISR)中的最高優(yōu)先級相比較,以便確定最終有無向CPU申請中斷的資格。若可以申請中斷,則CPU響應(yīng)中斷請求;發(fā)來第一個INTA脈沖時,將級別最高者放入中斷服務(wù)寄存器(ISR)中的相應(yīng)位置。

4.中斷服務(wù)寄存器(ISR)

中斷服務(wù)寄存器(ISR)的主要作用是保存當(dāng)前被CPU服務(wù)的中斷級,也就是記錄正在被處理的中斷請求。當(dāng)某一級中斷被CPU響應(yīng),并執(zhí)行它的中斷服務(wù)程序時,中斷服務(wù)寄存器ISR中的相應(yīng)位置“1”,并一直保持該狀態(tài)(非自動結(jié)束中斷方式),直到CPU發(fā)出結(jié)束中斷命令EOI為止。

在中斷嵌套情況下,ISR中會有多個位被置“1”。在CPU響應(yīng)中斷,發(fā)出第一個INTA時,最高優(yōu)先級的狀態(tài)在ISR中相應(yīng)位置“1”,同時該位的編碼寫入中斷向量寄存器的低3位(高5位由初始化編程時寫入),以備在第二個INTA到來時送出對應(yīng)的中斷類型號。

image.png
8259A內(nèi)部結(jié)構(gòu)

5.中斷屏蔽寄存器(IMR)

中斷屏蔽寄存器的主要作用是對各中斷源的中斷請求信號(IR0~I(xiàn)R7)實現(xiàn)開關(guān)控制。這個寄存器中保存對輸入請求線上的屏蔽信息,這些信息是由CPU送給8259A的操作命令OCW1來設(shè)定的。當(dāng)某位為“1”時,表示禁止相應(yīng)的中斷請求進(jìn)入優(yōu)先權(quán)電路。

6.控制邏輯

控制邏輯內(nèi)部包括內(nèi)部控制電路、中斷控制電路、初始化命令寄存器組和操作命令寄存器組,它根據(jù)CPU對8259A編程設(shè)定的工作方式產(chǎn)生8259A內(nèi)部控制信號,并根據(jù)中斷請求寄存器(IRR)和優(yōu)先權(quán)電路的判別結(jié)果,在適當(dāng)時候向CPU發(fā)生中斷請求信號,并接收CPU發(fā)來的中斷響應(yīng)信號INTA,控制提供中斷類型號。

7.讀/寫邏輯

接收CPU來的控制信號,包括端口控制信號A0和CS、數(shù)據(jù)方向控制信號RD和WR??刂茖PU送來的初始化命令ICW和操作命令OCW存入8259A內(nèi)部相應(yīng)的寄存器,用以規(guī)定8259A的工作方式。

8.級聯(lián)緩沖/比較器

一片8259A最多可構(gòu)成八級中斷(IR0~I(xiàn)R7),要想擴(kuò)展中斷源,必須多片連在一起,即采用級聯(lián)方式。級聯(lián)緩沖/比較器的功能有兩個,一是提供級聯(lián)控制,二是提供緩沖控制。CAS2~CAS0用于提供級聯(lián)信號,主片輸入,從片輸出。

對于8088 CPU而言,8259A的工作過程是:

  • ① 某一條或某幾條中斷請求線(IR0~I(xiàn)R7)有中斷申請,變?yōu)楦唠娖?,使中斷請求寄存器(IRR)的相應(yīng)位置“1”。
  • ② IMR對IRR屏蔽。未被屏蔽的請求信號經(jīng)優(yōu)先權(quán)電路判別最高優(yōu)先級,再經(jīng)由優(yōu)先級方式確定沒有更高級優(yōu)先權(quán)的中斷,則8259A的INT端輸出為“1”,向CPU提出中斷請求。
  • ③ CPU響應(yīng)中斷后發(fā)出中斷響應(yīng)信號。在中斷響應(yīng)過程中,CPU要發(fā)出兩次INTA信號。當(dāng)8259A收到第一個INTA信號后,ISR中當(dāng)前被選中的最高優(yōu)先級對應(yīng)的那一位置“1”,同時IRR中的相應(yīng)位被清“0”,表示該位上的中斷請求已被CPU所接受。
  • ④ 8259A收到第二個INTA信號后,驅(qū)動數(shù)據(jù)總線將對應(yīng)的中斷類型碼輸出。
  • ⑤ 如果是自動結(jié)束中斷方式(AEOI),則在第二個INTA脈沖結(jié)束時將ISR中置“1”的位復(fù)位,否則該位的“1”將一直保持,直到CPU發(fā)出EOI命令為止。

2 8259A的引腳功能

8259A是一個28引腳的雙列直插式芯片,其引腳信號可參見圖7-12。

  • ① D7~D0:雙向三態(tài)數(shù)據(jù)總線,8位,用于傳送控制和狀態(tài)信息、中斷向量、中斷類型碼等。
  • ② IR7~I(xiàn)R0:中斷請求輸入信號,8級中斷源。一般情況下,IR7的中斷優(yōu)先級別最低,而IR0的中斷優(yōu)先級別最高。能夠使IRR的相應(yīng)位置“1”的IRi的有效狀態(tài)有兩種,可用命令來設(shè)定。
    • 其一是邊沿觸發(fā),即IR必須由低變高產(chǎn)生一個跳變才能使IRR相應(yīng)位的觸發(fā)器置“1”,提出中斷請求;
    • 其二是電平觸發(fā),即只要IR是一個高電平即可。邊沿觸發(fā)具有鎖存中斷源中斷請求信號的能力,只要有一次跳變,IRR就能鎖存中斷請求狀態(tài),而與中斷源無關(guān)。而在電平觸發(fā)方式中,IRR不能鎖存中斷源的中斷請求狀態(tài),即在中斷響應(yīng)之前,中斷源必須有能力保持中斷請求信號為高電平,否則將視為自行撤銷中斷請求。
  • ③ RD:讀信號,輸入。當(dāng)RD=0時,8259A將狀態(tài)信息送至數(shù)據(jù)總線供CPU使用。
  • ④ WR:寫信號,輸入。當(dāng)WR=0時,8259A接收數(shù)據(jù)總線上CPU傳來的數(shù)據(jù)。
  • ⑤ CS:片選信號,輸入,低電平有效。當(dāng)CS=0時8259A被選中,允許CPU對8259A進(jìn)行讀/寫操作;CS=1時芯片未被選中。
  • ⑥ A0:地址線,輸入。該信號與CS、RD、WR一起用來選擇8259A的內(nèi)部寄存器。該信號通常直接連到地址總線的A0,8259A用該信號控制接收CPU的命令字或向CPU發(fā)狀態(tài)信息。
    • 8259A有4個初始化命令字和3個操作命令字,共需要7個寄存器,但卻只有一條地址線A0,只能有2個端口地址,即一個奇地址和-個偶地址,所以7個寄存器只好公用2個地址,并以讀/寫順序和命令字特征碼加以區(qū)別。
  • ⑦ INT:中斷請求信號,輸出。只要8259A的中斷邏輯判定中斷請求信號有效,就在這個引腳上產(chǎn)生一個高電平,可接到CPU的中斷輸入端。
  • ⑧ INTA:中斷響應(yīng)信號,輸入,是來自于CPU的響應(yīng)脈沖,8259A根據(jù)ISR中的置位情況提供相應(yīng)的中斷類型碼。8259A在第二個INTA時向CPU提供的中斷類型碼的高5位是用戶在程序中規(guī)定的,而低3位則是由8259A自動產(chǎn)生的。
  • ⑨ VCC,GND:電源(+5V)和地。
  • ⑩ CAS0~CAS2:級聯(lián)信號,雙向,形成8259A的專用總線,以便構(gòu)成多片8259A的級聯(lián)結(jié)構(gòu)。當(dāng)8259A是主片時,CAS0~CAS2是輸出線,在CPU響應(yīng)中斷時,輸出被選中的從片代碼。
    • 當(dāng)8259A是從片時,CAS0~CAS2是輸入線,在CPU響應(yīng)中斷時,接收主片送出的被選中的從片代碼,然后在從片內(nèi)將接收來的代碼與本從片代碼相比較,看是否一致,從而確定CPU響應(yīng)的是不是本從片的中斷請求。
  • [11] 非SP/非EN:從片編程/允許緩沖器信號,雙向,低電平有效、雙重功能引腳。當(dāng)工作在緩沖器方式時,它是輸出信號,用做允許緩沖器接收和發(fā)送的控制信號(非EN),即啟動8259A至CPU之間的數(shù)據(jù)總線緩沖器。如圖13所示,8259A通過總線緩沖器8286(或者用74245)與系統(tǒng)數(shù)據(jù)總線連接,控制8286的傳送方向。當(dāng)工作在非緩沖器方式時,它是輸入信號,用來指明系統(tǒng)中的8259A究竟是作為主片工作(非SP/非EN=1)的,還是作為從片工作(非SP/非EN=0)的,要由程序命令來設(shè)定。緩沖器方式適合于8259A的級聯(lián)。

image.png

3 8259A的工作方式

中斷控制器8259A有四種主要的工作方式:

  • 全嵌套、
  • 循環(huán)優(yōu)先級、
  • 特定屏蔽
  • 程序查詢方式;

還有四種從屬的工作方式:

  • 中斷結(jié)束方式、
  • 讀狀態(tài)、
  • 中斷請求觸發(fā)方式
  • 緩沖器方式。

另外,它還被分為兩大工作類型,即

  • 單片工作
  • 多片級聯(lián)工作。

1.全嵌套方式

這是一種最普通的工作方式。8259A在初始化工作完成后若未設(shè)定其他的工作方式,就自動進(jìn)入全嵌套方式。這種方式的特點是:

  • ① 中斷請求的優(yōu)先級固定,其順序是IR0最高,依次降低,IR7最低。
  • ② 中斷服務(wù)寄存器(ISR)保存優(yōu)先權(quán)電路確定的優(yōu)先級狀態(tài),相應(yīng)位置“1”,并且一直保持這個服務(wù)“記錄”狀態(tài),直到CPU發(fā)出中斷結(jié)束命令為止。
  • ③ 在ISR置位期間,不再響應(yīng)同級及較低級的中斷請求,而高級的中斷請求如果CPU開放中斷的話仍能夠得到中斷服務(wù)。
  • ④ IR7~I(xiàn)R0的中斷請求輸入可分別由中斷屏蔽寄存器(IMR)的相應(yīng)位(D7~D0)屏蔽與允許,對某一位的屏蔽與允許操作不影響對其他位的中斷請求操作。

全嵌套工作方式由ICW4的D4=0來確定。

2.循環(huán)優(yōu)先級方式

循環(huán)優(yōu)先級方式是8259A 管理優(yōu)先級相同的設(shè)備時所采用的中斷管理方式 ,它包括自動循環(huán)優(yōu)先級方式和特殊循環(huán)優(yōu)先級方式。

  • (1)自動循環(huán)各 設(shè)備優(yōu)先級相同,當(dāng)某一個設(shè)備受到服務(wù)之后,它的優(yōu)先級就自動地排到最后。所謂各設(shè)備優(yōu)先級相同,是指它們的地位相同,受服務(wù)的機(jī)會均等,但是畢竟各中斷源的優(yōu)先級需要排出一個順序,否則同時有多個中斷源申請中斷時計算機(jī)無法處理,于是排出的優(yōu)先級由高到低的順序為:

image.png

這是一個循環(huán)套,有一個最低優(yōu)先權(quán)指針,哪一臺設(shè)備剛被服務(wù)后,它就被賦予最低優(yōu)先權(quán)指針。例如,IR7剛被服務(wù),它就被賦予最低優(yōu)先權(quán)指針,按照循環(huán)順序,IR0的優(yōu)先級就是最高優(yōu)先級;如果IR4剛被服務(wù),IR4就被賦予最低優(yōu)先權(quán)指針,按照優(yōu)先級循環(huán)順序,IR5的優(yōu)先級就最高。這樣,當(dāng)一臺設(shè)備提出中斷請求后,在最不利的情況下(此時它的優(yōu)先級最低),待其他7臺設(shè)備被輪流服務(wù)一次以后,它變?yōu)樽罡邇?yōu)先級,從而得到系統(tǒng)的服務(wù)。但是如果不是在循環(huán)優(yōu)先級方式下(包括自動循環(huán)和特殊循環(huán))工作,它可能永遠(yuǎn)得不到系統(tǒng)的服務(wù)。

自動循環(huán)優(yōu)先級方式由OCW2的R=1、SL=0來確定。

  • (2)特殊循環(huán)

特殊循環(huán)優(yōu)先級方式與自動循環(huán)優(yōu)先級方式的不同之處在于:在自動循環(huán)優(yōu)先級方式中,某一設(shè)備在被服務(wù)之后被確定為最低優(yōu)先級;而在特殊循環(huán)優(yōu)先級方式中,通過編程來確定某一設(shè)備為最低優(yōu)先級。如IR5被指定為最低優(yōu)先級,則IR6的優(yōu)先級最高。特殊循環(huán)優(yōu)先級方式由OCW2的R=1、SL=1來確定,L2L1L0用于指定最低優(yōu)先級的二進(jìn)制編碼。

一般來說,在命令控制字中,凡是采用“L2L1L0”的都有“特殊”的含義。

3.特定屏蔽方式

8259A的每個中斷請求輸入信號都可由中斷屏蔽寄存器(IMR)的相應(yīng)位進(jìn)行屏蔽, IMR的D0對應(yīng)IR0,D1對應(yīng)IR1…… D7對應(yīng)IR7。相應(yīng)位為“1”則屏蔽中斷輸入,相應(yīng)位為“0”則允許中斷輸入。IMR寄存器由操作命令OCW1進(jìn)行設(shè)置。對中斷請求輸入信號的屏蔽方式一般有兩種:正常屏蔽方式和特定屏蔽方式。

在正常屏蔽方式中,每一個屏蔽位對應(yīng)一個中斷請求輸入信號,屏蔽某一個中斷請求輸入信號對其他請求信號沒有影響,未被屏蔽的中斷請求輸入信號仍然按照設(shè)定的優(yōu)先級順序進(jìn)行工作,而且保證當(dāng)某一級中斷請求被響應(yīng)服務(wù)時,同級和低級的中斷請求將被禁止。如果CPU允許中斷,則高級的中斷請求還會被響應(yīng),實現(xiàn)中斷嵌套。

特定屏蔽方式也叫特殊的中斷屏蔽方式,當(dāng)設(shè)定了特定屏蔽方式后,IMR中為“1”的位仍要屏蔽相應(yīng)的中斷請求輸入信號,但所有未被屏蔽的位被全部開放,無論優(yōu)先級別是低還是高,都可以申請中斷,并且都可能得到CPU的響應(yīng)并為之服務(wù)。也就是說,這種方式拋棄了同級或低級中斷被禁止的原則,任何級別的未被屏蔽的中斷請求都會得到響應(yīng),所以,可以有選擇地設(shè)定IMR的狀態(tài),開啟需要的中斷輸入。

特定屏蔽方式由OCW3的ESMM和SMM確定,設(shè)定時ESMM=1、SMM=1,復(fù)位時ESMM=1、SMM=0。

4.程序查詢方式

程序查詢方式不使用中斷,是用軟件尋找中斷源并為之服務(wù)的工作方式。在這種方式下,8259A不向CPU發(fā)送INT信號(實際上是8259A的INT信號不連到CPU的INTR信號上),或者CPU關(guān)閉自己的中斷允許觸發(fā)器,使IF=0,禁止中斷輸入。申請中斷的優(yōu)先級不是由8259A提供的中斷類型碼而是由CPU發(fā)出查詢命令得到的。

查詢時,CPU先向8259A發(fā)出查詢命令,8259A接到查詢命令后,就把下一個IN指令(對偶地址端口的讀指令)產(chǎn)生的RD脈沖作為中斷響應(yīng)信號,此時,若有中斷請求信號,則在ISR中相應(yīng)位置“1”,并把該優(yōu)先級送至數(shù)據(jù)總線。在RD期間8259A送至數(shù)據(jù)總線供CPU讀取查詢的代碼格式為:

image.png

其中,I是中斷請求標(biāo)志,I=1表示有中斷請求,此時W2W1W0有效,W2W1W0就表示申請服務(wù)的最高中斷優(yōu)先級。I=0表示沒有中斷請求,此時W2W1W0無效。例如讀入的查詢代碼是83H,則表示有中斷請求,申請中斷的優(yōu)先級輸入是IR3。

在查詢方式下,CPU不需執(zhí)行中斷響應(yīng)周期,不必安排中斷向量表,8259A能自動提供最高優(yōu)先級中斷請求信號的二進(jìn)制代碼,供CPU查詢。該方式使用方便,可擴(kuò)充中斷優(yōu)先級數(shù)目,擴(kuò)充數(shù)目超過64級以上(此時不是中斷級聯(lián)方式,而是一般的端口連接。在查詢時,只涉及8259A端口地址。顯然,在查詢方式下,能夠擴(kuò)展的8259A的數(shù)目僅限于系統(tǒng)的I/O空間容量)。

查詢方式是由OCW3的P=1來確定的。

5.中斷結(jié)束方式

所謂中斷結(jié)束方式是指中斷如何結(jié)束的方法,這里的“結(jié)束”不是指中斷服務(wù)程序的結(jié)束。中斷服務(wù)程序的結(jié)束用IRET指令就可完成,這里的“結(jié)束”是指如何和何時使8259A中的ISR中的相應(yīng)位清0。ISR中某位為“1”,表示CPU正在為之服務(wù);某位為“0”表示CPU已經(jīng)停止(結(jié)束)為之服務(wù)。而IRET指令主要是恢復(fù)程序的斷點,它并不能使ISR的相應(yīng)位清0。

8259A的中斷結(jié)束方式有兩種:命令中斷結(jié)束方式(EOI)和自動中斷結(jié)束方式(AEOI)。

  • (1)自動結(jié)束

在自動中斷結(jié)束(AEOI)方式下,8259A自動地在最后一個INTA中斷響應(yīng)脈沖的后沿將中斷服務(wù)寄存器ISR中的相應(yīng)位清0。這種方式的過程是:中斷請求,CPU響應(yīng),發(fā)第一個INTA,ISR相應(yīng)位置“1”, CPU發(fā)第二個INTA,8259A提供中斷類型碼,ISR相應(yīng)位清0,結(jié)束。顯然,ISR的相應(yīng)置“1”位在CPU中斷響應(yīng)周期內(nèi)自生自滅,因此在ISR中不會有兩個或兩個以上的置“1”位。

自動中斷結(jié)束方式(AEOI)的應(yīng)用場合一般是,8259A單片系統(tǒng),或不需要嵌套的多級中斷系統(tǒng)。AEOI方式只能用于主片8259A,不能用于從片8259A。

自動中斷結(jié)束方式由ICW4的AEOI=1確定。

  • (2)命令結(jié)束命令中斷結(jié)束方式(EOI)是在中斷服務(wù)程序返回之前,向8259A發(fā)中斷結(jié)束命令(EOI),使ISR中的相應(yīng)位清0。它包括兩種情況:
  • ① 非特殊EOI命令:全嵌套方式下的中斷結(jié)束命令稱為非特殊EOI命令,該命令能自動地把當(dāng)前ISR中的最高優(yōu)先級的那一位清0。非特殊EOI命令是由OCW2的R=0、SL=0、EOI=1確定的。
  • ② 特殊EOI命令:非全嵌套方式下的中斷結(jié)束命令稱為特殊EOI命令。在非全嵌套方式下,由于無法確定最后響應(yīng)的是哪一級中斷(非全嵌套方式的各中斷源沒有固定的優(yōu)先級別,因此也就不知道誰高誰低),所以應(yīng)向8259A發(fā)出特殊EOI命令,即指定哪一級中斷返回,使其ISR中的相應(yīng)位清0。特殊EOI命令是由OCW2的R=0、SL=1、EOI=1確定的,由L2L1L0指定ISR中要復(fù)位的相應(yīng)位的二進(jìn)制編碼。

6.讀8259A狀態(tài)

讀8259A的狀態(tài)是指讀8259A內(nèi)部的IRR、ISR和IMR的內(nèi)容。

  • ① 讀IRR:先發(fā)出OCW3命令(使RR=1, RIS=0,地址A0=0),在下一個RD脈沖到來時可讀出IRR,其中包含尚未被響應(yīng)的中斷源情況。
  • ② 讀ISR:先發(fā)出OCW3命令(使RR=1, RIS=1,地址A0=0),在下一個RD脈沖到來時可讀出ISR,其中包含正在服務(wù)的中斷源情況,從中也可看出中斷嵌套情況。
  • ③ 讀IMR:不必先發(fā)OCW3,只要讀出奇地址端口(A0=l),即可讀出IMR,其中包含設(shè)置的中斷屏蔽情況。

7.中斷請求觸發(fā)方式

8259A的中斷請求寄存器IRR中有8個中斷請求觸發(fā)器,分別對應(yīng)8個中斷請求信號的輸入端IR0~I(xiàn)R7。這些觸發(fā)器的觸發(fā)方式有兩種,即邊沿觸發(fā)和電平觸發(fā)。

  • (1)邊沿觸發(fā) 當(dāng)輸入端有從低電平到高電平的正跳變時,則產(chǎn)生中斷請求(IRR中相應(yīng)位的觸發(fā)器被觸發(fā)置“1”,而不是直接向CPU申請中斷)。此后,即使輸入端仍然保持高電平也不會再產(chǎn)生中斷。也就是說,只有正跳沿才能產(chǎn)生中斷。

邊沿觸發(fā)方式由ICW1的LTIM=0確定。

  • (2)電平觸發(fā)

當(dāng)輸入端為高電平時產(chǎn)生中斷請求(只要為高電平就可以,不需要脈沖跳變)。但需要注意的是,在電平觸發(fā)方式下,在發(fā)出EOI命令以前,或CPU開放中斷以前,必須去掉中斷請求信號(使其變?yōu)榈碗娖剑?,否則將產(chǎn)生第二次中斷。

電平觸發(fā)方式由ICW1的LTIM=1確定。

8.緩沖器方式

所謂緩沖器方式就是在8259A和數(shù)據(jù)總線之間掛接總線驅(qū)動器的方式。在緩沖器方式下,SP/EN引腳將使用EN功能,并使之輸出一個有效低電平,開啟緩沖器工作。該方式多用于級聯(lián)的大系統(tǒng)中。

緩沖器方式由ICW4的BUF=1確定。

9.特殊的全嵌套方式

該方式適用于多片級聯(lián),且必須將優(yōu)先級保存在各從片8259A中的大系統(tǒng)。 該方式與普通的全嵌套方式的工作情況基本相同,有兩點區(qū)別:

  • ① 當(dāng)某從片的一個中斷請求被CPU響應(yīng)后,該從片的中斷仍未被禁止(即沒有被屏蔽),即該從片中的高級中斷仍可提出申請。(全嵌套方式中這樣的中斷是被屏蔽的,因為這種中斷對從片而言后者是高級中斷,可以嵌套,但對主片而言,由于它們來自于同一個從片,故中斷優(yōu)先級相同,而在全嵌套方式中,同級和低級中斷是被禁止的。)
  • ②在某個中斷源退出中斷服務(wù)程序之前,CPU要用軟件檢查它是否是這個從片中的唯一中斷。檢查的辦法是:送一個非特殊的中斷結(jié)束命令(EOI)給這個從片,然后讀它的ISR,檢查是否為0,若為0則唯一,即只有這一個中斷在被服務(wù),沒有嵌套;若不為0則不唯一,說明還有其他的中斷在被服務(wù),該中斷是嵌套在其他中斷里的。只有唯一時,才能把另一個非特殊EOI命令送至主片,結(jié)束此從片的中斷。否則,如果過早地結(jié)束主片的工作記載而從片尚有未處理完的嵌套中斷的話,整個系統(tǒng)的中斷嵌套環(huán)境就會混亂。特殊的全嵌套方式由ICW4的SFNM=1確定。

10.多片級聯(lián)方式

在級聯(lián)系統(tǒng)中,每個從片的中斷請求輸出線INT直接連到主片的某個中斷請求輸入線上,主片的CAS0~CAS2是輸出線,輸出被響應(yīng)的從片代碼,從片的CAS0~CAS2是輸入線,接收主片發(fā)出的從片代碼,以便與自身代碼相比較。級聯(lián)方式的要點如下:

  • ① 一個8259A主片至多帶8個從片,可擴(kuò)展至64級。
  • ② 緩沖方式下,主片和從片的設(shè)定由ICW4的M/S位確定,M/S=1是主片,M/S=0是從片。M/S的狀態(tài)在BUF=l時有意義。
  • ③ 在非緩沖方式下,主片和從片由SP/EN引腳的SP功能確定,SP=1是主片,SP=0是從片。
  • ④在級聯(lián)系統(tǒng)中,主片的三條級聯(lián)線相當(dāng)于從片的片選信號,從片的INT是主片的中斷請求輸入信號。
  • ⑤ 主片和從片需要分別進(jìn)行初始化操作,可設(shè)定為不同的工作方式。

級聯(lián)方式由ICW1的SNGL=0確定。

上述的各種工作方式中,全嵌套方式、自動中斷結(jié)束方式、中斷請求觸發(fā)方式、緩沖器方式、特殊的全嵌套方式、級聯(lián)方式 等是由初始化命令字ICW來設(shè)定的

而循環(huán)優(yōu)先級方式、特定屏蔽方式、查詢方式、命令中斷結(jié)束方式、讀8259A狀態(tài)等是由 操作命令字OCW來設(shè)定的

4 8259A的編程

8259A是一個可編程器件。為了使8259A實現(xiàn)預(yù)定的中斷管理功能,并按預(yù)定的方式工作,就必須對它進(jìn)行初始化編程。所謂初始化編程是指系統(tǒng)在上電或復(fù)位后對可編程器件進(jìn)行控制字設(shè)定的一段程序。8259A的命令控制字包括兩個部分,即初始化命令字和操作命令字。

初始化命令字一般在系統(tǒng)復(fù)位后的初始化編程中設(shè)置,用于確定8259A的基本工作方式,設(shè)置以后一般保持不變。操作命令是在初始化以后的正常工作中寫入的,它實現(xiàn)對8259A的狀態(tài)、中斷方式和過程的動態(tài)控制,在工作中可隨時寫入操作命令字以修改某些控制方式。

8259A內(nèi)部有7個寄存器,分為兩組:初始化命令寄存器組和操作命令寄存器組。初始化命令寄存器組包括4個寄存器:ICW1~I(xiàn)CW4對應(yīng)的寄存器。操作命令寄存器組包括3個寄存器:OCW1~OCW3對應(yīng)的寄存器。

由于8259A只有一條地址線A0,所以它只能有兩個端口地址;而8259A有7個命令字,每個命令字要寫入相應(yīng)的寄存器。為此,采取以下幾點措施:第一,以端口地址區(qū)分;第二,把命令字中的某些位作為特征碼來區(qū)分;第三,以命令字的寫入順序來區(qū)分。

在PC/XT中,8259A的兩個端口地址分別為20H和21H。下面具體討論8259A的命令字。

1.初始化命令字

初始化命令字有4個:ICW1~I(xiàn)CW4。8259A在進(jìn)入正常工作之前,必須將系統(tǒng)中的每一個8259A進(jìn)行初始化設(shè)置,以此建立8259A的基本工作條件。

寫入的初始化命令字一般為2~4個(在某些條件下,4個初始化命令字并非必須全部寫入),最多為4個,然而,ICW1使用偶地址,而ICW2、ICW3、ICW4 都使用奇地址。為了相互區(qū)別,初始化命令字的寫入必須有一個固定的順序,其順序如圖14所示。

image.png
8259A的ICW寫入順序

系統(tǒng)上電或復(fù)位以后,對8259A第一件要做的工作就是按圖7-14的順序?qū)懭氤跏蓟钭帧?/p>

初始化命令字格式如圖7-15所示。初始化命令字ICW1的主要功能是:確定級聯(lián)方式,觸發(fā)方式。寫入ICW1后,8259A內(nèi)部自動復(fù)位,其復(fù)位功能為:

  • ① 初始化命令字順序邏輯重新置位,準(zhǔn)備接收ICW2~I(xiàn)CW4。
  • ② 清除IMR和ISR。
  • ③ IRR狀態(tài)可讀。
  • ④ 優(yōu)先級排隊,IR0最高,IR7最低。
  • ⑤ 特殊屏蔽方式復(fù)位。
  • ⑥ 設(shè)定中斷請求信號由低變高的邊沿觸發(fā)有效。
  • ⑦ 自動EOI循環(huán)方式復(fù)位。

初始化命令字ICW2的主要功能是:

  • 確定中斷向量,
  • 中斷類型碼。

初始化命令字ICW3的主要功能是:確定主片/從片的級聯(lián)狀態(tài),即確定主片的連接位和從片的編碼。

初始化命令字ICW4的主要功能是:選擇CPU系統(tǒng),確定中斷結(jié)束方式,規(guī)定是主片還是從片,選擇是否采用緩沖方式。

初始化命令字一定要在系統(tǒng)復(fù)位后首先寫入8259A,寫入時要嚴(yán)格按照圖15的順序,不允許顛倒。

image.png

寫完初始化命令字后,8259A已經(jīng)建立了基本的工作環(huán)境,可以接受中斷請求,也可以寫入操作命令字OCW來改變某些中斷管理方式。

操作命令字可以隨時寫入、修改,但初始化命令字一經(jīng)寫入一般不再改動。

如果在寫入初始化命令字后不寫入操作命令字,則8259A便處于全嵌套工作方式,即中斷優(yōu)先級為IR0最高,IR7最低,禁止同級及低級中斷,高級中斷可嵌套處理。

2.操作命令字

在初始化命令字寫入8259A之后,8259A就準(zhǔn)備接收中斷請求輸入信號了。

在8259A工作期間,CPU可以隨時通過操作命令字使8259A完成各種不同的工作方式。8259A有三種操作命令字:OCW1、OCW

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    1907

    瀏覽量

    45403
  • 比較器
    +關(guān)注

    關(guān)注

    14

    文章

    1623

    瀏覽量

    107009
  • 8259A
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    8266
  • 中斷控制器
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    9426
  • NMOS管
    +關(guān)注

    關(guān)注

    2

    文章

    119

    瀏覽量

    5380
收藏 人收藏

    評論

    相關(guān)推薦

    干貨!硬件看中斷APIC

    前面我們學(xué)習(xí)了8259A,但8259A 只適合單 CPU 的情況,為了充分挖掘 SMP 體系結(jié)構(gòu)的并行性,能夠把中斷傳遞給系統(tǒng)中的每個 CPU 至關(guān)重要。
    的頭像 發(fā)表于 08-08 17:28 ?4758次閱讀
    干貨!<b class='flag-5'>從</b><b class='flag-5'>硬件</b><b class='flag-5'>看中斷</b><b class='flag-5'>之</b>APIC

    proteus7.8中8259仿真問題

    建立8259A仿真實例,根據(jù)論壇幫助,添加了文字DLL,但現(xiàn)在中斷沒有響應(yīng),軟件中斷可以響應(yīng),硬件中斷就是不響應(yīng)。附件有我的例子,希望高手幫
    發(fā)表于 10-25 21:13

    求答

    8086CPU系統(tǒng)中,采用8259A進(jìn)行中斷管理。設(shè)8259A工作在全嵌套方式,發(fā)送EIO命令結(jié)束
    發(fā)表于 08-26 14:25

    求助!??!protues的8259仿真問題

    ,DATAMOV DS,AX;8259A初始化MOV DX,IOY1+00HMOV AL,13H;初始化8259A的ICW1OUT DX,ALMOV DX,IOY1+02HMOVAL,08H;送中斷
    發(fā)表于 05-30 21:48

    中斷系統(tǒng)擴(kuò)展設(shè)計

    為PC/AT系統(tǒng)(ISA總線)設(shè)計中斷擴(kuò)展卡,用8259A芯片將可屏蔽中斷擴(kuò)展至22個,擴(kuò)展的825
    發(fā)表于 01-13 16:35

    8251A編程字的相關(guān)資料分享

    、8259A編程字(1)ICW1:設(shè)置請求的觸發(fā)方式和芯片數(shù)目(2)ICW2:設(shè)置中斷類型號(3)ICW3:用于8259A的級聯(lián)方式...
    發(fā)表于 12-22 07:51

    8259 VHDL代碼

    a8259 可編程中斷控制 altera提供 The a8259 is designed to simplify the implementation of the interrupt
    發(fā)表于 05-20 11:37 ?40次下載

    8259A在51單片機(jī)中的應(yīng)用

    8259A在MCS51中的應(yīng)用進(jìn)行了分析,給出了電路和相應(yīng)的程序,并對應(yīng)用中容易遇到的問題給出了解決方案。
    發(fā)表于 11-07 15:20 ?57次下載

    8259引腳圖引腳功能

    8259引腳圖引腳功能 8259一種中斷控制芯片,在單片機(jī)系統(tǒng)中般用來擴(kuò)展單片機(jī)的
    發(fā)表于 01-11 00:04 ?8142次閱讀
    <b class='flag-5'>8259</b>引腳圖引腳功能

    8086上8259應(yīng)用案例

    8259A的IR2端(INT2端)輸入中斷請求信號(由開關(guān)提供),74LS273接8個指示燈,要求第中斷LED0亮,第二次
    發(fā)表于 12-31 14:36 ?65次下載

    RT8259數(shù)據(jù)手冊

    RT8259芯片手冊
    發(fā)表于 02-15 22:43 ?0次下載

    8259a的5工作方式詳細(xì)介紹

    8259A是專門為了對8085A和8086/8088進(jìn)行中斷控制而設(shè)計的芯片.本文主要介紹了8259A主要功能及
    的頭像 發(fā)表于 05-23 14:12 ?2.2w次閱讀
    <b class='flag-5'>8259a</b>的5<b class='flag-5'>種</b>工作方式詳細(xì)介紹

    8259a初始化的步驟及代碼介紹

    本文首先介紹了8259a工作初始化的步驟及程序,其次介紹了通過OCW對8259A進(jìn)行操作方法,最后介紹了8259A初始化編程。
    的頭像 發(fā)表于 05-23 14:24 ?3w次閱讀
    <b class='flag-5'>8259a</b>初始化的步驟及代碼介紹

    8259引腳和工作原理介紹

    本文首先介紹了8259A主要功能及內(nèi)部結(jié)構(gòu),其次介紹了8259A引腳圖及工作原理和工作方式,最后介紹了8259A的應(yīng)用實例。
    發(fā)表于 05-28 08:34 ?2w次閱讀
    <b class='flag-5'>8259</b>引腳和工作原理介紹

    8259A中斷控制芯片的引腳圖和主要功能的資料概述

      8259A一種中斷控制芯片,在單片機(jī)系統(tǒng)中般用來擴(kuò)展單片機(jī)的中斷,pc機(jī)中也有這個
    的頭像 發(fā)表于 09-08 11:43 ?1.3w次閱讀
    <b class='flag-5'>8259A</b><b class='flag-5'>中斷</b>控制<b class='flag-5'>芯片</b>的引腳圖和主要功能的資料概述