第九周 輸入輸出與中斷技術
大家好,又是我,沉迷學習無法自拔的小笨蛋康sir。
這個文集(點我)將會同步更新我觀看吳寧老師的《微機原理與接口技術》教學視頻寫的筆記,學習筆記,大概每周一章。
有問題大家可以在評論下面留言討論,歡迎糾錯!
歡迎收藏閱讀,動動小手給個硬幣點個贊。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——@正能量的康sir
也可移步我的博客(https://blog.csdn.net/qq_33956508)會更新一些其它技術類文章。

第46講 I/O系統(tǒng)概述
了解和掌握:
I/O接口的基本功能
I/O端口及其編址方式
I/O地址譯碼
1. I/O接口
接口要解決的問題
? 速度匹配——數(shù)據(jù)的緩沖與暫存
? 信號的驅(qū)動能力——信號驅(qū)動
? 信號形式和電平的匹配——信號類型轉(zhuǎn)換
? 信息格式——信號格式轉(zhuǎn)換
? 時序匹配(定時關系)
? 總線隔離——三態(tài)門
接口的基本構成
? ? ? ?

? ? ? ?
暫存輸入、輸出數(shù)據(jù)
保存外設當前狀態(tài),供CPU讀取
存放控制命令(設定接口功能、參數(shù)和工作方式)
2. I/O端口及其編址
端口:接口電路中用于緩存數(shù)據(jù)及控制信息的部件
?數(shù)據(jù)端口
狀態(tài)端口
控制端口
? ? ? ?

? ? ? ?
I/0端口編址
? 計算機系統(tǒng)中包含各類不同功能的接口電路。
? 每個接口中含1個或多個端口。
? ? ? ?

? ? ? ?
? 端口編址
? 為確保CPU能夠訪問到每個不同的端口
? 尋址端口的方法:
? 先找到端口所在的接口電路芯片
? 再在該芯片上找具體訪問的端口
? 若接口中僅有一個端口,則找到芯片即找到端口
? 若接口中有多個端口,則找到芯片后需再找端口
每個端口地址=片選地址(高位地址)+片內(nèi)地址
? 8086/8088尋址端口的能力: 64K個端口
端口的編址方式:
與內(nèi)存統(tǒng)一編址
獨立編址(內(nèi)存地址資源充分利用。能夠應用于端口的指令較少。)
? ? ? ?

? ? ? ?
8088/8086的I/O端口編址
? 采用I/O獨立編址方式,與內(nèi)存共用地址總線,用IO/#M信號狀態(tài)區(qū)分
? 訪問端口時僅使用地址總線的:A15~A0
? 可尋址的I/O端口數(shù)為64K(65536)個,I/O地址范圍:0~FFFFH
? IBM PC只使用了1024個I/O地址(0~3FFH)
3. I/O地址譯碼
? 目的:確定端口的地址
? 參加譯碼的信號: #IOR,#IOW,高位地址信號
(OUT指令將使總線的#IOW信號有效。IN指令將使總線的#IOR信號有效)
? 對端口讀/寫信號的產(chǎn)生條件:
? IO/#M=1
? #RD=0——>#IOR=0
? #WR=0——>#IOW=0
? 當接口只有一個端口時:
? 無片內(nèi)地址,全部地址信號均為高位地址(可全部參與譯碼),譯碼輸出直接選擇該端口;
? 當接口具有多個端口時:
則16位地址線的高位參與譯碼(決定接口的基地址),而低位則用于確定要訪問哪一個端口。
由于端口資源豐富,端口地址譯碼常采用部分地址譯碼
I/O地址譯碼例
? 某外設接口有4個端口,地址為2F0H——2F3H,由A15~A2譯碼得到,而A1、A0用來區(qū)分接口中的4個端口。試畫該接口與系統(tǒng)的連接圖。
? 地址范圍:
? × × × × 0 0 1 0 1 1 1 1 0 0 0 0
? × × × × 0 0 1 0 1 1 1 1 0 0 1 1
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
第47講 簡單接口芯片
了解和掌握:
不同類型接口的特點
三態(tài)門接口
鎖存器接口
1. 接口的分類及特點
? 按傳輸信息的方向分類:輸入接口、輸出接口
? 按傳輸信息的類型分類:數(shù)字接口、模擬接口
? 按傳輸信息的方式分類:并行接口、串行接口
? ? ? ?

? ? ? ?
接口特點
? 輸入接口:要求對數(shù)據(jù)具有控制能力 常用三態(tài)門實現(xiàn)
? 輸出接口:要求對數(shù)據(jù)具有鎖存能力 常用鎖存器實現(xiàn)
2. 三態(tài)門接口
特點:具有對數(shù)據(jù)的控制能力,但不具備對數(shù)據(jù)的控制能力
? ? ? ?

? ? ? ? C低電平有效。C有效時,導通,Y始終等于X,當C無效時,Y和X斷開
? ? ? ?

? ? ? ?C高電平有效(看C那里沒有圈圈)。
? 74LS244
? 含8個三態(tài)門的集成電路芯片
? 在外設具有數(shù)據(jù)保持能力時用來輸入接口
? ?? ? ? ? ? ? ? ?

? ? ? ?
三態(tài)門接口應用例
編寫程序:
? 判斷圖中的開關狀態(tài)。若所有開關都閉合,則程序轉(zhuǎn)向標號NEXT1,否則轉(zhuǎn)向標號為NEXT2的程序段執(zhí)行。
采用了部分地址譯碼,地址線A1和A0未參加譯碼。
接口芯片的地址范圍:
83FCH~83FFH 當?shù)刂房偩€上A15~A0出現(xiàn)此4個地址之一時,#E1#E2端有效,三態(tài)門導通。
? ? ? ?

? ? ? ?
題目分析:
? 當開關斷開時,三態(tài)門輸入端I呈現(xiàn)高電位;
? 當開關閉合時,三態(tài)門輸入端I呈現(xiàn)低電位;
M0V DX,83FCH
IN AL,DX
AND AL,0FFH;改變狀態(tài)位標志而不改變操作數(shù)
JZ NEXT1;ZF=1說明AL=00H也就是說8個I都是低電平
JMP NEXT2
┇
NEXT1:
┇
NEXT2:
┇
3. 鎖存器接口
? ? ? ?

? ? ? ?
(每當CP處于脈沖的上升沿時,C的狀態(tài)會鎖存在Q里,Q非鎖存Q相反狀態(tài)。平沿下降沿都不會改變)
特點:
? 具有對數(shù)據(jù)的鎖存能力
8D鎖存存器
74LS273:8D觸發(fā)器,不具備數(shù)據(jù)的控制能力。只能做輸出接口
74LS373:含三態(tài)的8D觸發(fā)器,具有對數(shù)據(jù)的控制能力。既可以做輸入接口,也可以做輸出接口。
74LS273
? 由8個D觸發(fā)器組成
? ? ? ?

? ? ? ?
(CP 為脈沖輸入端,在每個脈沖的上升沿將輸入端 Di的狀態(tài)鎖存在 Qi 輸出端,并將此狀態(tài)保持到下一個時鐘脈沖的上升沿)
鎖存器接口例:
應用74LS273作為輸出接口,實現(xiàn)對8個發(fā)光二極管的控制。
題目分析:
? 由圖得,要使接到Q端的發(fā)光二極管亮,其對應的Q端須輸出“1”狀態(tài),反之輸出“0”狀態(tài)。
? ? ? ?

? ? ? ?
(A0-A15都是1時,與非門是0,產(chǎn)生不了上升沿。#IOW由0到1的跳變,使或門由0到1也跳變,產(chǎn)生上升沿,可做觸發(fā)。)
由圖得出鎖存器74LS273的端口地址:FFFFH
程序段:
MOV DX,0FFFFH ;數(shù)字的第一個數(shù)符是字符型時其前要加0
MOV AL,01000001B
OUT DX,AL
第48講 基本輸入輸出方法
基本輸入/輸出方法
無條件傳送
查詢式傳送
中斷方式傳送
直接存儲器存取(DMA)
(無條件傳送、查詢式傳送屬于程序控制方式)
1. 無條件傳送
? 要求外設總是處于準備好狀態(tài)
? 優(yōu)點:
? 軟件及接口硬件簡單
? 缺點:
? 只適用于簡單外設,適應范圍較窄
無條件傳送例
讀取開關的狀態(tài); 當開關閉合時,輸出編碼使發(fā)光二極管亮。
? ? ? ?

? ? ? ?
2. 查詢工作方式
? 僅當條件滿足時才能進行數(shù)據(jù)傳送;
? 每滿足一次條件只能進行一次數(shù)據(jù)傳送。
? 適用場合:
? 外設并不總是準備好
? 對傳送速率和效率要求不高
? 工作條件:
? 外設應提供設備狀態(tài)信息
? 接口應具備狀態(tài)端口
?
查詢工作方式流程圖
? ? ? ?

? ? ? ?
? 優(yōu)點:軟硬件比較簡單
? 缺點:CPU效率低,數(shù)據(jù)傳送的實時性差,速度較慢
? ? ? ?

? ? ? ?
3. 中斷控制方式
? 特點:外設在需要時向CPU提出請求,CPU再去為它服務。服務結束后或在外設不需要時,CPU可執(zhí)行自己的程序。
? 優(yōu)點:CPU效率高,實時性好,速度快。
? 缺點:程序編制相對較為復雜。
以上三種I/O方式的共性:
? 信息的傳送均需通過CPU
? 軟件:外設與內(nèi)存之間的數(shù)據(jù)傳送是通過CPU執(zhí)行程序來完成的(PIO方式);
? 硬件: I/O接口和存儲器的讀寫控制信號、地址信號都是由CPU發(fā)出的。
? 缺點:程序的執(zhí)行速度限定了傳送的最大速度
CPU掌握總線控制權
? I/O過程由CPU控制;地址信號、控制信號均由CPU產(chǎn)生。
? ? ? ?

? ? ? ?
4. 直接存儲器存取方式 DMA
? 特點:
外設直接與存儲器進行數(shù)據(jù)交換 ,CPU不再擔當數(shù)據(jù)傳輸?shù)闹薪檎撸?/p>
總線由DMA控制器(DMAC)進行控制(CPU要放棄總線控制權),內(nèi)存/外設的地址和讀寫控制信號均由DMAC提供。
? ? ? ?

? ? ? ?
DMA控制方式的工作過程
① 外設向DMA控制器發(fā)出“DMA傳送請求”信號DRQ;
② DMA控制器收到請求后,向CPU發(fā)出“總線請求”信號HOLD;
③ CPU在完成當前總線周期后會立即發(fā)出HLDA信號,對HOLD信號進行響應;
④ DMA控制器收到HLDA信號后,就開始控制總線,并向外設發(fā)出DMA響應信號DACK。
DMA工作方式
? 周期竊?。好總€DMA周期只傳送一個字節(jié)或一個字就立即釋放總線。
? 數(shù)據(jù)塊傳送:DMAC在申請到總線后,將一塊數(shù)據(jù)傳送完后才釋放總線,而不管中間DREQ是否有效。
? 直接存取方式:DMA的數(shù)據(jù)傳送請求直接發(fā)到主存儲器,在得到響應后,整個工作過程在DMA控制器中由硬件完成。
周期竊取的DMA方式
? ? ? ?

? ? ? ?
4種基本I/0控制方式總結
? 無條件傳送:
? 簡單,適用范圍小,僅適用于“隨時準備好”的低速外設
? 查詢工作方式
?簡單,適用于具備“狀態(tài)信息”的低速外設
?CPU效率低,控制實時性差
? 中斷方式
? 適用于中速外設
? 相對于查詢方式,CPU效率較高,控制實時性較好
? DMA方式:
? 數(shù)據(jù)傳輸由DMA硬件來控制,數(shù)據(jù)直接在內(nèi)存和外設之間交換,可以達到很高的傳輸速率。
? 控制復雜,硬件成本相對較高
第49講 簡單I/O接口電路設計示例
例1
? 外設狀態(tài)端口地址為03FBH,第5位(bit5)為狀態(tài)標志(=1忙,=0準備好);外設數(shù)據(jù)端口地址為03F8H,寫入數(shù)據(jù)會使狀態(tài)標志置1 ;外設把數(shù)據(jù)讀走后又把它置0。
? 要求:
? 畫出該控制系統(tǒng)電路圖
? 利用查詢工作方式,將DATA下100B數(shù)據(jù)輸出。
? ? ? ?

? ? ? ?
? 題目分析:
? 外設有1位狀態(tài)位,需要通過輸入接口將狀態(tài)信息輸入系統(tǒng);
? 可選擇一個三態(tài)門或74LS244接口
? 數(shù)據(jù)需由系統(tǒng)輸出,需要通過輸出接口
? 可選擇74LS273接口
? 輸入接口地址= 03FBH,bit5=1表示“忙”
輸出接口地址=03F8H
? 待輸出數(shù)據(jù)在內(nèi)存中的首地址=DATA;
? 待輸出數(shù)據(jù)塊大小=100B
? ? ? ?

? ? ? ?
控制程序
LEA SI,DATA
MOV CX,100
AGAIN:MOV DX,03FBH
WAITT:IN AL,DX
TEST AL,20H
JNZ WAITT
MOV DX,03F8H
MOV AL,[SI]
?OUT DX,AL
INC SI
LOOP AGAIN
HLT
? ? ? ?

? ? ? ?
例2
根據(jù)開關狀態(tài)在7段數(shù)碼管上顯示數(shù)字或符號
? 設輸出接口的地址為F0H,輸入接口地址為F1H;( 僅給出8位地址,為部分地址譯碼)
? 當開關的狀態(tài)分別為0000~1111時,在7段數(shù)碼管上對應顯示’0’~’F’
? ? ? ?

? ? ? ?
題目分析:
輸入設備:4個開關
輸出設備:1個七段數(shù)碼管
需要1個輸入接口,1個輸出接口
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
第50講 中斷技術
理解和掌握:
1 中斷的基本概念
2 中斷響應的一般過程
3 中斷向量表
4 8088/8086中斷系統(tǒng)
1. 中斷的基本概念
中斷:CPU執(zhí)行程序時,由于發(fā)生了某種隨機的事件(中斷源)(外部或內(nèi)部),引起CPU暫時中斷正在運行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務程序(中斷服務(處理)子程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。
引入中斷的原因
? 提高對外設請求的響應實時性。
? 提高了CPU的利用率。避免了CPU不斷檢測外設狀態(tài)的過程。
中斷類型
根據(jù)中斷請求的來源分為:
內(nèi)部中斷
異常中斷——異常事件引起
軟件中斷——中斷指令引起
外部中斷
可屏蔽中斷——INTR中斷 可屏蔽意思是如果CPU有比響應此中斷更重要的就可屏蔽此中斷
非屏蔽中斷——NMI中斷 必須響應
外部可屏蔽中斷
2. 外部可屏蔽中斷響應的一般過程
? 中斷請求
? 中斷源識別及中斷判優(yōu)
? 中斷響應
? 中斷處理(服務)
? 中斷返回
1)中斷請求
外部可屏蔽中斷請求信號:INTR
? ?中斷請求信號應保持到中斷被處理為止;
? ?CPU響應中斷后,中斷請求信號應及時撤銷
2)中斷源識別
軟件查詢法
中斷矢量法——由中斷源提供中斷類型號,CPU 根據(jù)類型確定中斷源
中斷判優(yōu)(當有多個中斷源同時提出請求時,響應誰?)
優(yōu)先級法則:低優(yōu)先級的中斷程序允許被高優(yōu)先級的中斷源所中斷
排隊法則先:來先響應
中斷源識別及判優(yōu)由硬件系統(tǒng)完成
中斷源判優(yōu)
中斷控制器判優(yōu):根據(jù)中斷向量碼(中斷類型碼)確定中斷源
? ? ? ?

