接口技術 輸入輸出接口概述_第1頁
接口技術 輸入輸出接口概述_第2頁
接口技術 輸入輸出接口概述_第3頁
接口技術 輸入輸出接口概述_第4頁
接口技術 輸入輸出接口概述_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1輸入輸出接口概述2輸入輸出接口(教材8.1節(jié)) I/O接口概述 查詢傳送方式及其接口 中斷傳送方式及其接口 DMA傳送方式3I/O接口概述為什么需要I/O接口(電路)? 微機的外部設備多種多樣 工作原理、驅動方式、信息格式、以及工作速度方面彼此差別很大 它們不能與CPU直接相連 必須經(jīng)過中間電路再與系統(tǒng)相連 這部分電路被稱為I/O接口電路多種外設多種外設4I/O接口概述(續(xù)1)什么是I/O接口(電路)? I/O接口是位于系統(tǒng)與外設間、用來協(xié)助完成數(shù)據(jù)傳送和控制任務的邏輯電路 PC機系統(tǒng)板的可編程接口芯片、I/O總線槽的電路板(適配器)都是接口電路5I/O接口概述(續(xù)2)什么是微機接口技術?

2、處理微機系統(tǒng)與外設間聯(lián)系的技術 注意其軟硬結合的特點 根據(jù)應用系統(tǒng)的需要,使用和構造相應的接口電路,編制配套的接口程序,支持和連接有關的設備6I/O接口的主要功能 對輸入輸出數(shù)據(jù)進行緩沖和鎖存輸出接口有鎖存環(huán)節(jié),輸入接口有緩沖環(huán)節(jié)實際的電路常用:輸出鎖存緩沖環(huán)節(jié),輸入鎖存緩沖環(huán)節(jié) 對信號的形式和數(shù)據(jù)的格式進行變換微機直接處理:數(shù)字量、開關量、脈沖量 對I/O端口進行尋址 與CPU和I/O設備進行聯(lián)絡7I/O接口的典型結構控制總線控制總線CB地址總線地址總線ABI/O接口電路接口電路數(shù)據(jù)數(shù)據(jù)控制控制狀態(tài)狀態(tài)數(shù)據(jù)總線數(shù)據(jù)總線DBCPU外設外設控制寄存器控制寄存器狀態(tài)寄存器狀態(tài)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄

3、存器1. 接口電路的內(nèi)部結構2. 接口電路的外部特性3. 接口電路芯片的分類4. 接口電路的可編程性81. 接口電路的內(nèi)部結構 CPU與外設主要有數(shù)據(jù)、狀態(tài)和控制信息需要相互交換,于是從應用角度看內(nèi)部: 數(shù)據(jù)寄存器 保存外設給CPU和CPU發(fā)往外設的數(shù)據(jù) 狀態(tài)寄存器 保存外設或接口電路的狀態(tài) 控制寄存器 保存CPU給外設或接口電路的命令92. 接口電路的外部特性 主要體現(xiàn)在引腳上,分成兩側信號面向CPU一側的信號: 用于與CPU連接 主要是數(shù)據(jù)、地址和控制信號面向外設一側的信號: 用于與外設連接 提供的信號五花八門 功能定義、時序及有效電平等差異較大103. 接口電路芯片的分類 接口電路核心部

4、分往往是一塊或數(shù)塊大規(guī)模集成電路芯片(接口芯片): 通用接口芯片 支持通用的數(shù)據(jù)輸入輸出和控制的接口芯片 如:并行接口芯片、串行接口芯片等。 面向外設的專用接口芯片 針對某種外設設計、與該種外設接口 如:顯示接口電路、磁盤驅動接口電路等。 面向微機系統(tǒng)的專用接口芯片 與CPU和系統(tǒng)配套使用,以增強其總體功能 如:8259A、8237、8253等。114. 接口電路的可編程性 許多接口電路具有多種功能和工作方式,可以通過編程的方法選定其中一種 接口需要進行物理連接,還需要編寫接口軟件 接口軟件有兩類: 初始化程序段設定芯片工作方式等 數(shù)據(jù)交換程序段管理、控制、驅動外設,負責外設和系統(tǒng)間信息交換1

5、2I/O端口的編址接口電路占用的I/O端口有兩類編排形式 I/O端口單獨編址 I/O地址空間獨立于存儲地址空間 如8086/8088 I/O端口與存儲器統(tǒng)一編址 它們共享一個地址空間 如M68000理解端口理解端口13I/O端口單獨編址 優(yōu)點: I/O端口的地址空間獨立 控制和地址譯碼電路相對簡單 專門的I/O指令使程序清晰易讀 缺點: I/O指令沒有存儲器指令豐富內(nèi)存內(nèi)存空間空間I/O空間空間FFFFF0FFFF80 x86采用采用I/O端口獨立編址端口獨立編址14I/O端口與存儲器統(tǒng)一編址 優(yōu)點: 不需要專門的I/O指令 I/O數(shù)據(jù)存取與存儲器數(shù)據(jù)存取一樣靈活 缺點: I/O端口要占去部分

6、存儲器地址空間 程序不易閱讀(不易分清訪存和訪問外設)內(nèi)存內(nèi)存部分部分I/O部分部分存儲器空間存儲器空間00000FFFFF158088/8086的I/O端口 8088/8086只能通過輸入輸出指令與外設進行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設是端口(Port),即I/O地址16端口(PORT) 端口泛指I/O地址,通常對應寄存器 一個接口電路可以具有多個I/O端口,每個端口用來保存和交換不同的信息 數(shù)據(jù)寄存器、狀態(tài)寄存器和控制寄存器占有的I/O地址常依次被稱為數(shù)據(jù)端口、狀態(tài)端口和控制端口,用于保存數(shù)據(jù)、狀態(tài)和控制信息 輸入、輸出端口可以是同一個I/O地址一定要理解一定要理解 8086用于尋址外設端口

