微機原理與接口技術五 輸入輸出與中斷

接口

接口解決的問題

接口要解決的問題
速度匹配(Buffer)
信號的驅動能力(電平轉換器、驅動器)
信號形式和電平的匹配(A/D、D/A)
信息格式(字節流、塊、數據包、幀)
時序匹配(定時關係)
總線隔離(三態門)

接口的功能

數據的緩衝與暫存
信號電平與類型的轉換
增加信號的驅動能力
對外設進行監測、控制與管理,中斷處理

端口與內存的統一編制與獨立編制

統一編址:指令及控制信號統一;內存地址資源減少
獨立編址:內存地址資源充分利用能夠應用於端口的指令較少

8086的I/O端口編址

採用I/O獨立編址方式(但地址線與存儲器共用)
地址線上的地址信號用IO/M來區分
I/O操作只使用20根地址線中的16根:A15~A0
可尋址的I/O端口數爲64K(65536)個
I/O地址範圍爲0000H~FFFFH
IBM PC只使用了1024個I/O地址(0~3FFH)

I/O地址的譯碼

目的
確定端口的地址
參加譯碼的信號
IOR,IOW,高位地址信號
OUT指令將使總線的IOW信號有效
IN指令將使總線的IOR信號有效

當接口只有一個端口時,16位地址線一般應全部參與譯碼,譯碼輸出直接選擇該端口;
當接口具有多個端口時,則16位地址線的高位參與譯碼(決定接口的基地址),而低位則用於確定要訪問哪一個端口。

實例:
在這裏插入圖片描述
在這裏插入圖片描述

簡單接口電路

接口的基本構成

數據輸入/輸出寄存器
暫存輸入/輸出的數據

命令寄存器
存放控制命令
設定接口功能、工作參數和工作方式。

狀態寄存器
保存外設當前狀態,以供CPU讀取。

接口的類型和特點

類型——
按傳輸信息的方向分類:
輸入接口
輸出接口

按傳輸信息的類型分類:
數字接口
模擬接口

按傳輸信息的方式分類:
並行接口
串行接口

特點——
輸入接口:
要求對數據具有控制能力
常用三態門實現

輸出接口:
要求對數據具有鎖存能力
常用鎖存器實現

三態門接口

在這裏插入圖片描述
74LS244
含8個三態門的集成電路芯片
在外設具有數據保持能力時用來輸入接口
74LS244應用例
教材p238
在這裏插入圖片描述

鎖存器接口

通常由D觸發器構成;
特點:
具有對數據的鎖存能力;
不具備對數據的控制能力

常用鎖存器芯片:
74LS273
8D觸發器,不具備數據的控制能力
74LS373
含三態的8D觸發器,具有對數據的控制能力。
既可以做輸入接口,也可以做輸出接口。

基本輸入/輸出方法

無條件傳送

要求外設總是處於準備好狀態
優點:
軟件及接口硬件簡單
缺點:
只適用於簡單外設,適應範圍較窄

查詢工作方式

僅當條件滿足時才能進行數據傳送;
每滿足一次條件只能進行一次數據傳送。
適用場合:
外設並不總是準備好
對傳送速率和效率要求不高
工作條件:
外設應提供設備狀態信息
接口應具備狀態端口

查詢工作方式例
在這裏插入圖片描述
在這裏插入圖片描述

優點:
軟硬件比較簡單
缺點:
CPU效率低,數據傳送的實時性差,速度較慢

中斷控制方式

特點:
外設在需要時向CPU提出請求,CPU再去爲它
服務。服務結束後或在外設不需要時,CPU可
執行自己的程序。
優點:
CPU效率高,實時性好,速度快。
缺點:
程序編制相對較爲複雜。

以上三種I/O方式的共性

信息的傳送均需通過CPU
軟件:
外設與內存之間的數據傳送是通過CPU執行程序來完成的(PIO方式);
硬件:
I/O接口和存儲器的讀寫控制信號、地址信號都是由CPU發出的。
缺點:
程序的執行速度限定了傳送的最大速度

DMA控制方式

特點:
外設直接與存儲器進行數據交換 ,CPU不再擔當數據傳輸的中介者;
總線由DMA控制器(DMAC)進行控制(CPU要放棄總線控制權),內存/外設的地址和讀寫控制信號均由DMAC提供。

