嘗試理解中斷控制器8259A芯片的設計思想
8259A中斷控制器是CPU用來接收外部中斷信息的接口芯片,由于這塊芯片對于理解計算機系統(tǒng)的中斷系統(tǒng)有著非常重要的作用,本文試圖從其內(nèi)部結構著手,闡述其基本原理,嘗試從整體上對其進行把握,從而理解計算機系統(tǒng)接口和中斷的深層意義。
首先看這塊芯片的結構框圖:

從上圖抗議看出,8259A有三個寄存器:ISR,IRR和IMR,四個命令字:ICW1-ICW4,三個操作字:OCW1-OCW3,還要八個接收外部中斷信息的引腳:IR0=IR7。




從上面幾個圖可以看出,只有IRR和IMR相互配合,才能使得相應的中斷請求有效,比如只有當IRR的Q3=1,IMR的Q3=0,IR3引腳的中斷請求才能變得有效,才能送到下圖中的優(yōu)先權排隊電路,并進一步送到CPU,從而獲得中斷響應。






接下來是四個命令字:ICW1-ICW4:

這四個命令字主要是從整體上設置8259A這塊芯片的工作方式,比如系統(tǒng)里面是不是只有一塊8259A,中斷產(chǎn)生以后,是用一個高電平去通知CPU呢?還是上升沿呢?
最后是三個操作字:OCW1-OCW3。

操作字主要是在8259A整個芯片的工作方式設定以后,再對芯片上的某些細節(jié)進行設定,比如8個中斷源里面我想要哪個呢?
再看下面的實際連接電路:

從上圖看出,當8259A的IR3出現(xiàn)一個中斷源(按鍵被按下)以后,8259A將產(chǎn)生一個高電平(比如5伏特),通過INT引腳傳送給CPU的INTR引腳,CPU的INTR引腳接收到以后,將通過INTA引腳進行回應,這樣,按鍵的信息就被送入了CPU,這也是8259A這塊芯片被稱為接口電路的原因所在。上圖中也可以理解什么是外部中斷,其實就是外部電路的某個開關動作產(chǎn)生的電壓或者電流的變化。
通過上述介紹,我們可以這樣來大概理解8259A這塊芯片的設計思想:
1:我們希望按鍵這樣的信息能被CPU接收到,所以我們需要一塊芯片來解決這個問題。
2:這塊芯片為了達到這個目的,就使用了8根引腳(IR0-IR7)來接收外界中斷信息。
3:因為很多時候,這8個引腳不是都要用到,所以我們可以使用一些寄存器(IMR,IRRd等)來控制哪些引腳可以用,哪些引腳不要。
4:這塊芯片與CPU連接好了以后,需要從整體上來設定一下它的工作方式(ICW1-ICW4),比如中斷出現(xiàn)以后,通知CPU采用高電平還是上升沿呢?整體上設定以后,還要在細節(jié)上進行一些設定(OCW1-OCW3),比如IMR值的具體設定。
整個8259A大概就是為了解決上述問題。