7、的地址線為16條,端口最多為21665536(64K)個,端口號為0000H FFFFH 每個端口用于傳送一個字節(jié)的外設數(shù)據(jù)18I/O尋址方式 8088/8086的端口有64K個,無需分段,設計有兩種尋址方式v直接尋址:只用于尋址00H FFH前256個端口,操作數(shù)i8表示端口號v間接尋址:可用于尋址全部64K個端口,DX寄存器的值就是端口號 對大于FFH的端口只能采用間接尋址方式19數(shù)據(jù)交換方式 如果輸入輸出一個字節(jié),利用AL寄存器 如果輸入輸出一個字,利用AX寄存器 輸入一個字,實際上是從連續(xù)兩個端口輸入兩個字節(jié),分別送AL(對應低地址端口)和AH(對應高地址端口) 輸出一個字,實際上是將

8、AL(對應低地址端口)和AH(對應高地址端口)兩個字節(jié)的內(nèi)容輸出給連續(xù)兩個端口20I/O指令指令功功 能能說說 明明IN AL,PORTIN AX,PORTIN AL,DXIN AX,DXOUT PORT,ALOUT PORT,AXOUT DX,ALOUT DX,AXAL(PORT)AH,AL(PORT+1,PORT)AL(DX)AH,AL(DX+1,DX)(PORT)AL(PORT+1,PORT)AH,AL(DX)AL(DX+1,DX)AH,AL單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪問雙字節(jié)訪問單字節(jié)訪問單字節(jié)訪問雙字節(jié)訪

9、問雙字節(jié)訪問 8086/8088的I/O指令21IN指令(從20H、21H端口輸入一個字);方法1:字量輸入,直接尋址in ax,20h;方法2:字量輸入,間接尋址mov dx,20hin ax,dx;方法方法3:字節(jié)輸入,直接尋址字節(jié)輸入,直接尋址in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;方法方法4:字節(jié)輸入,字節(jié)輸入,間間接尋址接尋址mov dx,21hmov dx,21hin al,dxin al,dxmov ah,almov ah,aldec dxdec dxin al,dxin al,dx22OUT指令(向300H端

10、口輸出一個字節(jié));唯一的方法:間接尋址,字節(jié)量輸出mov al,bvar ;bvar是字節(jié)變量mov dx,300hout dx,al23I/O地址的譯碼常見的I/O地址的譯碼(或稱端口地址選擇)方法有三種: 門電路組合法門電路組合法 譯碼器譯碼法譯碼器譯碼法 比較器比較法比較器比較法 門電路組合法是最簡單的一種端口地址選擇方法,它采用常見的邏輯門電路,比如與門、或門、非門等作為基本的組合元件。 一般端口都是指寄存器、鎖存器或緩沖器,這些器件都有一個芯片選擇信號,簡稱片選信號,多數(shù)是低電平有效,當然,也有一些芯片沒有片選信號,而是有使能端,或脈沖控制端,總之是使器件產(chǎn)生動作的控制端。 端口地址

11、選擇的目的,是當?shù)刂肪€上出現(xiàn)某種信息組合時端口地址選擇的目的,是當?shù)刂肪€上出現(xiàn)某種信息組合時,在電路的輸出端會產(chǎn)生一個有效信號,在電路的輸出端會產(chǎn)生一個有效信號(有效信號有四種狀態(tài),即高電平、低電平、上跳沿、下降沿,具體使用哪種狀態(tài),視所使用器件而定),該信號連到器件的控制端,使器件產(chǎn)生動作,從而完成I/O端口的讀/寫操作。 這種方法簡單、直觀,適合于單個端口,常用的基本門電路有7400(2輸入4與非門)、7408(2輸入4與門)、7420(4輸入雙與非門)、7430(8輸入與非門)、7402(2輸入4或非門)、7432(2輸入4或門)、7404(六反相器)等等。25邏輯門電路進行I/O地址譯

12、碼A9A8A7A6A5A2A4A3AENA1A074LS033E7H譯碼器譯碼法譯碼器譯碼法是最常用的一種方法,就是利用譯碼器芯片對地址進行譯碼。 PC/XT微型機系統(tǒng)板上接口芯片的端口地址譯碼采用了一個74LS138譯碼電路。這些芯片也都有片選信號,74LSl38譯碼器的輸出與這些芯片的片選信號連接。各接口芯片內(nèi)部有多個寄存器,因而應有多個端口地址。譯碼器只直接使用A9A5,其余的低5位地址A4A0未接,留給各接口芯片自行內(nèi)部譯碼,以便尋址多個寄存器。顯然,由于A4A0未接到譯碼器,所以每個譯碼器的輸出端對應25=32個端口地址,系統(tǒng)為每個接口芯片預留出32個端口地址,至于每個接口芯片用多少

13、,則視接口芯片內(nèi)部寄存器的數(shù)目而定。 譯碼器譯碼法可以方便地對多個地址進行譯碼,適合于多個端口的電路。常用的譯碼器有 74139/74155(雙2線-4線譯碼器)、74138(3線-8線譯碼器)、74154(4線-16線譯碼器)。 82378237000H 000H 01FH01FH82598259020H 020H 03FH03FH82538253040H 040H 05FH05FH82558255060H 060H 07FH07FHDMADMA頁面寄存器頁面寄存器 080H 080H 09FH09FHNMINMI屏蔽寄存器屏蔽寄存器 0A0H 0A0H 0BFH0BFH保留保留 0C0H

