二、硬件排隊
硬件排隊又分兩種辦法:
1.中斷優先權編碼電路
利用硬件編碼器和比較器的優先權排隊電路,假設有8個中斷源,分別接到編碼器。當其中任一個有中斷請求時,通過“或”門口。發出一個中斷請求信號輸入“與”門。但它能否送到的端,取決於比較器的“入”輸出端。
2.優先權中斷鏈結構
Z80係列的外設接口芯片均有“優先權中斷鏈結構”,使處理多級中斷結構較為簡單。在和各外設間不要求附加中斷邏輯電路,就能從幾個同時請求中斷服務的設備中挑選優先級最高的設備,並自動提供該優先設備的中斷矢量的低字節。
Z80的外設接口芯片一般有三根線是用於中斷的,它們是中斷允許輸入,中斷允許輸出和中斷請求。
(1)優先權中斷鏈結構舉例
相連的一種典型接法。優先級的高低取決於設備在鏈形結構中的位置。每個設備的中斷請求線都並聯接到的線上。每一個片子的中斷允許入和中斷允許出接線規則是,優先級最高的芯片,它的120接下一級的121,然後依次排列下去,這樣的連接優先級是遞減的。
①隻有121為高電平的芯片,才有可能發出中斷申請。
②如果121為低電平,則120必定也為低電平。
③如果121為高電平,120為低電平,則表示該芯片的中斷請求正在被口響應,而且正在為它服務。
優先級最高,假如它申請中斷或它的中斷請求正在被響應,則它的輸出為低電平,封鎖中斷鏈上在它後麵所有其它芯片的中斷請求。隻有無中斷請求(或中斷響應已結束並由中斷返回),它的才為高電平,此時才允許芯片發出中斷請求。依此類推,這就是中斷優先鏈結構。Z80係統可以很方便地按預先設計的優先順序實現多級中斷。
④在它們都不申請中斷時,所有芯片的和均處於高電平狀態,也就是說,這時候所有芯片都可以有權提出中斷請求,一旦鏈中的任一芯片提出中斷請求或中斷被響應,在它後麵都變為低電平,封鎖了在它後麵的芯片的中斷請求。但在它前麵的芯片可以提出中斷請求。
(2)可屏蔽中斷時序
在中斷響應周期,自動插入伏態,使有效後,再過2.51時鍾周期才有效。這2.51的間隔是用來識別鏈形結構的中斷優先權最高的外設。
信號與取指周期一樣,在周期上升沿之後就有效。但信號的出現比在輸入和輸出周期中的還要,推遲,直到第一個狀態的下降沿後才有效。這是為了保證有大於兩個周期的時間,從而保證鏈形結構中隻有優先權最高的芯片的中斷矢量能送到總線上,而被響應。
在不增加外部邏輯電路時,2.51的時間最多可以為4個Z80外設服務,當係統超過4個外設時,一般要采取以下兩種措施,
①延長中斷響應周期
延長中斷響應周期是這樣實現的利用線,插入IV等待狀態,推遲送到外設的言號到達的時間,使有效到有效這段時間間隔加大。
②減少門延時間
若Z80的外設接口芯片多於4個,而又不延長中斷響應時間,可以采用“先行控製”的結構。采用這一結構,假若用標準丁邏輯可將多於30個起接到中斷鏈中。
因此,從邏輯關係看出,隻要來自前一級的是低電平,則就是低電平,這一級的四個就同時是低電平,封鎖發出。這一級的任何一個150是低電平,傳到下一級的就是低電平。一般任何一個到下一級輸出端的最大門延遲時間隻有25。以下照此類推,從而可以擴展中斷鏈中的外設數量,而不至於影響中斷響應的時間要求,
5.4-2 中斷嵌套
所謂中斷嵌套,就是在處理低級中斷的服務程序中,可以響應高級中斷請求。這就相當於在低級中斷裏還嵌套有高級中斷。這種嵌套的結構將使高級設備能進入中斷,而暫時掛起較低級的中斷服務。在完成了高級設備的服務後,就自動返回去完成低設備的服務程序。這種中斷嵌套結構,對實時處理係統是很有用的。
在上麵介紹過的鏈形優先權電路,能解決中斷嵌套的問題。隻要在中斷響應周期後,進入低級中斷服務程序內安排一條21指令來開放中斷就行。
我們以芯片按優先順序串起來,形成優先權中斷鏈來說明中斷嵌套的實現。這三塊芯片的並聯接到的,它們之間的優先級是確定的,即優先級最高,優先級最低。假定一開始(沒有中斷申請,則它的120為高電平。當有中斷申請,就把120變低(使510的壓)也變為低電平。510不能發出中斷申請。在完成一條現行指令後,就進入中斷響應周期,用中斷回答信號來響應中斷,讀取中斷矢量把推入堆棧。中斷在每次得到響應之後便自動使,轉到服務程序。在服務程序內,保護現場後,先安排了一條口指令。
5.5 中斷控製邏輯
前麵曾說過,Z80的接口芯片等均有“優先權中斷鏈結構”。這些芯片有三根,是用來形成中斷優先排隊鏈的。這些接口內部均有中斷控製邏輯。
中斷控製邏輯應具有的功能是,在有中斷請求時,能記工服務要求,如果它的上級沒有中斷請求,即181=1時,能發出中斷申請信號,斷11=0;當0,或本級正在被服務,使它0=0,以便封鎖後麵的設備使它們不能提出中斷請求:當發出中斷響應信號時,能把中斷矢量寄存器的內容送上數據總線;在中斷返回,即執行指令後,能恢複初始狀態。下麵,簡要介紹中斷控製邏輯是如何實現上述要求的。
也就是說,隻有本芯片,和同時有效(低電平)時,才能形成中斷控製邏輯的中斷響應信號11。而或信號有效都會將觸發器清“0”,以便使失效。
觸發器是中斷服務觸發器,由中斷響應信號來把中斷掛號觸發器的狀態送給它,這是因為口一旦響應中斷,就清除了中斷掛號觸發器。但為了在中斷服務結束前一直屏蔽本芯片以後的各設備的中斷請求,故設立此觸發器來拷貝觸發器的狀態。當服務程序執行到指令,由指令的機器碼譯碼信號將中斷服務觸發器清“0”。也能使其清“0”。
隻有本設備有服務請求,又不處於中斷服務狀態,且沒有被上級屏蔽(即上級無中斷申請),才可以發出中斷申請號。一旦中斷得到響應,就把清“0”,胃也就變為高電平,或者雖然申請中斷得不到響應,但上級有中斷申請而使0,也會使吞廳失效(變高電平)。