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

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

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

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

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

1、中斷控制器8259A

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

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

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

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

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

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

8259A的主要功能為:

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

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

8259A采用NMOS工藝,只需要單一的+5V電源,它的內(nèi)部電路為靜態(tài)電路,因此不需要時(shí)鐘輸入,其內(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)時(shí), 8259A通過數(shù)據(jù)總線緩沖器向CPU提供CALL指令的操作碼和調(diào)用子程序入口地址的低8位和高8位,以及中斷類型碼。

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

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

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

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

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

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

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

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

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

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

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

6.控制邏輯

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

7.讀/寫邏輯

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

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

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

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

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

2 8259A的引腳功能

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

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

image.png

3 8259A的工作方式

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

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

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

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

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

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

1.全嵌套方式

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

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

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

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

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

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

image.png

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

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

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

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

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

3.特定屏蔽方式

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

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

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

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

4.程序查詢方式

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

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

image.png

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

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

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

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

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

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

  • (1)自動(dòng)結(jié)束

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

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

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

  • (2)命令結(jié)束命令中斷結(jié)束方式(EOI)是在中斷服務(wù)程序返回之前,向8259A發(fā)中斷結(jié)束命令(EOI),使ISR中的相應(yīng)位清0。它包括兩種情況:
  • ① 非特殊EOI命令:全嵌套方式下的中斷結(jié)束命令稱為非特殊EOI命令,該命令能自動(dòng)地把當(dāng)前ISR中的最高優(yōu)先級(jí)的那一位清0。非特殊EOI命令是由OCW2的R=0、SL=0、EOI=1確定的。
  • ② 特殊EOI命令:非全嵌套方式下的中斷結(jié)束命令稱為特殊EOI命令。在非全嵌套方式下,由于無法確定最后響應(yīng)的是哪一級(jí)中斷(非全嵌套方式的各中斷源沒有固定的優(yōu)先級(jí)別,因此也就不知道誰(shuí)高誰(shuí)低),所以應(yīng)向8259A發(fā)出特殊EOI命令,即指定哪一級(jí)中斷返回,使其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),在下一個(gè)RD脈沖到來時(shí)可讀出IRR,其中包含尚未被響應(yīng)的中斷源情況。
  • ② 讀ISR:先發(fā)出OCW3命令(使RR=1, RIS=1,地址A0=0),在下一個(gè)RD脈沖到來時(shí)可讀出ISR,其中包含正在服務(wù)的中斷源情況,從中也可看出中斷嵌套情況。
  • ③ 讀IMR:不必先發(fā)OCW3,只要讀出奇地址端口(A0=l),即可讀出IMR,其中包含設(shè)置的中斷屏蔽情況。

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

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

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

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

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

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

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

8.緩沖器方式

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

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

9.特殊的全嵌套方式

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

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

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

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

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

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

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

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

4 8259A的編程

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

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

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

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

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

1.初始化命令字

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

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

image.png
8259A的ICW寫入順序

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

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

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

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

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

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

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

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

image.png

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

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

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

2.操作命令字

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

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

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

    關(guān)注

    6

    文章

    1911

    瀏覽量

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

    關(guān)注

    14

    文章

    1628

    瀏覽量

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

    關(guān)注

    0

    文章

    6

    瀏覽量

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

    關(guān)注

    0

    文章

    59

    瀏覽量

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

    關(guān)注

    2

    文章

    120

    瀏覽量

    5387
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    干貨!硬件看中斷APIC

    前面我們學(xué)習(xí)了8259A,但8259A 只適合單 CPU 的情況,為了充分挖掘 SMP 體系結(jié)構(gòu)的并行性,能夠把中斷傳遞給系統(tǒng)中的每個(gè) CPU 至關(guān)重要。
    的頭像 發(fā)表于 08-08 17:28 ?4869次閱讀
    干貨!<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仿真實(shí)例,根據(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

    求助!?。rotues的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è)計(jì)

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

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

    8259A編程字(1)ICW1:設(shè)置請(qǐng)求的觸發(fā)方式和芯片數(shù)目(2)ICW2:設(shè)置中斷類型號(hào)(3)ICW3:用于8259A的級(jí)聯(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)用

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

    8259引腳圖引腳功能

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

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

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

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

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

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

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

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

    本文首先介紹了8259a工作初始化的步驟及程序,其次介紹了通過OCW對(duì)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)用實(shí)例。
    發(fā)表于 05-28 08:34 ?2w次閱讀
    <b class='flag-5'>8259</b>引腳和工作原理介紹

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

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