14、0C0H 0DFH0DFH保留保留0E0H 0E0H 0FFH 0FFH 27IBM PC/XT主機板的I/O譯碼電路Y0 Y1 Y2 Y3 Y4 Y5Y6 Y7A5A6 A7A8A9 AENIOWAB CG2BG2AG1DMA CS(8237)INTR CS(8259)T/C CS(8253)PPI CS (8255)WRTDMAPG(寫(寫DMA頁面寄存器)頁面寄存器)WRTNMIREG(寫(寫NMI屏蔽寄存器)屏蔽寄存器)28IBM PC/AT主機板的I/O譯碼電路接口芯片內(nèi)部譯碼接口芯片內(nèi)部譯碼A0A4DMA控制器控制器1中斷控制器中斷控制器1定時計數(shù)器定時計數(shù)器并行接口電路并行接口電

15、路DMA頁面寄存器頁面寄存器中斷控制器中斷控制器2DMA控制器控制器2協(xié)處理器協(xié)處理器A5A6A7A8A9LS138譯碼器譯碼器HLDAMASTERABCE1E2E3Y0*Y1*Y2*Y3*Y4*Y5*Y6*Y7* 比較器比較法比較器比較法是比較靈活的一種方法,就是利用數(shù)碼比較器把地址線上的地址同撥碼開關預定的地址相比較,進而確定地址是否相符。如果比較后兩個地址相等,則表示地 址總線送來的端口地址就是該端口的地址。用比較器比較法進行端口地址譯碼不僅原理直觀,方法簡便,更主要的是通過改變預設置,就能夠很容易地改變接口電路中端口的地址,而不需要改變線路,使用非常靈活。在一些通用接口模板中,這一方法

16、已得到廣泛的應用。 常用的比較器有7485(4位數(shù)字比較器)、74688(8位數(shù)字比較器)。 用用74LS688作譯碼器的譯碼電路作譯碼器的譯碼電路 簡單接口電路 數(shù)據(jù)輸入接口 必須具有三態(tài)輸出能力,以便與總線掛接 外設有數(shù)據(jù)保持能力時可用三態(tài)門實現(xiàn) 外設無數(shù)據(jù)保持能力時用三態(tài)輸出的鎖存器實現(xiàn) 數(shù)據(jù)輸出接口 常用鎖存器實現(xiàn) 三態(tài)門:高電平、低電平、高阻態(tài) 通常一個器件中包含8個三態(tài)門 常用芯片:74LS244(8位三態(tài)緩沖器) 應用例子:開關接口 工作波形圖如下:A0A15IOR#譯碼輸出D0D7開關狀態(tài)地址有效簡單的輸入接口舉例(8位開關量輸入)接口電路圖如下:83FCH83FFH譯碼器 鎖

17、存器:由D觸發(fā)器構成 通常一個器件包含8個D觸發(fā)器 常用芯片: 74LS273(8-D觸發(fā)器) 74LS374(具有三態(tài)輸出的鎖存器)簡單的輸出接口舉例(發(fā)光二極管接口)譯碼器=1=1.+5VRD0D7CPQ0Q7.D0D7A0A15IOW#74LS273R輸入/輸出接口綜合應用例子 根據(jù)開關狀態(tài)在7段數(shù)碼管上顯示數(shù)字或符號 共陽極7段數(shù)碼管結構 用74LS273作為輸出接口,把數(shù)據(jù)送到7段數(shù)碼管 74LS273的地址假設為F0H 用74LS244作為輸入口,讀入開關K0K3的狀態(tài) 74LS244的地址假設為F1H 當開關的狀態(tài)分別為00001111時,在7段數(shù)碼管上對應顯示0F (7段碼表見

18、下頁) 符號形狀7段碼.gfedcba符號形狀7段碼.gfedcba000111111801111111100000110901100111201011011A01110111301001111B01111100401100110C00111001501101101D01011110601111101E01111001700000111F01110001O1 I1O2 I2O3 I3O4 I4#E1 K0K3+5VGG2AG2BCBA174LS244D0 Q0 | Q1D7 Q2 Q3 Q4CP Q5 Q6 Q7 abcdefgDP74068個反相器74LS273Rx8174LS138D0D7

19、IOW#IOR#Y0Y1F0H = 0000 0000 1111 0000F1H = 0000 0000 1111 0001&1A7A4A15A8A3A2A1A0D0D1D2D3譯碼電路相應程序段如下:Seg7DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HLEABX, Seg7;取7段碼表基地址MOVAH, 0GO:MOVDX, 0F1H;開關接口的地址為F1HINAL, DX;讀入開關狀態(tài)ANDAL, 0FH ;保留低4位MOVSI, AX;作為7段碼表的表內(nèi)位移量MOVAL, BX+SI;取7段碼

20、MOVDX, 0F0H;7段數(shù)碼管接口的地址為F0HOUTDX, ALJMPGOI/O設備與存儲器的區(qū)別 存儲器的工作速度幾乎和中央處理機一樣,而大多數(shù)I/O設備工作較慢,且不同的I/O設備又有不同的工作速度。 存儲器的字長一般是以字節(jié)為單位或等于機器字長,而I/O設備傳送的過程中可能是8位數(shù)據(jù),也可能是1位,2位不等的狀態(tài)或控制信息。 存儲器中的信號形式與CPU相同,而I/O設備可能是數(shù)字信號也可能是模擬信號,可能是電壓信號也可能是電流信號,可能是并行的也可能是串行的等等。 存儲器的控制信號主要是讀/寫信號,而I/O設備一般有多種控制信號,如設備工作,空閑等狀態(tài)信號,設備的啟動,清除等控制信