過程:
外設向DMA控制器發出“DMA傳送請求”信號DRQ;
DMA控制器收到請求後,向CPU發出“總線請求”信號HOLD;
CPU在完成當前總線週期後會立即發出HLDA信號,對HOLD信號進行響應;
DMA控制器收到HLDA信號後,就開始控制總線,並向外設發出DMA響應信號DACK。

例:從外設向內存傳送若干字節數據
DMAC向I/O接口發出讀信號;
向地址總線上發出存儲器的地址;
發出存儲器寫信號和AEN信號;
傳送數據並自動修改地址和字節計數器
判斷是否需要重複傳送操作;
若數據傳送完,DMA控制器撤銷發往CPU的HOLD信號;
CPU檢測到HOLD失效後,則撤銷HLDA信號,並在下一時鐘週期重新開始控制總線。

DMA工作方式

週期竊取:
每個DMA週期只傳送一個字節或一個字就立即釋放總線。
數據塊傳送:
DMAC在申請到總線後,將一塊數據傳送完後才釋放總線,而不管中間DREQ是否有效。
直接存取方式:
DMA的數據傳送請求直接發到主存儲器,在得到響應後,整個工作過程在DMA控制器中由硬件完成。
在這裏插入圖片描述
特點:
數據傳輸由DMA硬件來控制,數據直接在內存和外設之間交換,可以達到很高的傳輸速率。
控制複雜,硬件成本相對較高。

中斷技術

中斷:
CPU執行程序時,由於發生了某種隨機的事件(外部或內部),引起CPU暫時中斷正在運行的程序,轉去執行一段特殊的服務程序(稱爲中斷服務程序或中斷處理程序),以處理該事件,該事件處理完後又返回被中斷的程序繼續執行,這一過程稱爲中斷。

引入中斷的原因
避免了CPU不斷檢測外設狀態的過程,提高了CPU的利用率。
提高數據傳輸率;
實現對特殊事件的實時響應。

外部中斷響應的一般過程
中斷請求
中斷源識別及中斷判優
中斷響應
中斷處理(服務)
中斷返回

低優先級的中斷程序允許被高優先級的中斷源所中斷

在這裏插入圖片描述

CPU響應INTR的中斷請求需要滿足4個條件:

  1. 一條指令執行結束;CPU在每條指令執行的最後一個時鐘週期,對INTR信號進行檢測。
  2. CPU處於開中斷狀態,即IF=1;
  3. 當前沒有發生復位(RESET)、保持 (HOLD)狀態和NMI中斷請求;
  4. 若當前執行的指令是開中斷指令STI或中斷返回指令IRET,則它們執行完後再執行一條指令,CPU才能響應INTR請求;

在這裏插入圖片描述在這裏插入圖片描述
保護現場,CPU執行中斷服務程序時,首先將各寄存器和標誌寄存器的內容入棧保護,這稱爲保護現場;
開中斷(STI):CPU在響應中斷時自動關閉中斷,所以在進入中斷服務程序後,如果允許中斷嵌套,需要用指令開中斷;
執行中斷處理程序主體;
關中斷(CLI) ;
恢復現場,將壓棧的各寄存器內容彈出送回相應的寄存器;

(IRET)指令將堆棧內保存的斷點信息彈出到IP、CS、FLAG;

中斷向量表

存放各類中斷的中斷服務程序的入口地址;
每個入口占用4 Bytes,低字爲段內偏移,高
字爲段基址;
表的地址位於內存的00000H~003FFH,大
小爲1KB,共256個入口。

將用戶自定義的中斷服務程序入口地址放入向量表
注意點:
向量表所在的段地址=0
存放子程序入口的單元的偏移地址=n×4
例:
將中斷向量碼爲48H的服務程序入口地址放入向量表
在這裏插入圖片描述
在這裏插入圖片描述

中斷控制器Intel 8259A

在這裏插入圖片描述
中斷請求寄存器IRR
保存從IR0~IR7來的中斷請求信號,某位=1表示對應的IRi有中斷請求
中斷服務寄存器ISR
保存所有正在服務的中斷源,某位=1表示對應的IRi中斷正在被服務
中斷屏蔽寄存器IMR
存放中斷屏蔽字,某位=1表示對應的IRi輸入被屏蔽
中斷優先權判別電路
確定是否向CPU發出中斷請求,中斷響應時確定ISR的哪位應置位及把相應中斷的類型碼放到數據總線上

8259工作過程