? ? ? ?
3)中斷響應
外部可屏蔽中斷響應信號:#INTA
向中斷源發(fā)出#INTA中斷響應信號;
關中斷——不允許響應其它中斷
保護硬件現(xiàn)場——將FLAGS壓入堆棧
保護斷點——將CS、IP壓入堆棧
獲得中斷服務程序入口地址
由硬件系統(tǒng)完成
4)中斷處理
? ?執(zhí)行中斷服務子程序
? ?中斷服務子程序的特點:為“遠過程”、用IRET指令返回
中斷服務子程序完成的工作
? 關中斷,保護現(xiàn)場,保護斷點,找入口地址
? 保護軟件現(xiàn)場(參數(shù))
? 開中斷(STI)
? 中斷處理
? 關中斷(CLI)
? 恢復現(xiàn)場
? 中斷返回
5)中斷返回
? 執(zhí)行IRET指令,使IP、CS和FLAGS從堆棧彈出(恢復斷點和硬件現(xiàn)場)
中斷處理過程
? ? ? ?

? ? ? ?
3.中斷向量表
? 存放各類中斷的中斷服務程序的入口地址;
? 位于內(nèi)存的00000H~003FFH。
? ? ? ?

? ? ? ?
? 每個入口占用4 Bytes,低字為段內(nèi)偏移,高字為段基址;
? 中斷向量表大小為1KB,共256個入口。
? ? ? ?