21、號。 這些差異都使得I/O數(shù)據(jù)傳送過程較為復雜,隨之而來的就是根據(jù)不同設備需采用不同的傳送方式,相應的也就要采用不同的控制方式。 輸入輸出的控制方式 主機與I/O設備之間數(shù)據(jù)傳送的控制方式有以下三種: 查詢式傳送查詢式傳送 中斷方式傳送中斷方式傳送 直接存儲器存取直接存儲器存取(DMA, Direct Memory Access)查詢方式傳送 適用于外設并不總是準備好,而且對傳送速率、傳送效率要求不高的場合。 CPU在與外設交換數(shù)據(jù)前必須詢問外設狀態(tài)“你準備好沒有?” 對外設的要求:應提供設備狀態(tài)信息 對接口的要求:需要提供狀態(tài)端口 優(yōu)點:軟件比較簡單 缺點:CPU效率低,數(shù)據(jù)傳送的實時性差,

22、速度較慢動畫演示42就緒(Ready) 在輸入場合 “就緒”說明輸入接口已準備好送往CPU的數(shù)據(jù),正等著CPU來讀取 該狀態(tài)也可用接口中數(shù)據(jù)緩沖器已“滿”來描述 在輸出場合 “就緒”說明輸出接口已做好準備,等待接收CPU要輸出的數(shù)據(jù) 該狀態(tài)也可用接口數(shù)據(jù)緩沖器已“空”、或者用接口(外設)“閑”或不“忙(Busy)”來描述就緒:滿,空、閑、不忙就緒:滿,空、閑、不忙查詢方式的流程圖超時?READY?與外設進行數(shù)據(jù)交換超時錯讀入并測試外設狀態(tài)YNYN傳送完?防止死循環(huán)復位計時器NY44查詢傳送的兩個環(huán)節(jié) 查詢環(huán)節(jié) 尋址狀態(tài)口 讀取狀態(tài)寄存器的標志位 若不就緒就繼續(xù)查詢,直至就緒 傳送環(huán)節(jié) 尋址數(shù)據(jù)

23、口 是輸入,通過輸入指令從數(shù)據(jù)端口讀入數(shù)據(jù) 是輸出,通過輸出指令向數(shù)據(jù)端口輸出數(shù)據(jù)輸入狀態(tài)輸入狀態(tài)就緒?就緒?數(shù)據(jù)交換數(shù)據(jù)交換YN傳送流程傳送流程接口實例接口實例45查詢輸入接口IOR+5V8D鎖存器鎖存器8位位三態(tài)三態(tài)緩沖器緩沖器譯碼譯碼1位位三態(tài)三態(tài)緩沖器緩沖器RQ A0A158000H8001HD0D7D0D輸入輸入設備設備IORSTBmov dx,8000h;DX指向狀態(tài)端口status:in al,dx;讀狀態(tài)端口test al,01h;測試標志位D0jz status;D00,未就緒,繼續(xù)查詢inc dx;D01,就緒,DX指向數(shù)據(jù)端口in al,dx;從數(shù)據(jù)端口輸入數(shù)據(jù)46查詢輸

24、出接口8D鎖存器鎖存器譯碼譯碼1位位三態(tài)三態(tài)緩沖器緩沖器RQ A0A158000H8001HD0D7D7D+5V輸出輸出設備設備ACKIOWIORmov dx,8000h;DX指向狀態(tài)端口status:in al,dx;讀取狀態(tài)端口的狀態(tài)數(shù)據(jù)test al,80h;測試標志位D7jnz status;D71,未就緒,繼續(xù)查詢inc dx;D70,就緒,DX指向數(shù)據(jù)端口mov al,buf;變量buf送ALout dx,al;將數(shù)據(jù)輸出給數(shù)據(jù)端口47EEPROM編程(查詢方式)2817AA0A10A0A108000HI/O0I/O7D0D7D0譯碼譯碼A11A19譯碼譯碼A0A15 RDY/BU

25、SYIORWERDMEMWMEMRCEnext:mov al,55h;寫入內(nèi)容55Hmov bx,al;寫入存儲單元nop;空操作指令,起延時作用nopnext1:in al,dx;查詢狀態(tài)口test al,01h;測試D0jz next1;D00,芯片還在寫入inc bx;D01,寫畢,指針移動loop next;循環(huán)至全部字節(jié)寫完例:用查詢方式進行輸出外設狀態(tài)端口地址為3FBH,第5位(bit5)為狀態(tài)標志(=1忙,=0準備好)外設數(shù)據(jù)端口地址為3F8H,寫入數(shù)據(jù)會使狀態(tài)標志置1 ;外設把數(shù)據(jù)讀走后又把它置0。試畫出其電路圖。(電路圖見下頁)D5D7-D0A9|A31&A15|A1

26、01IOWD7-D03F8H外設D7D6D5D4D3D2D1D0BUSYCPQ7Q6Q5Q4Q3Q2Q1Q0狀態(tài)端口GG2AG2BCBAA2A1A074LS138Y01IORY3OE74LS374CPQQDSSTROBE3FBH程序段?50中斷傳送方式斷點斷點主程序主程序中斷服務程序中斷服務程序中斷請求中斷請求對外設對外設進行處理進行處理繼續(xù)執(zhí)行繼續(xù)執(zhí)行返回斷點返回斷點 CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉去執(zhí)行一段預先安排好的中斷服務程序;服務結束后,又返回原來的斷點,繼續(xù)執(zhí)行原來的程序傳送流程傳送流程動畫演示51中斷傳送與接口 中斷傳送是一種效率更高的程序傳送方式,優(yōu)點是:CP