1 一條或若干條中斷請求有效,IRR相應位置1
2 若未被屏蔽,8259由INT發出中斷申請
3 CPU開中斷狀態,用INTA響應
4 8259接收到後第一個INTA後,最高優先權的ISR位置1,使相應IRR位復位
5 第二個INTA,中斷向量碼送數據總線
6 ISR相應位復位

8259A的功能

可管理8級外部中斷,多片級聯可擴至64級;
對每級中斷通過編程可以屏蔽或允許;
在CPU中斷響應週期提供中斷類型碼;
可通過編程選擇多種工作方式;
固定優先級方式、優先級循環方式;
普通全嵌套方式、特殊全嵌套方式;
自動中斷結束方式、正常中斷結束方式、特殊中斷結束方式;
普通屏蔽方式、特殊屏蔽方式;
邊沿觸發、電平觸發;

結束中斷的處理方式

自動中斷結束方式—— 中斷響應後自動送結束字,清0 ISR中當前優先級最高的中斷服務標誌。
非自動中斷結束方式——中斷結束時用戶必須用指令送結束字,分特殊和非特殊兩種。
非特殊配合全嵌套優先權方式使用,清ISR中相應位
當CPU用輸出指令往8259A發出普通中斷結束EOI命令時,8259A就會對ISR中當前優先級最高的中斷服務標誌清0
特殊中斷結束配合特殊全嵌套(循環優先權)方式
中斷結束時用戶用指令送特定的結束字,指明要清除ISR中的哪一位。

屏蔽中斷源方式

普通屏蔽方式
將 IMR的 Di 位置1,對應的中斷 IRi 將被屏蔽,該中斷請求將不能從8259A送到CPU
如果將 IMR 的 Di位置0,則允許對應的中斷產生
特殊屏蔽方式——允許發生低級的中斷嵌套,用於級連時的主片。
將IMR的 Di 位置1,中斷IRi被屏蔽;同時,ISR的Di位將置0,允許發生低級的中斷。

中斷觸發方式

邊沿觸發方式
中斷請求輸入端出現上升沿爲有效的中斷請求信號
電平觸發方式
中斷請求端出現高電平爲有效的中斷請求信號

8259初始化編程

初始化編程
8259A開始工作前寫入,共有ICW1–ICW4 。
用戶必須對8259A進行初始化編程。通過寫入初始化命令字ICW對8259A進行初始化。
操作編程
在8259A工作期間寫入,共有OCW1—OCW3。
可以隨時向8259A寫入操作命令字OCW,使之按用戶設置的新的工作方式進行工作
用戶還可以通過寫操作命令字OCW通知8259A,下面的操作要讀取8259A中的狀態信息,以便了解其工作情況

8259A的端口

在這裏插入圖片描述

初始化命令字ICW

8259A在開始工作前必須寫入初始化命令字
初始化命令字ICW最多可以有4個:
ICW1~ICW4
必須按照以上順序依次寫入
其中 ICW1 和 ICW2 是必須的
ICW3和ICW4是否需要,由具體的工作方式決定
ICW1 初始化字
ICW2 中斷向量碼
ICW3 級聯控制字
ICW4 中斷結束方式字

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

操作命令字OCW

8259A工作期間,可以隨時接受操作命令字OCW
OCW共有3個:OCW1~OCW3
寫入時沒有順序要求,需要哪個OCW就寫入那個OCW
OCW1 中斷屏蔽字
OCW2 中斷結束和優先級循環
OCW3 屏蔽方式和狀態讀出控制字

在這裏插入圖片描述
在這裏插入圖片描述
R SL EOI
001 一般EOI命令,全嵌套方式
011 特殊EOI命令,全嵌套方式,按L2-0復位
101 一般EOI命令,優先級自動循環
100 在自動EOI時設置優先級自動循環
000 在自動EOI時取消優先級自動循環
111 一般EOI命令,按循環L2-0編碼優先級
110 按循環L2-0編碼優先級

在這裏插入圖片描述
D6 D5
1 0 清除特設屏蔽
1 1 設置特殊屏蔽
P 0 非查詢方式
1 查詢方式
D1 D0
1 0 隨後讀IRR
1 1 隨後讀ISR

讀取狀態字

CPU可隨時讀出IRR、ISR、IMR和查詢字
A0爲低(偶地址)時
由OCW3中RR和RIS位編碼決定讀取的是IRR或ISR,
由OCW3中P位決定讀取的是查詢字,查詢字可反映8259A是否有中斷請求,及哪個引腳上有中斷請求
A0爲高(奇地址)時,讀取的是IMR
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章