? ? ? ?
4. 8088/8086中斷系統(tǒng)
256個中斷源
內(nèi)部中斷
異常中斷:除法錯中斷 溢出中斷 單步中斷。。。
軟件中斷
外部中斷
非屏蔽中斷
可屏蔽中斷
8088內(nèi)部中斷與NMI中斷
內(nèi)部中斷特點:
? 無#INTA周期
? 中斷類型碼固定或由指令給出
8088/8086 中斷響應和處理流程
? ? ? ?

? ? ? ?
輸入輸出與中斷技術小結
應理解:
I/O接口的基本概念和功能
什么是端口?
I/O端口的編址方式
4種基本I/O方法的特點及適用場合
什么是中斷?什么是中斷向量表?
中斷響應的一般過程
應掌握:
I/O接口譯碼電路設計方法
利用無條件傳送或查詢方式實現(xiàn)對簡單外設的控制
利用三態(tài)門接口和鎖存器接口芯片實現(xiàn)對簡單外設的控制
注意點與常見問題
? 4種基本輸入輸出方法各自的應用場合
? 無條件傳送方式:
? 外設隨時處于“準備好”狀態(tài),且不能提供狀態(tài)信息
? 查詢方式:
? 外設必須要能夠提供狀態(tài)信息
? 中斷方式:
? 外設必須具備發(fā)出高電平中斷請求信號的能力
? 常用于實時性要求較高的中速外設控制
? DMA方式
? ? 整個輸入輸出由硬件系統(tǒng)完成,適用于高速外設。
?簡單接口電路設計
? 譯碼電路設計 訪問端口最多16位地址信號
? ?總線信號 訪問I/O端口的讀寫控制信號
?接口系統(tǒng)的譯碼電路常采用部分地址譯碼
?中斷技術
? ?中斷響應的一般過程
? ?中斷向量表 每個表項的含義