27、U效率高,實時性好,速度快;缺點是:程序編制較為復雜。 進行傳送的中斷服務程序是預先設計好的 中斷請求是外設隨機向CPU提出的 CPU對請求的檢測是有規(guī)律的:一般是在每條指令的最后一個時鐘周期采樣中斷請求輸入引腳 中斷有著非常廣泛的應用中斷技術(教材第6章) 中斷的基本概念 什么是中斷? 與生活場景的比較正在看書電話鈴響接電話繼續(xù)看書執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請求及響應實際場景計算機中斷返回中斷的定義 CPU執(zhí)行程序時,由于發(fā)生了某種隨機的事件(外部或內(nèi)部),引起CPU暫時中斷正在運行的程序,轉去執(zhí)行一段特殊的服務程序(稱為中斷服務程序或中斷處理程序),以處理該事件,該事

28、件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。中斷源 引起CPU中斷的事件中斷源。例如: 外設請求輸入輸出數(shù)據(jù),報告故障等 事件掉電、硬件故障、軟件錯誤、非法操作、定時時間到等 中斷源分為:外部中斷、內(nèi)部中斷 內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時自身產(chǎn)生的中斷 外部中斷:CPU以外的設備、部件產(chǎn)生的中斷 8086/8088的外部中斷信號:INTR、NMI INTR可屏蔽中斷請求,高電平有效,受IF標志的控制。IF=1時,執(zhí)行完當前指令后CPU對它作出響應。 NMI非屏蔽中斷請求,上升沿有效,任何時候CPU都要響應此中斷請求信號。為何計算機中要引入中斷? 提高數(shù)據(jù)傳輸率; 避免了CPU不斷檢

29、測外設狀態(tài)的過程,提高了CPU的利用率。 實現(xiàn)對特殊事件的實時響應。如多任務系統(tǒng)操作系統(tǒng)中: 缺頁中斷 設備中斷 各類異常 實時鐘,。等中斷過程五個步驟:中斷請求中斷判優(yōu)先級(有時還要進行中斷源識別)中斷響應中斷服務中斷返回以下以外部中斷為主介紹這五個步驟。1)中斷請求 外設接口(中斷源)發(fā)出中斷請求信號,送到CPU的INTR或NMI引腳; 中斷請求信號:邊沿請求,電平請求例如,NMI為邊沿請求,INTR為電平請求 中斷請求信號應保持到中斷被處理為止; CPU響應中斷后,中斷請求信號應及時撤銷。 在8086/8088系統(tǒng)中,外設的中斷要經(jīng)過8259A可編程中斷控制器(PIC)的排隊判優(yōu)后向CP

30、U發(fā)出 (I/O接口) PIC CPUn12.1)中斷源識別 計算機中的中斷源有很多,CPU必須識別是哪一個設備產(chǎn)生中斷。識別中斷源有兩個方法: 軟件查詢。將中斷信號從數(shù)據(jù)總線讀入,用程序進行判別。 中斷矢量法。由中斷源提供中斷類型號,CPU根據(jù)類型確定中斷源。(8086/8088即采用此種方法)2.2)中斷判優(yōu)先級 多個中斷源產(chǎn)生中斷,CPU首先為誰服務?中斷優(yōu)先級排隊問題。 中斷優(yōu)先級控制要處理兩種情況: 對同時產(chǎn)生的中斷:應首先處理優(yōu)先級別較高的中斷;若優(yōu)先級別相同,則按先來先服務的原則處理; 對非同時產(chǎn)生的中斷:低優(yōu)先級別的中斷處理程序允許被高優(yōu)先級別的中斷源所中斷即允許中斷嵌套。 中

31、斷優(yōu)先級的控制方法 硬件判優(yōu)鏈式判優(yōu)、并行判優(yōu)(中斷向量法) 軟件判優(yōu)順序查詢中斷請求,先查詢的先服務(即先查詢的優(yōu)先級別高)(教材p170圖6-3) 通常將中斷判優(yōu)與中斷源識別合并在一起進行處理。 x86系統(tǒng)中,這項任務由PIC和CPU共同完成。INTAinCPUINTAINTR外設1外設2外設接口1菊花鏈邏輯電路外設接口2外設3外設接口31菊花鏈邏輯電路菊花鏈邏輯電路IREQIREQIREQ中斷確認鏈式判優(yōu)電路原理圖INTAinINTAin中斷確認中斷確認菊花鏈邏輯電路INTAinIREQINTR&=1 1INTAoutDB三態(tài)門中斷向量碼E外設接口中斷確認菊花鏈邏輯電路3)中斷響

32、應 在每條指令的最后一個時鐘周期,CPU檢測INTR或NMI信號。若以下條件成立,則CPU響應中斷: 當前指令執(zhí)行完。對INTR,還應滿足以下條件 當前指令是STI和IRET,則下條指令也要執(zhí)行完。 當前指令帶有LOCK、REP等指令前綴時,則把它們看成一個整體,要求完整地執(zhí)行完; 對INTR,CPU應處于開中斷狀態(tài),即IF=1; 當前沒有復位(RESET)和保持(HOLD)信號。 若NMI和 INTR 同時發(fā)生,則首先響應NMI。3)中斷響應(續(xù)) CPU中斷響應時,要做下述三項工作: 向中斷源發(fā)出INTA*中斷響應信號; 斷點保護,包括CS、IP和PSW(FLAGS)。這主要是保證中斷結束

33、后能返回被中斷的程序。 獲得中斷服務程序首地址(入口)。如何得到中斷處理程序的首地址? 固定入口法 中斷向量法常用4)中斷處理(中斷服務) 中斷服務子程序特點 為”遠”過程(類型為FAR) 要用IRET指令返回 中斷服務子程序要做的工作 保護現(xiàn)場(PUSH regs) 開中斷(STI) 進行中斷處理 恢復現(xiàn)場(POP regs) 中斷返回(IRET) 5)中斷返回 執(zhí)行中斷返回指令IRET IRET指令將使CPU把堆棧內(nèi)保存的斷點信息彈出到IP、CS和FLAG中,保證被中斷的程序從斷點處能夠繼續(xù)往下執(zhí)行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAG

34、HSPIPCSFLAG進入中斷服務程序時中斷返回后8088的中斷系統(tǒng) 與中斷有關的控制線為:NMI、INTR、INTA* 8088系統(tǒng)的中斷源 內(nèi)部中斷 除法溢出:類型號0,商大于目的操作數(shù)所能表達的范圍時產(chǎn)生。 單步中斷:類型號1,TF=1時產(chǎn)生(當前指令需執(zhí)行完) 斷點中斷:類型號3,這是一個軟件中斷,即INT 3指令。 溢出中斷:類型號4,這是一個軟件中斷,即INTO指令。 軟件中斷:即INT n指令,類型號n(0-255)。 外部中斷 非屏蔽中斷NMI:類型號2,不可在cpu內(nèi)部用軟件屏蔽。 可屏蔽中斷INTR:類型號由PIC提供。IF=1時CPU才能響應。678088的中斷類型非屏蔽

35、中斷源非屏蔽中斷源中斷邏輯中斷邏輯INTO指令指令單步單步中斷中斷除法除法錯誤錯誤INT N指令指令CPUINTRNMI可屏蔽中斷源可屏蔽中斷源8259A中斷中斷控制器控制器IR0IR1IR2IR3IR4IR5IR6IR7外外設設中中斷斷源源 INTA 內(nèi)部中斷 除法錯中斷 指令中斷 溢出中斷 單步中斷 外部中斷 非屏蔽中斷 可屏蔽中斷681. 內(nèi)部中斷 內(nèi)部中斷是由于8088內(nèi)部執(zhí)行程序出現(xiàn)異常引起的程序中斷 利用內(nèi)部中斷,微處理器為用戶提供了發(fā)現(xiàn)、調(diào)試并解決程序執(zhí)行時異常情況的有效途徑 例如,ROM-BIOS和DOS系統(tǒng)利用內(nèi)部中斷為程序員提供了各種功能調(diào)用內(nèi)部中斷的中斷向量號已定內(nèi)部中斷

36、的中斷向量號已定69 除法錯中斷 在執(zhí)行除法指令時,若除數(shù)為0或商超過了寄存器所能表達的范圍,則產(chǎn)生一個向量號為0的內(nèi)部中斷,稱為除法錯中斷例如:mov bl,0idiv bl;除數(shù);除數(shù)BL0,產(chǎn)生除法錯中斷,產(chǎn)生除法錯中斷mov ax,200hmov bl,1div bl;商;商200H,不能用,不能用AL表達表達;產(chǎn)生除法錯中斷;產(chǎn)生除法錯中斷70 指令中斷 在執(zhí)行中斷調(diào)用指令INT n時產(chǎn)生的一個向量號為n(0 255)的內(nèi)部中斷,稱為指令中斷 其中向量號為3的指令中斷比較特別(生成一個字節(jié)的指令代碼:11001100),常用于程序調(diào)試,被稱為斷點中斷例如:例如:DEBUG.EXE調(diào)試

37、程序的運行命令調(diào)試程序的運行命令G設置設置的斷點,就是利用的斷點,就是利用INT 3指令實現(xiàn)的指令實現(xiàn)的71 溢出中斷 在執(zhí)行溢出中斷指令INTO時,若溢出標志OF為1,則產(chǎn)生一個向量號為4的內(nèi)部中斷,被稱為溢出中斷例如:mov ax,2000hadd ax, 7000h;2000H7000H9000H,溢出:,溢出:OF1into;因為;因為OF1,所以產(chǎn)生溢出中斷,所以產(chǎn)生溢出中斷72單步中斷 若單步中斷TF為1,則在每條指令執(zhí)行結束后產(chǎn)生一個向量號為1的內(nèi)部中斷,稱為單步中斷例如:例如:DEBUG.EXE調(diào)試程序的單步命令調(diào)試程序的單步命令T就利就利用單步中斷實現(xiàn)對程序的單步調(diào)試用單步中

38、斷實現(xiàn)對程序的單步調(diào)試73內(nèi)部中斷服務程序 編寫內(nèi)部中斷服務程序與編寫子程序類似 利用過程定義偽指令PROC/ENDP 第1條指令通常為開中斷指令STI 最后用中斷返回指令IRET 通常采用寄存器傳遞參數(shù) 主程序需要調(diào)用中斷服務程序 調(diào)用前,需要設置中斷向量 利用INT n指令調(diào)用中斷服務程序74例1 內(nèi)部中斷服務程序 編寫80H號中斷服務程序 功能:顯示以“0”結尾字符串的功能 利用顯示器功能調(diào)用INT 10H 字符串緩沖區(qū)首地址為入口參數(shù) DS:DX(段地址:偏移地址)傳遞參數(shù)數(shù)據(jù)段intoffdw ?;用于保存原中斷服務程序的偏移地址intsegdw ?;用于保存原中斷服務程序的段基地址

39、intmsgdb A Instruction Interrupt !db 0dh,0ah,0;字符串(以0結尾)例1保存中斷向量mov ax,3580h;獲取系統(tǒng)的原80H中斷向量int 21hmov intoff,bx;保存偏移地址mov intseg,es;保存段基地址例1獲取中斷向量(獲取中斷向量(DOS功能調(diào)用功能調(diào)用INT 21H)功能號:功能號:AH35H入口參數(shù):入口參數(shù):AL中斷向量號中斷向量號出口參數(shù):出口參數(shù):ES:BX中斷向量(段地址:偏移地址)中斷向量(段地址:偏移地址)設置中斷向量push dsmov dx,offset new80h;取新的中斷向量mov ax,se

40、g new80hmov ds,axmov ax,2580h;設置本程序的80H中斷向量int 21hpop ds例1設置中斷向量(設置中斷向量(DOS功能調(diào)用功能調(diào)用INT 21H)功能號:功能號:AH25H入口參數(shù):入口參數(shù):AL中斷向量號中斷向量號DS:DX中斷向量(段地址:偏移地址)中斷向量(段地址:偏移地址)調(diào)用中斷服務程序mov dx,offset intmsg;設置入口參數(shù)DS:DXint 80h;調(diào)用80H中斷服務程序,顯示字符串例1;80H號內(nèi)部中斷服務程序:;顯示字符串(以“0”結尾);入口參數(shù):DS:DX緩沖器首地址new80hproc;過程定義sti;開中斷push ax

41、;保護寄存器push bxpush si例8.1進入中斷服務程序顯示字符串mov si,dxnew1:mov al,si ;獲取欲顯示字符cmp al,0;為“0”結束jz new2mov bx,0;采用ROM-BIOS調(diào)用顯示一個字符mov ah,0ehint 10h;調(diào)用中斷10H顯示一個字符inc si ;顯示下一個字符jmp new1例8.1退出中斷服務程序new2:pop si;恢復寄存器pop bxpop axiret;中斷返回new80h endp;中斷服務程序結束例8.1主程序結束mov dx,intoff;恢復系統(tǒng)的原80H中斷向量mov ax,intseg;注意先設置DX,

42、后設置DS入口參數(shù)mov ds,ax;因為先改變了DS,就不能準確取得intoff變量值mov ax,2580hint 21hmov ax,4c00h;程序終止int 21h例8.1A Instruction Interrupt !832. 外部中斷 外部中斷是由于8088外部提出中斷請求引起的程序中斷 利用外部中斷,微機系統(tǒng)可以實時響應外部設備的數(shù)據(jù)傳送請求,能夠及時處理外部意外或緊急事件 外部中斷的原因是處理器外部隨機產(chǎn)生的,所以是真正的中斷(Interrupt) 內(nèi)部中斷的原因是處理器執(zhí)行程序出現(xiàn)異常,所以經(jīng)常被稱為異常(Exception)84 非屏蔽中斷 通過非屏蔽中斷請求信號向微處

43、理器提出的中斷請求,微處理器無法禁止,將在當前指令執(zhí)行結束予以響應,這個中斷被稱為非屏蔽中斷(并非無法屏蔽,參見教材P179) 8088的非屏蔽中斷的向量號為2,非屏蔽中斷請求信號為NMI 非屏蔽中斷主要用于處理系統(tǒng)的意外或故障。例如: 電源掉電前的數(shù)據(jù)保護 存儲器讀寫錯誤的處理85 可屏蔽中斷 外部通過可屏蔽中斷請求信號向微處理器提出的中斷,微處理器在允許可屏蔽中斷的條件下,在當前指令執(zhí)行結束予以響應,同時輸出可屏蔽中斷響應信號,這個中斷就是可屏蔽中斷 8088的可屏蔽中斷請求和響應信號分別是INTR和INTA*;由IF標志控制可屏蔽中斷是否允許響應;向量號來自外部中斷控制器 8088通常需

44、要配合中斷控制器8259A共同處理可屏蔽中斷 可屏蔽中斷主要用于主機與外設交換數(shù)據(jù)IF控制可屏蔽中斷的響應控制可屏蔽中斷的響應86中斷標志IF的狀態(tài) IF0:可屏蔽中斷不會被響應 關中斷、禁止中斷、中斷屏蔽 系統(tǒng)復位,使IF0 任何一個中斷被響應,使IF0 執(zhí)行指令CLI,使IF0 IF1:可屏蔽中斷會被響應 開中斷、允許中斷、中斷開放 執(zhí)行指令STI,使IF1 執(zhí)行指令IRET恢復原IF狀態(tài)明確明確IF標志的狀態(tài)是關鍵標志的狀態(tài)是關鍵中斷源的識別 8088系統(tǒng)采用中斷類型碼來識別不同的中斷源,每個中斷源都有一個與它相對應的中斷類型碼 。 溢出、斷點、除法溢出、單步、非屏蔽中斷的類型碼為固定值

45、 軟件中斷的類型碼由指令給出 可屏蔽中斷的類型碼由PIC給出 CPU響應INTR中斷時,會產(chǎn)生兩個中斷響應總線周期,要求PIC在第2個中斷響應總線周期把中斷類型碼放到數(shù)據(jù)總線上,供CPU讀入。中斷向量表(IVT) 存放各類中斷的中斷服務程序的入口地址(段和偏移)中斷向量 表的地址位于內(nèi)存的00000H003FFH,大小為1KB,共256個中斷向量 每個中斷向量占用4 Bytes,低字為段內(nèi)偏移,高字為段基址 根據(jù)中斷類型號獲得中斷服務程序入口的方法: (n為中斷類型號) 中斷向量在IVT中的存放地址4n中斷向量表的初始化 初始化將中斷服務程序的入口地址放入向量表 例:中斷類型碼為48H的中斷處

46、理子程序的名字為int48h,編寫程序段將該中斷處理子程序的入口地址放入向量表。中斷向量表的初始化 CLI MOV AX,0 MOV DS,AX MOV SI,48H*4 MOV AX,OFFSET int48h MOV SI,AX MOV AX,SEG int48h MOV SI+2,AX STI8086/8088 CPU的中斷響應過程 內(nèi)部中斷響應過程 無INTA*周期中斷類型碼固定或由指令給出響應過程主要步驟: PUSH FLAG IF=0 PUSH CS PUSH IP 取中斷向量送入IP和CS中斷響應過程(續(xù)) 外部中斷響應過程非屏蔽中斷,與內(nèi)部中斷響應過程類似 可屏蔽中斷 INTA

47、#(1),PIC進行優(yōu)先級排隊判優(yōu)處理 INTA#(2),PIC把中斷類型碼放到DB上,CPU讀入 PUSH FLAG IF=0 PUSH CS PUSH IP 取中斷向量送入IP和CS與內(nèi)部中斷一樣8088系統(tǒng)中各中斷的優(yōu)先級 優(yōu)先級從高到低順序如下: 內(nèi)部中斷 NMI INTR 單步中斷NYNYNNNNNYY執(zhí)行指令執(zhí)行完否?取指令IF=1?內(nèi)部中斷?NMI?INTR?TF=1?類型碼=0255類型碼=2類型碼=1中斷響應,讀回類型碼FLAG入棧TEMPTFTF=TF=0CS、IP入棧計算向量表地址高字CS低字IP執(zhí)行中斷服務程序NMI?TEMP=1?轉入中斷服務程序恢復CS和IP恢復FL

48、AGS返回被中斷的程序YYYYNIRET指令的操作8086/8088的中斷處理流程NMI、INTR、單步和除法錯中斷同時產(chǎn)生時的中斷處理過程DIVTF=1IF=1INTRNMIPUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IP除法錯NMI(IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IPNMI中斷處理程序除法錯中斷處理程序(IF、TF = 0) 返回執(zhí)行下條指令識別出INTR(IF、TF = 1) 返回INTR仍然有效繼續(xù)單步執(zhí)行程序INTR中斷處理程序INTRPUSH FLAGS、CS、IPCLEA

49、R IF & TF,中斷入口CS:IP單步 (IF、TF = 0)PUSH FLAGS、CS、IPCLEAR IF & TF,中斷入口CS:IP單步中斷處理程序(IF、TF = 0) 返回(IF、TF = 1) 返回DMA傳輸 前面三種I/O方式都需要CPU作為中介: 外設 CPU 內(nèi)存 兩個含義:1)軟件:外設與內(nèi)存之間的數(shù)據(jù)傳送是通過CPU執(zhí)行程序來完成的(PIO方式);2)硬件:I/O接口和存儲器的讀寫控制信號、地址信號都是由CPU發(fā)出的(總線由CPU控制)。 缺點:程序的執(zhí)行速度限定了傳送的最大速度(約為幾十KB/秒)解決:DMA傳輸 DMA傳輸: 外設 內(nèi)存 外設直接

50、與存儲器進行數(shù)據(jù)交換 ,CPU不再擔當數(shù)據(jù)傳輸?shù)闹薪檎撸?總線由DMA控制器(DMAC)進行控制(CPU要放棄總線控制權),內(nèi)存/外設的地址和讀寫控制信號均由DMAC提供。 優(yōu)點:數(shù)據(jù)傳輸由DMA硬件來控制,數(shù)據(jù)直接在內(nèi)存和外設之間交換,可以達到很高的傳輸速率(可達幾MB/秒)幾個基本概念 總線控制權、mater、slave DMAC編程周期:slave DMAC控制總線進行數(shù)據(jù)傳輸周期:master DMA的數(shù)據(jù)傳輸形式:基本的:MEMI/O擴充的:MEMMEM I/O I/ODMA傳送原理示意圖 系統(tǒng)總線CPUDMAC存儲器外設接口AENIOWMEMWMEMRIORMEMWMEMRIOWI

51、ORAENHOLDHLDADRQDACKAENIOWIORMEMWMEMR 外設發(fā)出DMA請求 DMAC向CPU申請總線 CPU完成當前總線周期后響應,并釋放總線控制權 DMAC得到總線控制權,并發(fā)出DMA響應信號 由DMAC發(fā)出各種控制信號,控制外設與存儲器之 間的數(shù)據(jù)傳送 數(shù)據(jù)傳送完后,DMAC撤銷HOLD信號 CPU釋放HLDA信號,并重新控制總線動畫演示DMA控制器的工作過程1)當外設準備好,可以進行DMA傳送時,外設向DMA控制器發(fā)出“DMA傳送請求”信號(DRQ);2)DMA控制器收到請求后,向CPU發(fā)出“總線請求”信號HOLD,表示希望占用總線;3)CPU在完成當前總線周期后會立即對HOLD信號進行響應。響應包括兩個動作:一是CPU將數(shù)據(jù)總線、地址總線和相應的控制信號線均置為高阻態(tài),由此放棄對總線的控制權。另一方面,CPU向DMA控制器發(fā)出“總線響應”信號(HLDA)。4)DMA控制器收到HLDA信號后,就開始控制總線,并向外設發(fā)出DMA響應信號DACK;DMA控制器的工作過程(續(xù))5)DMA控制器送出地址信號和相應的控制信號,實現(xiàn)外設與內(nèi)存或內(nèi)存與內(nèi)存之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論