輸入輸出之接口_第1頁(yè)
輸入輸出之接口_第2頁(yè)
輸入輸出之接口_第3頁(yè)
輸入輸出之接口_第4頁(yè)
輸入輸出之接口_第5頁(yè)
已閱讀5頁(yè),還剩198頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

輸入輸出之接口第一頁(yè),共204頁(yè)。第二頁(yè),共204頁(yè)。(I/O接口)I/O接口的定義把外設(shè)連接到總線上的一組邏輯電路的總稱。實(shí)現(xiàn)外設(shè)與主機(jī)之間的信息交換。I/O接口要解決的問題速度匹配(Buffer)信號(hào)電平和驅(qū)動(dòng)能力(電平轉(zhuǎn)換器、驅(qū)動(dòng)器)

信號(hào)形式匹配(A/D、D/A)

信息格式(字節(jié)流、塊、數(shù)據(jù)包、幀)

時(shí)序匹配(定時(shí)關(guān)系)總線隔離(三態(tài)門)第三頁(yè),共204頁(yè)。I/O地址譯碼與設(shè)備選擇把選中的與總線相接,未選中的與總線隔離(高阻態(tài))數(shù)據(jù)的緩沖與暫存緩解接口與CPU工作速度的差異輸出接口有鎖存環(huán)節(jié)輸入接口有緩沖環(huán)節(jié)對(duì)外設(shè)進(jìn)行監(jiān)測(cè)、控制與管理,中斷處理信號(hào)電平與類型的轉(zhuǎn)換形式、格式、電平、功率、碼制等

I/O接口的功能第四頁(yè),共204頁(yè)。

I/O端口:

I/O信息的三種類型:數(shù)據(jù)、命令、狀態(tài)。傳送這三類信息的通道分別稱為:數(shù)據(jù)端口(I、O)、命令端口(O)、狀態(tài)端口(I)。不同外設(shè)具有的端口數(shù)各不相同,計(jì)算機(jī)中為每一個(gè)端口都賦予一個(gè)惟一編號(hào)——稱為端口地址(或端口號(hào))。端口有兩種編址方式:統(tǒng)一編址和獨(dú)立編址。I/O接口的編址方式第五頁(yè),共204頁(yè)。I/O接口電路的基本結(jié)構(gòu)第六頁(yè),共204頁(yè)。

定義把外設(shè)接口與內(nèi)存統(tǒng)一進(jìn)行編址。各占據(jù)統(tǒng)一地址空間的不同部分。優(yōu)點(diǎn)指令統(tǒng)一,靈活;訪問控制信號(hào)統(tǒng)一,使用同一組的地址/控制信號(hào)。缺點(diǎn)內(nèi)存可用地址空間減小例如:MCS-51單片機(jī)0地址空間(共1MB)內(nèi)存地址(960KB)I/O地址(64KB)FFFFFHEFFFFHF0000H1.統(tǒng)一編址第七頁(yè),共204頁(yè)。

定義:外設(shè)地址空間和內(nèi)存地址空間相互獨(dú)立。優(yōu)點(diǎn):內(nèi)存地址空間不受I/O編址的影響缺點(diǎn):I/O指令功能較弱,使用不同的讀寫控制信號(hào)00000H內(nèi)存地址空間內(nèi)存空間(1MB)I/O空間(64KB)FFFFHFFFFFHI/O地址空間0000H2.獨(dú)立編址例如:

8088/8086微機(jī)系統(tǒng)第八頁(yè),共204頁(yè)。MCS-51單片機(jī)第九頁(yè),共204頁(yè)。8088/80862016第十頁(yè),共204頁(yè)。例如:8088/8086系統(tǒng)

8088/8086總線A19-A0A15-A0MEMR、MEMWIOR、IOW、AEN存儲(chǔ)器訪問I/O訪問D15/D7~D0D15/D7~D0第十一頁(yè),共204頁(yè)。

采用I/O獨(dú)立編址方式(但地址線與存儲(chǔ)器共用)地址線上的地址信號(hào)用來區(qū)分:

/0

時(shí)為I/O地址/M地址I/O操作只使用20根地址線中的16/8根:A15/7~A0可尋址的I/O端口數(shù)為64K(65536)/256個(gè)I/O地址范圍為0~FFFFH/0~FFH8088/8086CPU的I/O編址方式第十二頁(yè),共204頁(yè)。

接口電路的基本結(jié)構(gòu)簡(jiǎn)單接口電路數(shù)據(jù)線控制線狀態(tài)線DB(D0-D7)CB(IOR、IOW)AB(A0-A15)數(shù)據(jù)輸入寄存器(or三態(tài)門)數(shù)據(jù)輸出寄存器(鎖存器)狀態(tài)寄存器(or三態(tài)門)命令寄存器譯碼電路控制邏輯接外設(shè)接主機(jī)第十三頁(yè),共204頁(yè)。接口電路的典型結(jié)構(gòu)從編程角度看,接口內(nèi)部主要包括一個(gè)或多個(gè)CPU可以進(jìn)行讀/寫操作的臨時(shí)寄存器,又稱I/O端口(Port)。各I/O端口由端口地址區(qū)分(80X8664K)----編址方式I/O端口1(狀態(tài)端口)I/O端口2(數(shù)據(jù)端口)I/O端口3(控制端口)地址譯碼數(shù)據(jù)緩沖控制電路外設(shè)ABDBCBCPU數(shù)據(jù)端口:用于存放CPU與外設(shè)間傳送的數(shù)據(jù)信息

狀態(tài)端口:用于暫存外設(shè)的狀態(tài)信息

控制端口:用于存放CPU對(duì)外設(shè)或接口的控制信息,控制外設(shè)或接口的工作方式。按存放信息的不同分類CPU對(duì)外設(shè)輸入/輸出的控制,通過對(duì)接口電路中各I/O端口的讀/寫操作完成。端口地址編號(hào)第十四頁(yè),共204頁(yè)。

數(shù)據(jù)輸入/輸出寄存器(緩沖器/鎖存器)——暫存輸入/輸出的數(shù)據(jù)。命令寄存器(鎖存器)——存放控制命令,用來設(shè)定接口功能、工作參數(shù)和工作方式。狀態(tài)寄存器(緩沖器)——保存外設(shè)當(dāng)前狀態(tài),以供CPU讀取。一個(gè)外設(shè)一般占用端口地址情況——數(shù)據(jù)I/O、命令、狀態(tài)三個(gè)寄存器各占一個(gè)端口地址(共3個(gè));有時(shí)把命令、狀態(tài)兩個(gè)寄存器共占一個(gè)端口地址(共2個(gè));一些簡(jiǎn)單外設(shè)只有數(shù)據(jù)寄存器一個(gè)端口(共1個(gè))。接口電路的基本結(jié)構(gòu)(續(xù))第十五頁(yè),共204頁(yè)。簡(jiǎn)單接口電路(無條件傳輸)數(shù)據(jù)輸入接口必須具有三態(tài)輸出能力,以便與總線掛接外設(shè)有數(shù)據(jù)保持能力時(shí)—可用三態(tài)門實(shí)現(xiàn)外設(shè)無數(shù)據(jù)保持能力時(shí)—用三態(tài)輸出的鎖存器實(shí)現(xiàn)第十六頁(yè),共204頁(yè)。

三態(tài)門:高電平、低電平、高阻態(tài)通常一個(gè)器件中包含8個(gè)三態(tài)門常用芯片:74LS244應(yīng)用例子:開關(guān)接口工作波形圖如下:A0~A15IOR譯碼輸出D0~D7開關(guān)狀態(tài)地址有效簡(jiǎn)單數(shù)據(jù)輸入接口電路第十七頁(yè),共204頁(yè)。CPU與外設(shè)間的數(shù)據(jù)傳送方式I/O接口電路基礎(chǔ):三態(tài)緩沖器/鎖存器問題:CPU與外設(shè)的工作速度不一致,尤其是當(dāng)外設(shè)由其他CPU或時(shí)序電路控制時(shí)更加明顯,應(yīng)如何解決效率和可靠性。數(shù)據(jù)傳送控制:使兩者高效、可靠地進(jìn)行數(shù)據(jù)傳送(1)

無條件傳送方式(2)

條件傳送方式(查詢方式

)(3)

中斷傳送方式(4)

DMA傳送方式(DirectMemoryAccess)

存貯器直接存取方式四種傳送方式(程序方式)第十八頁(yè),共204頁(yè)。典型無條件傳送方式接口電路(輸入)該電路在CPU執(zhí)行指令(當(dāng)外設(shè)開關(guān)準(zhǔn)備好后-開關(guān)動(dòng)作時(shí)間固定)

MOVDX,284HINAL,DX功能:

將輸入設(shè)備的數(shù)據(jù)讀入CPU內(nèi)AL中圖中譯碼電路的作用:只當(dāng)A15~A0上出現(xiàn)284H時(shí),(即00000010

1000

0100B)輸出0,其他輸出1。三態(tài)緩沖器開關(guān)狀態(tài)

DBIOR地址譯碼

AB

284H000D7~D0A15~A0與非IO總線74LS244E1/E2例:開關(guān)第十九頁(yè),共204頁(yè)。典型無條件傳送方式接口電路(輸出)圖中譯碼電路的作用:只當(dāng)A15~A0上出現(xiàn)288H時(shí),(即0000001010001000B)輸出0,其他輸出1。該電路在CPU執(zhí)行指令(當(dāng)外設(shè)LED指示燈準(zhǔn)備好后—實(shí)際上一直處于準(zhǔn)備好)

MOVAL,81H

MOVDX,288HOUTDX,AL

功能:

CPU內(nèi)AL中的數(shù)據(jù)81H送至輸出設(shè)備IO總線鎖存器輸出設(shè)備數(shù)據(jù)線IOW地址譯碼地址線

288H000D7~D0A15~A0與非例:LED指示燈74LS273第二十頁(yè),共204頁(yè)。無條件傳送方式

(同步傳送方式)實(shí)現(xiàn)方法CPU不查詢外設(shè)工作狀態(tài),與外設(shè)速度的匹配通過在軟件上延時(shí)完成,在程序中直接用I/O指令,完成與外設(shè)的數(shù)據(jù)傳送特點(diǎn)1.適用于外設(shè)動(dòng)作時(shí)間已知,

前提:CPU與外設(shè)進(jìn)行數(shù)據(jù)傳送時(shí),外設(shè)保證已準(zhǔn)備好。如開關(guān)、發(fā)光器件(如發(fā)光二極管、7段數(shù)碼管、燈泡等)、繼電器、步進(jìn)電機(jī)等。2.軟硬件十分簡(jiǎn)單。(程序方式之一)第二十一頁(yè),共204頁(yè)。條件傳送方式(查詢傳送方式)實(shí)現(xiàn)方法:在與外設(shè)進(jìn)行傳送數(shù)據(jù)前,CPU先查詢外設(shè)狀態(tài),當(dāng)外設(shè)準(zhǔn)備好后,再才執(zhí)行I/O指令,實(shí)現(xiàn)數(shù)據(jù)傳送。特點(diǎn):1.CPU通過不斷查詢外設(shè)狀態(tài),實(shí)現(xiàn)與外設(shè)的速度匹配;2.CPU的工作效率低,響應(yīng)速度慢;3.適用于簡(jiǎn)單、慢速的或?qū)崟r(shí)性要求不高的外設(shè).(程序方式之二)NY從狀態(tài)端口讀入狀態(tài)信息從數(shù)據(jù)端口傳送一個(gè)數(shù)據(jù)外設(shè)準(zhǔn)備好否?編程流程第二十二頁(yè),共204頁(yè)。第二十三頁(yè),共204頁(yè)。查詢方式輸入例假設(shè)外設(shè)的狀態(tài)端口為28CH,其中D7=1時(shí),表示外設(shè)數(shù)據(jù)準(zhǔn)備好外設(shè)的數(shù)據(jù)端口為288H。實(shí)現(xiàn)從外設(shè)讀50H個(gè)字節(jié)到內(nèi)存緩沖區(qū)buffer中。28CH端口狀態(tài)端口288H端口數(shù)據(jù)端口地址譯碼數(shù)據(jù)緩沖控制電路輸入外備CPU地址線數(shù)據(jù)線控制線狀態(tài)信號(hào)數(shù)據(jù)信號(hào)I/O接口第二十四頁(yè),共204頁(yè)。查詢方式輸入接口電路狀態(tài)端口D7=1表示外設(shè)準(zhǔn)備好輸入裝置+5vSTB三態(tài)緩沖器數(shù)據(jù)線288H

數(shù)據(jù)端口地址譯碼地址線

狀態(tài)端口地址譯碼鎖存器IOR

R

Q

D三態(tài)緩沖器D728CH

PC總線IORA15~A0D7~D0&&MOVDX,288HINAL,DXMOVDX,28CHINAL,DXBUSYD0:D7GNDREADYD7D6D0READY第二十五頁(yè),共204頁(yè)。從28CH狀態(tài)端口讀入外設(shè)狀態(tài)信息從288H數(shù)據(jù)端口讀入一個(gè)字節(jié)數(shù)據(jù)YND7=1,外設(shè)準(zhǔn)備好否?N50H個(gè)數(shù)據(jù)傳送結(jié)束?Y編程從外設(shè)讀入50H個(gè)字節(jié)到內(nèi)存緩沖區(qū)buffer中流程圖第二十六頁(yè),共204頁(yè)。

STATUSEQU28CHMOVAX,SEGbuffer;取緩沖區(qū)首地址

MOVDS,AX

LEADI,bufferMOVCX,50H;傳送個(gè)數(shù)

next:

MOVDX,STATUS

ask:

INAL,DX;從狀態(tài)端口讀入狀態(tài)信息

TESTAL,1000

0000B;80H,檢測(cè)D7位

JZ

ask;D7=0,繼續(xù)查詢MOVDX,288H

INAL,DX;從數(shù)據(jù)端口讀入數(shù)據(jù)MOV[DI],AL;送緩沖區(qū)INCDI;修改緩沖區(qū)指針

LOOPnext;傳送下一個(gè)….查詢方式輸入程序片段第二十七頁(yè),共204頁(yè)。DMA傳輸方式前面3種I/O方式共性:都需要CPU作為中介:

外設(shè)

CPU

內(nèi)存

兩個(gè)含義:

1)軟件:外設(shè)與內(nèi)存之間的數(shù)據(jù)傳送是通過CPU執(zhí)行程序來完成的(PIO方式);

2)硬件:I/O接口和存儲(chǔ)器的讀寫控制信號(hào)、地址信號(hào)都是由CPU發(fā)出的(總線由CPU控制)。

缺點(diǎn):程序的執(zhí)行速度限定了傳送的最大速度(約為幾十KB/秒)—解決辦法:DMA傳輸外設(shè)

內(nèi)存DMAC第二十八頁(yè),共204頁(yè)。

DMA傳送方式(直接存儲(chǔ)器存取方式)

實(shí)現(xiàn)方法1.由專用接口芯片DMA控制器(稱DMAC)控制傳送過程,2.當(dāng)外設(shè)需傳送數(shù)據(jù)時(shí),通過

DMAC向CPU發(fā)出總線請(qǐng)求HOLD

;3.CPU發(fā)出總線響應(yīng)信號(hào)HLDA,釋放總線;4.DMAC接管總線,控制外設(shè)、內(nèi)存之間直接數(shù)據(jù)傳送第二十九頁(yè),共204頁(yè)。DMA

傳送方式過程CPUDMAC內(nèi)存外設(shè)總線響應(yīng)總線請(qǐng)求(i8237)第三十頁(yè),共204頁(yè)。第三十一頁(yè),共204頁(yè)。DMAC內(nèi)部包括四個(gè)基本寄存器

①地址寄存器:用于存取下一個(gè)要訪問的內(nèi)存單元的地址,地址寄存器的內(nèi)容加1或減1操作,取決于DMAC的設(shè)計(jì)②字節(jié)計(jì)數(shù)器:用于存放尚未傳送完畢字節(jié)的數(shù)量,字節(jié)計(jì)數(shù)器在DMA過程中自動(dòng)作減1操作③控制寄存器:用于對(duì)DMAC操作的控制④狀態(tài)寄存器:反映DMAC當(dāng)前所處的狀態(tài),例如,數(shù)據(jù)塊傳輸是否結(jié)束等狀態(tài)信息第三十二頁(yè),共204頁(yè)。HLDA發(fā)存儲(chǔ)器地址傳送數(shù)據(jù)傳送結(jié)束?DMA結(jié)束修改地址指針圖7.17DMA流程圖DMA傳送流程:第三十三頁(yè),共204頁(yè)。DMA操作方式有哪些?1.周期挪用

CPU不訪問存儲(chǔ)器時(shí)的那些周期,用來進(jìn)行DMA操作。2.周期擴(kuò)展使用專門時(shí)鐘電路需要DMA操作時(shí),使CPU的時(shí)鐘周期加寬,在加寬的時(shí)鐘周期進(jìn)行DMA操作。3.CPU停機(jī)方式最常見方式第三十四頁(yè),共204頁(yè)。1.外設(shè)和內(nèi)存之間,直接進(jìn)行數(shù)據(jù)傳送,不通過CPU,傳送效率高。

適用于在內(nèi)存與高速外設(shè)、或兩個(gè)高速外設(shè)之間進(jìn)行大批量數(shù)據(jù)傳送。2.電路結(jié)構(gòu)復(fù)雜,硬件開銷較大。DMA傳送方式的特點(diǎn)第三十五頁(yè),共204頁(yè)。*I/O處理器控制方式(通道方式)第三十六頁(yè),共204頁(yè)。幾種數(shù)據(jù)傳送方式特點(diǎn)?無條件傳送:慢速外設(shè)需與CPU保持同步查詢傳送:簡(jiǎn)單實(shí)用,效率較低,硬件開銷小中斷傳送:外設(shè)主動(dòng),可與CPU并行工作,但中斷服務(wù)保護(hù)現(xiàn)場(chǎng)等需要額外時(shí)間開銷,需要硬件開銷進(jìn)行中斷管理DMA傳送:DMAC控制,外設(shè)直接和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送,適合大量、快速數(shù)據(jù)傳送,需要硬件開銷第三十七頁(yè),共204頁(yè)。6.3輸入輸出的控制方式主機(jī)與外設(shè)之間數(shù)據(jù)傳送的控制方式

有以下四種:無條件傳送查詢(條件)方式傳送中斷方式傳送直接存儲(chǔ)器存取(DMA,DirectMemoryAccess)第三十八頁(yè),共204頁(yè)。6.3.1無條件傳送方式適用場(chǎng)合:適用于總是處于準(zhǔn)備好狀態(tài)(定時(shí)固定或已知)的外設(shè)以下簡(jiǎn)單外設(shè)可采用無條件傳送方式:開關(guān)發(fā)光器件(如發(fā)光二極管、7段數(shù)碼管、燈泡等)繼電器步進(jìn)電機(jī)優(yōu)點(diǎn):軟件及接口硬件簡(jiǎn)單缺點(diǎn):只適用于簡(jiǎn)單外設(shè),適應(yīng)范圍較窄第三十九頁(yè),共204頁(yè)。6.3.2查詢(條件)方式傳送適用場(chǎng)合:適用于外設(shè)并不總是準(zhǔn)備好,而且對(duì)傳送速率、傳送效率要求不高的場(chǎng)合。CPU在與外設(shè)交換數(shù)據(jù)前必須詢問外設(shè)狀態(tài)——“你準(zhǔn)備好沒有?”對(duì)外設(shè)的要求:應(yīng)提供設(shè)備狀態(tài)信息對(duì)接口的要求:需要提供狀態(tài)端口優(yōu)點(diǎn):軟件比較簡(jiǎn)單缺點(diǎn):CPU效率低,數(shù)據(jù)傳送的實(shí)時(shí)性差,速度較慢第四十頁(yè),共204頁(yè)。查詢方式的流程圖超時(shí)?READY?與外設(shè)進(jìn)行數(shù)據(jù)交換超時(shí)錯(cuò)讀入并測(cè)試外設(shè)狀態(tài)YNYN傳送完?防止死循環(huán)復(fù)位計(jì)時(shí)器NY注:多個(gè)外設(shè)時(shí),查詢流程見教材圖6.15第四十一頁(yè),共204頁(yè)。例如:用查詢方式進(jìn)行輸出

外設(shè)狀態(tài)端口地址為3FBH,第5位(D5)為狀態(tài)標(biāo)志(=1忙,=0準(zhǔn)備好)

外設(shè)數(shù)據(jù)端口地址為3F8H,寫入數(shù)據(jù)會(huì)使?fàn)顟B(tài)標(biāo)志置1;外設(shè)把數(shù)據(jù)讀走后又把它置0。

試畫出其電路圖。(電路圖見下頁(yè))第四十二頁(yè),共204頁(yè)。D5D7-D0A9|A3≥1&A15|A10≥1IOWD7-D03F8H外設(shè)D7D6D5D4D3D2D1D0BUSYCPQ7Q6Q5Q4Q3Q2Q1Q0狀態(tài)端口GG2AG2BCBAA2A1A074LS138Y0≥1IORY3OE74LS374CPQQDSSTROBE3FBH思考:

程序段?打印機(jī)(1忙/0閑)(=1忙,=0準(zhǔn)備好)第四十三頁(yè),共204頁(yè)。6.3.3中斷方式傳送概念:CPU無需循環(huán)查詢外設(shè)狀態(tài),而是外部設(shè)備在需要進(jìn)行數(shù)據(jù)傳送時(shí)才中斷CPU正在進(jìn)行的工作,讓CPU來為其服務(wù)。即CPU在沒有外設(shè)請(qǐng)求時(shí)可以去做更重要的事情,有請(qǐng)求時(shí)才去傳輸數(shù)據(jù),從而大大提高了CPU的利用率。優(yōu)點(diǎn):CPU效率高,實(shí)時(shí)性好,速度快。缺點(diǎn):程序編制較為復(fù)雜。第四十四頁(yè),共204頁(yè)。6.3.4DMA傳輸前面三種I/O方式共性:都需要CPU作為中介:

外設(shè)

CPU

內(nèi)存

兩個(gè)含義:

1)軟件:外設(shè)與內(nèi)存之間的數(shù)據(jù)傳送是通過CPU執(zhí)行程序來完成的(PIO方式);

2)硬件:I/O接口和存儲(chǔ)器的讀寫控制信號(hào)、地址信號(hào)都是由CPU發(fā)出的(總線由CPU控制)。

缺點(diǎn):程序的執(zhí)行速度限定了傳送的最大速度(約為幾十KB/秒)—解決辦法:DMA傳輸?shù)谒氖屙?yè),共204頁(yè)。

DMA傳輸:

外設(shè)

內(nèi)存外設(shè)直接與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換,CPU不再擔(dān)當(dāng)數(shù)據(jù)傳輸?shù)闹薪檎?;總線由DMA控制器(DMAC)進(jìn)行控制(CPU要放棄總線控制權(quán)),內(nèi)存/外設(shè)的地址和讀寫控制信號(hào)均由DMAC提供。優(yōu)點(diǎn):數(shù)據(jù)傳輸由DMA硬件來控制,數(shù)據(jù)直接在內(nèi)存和外設(shè)之間交換,可以達(dá)到很高的傳輸速率(可達(dá)幾MB/秒)第四十六頁(yè),共204頁(yè)。幾個(gè)基本概念總線控制權(quán)、mater、slaveDMAC編程周期:slave DMAC控制總線進(jìn)行數(shù)據(jù)傳輸周期:masterDMA的數(shù)據(jù)傳輸形式:

基本的:MEM——I/O

擴(kuò)充的:MEM——MEM I/O——I/O第四十七頁(yè),共204頁(yè)。I/O電路的I/O接口(含DMAC)CPUDMA第四十八頁(yè),共204頁(yè)。DMA傳送原理示意圖①系統(tǒng)總線CPUDMAC存儲(chǔ)器外設(shè)接口AENIOWMEMWMEMRIORMEMWMEMRIOWIORAENHOLDHLDADRQDACK②③④⑤AENIOWIORMEMWMEMR①外設(shè)發(fā)出DMA請(qǐng)求②DMAC向CPU申請(qǐng)總線③CPU完成當(dāng)前總線周期后響應(yīng),并釋放總線控制權(quán)④DMAC得到總線控制權(quán),并發(fā)出DMA響應(yīng)信號(hào)⑤由DMAC發(fā)出各種控制信號(hào),控制外設(shè)與存儲(chǔ)器之間的數(shù)據(jù)傳送⑥數(shù)據(jù)傳送完后,DMAC撤銷HOLD信號(hào)⑦CPU釋放HLDA信號(hào),并重新控制總線⑥⑦第四十九頁(yè),共204頁(yè)。DMA控制器的工作過程:1)當(dāng)外設(shè)準(zhǔn)備好,可以進(jìn)行DMA傳送時(shí),外設(shè)向DMA控制器發(fā)出“DMA傳送請(qǐng)求”信號(hào)(DRQ);2)DMA控制器收到請(qǐng)求后,向CPU發(fā)出“總線請(qǐng)求”信號(hào)HOLD,表示希望占用總線;3)CPU在完成當(dāng)前總線周期后會(huì)立即對(duì)HOLD信號(hào)進(jìn)行響應(yīng)。響應(yīng)包括兩個(gè)動(dòng)作:一是CPU將數(shù)據(jù)總線、地址總線和相應(yīng)的控制信號(hào)線均置為高阻態(tài),由此放棄對(duì)總線的控制權(quán)。另一方面,CPU向DMA控制器發(fā)出“總線響應(yīng)”信號(hào)(HLDA)。4)DMA控制器收到HLDA信號(hào)后,就開始控制總線,并向外設(shè)發(fā)出DMA響應(yīng)信號(hào)DACK;第五十頁(yè),共204頁(yè)。DMA控制器的工作過程(續(xù))5)DMA控制器送出地址信號(hào)和相應(yīng)的控制信號(hào),實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存之間的直接數(shù)據(jù)傳送;例如,向I/O接口發(fā)出讀信號(hào),同時(shí)往地址總線上發(fā)出存儲(chǔ)器的地址和存儲(chǔ)器寫信號(hào)和AEN信號(hào),即可從外設(shè)向內(nèi)存?zhèn)魉鸵粋€(gè)字節(jié)。6)DMA控制器自動(dòng)修改地址和字節(jié)計(jì)數(shù)器,并判斷是否需要重復(fù)傳送操作。當(dāng)規(guī)定的數(shù)據(jù)傳送完后,DMA控制器就撤銷發(fā)往CPU的HOLD信號(hào)。CPU檢測(cè)到HOLD失效后,緊接著撤銷HLDA信號(hào),并在下一時(shí)鐘周期重新開始控制總線。第五十一頁(yè),共204頁(yè)??偩€保持/響應(yīng)時(shí)序第五十二頁(yè),共204頁(yè)。

DMA的三種傳輸方式:連續(xù)傳送(塊傳送)DMAC申請(qǐng)到總線后,將一塊數(shù)據(jù)傳送完后才釋放總線,而不管中間DREQ是否有效。單次傳送(每次傳送一個(gè)字節(jié))每個(gè)DMA周期只傳送一個(gè)字節(jié)就立即釋放總線。按需傳送(猝發(fā)傳送)只要I/O接口的數(shù)據(jù)緩沖可用,就進(jìn)行傳送。(注:I/O接口需要有一定大小的FIFO緩沖)第五十三頁(yè),共204頁(yè)。YN允許DMADMA請(qǐng)求?DMAC請(qǐng)求總線CPU響應(yīng),DMAC獲總線控制權(quán)DMA傳送一個(gè)字節(jié)塊結(jié)束?地址增量,計(jì)數(shù)器減量DMAC釋放總線Y數(shù)據(jù)塊傳送N第五十四頁(yè),共204頁(yè)。NYN允許DMADMAC請(qǐng)求總線CPU響應(yīng),DMAC獲總線控制權(quán)DMA傳送一個(gè)數(shù)據(jù)塊結(jié)束?釋放總線至少一個(gè)總線周期地址增量,計(jì)數(shù)器減量DMAC釋放總線Y每次傳送一個(gè)字節(jié)測(cè)試I/O的DREQDMA請(qǐng)求?第五十五頁(yè),共204頁(yè)。NYCPU響應(yīng),DMAC獲總線控制權(quán)DMA傳送一個(gè)字節(jié)塊結(jié)束?測(cè)試I/O的DREQ有效?地址增量,計(jì)數(shù)器減量釋放總線,請(qǐng)求中斷無效,釋放總線允許DMADMA請(qǐng)求?DMAC請(qǐng)求總線按需傳送YNYN第五十六頁(yè),共204頁(yè)。一個(gè)總線周期TDMAC控制總線,共傳送n個(gè)數(shù)據(jù)DMA1DMA2DMAnCPU重新控制總線CPU對(duì)總線控制連續(xù)傳送TDMA共傳送n個(gè)數(shù)據(jù)DMA1DMA2DMAn單次傳送DMA3T按需傳送DMA傳送k個(gè)數(shù)據(jù)DMA傳送n-k個(gè)數(shù)據(jù)FIFO可用FIFO滿FIFO可用FIFO滿圖例:DMA傳輸方式示意圖:第五十七頁(yè),共204頁(yè)。6.4中斷技術(shù)6.4.1中斷的基本概念什么是中斷?與生活場(chǎng)景的比較正在看書電話鈴響接電話繼續(xù)看書執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請(qǐng)求及響應(yīng)實(shí)際場(chǎng)景計(jì)算機(jī)中斷返回第五十八頁(yè),共204頁(yè)。中斷的定義

CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(稱為中斷服務(wù)程序或中斷處理程序),以處理該事件,該事件處理完后又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。INTIRET中斷服務(wù)程序主程序×發(fā)生事件第五十九頁(yè),共204頁(yè)。中斷源定義:引起CPU中斷的事件——中斷源。例如:外設(shè)—請(qǐng)求輸入輸出數(shù)據(jù),報(bào)告故障等事件—掉電、硬件故障、軟件錯(cuò)誤、非法操作、定時(shí)時(shí)間到等中斷源分類:外部中斷、內(nèi)部中斷內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序(INTn等)時(shí)自身產(chǎn)生的中斷外部中斷:CPU以外的設(shè)備、部件產(chǎn)生的中斷

8086/8088的外部中斷信號(hào):INTR、NMIINTR——可屏蔽中斷請(qǐng)求,高電平有效,受IF標(biāo)志的控制。IF=1時(shí),執(zhí)行完當(dāng)前指令后CPU對(duì)它作出響應(yīng)。NMI——非屏蔽中斷請(qǐng)求,上升沿有效,任何時(shí)候CPU都要響應(yīng)此中斷請(qǐng)求信號(hào)。第六十頁(yè),共204頁(yè)。計(jì)算機(jī)中要引入中斷的原因?提高數(shù)據(jù)傳輸率;避免了CPU不斷檢測(cè)外設(shè)狀態(tài)的過程,提高了CPU的利用率(并行操作)。實(shí)現(xiàn)對(duì)特殊事件的實(shí)時(shí)響應(yīng)(實(shí)時(shí)處理/故障處理)。如多任務(wù)系統(tǒng)操作系統(tǒng)中:缺頁(yè)中斷設(shè)備中斷各類異常實(shí)時(shí)時(shí)鐘,…等第六十一頁(yè),共204頁(yè)。中斷過程五個(gè)步驟:中斷請(qǐng)求中斷判優(yōu)/排隊(duì)(有時(shí)還要進(jìn)行中斷源識(shí)別)中斷響應(yīng)中斷服務(wù)/處理中斷返回請(qǐng)求排隊(duì)響應(yīng)服務(wù)/處理返回IRET硬/軟INTn主程序中斷服務(wù)程序以下以外部中斷為主介紹這五個(gè)步驟。第六十二頁(yè),共204頁(yè)。1)中斷請(qǐng)求外設(shè)接口(中斷源)發(fā)出中斷請(qǐng)求信號(hào),送到CPU的INTR或NMI引腳;中斷請(qǐng)求信號(hào)類型:邊沿請(qǐng)求,電平請(qǐng)求 例如,NMI為邊沿請(qǐng)求,INTR為電平請(qǐng)求中斷請(qǐng)求信號(hào)應(yīng)保持到中斷被處理為止(防止重復(fù)響應(yīng));CPU響應(yīng)中斷后,中斷請(qǐng)求信號(hào)應(yīng)及時(shí)撤銷。在8086/8088系統(tǒng)中,外設(shè)的中斷要經(jīng)過8259A可編程中斷控制器(PIC)的排隊(duì)判優(yōu)后向CPU發(fā)出:

(I/O接口)

→PIC(8259)→CPU第六十三頁(yè),共204頁(yè)。2.1)中斷源識(shí)別計(jì)算機(jī)中的中斷源有很多,CPU必須識(shí)別是哪一個(gè)設(shè)備產(chǎn)生中斷。識(shí)別中斷源有兩個(gè)方法:軟件查詢。將中斷信號(hào)從數(shù)據(jù)總線讀入,用程序進(jìn)行判別,如教材圖6.18和圖6.19。硬件法(中斷矢量法)。由中斷源提供中斷類型號(hào)n,CPU根據(jù)類型確定中斷源。(8086/8088即采用此種方法)第六十四頁(yè),共204頁(yè)。2)中斷判優(yōu)多個(gè)中斷源產(chǎn)生中斷,CPU首先為誰(shuí)服務(wù)? ——中斷優(yōu)先級(jí)排隊(duì)問題。中斷優(yōu)先級(jí)控制要處理兩種情況:對(duì)同時(shí)產(chǎn)生的中斷:應(yīng)首先處理優(yōu)先級(jí)別較高的中斷;若優(yōu)先級(jí)別相同,則按先來先服務(wù)的原則FIFO處理;對(duì)非同時(shí)產(chǎn)生的中斷:低優(yōu)先級(jí)別的中斷處理程序允許被高優(yōu)先級(jí)別的中斷源所中斷——即允許中斷嵌套。中斷優(yōu)先級(jí)的控制方法:硬件判優(yōu)——鏈?zhǔn)脚袃?yōu)、并行判優(yōu)(中斷向量法)軟件判優(yōu)——順序查詢中斷請(qǐng)求,先查詢的先服務(wù)(即先查詢的優(yōu)先級(jí)別高)通常將中斷判優(yōu)與中斷源識(shí)別合并在一起進(jìn)行處理。x86系統(tǒng)中,這項(xiàng)任務(wù)由PIC(8259)和CPU(8086/8088)共同完成。第六十五頁(yè),共204頁(yè)。用軟件確定中斷優(yōu)先權(quán)第六十六頁(yè),共204頁(yè)。軟件判優(yōu)的特點(diǎn)查詢方法的優(yōu)點(diǎn)是:

(1)詢問的次序即是優(yōu)先權(quán)的次序。顯然,最先詢問的,優(yōu)先權(quán)的級(jí)別最高。 (2)省硬件。不需要有判斷與確定優(yōu)先權(quán)的硬件排隊(duì)電路。 但隨之而來的缺點(diǎn)是: 由詢問轉(zhuǎn)至相應(yīng)的服務(wù)程序入口的時(shí)間長(zhǎng),尤其是在中斷源較多的情況下。第六十七頁(yè),共204頁(yè)。硬件優(yōu)先權(quán)排隊(duì)電路1.中斷優(yōu)先權(quán)編碼電路正在進(jìn)行中斷處理的外設(shè)的優(yōu)先權(quán)編碼8個(gè)新中斷源8個(gè)中任一個(gè)有中斷請(qǐng)求時(shí),通過“或”門,即可有一個(gè)中斷請(qǐng)求信號(hào)產(chǎn)生第六十八頁(yè),共204頁(yè)。硬件編碼器和比較器的優(yōu)先權(quán)排隊(duì)電路若有8個(gè)中斷源,當(dāng)任一個(gè)有中斷請(qǐng)求時(shí),通過“或”門,即可有一個(gè)中斷請(qǐng)求信號(hào)產(chǎn)生,但它能否送至CPU的中斷請(qǐng)求線,還要受比較器的控制(若優(yōu)先權(quán)失效信號(hào)為低電平,則與門2關(guān)閉)。 8條中斷輸入線的任一條,經(jīng)過編碼器可以產(chǎn)生三位二進(jìn)制優(yōu)先權(quán)編碼A2A1A0,優(yōu)先權(quán)最高的線的編碼為111,優(yōu)先權(quán)最低的線的編碼為000。而且若有多個(gè)輸入線同時(shí)輸入,則編碼器只輸出優(yōu)先權(quán)最高的編碼。第六十九頁(yè),共204頁(yè)。正在進(jìn)行中斷處理的外設(shè)的優(yōu)先權(quán)編碼,通過CPU的數(shù)據(jù)總線,送至優(yōu)先權(quán)寄存器,然后輸出編碼B2B1B0至比較器,以上過程是由軟件實(shí)現(xiàn)的。 比較器比較編碼A2A1A0與B2B1B0的大小,若A≤B,則“A>B”端輸出低電平,封鎖與門1,就不向CPU發(fā)出新的中斷申請(qǐng)(即當(dāng)CPU正在處理中斷時(shí),當(dāng)有同級(jí)或低級(jí)的中斷源申請(qǐng)中斷時(shí),優(yōu)先權(quán)排隊(duì)線路就屏蔽它們的請(qǐng)求);只有當(dāng)A>B時(shí),比較器輸出端才為高電平,打開與門1,將中斷請(qǐng)求信號(hào)送至CPU的INTR輸入端,CPU就中斷正在進(jìn)行的中斷處理程序,轉(zhuǎn)去響應(yīng)更高級(jí)的中斷。第七十頁(yè),共204頁(yè)。 若CPU不在進(jìn)行中斷處理時(shí)(即在執(zhí)行主程序),則優(yōu)先權(quán)失效信號(hào)為高電平,當(dāng)有任一中斷源請(qǐng)求中斷時(shí),都能通過與門2,發(fā)出INTR信號(hào)。這樣的優(yōu)先權(quán)電路,如何能做到轉(zhuǎn)入優(yōu)先權(quán)最高的外設(shè)的服務(wù)程序的入口呢?當(dāng)外設(shè)的個(gè)數(shù)≤8時(shí),則它們公用一個(gè)產(chǎn)生中斷矢量的電路,它有三位由比較器的編碼A2A1A0供給,就能做到不同的編碼轉(zhuǎn)入不同的入口地址。第七十一頁(yè),共204頁(yè)。INTAinCPUINTAINTR外設(shè)1外設(shè)2外設(shè)接口1菊花鏈邏輯電路外設(shè)接口2外設(shè)3外設(shè)接口3≥1菊花鏈邏輯電路菊花鏈邏輯電路┇I(xiàn)REQIREQIREQ中斷確認(rèn)鏈?zhǔn)脚袃?yōu)電路原理圖(教材圖6.20)

INTAinINTAin中斷確認(rèn)中斷確認(rèn)中斷控制器2.雛菊花環(huán)式或稱為鏈?zhǔn)絻?yōu)先權(quán)排隊(duì)電路E第七十二頁(yè),共204頁(yè)。菊花鏈邏輯電路INTAinIREQINTR&=1

≥1INTAoutDB三態(tài)門中斷向量碼nE外設(shè)接口中斷確認(rèn)菊花鏈邏輯電路第七十三頁(yè),共204頁(yè)。3)中斷響應(yīng)在每條指令的最后一個(gè)時(shí)鐘周期,CPU檢測(cè)INTR或NMI信號(hào)。若以下中斷響應(yīng)條件成立,則CPU響應(yīng)中斷:當(dāng)前指令執(zhí)行完。有中斷請(qǐng)求發(fā)出且沒有被屏蔽掉(中斷請(qǐng)求可送到CPU的INTR或NMI)。對(duì)INTR,還應(yīng)滿足以下特殊條件:當(dāng)前指令是STI和IRET,則下條指令也要執(zhí)行完。當(dāng)前指令帶有LOCK、REP等指令前綴時(shí),則把它們看成一個(gè)整體,要求完整地執(zhí)行完;對(duì)INTR,CPU應(yīng)處于開中斷狀態(tài),即IF=1;當(dāng)前沒有復(fù)位(RESET)和保持(HOLD)信號(hào)。若NMI和INTR同時(shí)發(fā)生,則首先響應(yīng)NMI。第七十四頁(yè),共204頁(yè)。3)中斷響應(yīng)(續(xù))CPU中斷響應(yīng)時(shí),要做下述幾項(xiàng)工作:對(duì)INTR,向中斷源發(fā)出INTA中斷響應(yīng)信號(hào);自動(dòng)關(guān)中斷,即IF=TF=0(關(guān)可屏蔽中斷和單步中斷)

;斷點(diǎn)保護(hù),包括CS、IP和FLAGS。主要是保證中斷結(jié)束后能返回被中斷的程序----PUSHCS/IP/FLAGS獲得中斷服務(wù)程序首地址(入口)---JMPCS’:IP’如何得到中斷處理程序的首地址?固定入口法----MCS-51單片機(jī)中中斷向量法——常用,如:X86中為何關(guān)單步中斷?第七十五頁(yè),共204頁(yè)。4)中斷處理(中斷服務(wù))中斷服務(wù)子程序特點(diǎn)為”遠(yuǎn)”過程(類型為FAR或far)要用IRET指令返回---POPFLAGS/IP/CS中斷服務(wù)子程序要做的工作保護(hù)現(xiàn)場(chǎng)(PUSH

reg’s)

開中斷IF=1(STI)---允許中斷嵌套進(jìn)行中斷處理---用戶根據(jù)中斷處理任務(wù)編寫恢復(fù)現(xiàn)場(chǎng)(POP

reg’s)

中斷返回(IRET)

中斷返回IRET主程序中斷服務(wù)程序保護(hù)現(xiàn)場(chǎng)PUSH開中斷STI中斷處理恢復(fù)現(xiàn)場(chǎng)POP關(guān)中斷CLI開中斷STI現(xiàn)場(chǎng)斷點(diǎn)中斷嵌套第七十六頁(yè),共204頁(yè)。5)中斷返回執(zhí)行中斷返回指令I(lǐng)RETIRET指令將使CPU把堆棧內(nèi)保存的斷點(diǎn)信息彈出到IP、CS和FLAGS中,保證被中斷的程序從斷點(diǎn)處能夠繼續(xù)往下執(zhí)行。---相當(dāng)于POPIP/CS/FLAGS

IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG進(jìn)入中斷服務(wù)程序時(shí)中斷返回后第七十七頁(yè),共204頁(yè)。6.4.28088/8086的中斷系統(tǒng)

8088/8086系統(tǒng)的中斷源1內(nèi)部中斷除法溢出:類型號(hào)0,執(zhí)行除法指令時(shí),若發(fā)現(xiàn)除數(shù)為0或商大于目的操作數(shù)所能表達(dá)的范圍時(shí)產(chǎn)生。單步中斷:類型號(hào)1,TF=1時(shí)產(chǎn)生(當(dāng)前指令需執(zhí)行完)。斷點(diǎn)中斷:類型號(hào)3,這是一個(gè)軟件中斷,即INT3指令。一般用于程序調(diào)試,在斷點(diǎn)中斷服務(wù)程序中,可顯示有關(guān)寄存器、存儲(chǔ)單元等內(nèi)容,以便程序員分析到斷點(diǎn)為止程序是否正確。溢出中斷:類型號(hào)4,這是一個(gè)軟件中斷,即INTO指令。

若算術(shù)指令的執(zhí)行結(jié)果發(fā)生舉出(OF=1),則執(zhí)行指令后立即產(chǎn)生一個(gè)中斷類型碼為4的中斷。軟件中斷:即INTn指令,類型號(hào)n(0-255)。第七十八頁(yè),共204頁(yè)。單步中斷---1型中斷CPU每執(zhí)行完一條指令都會(huì)檢查陷阱標(biāo)志TF的狀態(tài)。若TF=1,則CPU就產(chǎn)生中斷類型1的中斷,使CPU轉(zhuǎn)向單步中斷的處理程序。單步中斷可用于程序的調(diào)試,使CPU一次執(zhí)行一條指令,從而能夠逐條地觀察程序運(yùn)行情況。注意:(1)所有類型的中斷在其處理過程中,CPU會(huì)自動(dòng)地把狀態(tài)標(biāo)志壓入堆棧,然后清除TF和IF。因此,當(dāng)CPU進(jìn)入單步中斷處理程序時(shí),就不再處于單步工作方式,而以正常方式工作。只有在單步處理結(jié)束時(shí),從堆棧中彈出原來的標(biāo)志,才使CPU又回到單步方式;

(2)8086/8088指令系統(tǒng)中無設(shè)置或清除TF標(biāo)志指令,但可通過其他方式對(duì)TF置位或復(fù)位。PUSHFPHSHFPOPAXPOPAX

ORAX,0100H

;置位TF

ANDAX,0FEFFH;復(fù)位TFPUSHAXPUSHAXPOPFPOPFODITSZAPC1502467891011FLAGS第七十九頁(yè),共204頁(yè)。2外部中斷與中斷有關(guān)的控制線為:NMI和INTR、INTA非屏蔽中斷NMI:類型號(hào)2,不可用軟件屏蔽,CPU必須響應(yīng)它。可屏蔽中斷INTR:類型號(hào)n由PIC(8259)提供。IF=1時(shí)CPU才能響應(yīng),CPU響應(yīng)信號(hào)為INTA。第八十頁(yè),共204頁(yè)。NMIINTR中斷邏輯軟件中斷指令溢出中斷除法錯(cuò)單步中斷非屏蔽中斷請(qǐng)求中斷控制器8259APIC8086/8088CPU內(nèi)部邏輯斷點(diǎn)中斷8086/8088中斷源類型可屏蔽中斷請(qǐng)求n43012n

內(nèi)部/軟件中斷請(qǐng)求中斷請(qǐng)求\排隊(duì)\屏蔽INTA內(nèi)部排隊(duì)中斷開關(guān)外部/硬件中斷請(qǐng)求DB中斷指令I(lǐng)NTn軟件硬件(n=0~255)第八十一頁(yè),共204頁(yè)。中斷源的識(shí)別8088/8086系統(tǒng)采用中斷類型碼n來識(shí)別不同的中斷源。每個(gè)中斷源都有一個(gè)與它相對(duì)應(yīng)的中斷類型碼n

。溢出、斷點(diǎn)、除法溢出、單步、非屏蔽中斷的類型碼為固定值(4、3、0、1、2)軟件中斷的類型碼由指令I(lǐng)NTn給出(n)可屏蔽中斷的類型碼由PIC(8259)給出(n)CPU響應(yīng)INTR中斷時(shí),會(huì)產(chǎn)生兩個(gè)中斷響應(yīng)總線周期INTA(教材p273圖6.24),要求PIC在第2個(gè)中斷響應(yīng)總線周期把中斷類型碼n放到數(shù)據(jù)總線上,供CPU讀入。第八十二頁(yè),共204頁(yè)。INTR中斷響應(yīng)INTA周期時(shí)序nLOCK為最大模式下的總線封鎖信號(hào)。它有效時(shí),CPU鎖定總線,不允許其他的總線控制設(shè)備申請(qǐng)使用系統(tǒng)總線。參見p273圖6-24第八十三頁(yè),共204頁(yè)。中斷向量表(IVT)存放各類中斷的中斷服務(wù)程序的入口地址CS:IP(段CS和偏移IP)——中斷向量

表的地址位于內(nèi)存的00000H~003FFH,大小為1KB,共256個(gè)中斷向量(中斷向量表)每個(gè)中斷向量占用4Bytes,低字為段內(nèi)偏移IP,高字為段基址CS根據(jù)中斷類型號(hào)n獲得中斷服務(wù)程序入口的方法:(n為中斷類型號(hào))中斷向量在IVT中的存放地址=4×n(中斷向量地址)第八十四頁(yè),共204頁(yè)。中斷向量表的初始化初始化——將中斷服務(wù)程序的入口地址放入向量表

例:中斷類型碼n為48H的中斷處理子程序的名字為int48h,編寫程序段將該中斷處理子程序的入口地址(中斷向量)放入中斷向量表。高8位低8位第八十五頁(yè),共204頁(yè)。中斷向量表的初始化

CLI

PUSHDSMOVAX,0;也可XORAX,AXMOVDS,AXMOVSI,48H*4MOVAX,OFFSETint48hMOV[SI],AXMOVAX,SEGint48hMOV[SI+2],AXPOPDS

STI

RETIInt48h48H*4第八十六頁(yè),共204頁(yè)。8086/8088CPU的中斷響應(yīng)過程

內(nèi)部中斷響應(yīng)過程:無INTA周期中斷類型碼固定(0、1、3、4)或由指令給出(n)響應(yīng)過程主要步驟: ①PUSHFLAGS

②IF=TF=0(關(guān)可屏蔽中斷和單步中斷) ③PUSHCS ④PUSHIP ⑤取中斷向量送入IP’和CS’PUSHCS/IP/FLAGSJMPCS’:IP’第八十七頁(yè),共204頁(yè)。中斷響應(yīng)過程(續(xù))外部中斷響應(yīng)過程非屏蔽中斷NMI,中斷類型碼為固定(2)與內(nèi)部中斷響應(yīng)過程類似可屏蔽中斷INTR

①INTA(1)PIC進(jìn)行優(yōu)先級(jí)排隊(duì)判優(yōu)處理 ②INTA(2)PIC把中斷類型碼n放到DB上,CPU讀入 ③PUSHFLAG

④IF=TF=0(關(guān)可屏蔽中斷和單步中斷) ⑤PUSHCS ⑥PUSHIP ⑦取中斷向量送入IP’和CS’與內(nèi)部中斷一樣第八十八頁(yè),共204頁(yè)。8088/8086系統(tǒng)中各中斷的優(yōu)先級(jí)優(yōu)先級(jí)從高到低順序如下:內(nèi)部中斷(除單步中斷外)NMIINTR單步中斷高低第八十九頁(yè),共204頁(yè)。NYNYNNNNNYY執(zhí)行指令執(zhí)行完否?取指令I(lǐng)F=1?內(nèi)部中斷?NMI?INTR?TF=1?類型碼=0~255類型碼=2類型碼=1中斷響應(yīng),讀回類型碼FLAG入棧TEMP←TFIF=TF=0CS、IP入棧計(jì)算向量表地址高字→CS低字→IP執(zhí)行中斷服務(wù)程序NMI?TEMP=1?轉(zhuǎn)入中斷服務(wù)程序恢復(fù)CS和IP恢復(fù)FLAGS返回被中斷的程序YYYYNIRET指令的操作8086/8088的中斷處理流程第九十頁(yè),共204頁(yè)。NMI、INTR、單步和除法錯(cuò)中斷同時(shí)產(chǎn)生時(shí)的中斷處理過程DIVTF=IF=1INTRNMIPUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP除法錯(cuò)NMI(IF=TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IPNMI中斷處理程序除法錯(cuò)中斷處理程序(IF=TF=0)返回執(zhí)行下條指令識(shí)別出INTR(IF=TF=1)返回INTR仍然有效繼續(xù)單步執(zhí)行程序INTR中斷處理程序INTRPUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP單步

(IF=TF=0)PUSHFLAGS、CS、IPCLEARIF&TF,中斷入口→CS:IP單步中斷處理程序(IF、TF=0)返回(IF、TF=1)返回第九十一頁(yè),共204頁(yè)。6.5可編程中斷控制器8259APIC,ProgrammableInterruptController作用:CPU大門的“看門人”可對(duì)8個(gè)中斷源實(shí)現(xiàn)優(yōu)先級(jí)控制

(單個(gè)管8個(gè))可擴(kuò)展至對(duì)64個(gè)中斷源實(shí)現(xiàn)優(yōu)先級(jí)控制(9個(gè)管64個(gè))

可編程設(shè)置不同工作方式(多套管理方案)根據(jù)中斷源向x86提供不同中斷類型碼n(來訪者1人1號(hào))引腳分配及功能見右圖8259A第九十二頁(yè),共204頁(yè)。8259A內(nèi)部結(jié)構(gòu)第九十三頁(yè),共204頁(yè)。8259A邏輯結(jié)構(gòu)及連接第九十四頁(yè),共204頁(yè)。6.5.1.8259A的內(nèi)部結(jié)構(gòu)8259A的內(nèi)部結(jié)構(gòu)(教材p276圖6.27)中斷請(qǐng)求寄存器IRR保存從IR0~I(xiàn)R7來的中斷請(qǐng)求信號(hào),某位=1表示對(duì)應(yīng)的IRi有中斷請(qǐng)求

中斷服務(wù)寄存器ISR

保存所有正在服務(wù)的中斷源,某位=1表示對(duì)應(yīng)的IRi中斷正在被服務(wù)

中斷屏蔽寄存器IMR存放中斷屏蔽字,某位=1表示對(duì)應(yīng)的IRi輸入被屏蔽

中斷優(yōu)先權(quán)判別電路確定是否向CPU發(fā)出中斷請(qǐng)求,中斷響應(yīng)時(shí)確定ISR的哪位應(yīng)置位及把相應(yīng)中斷的類型碼放到數(shù)據(jù)總線上

第九十五頁(yè),共204頁(yè)。6.5.28259A的工作過程8259A對(duì)中斷請(qǐng)求的處理過程如下:當(dāng)某IRi有效時(shí),IRR相應(yīng)位置1若有效的IRi未被屏蔽,則向CPU發(fā)出中斷請(qǐng)求INT檢測(cè)到第1個(gè)INTA信號(hào)后,置ISRi=1,IRRi=0

檢測(cè)到第2個(gè)INTA信號(hào)后,把ISRi=1中最高優(yōu)先級(jí)的中斷類型碼n放到DB上若工作在AEOI方式,在第2個(gè)INTA結(jié)束時(shí),使ISRi復(fù)位;否則由CPU發(fā)出EOI命令使ISRi復(fù)位第九十六頁(yè),共204頁(yè)。6.5.38259A的工作方式8259A的工作方式有如下幾類:中斷優(yōu)先方式與中斷嵌套中斷結(jié)束處理方式

屏蔽中斷源的方式中斷觸發(fā)方式級(jí)聯(lián)工作方式第九十七頁(yè),共204頁(yè)。中斷優(yōu)先方式與中斷嵌套中斷優(yōu)先方式

兩類優(yōu)先級(jí)控制方式:固定優(yōu)先級(jí)和循環(huán)優(yōu)先級(jí)固定優(yōu)先級(jí)方式所有中斷請(qǐng)求IRi的中斷優(yōu)先級(jí)固定不變優(yōu)先級(jí)排列順序可編程改變加電后8259A的默認(rèn)方式,默認(rèn)優(yōu)先級(jí)順序從高到低為IR0~I(xiàn)R7IR7IR6IR5IR4IR3IR2IR1IR07654321032107654最低級(jí)最高級(jí)最高級(jí)最低級(jí)優(yōu)先級(jí)IR7IR6IR5IR4IR3IR2IR1IR0默認(rèn)優(yōu)先級(jí)優(yōu)先級(jí)可編程改變第九十八頁(yè),共204頁(yè)。中斷優(yōu)先方式與中斷嵌套(續(xù))循環(huán)優(yōu)先級(jí)方式中斷源輪流處于最高優(yōu)先級(jí),即自動(dòng)中斷優(yōu)先級(jí)循環(huán)初始優(yōu)先級(jí)順序可用編程改變某中斷請(qǐng)求IRi被處理后,其優(yōu)先級(jí)別自動(dòng)降為最低,原來比它低一級(jí)的中斷上升為最高級(jí)IR7IR6IR5IR4IR3IR2IR1IR07654321021076543最低級(jí)最高級(jí)最高級(jí)最低級(jí)ISR內(nèi)容IR7IR6IR5IR4IR3IR2IR1IR0IR4的服務(wù)結(jié)束以前0101000001000000IR4的服務(wù)結(jié)束以后ISRi第九十九頁(yè),共204頁(yè)。8259A內(nèi)部中斷優(yōu)先級(jí)電路第一百頁(yè),共204頁(yè)。優(yōu)先級(jí)的管理方式第一百零一頁(yè),共204頁(yè)。中斷優(yōu)先方式與中斷嵌套(續(xù))中斷嵌套方式在中斷處理過程中允許被更高優(yōu)先級(jí)的事件所中斷稱為中斷嵌套。8259A有兩種中斷嵌套方式:普通全嵌套方式(默認(rèn)方式)

一中斷正被處理時(shí),只有更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過程而被服務(wù)。特殊全嵌套方式

一中斷正被處理時(shí),允許同級(jí)或更高優(yōu)先級(jí)的事件可以打斷當(dāng)前的中斷處理過程而被服務(wù)。注:

特殊全嵌套僅用于多個(gè)8259A級(jí)連時(shí)的主8259A,而不能用于從屬8259A或單8259A系統(tǒng)。第一百零二頁(yè),共204頁(yè)。D.主8259AIR0IR1IR2IR3IR4IR5IR6IR7一般嵌套方式:從片的INT被主片封鎖,故更高級(jí)別的IR0-IR2中斷也無法得到響應(yīng)特殊嵌套方式:因主片不封鎖從片的INT,故級(jí)別高的IR0-IR2中斷可以得到響應(yīng)。(但I(xiàn)R3-IR7仍被本從片封鎖)C.假定IR3發(fā)生中斷,并獲得服務(wù)一般嵌套方式:IR4的中斷被服務(wù)時(shí),這些中斷將被封鎖。B.特殊嵌套方式:IR4的中斷被服務(wù)時(shí),只封鎖IR5-IR7。A.INTE.從8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式與特殊全嵌套方式的區(qū)別

去CPU第一百零三頁(yè),共204頁(yè)。中斷結(jié)束處理方式當(dāng)某一IRi中斷被服務(wù)時(shí),ISR中的相應(yīng)位ISRi=1。當(dāng)服務(wù)結(jié)束后,則必須清零該ISRi位。使ISRi=0是通過向8259A發(fā)出中斷結(jié)束命令(EOI命令)實(shí)現(xiàn)的。三種EOI命令自動(dòng)EOI(AEOI)——(自動(dòng)EOI方式)非指定EOI(NSEOI)——(正常EOI方式)指定EOI(SEOI)——(特殊EOI方式)第一百零四頁(yè),共204頁(yè)。

AEOI:在第2個(gè)INTA結(jié)束時(shí),由8259A使ISRi自動(dòng)復(fù)位;因不保留當(dāng)前正在服務(wù)的中斷的狀態(tài),故AEOI不能用于中斷嵌套方式SEOI:由CPU發(fā)出一條SEOI命令,該EOI命令中指出了所要復(fù)位的ISR的位號(hào)。用于特殊屏蔽方式NSEOI:由CPU發(fā)出正常EOI命令,該EOI命令使ISRi=1的位中優(yōu)先級(jí)最高的那一位復(fù)位。用于普通全嵌套方式第一百零五頁(yè),共204頁(yè)。中斷服務(wù)程序┇向從PIC發(fā)EOI命令讀從PIC的ISR全0?向主PIC發(fā)EOI命令YIRET恢復(fù)現(xiàn)場(chǎng)N特殊全嵌套方式下的EOI處理只有當(dāng)從PIC的中斷全部處理完后,才能向主PIC發(fā)EOI命令第一百零六頁(yè),共204頁(yè)。屏蔽中斷源的方式IMR屏蔽字決定了允許或禁止某位IRi所對(duì)應(yīng)的中斷:IMi=1禁止,IMi=0允許。特殊屏蔽方式:提供了允許較低優(yōu)先級(jí)的中斷能夠得到響應(yīng)的特殊手段。原理:假定當(dāng)前正在處理IR6,先進(jìn)入特殊屏蔽方式,然后設(shè)置IM6=1。這時(shí),除IR6外的所有中斷請(qǐng)求均能得到響應(yīng)。特殊屏蔽方式中只能用SEOI命令結(jié)束中斷。第一百零七頁(yè),共204頁(yè)。特殊屏蔽例:

。;IR4中斷處理程序 CLI MOVAL,68H;OCW3:01101000 OUT0C0H,AL;設(shè)置特殊屏蔽方式 INAL,0C2H ORAL,10H;屏蔽IR4 OUT0C2H,AL STI 。;IR7請(qǐng)求,響應(yīng),返回 。 CLI;為設(shè)命令字 INAL,0C2H;讀出屏蔽字 ANDAL,0EFH;清除IMR4 OUT0C2H,AL MOVAL,48H;OCW3:010

01000 OUT0C0H,AL;取消特殊屏蔽 STI 。 ;繼續(xù)IR4中斷服務(wù) MOVAL,20H;OCW2:00100000(EOI) OUT0C0,AL IRET

第一百零八頁(yè),共204頁(yè)。中斷觸發(fā)方式邊沿觸發(fā)IRi出現(xiàn)上升沿表示有中斷請(qǐng)求

電平觸發(fā)IRi出現(xiàn)高電平表示有中斷請(qǐng)求應(yīng)注意及時(shí)撤除高電平,否則可能引起重復(fù)響應(yīng)在第1個(gè)INTA結(jié)束前,IRi必須保持高電平第一百零九頁(yè),共204頁(yè)。級(jí)聯(lián)工作方式單片8259A可支持8個(gè)中斷源;采用多片8259A級(jí)連,可最多支持64個(gè)中斷源。n片8259A可支持7n+1個(gè)中斷源;級(jí)連時(shí)只能有一片8259A為主片,其余的均為從屬片;(一主多從)涉及到的8259A引腳包括:CAS0-CAS2SP/ENIRiINT第一百一十頁(yè),共204頁(yè)。級(jí)連電路連接方法最多1主8從64個(gè)中斷源主片:SP/EN接+5V;從片:SP/EN接地。第一百一十一頁(yè),共204頁(yè)。6.5.48259A的編程使用8259A的控制命令分為:初始化命令字ICWICW1~I(xiàn)CW4向8259A寫入ICW的過程稱為初始化編程操作命令字OCW

OCW1~OCW3向8259A寫入OCW的過程稱為操作方式編程第一百一十二頁(yè),共204頁(yè)。8259A內(nèi)部寄存器的尋址方法需要CS、A0、RD、WR和D4、D3的配合內(nèi)部寄存器的訪問方法如下表:

由表可見,CPU用A0尋址82C59A的端口共有2個(gè):1個(gè)為偶地址,1個(gè)為奇地址

第一百一十三頁(yè),共204頁(yè)。8259A的初始化順序8259的初始化流程如圖注意次序不可顛倒寫ICW1寫ICW2級(jí)連?寫ICW3需ICW4?寫ICW4NNYY第一百一十四頁(yè),共204頁(yè)。送ICW1,是否用ICW4用ICW2設(shè)中斷類型碼級(jí)連方式?設(shè)ICW3需要ICW4?設(shè)ICW4準(zhǔn)備接受中斷Y

NNY第一百一十五頁(yè),共204頁(yè)。8259A的控制命令字初始化8259A必須從ICW1開始寫ICW1意味著重新初始化8259A寫入ICW1后,8259A的狀態(tài)如下:清除ISR和IMR(全0);將中斷優(yōu)先級(jí)設(shè)成初始狀態(tài):IR0最高,IR7最低;設(shè)定為一般屏蔽方式;采用非自動(dòng)中斷結(jié)束方式;狀態(tài)讀出邏輯預(yù)置為讀IRR。第一百一十六頁(yè),共204頁(yè)。ICW1——初始化字LTIM:觸發(fā)方式=1高電平觸發(fā)=0上升沿觸發(fā)SNGL:級(jí)連控制=1單片=0級(jí)連IC4:ICW4控制=1要寫ICW4=0不寫ICW4(默認(rèn)ICW4為全0)A0 D7 D6 D5 D4 D3 D2 D1 D0

0 x x

x 1 LTIM x SNGL IC4第一百一十七頁(yè),共204頁(yè)。例:

某8086微機(jī)系統(tǒng)中,使用單片82C59A,中斷請(qǐng)求信號(hào)為上升沿觸發(fā),需要設(shè)置ICW4,端口地址為20H和21H,則其初始化命令字ICW1應(yīng)為:00010011=13H,設(shè)置ICW1的指令為:MOVAL,13HOUT20H,AL第一百一十八頁(yè),共204頁(yè)。ICW2——中斷向量碼T7~T3:中斷向量碼的高5位T2~T0:最低3位為中斷源的序號(hào)IRn000~111分別對(duì)應(yīng)IR0~I(xiàn)R7由8259A根據(jù)中斷源的序號(hào)自動(dòng)填入例如: 若ICW2命令字為48H,則IR0的中斷向量碼為48H,IR7的中斷向量碼為4FH,等等。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 T7T6 T5 T4 T3

x x x第一百一十九頁(yè),共204頁(yè)。例:

8259A采用前沿觸發(fā),單片使用,需要ICW4,假設(shè)IR0的類型碼為08H,試確定ICW1,ICW2.8259A端口地址:20H,21HICW1=00010011B;前沿觸發(fā),單片,需ICW4ICW2=00001000B MOVAL,00010011B OUT20H,AL MOVAL,00001000B OUT21H,AL第一百二十頁(yè),共204頁(yè)。ICW3——級(jí)連控制字主片的級(jí)聯(lián)控制字Si=1對(duì)應(yīng)IRi線上連接了從片A0 D7 D6 D5 D4 D3 D2 D1 D0

1 S7S6 S5 S4 S3

S2 S1 S0從片的級(jí)聯(lián)控制字ID2~I(xiàn)D0標(biāo)識(shí)碼,說明本從片連接到主片的哪個(gè)IR引腳上。000~111分別對(duì)應(yīng)IR0~I(xiàn)R7。

A0 D7 D6 D5 D4 D3 D2 D1 D0

1 00 0 0 0

ID2 ID1 ID0第一百二十一頁(yè),共204頁(yè)。ICW3——級(jí)連控制字(續(xù))ICW3必須與主從片的連接關(guān)系一致:

例如,主片的IR4與從片的INT線連接,則主片的ICW3=10H,從片的ICW3=04H。中斷響應(yīng)時(shí),主片通過級(jí)連線CAS2-CAS0送出被允許中斷的從片標(biāo)識(shí)碼,各從片用自己的ICW3與CAS2-CAS0比較,二者一致的從片才可發(fā)送中斷向量碼。第一百二十二頁(yè),共204頁(yè)。例:

假設(shè)主片8259A的IR3和IR6接了2個(gè)從片.主片端口地址:20H,21H;1#從片端口地:A0H,A1H

試設(shè)置ICW3.主片:ICW3=0100100B=48H從片1#:ICW3=00000011=03H從片2#:ICW3=00000110=06H

主片ICW3的初始化程序段:MOVAL,48HOUT21H,AL1#從片ICW3的初始化:MOVAL,03HOUT0A1H,AL第一百二十三頁(yè),共204頁(yè)。ICW4——中斷結(jié)束方式字SFNM:特殊全嵌套1特殊全嵌套方式0一般全嵌套方式AEOI:自動(dòng)EOI1自動(dòng)EOI方式0非自動(dòng)EOI方式A0 D7 D6 D5D4 D3 D2 D1 D0

1 00 0SFNM BUF M/S AEOI 1BUF:緩沖方式M/S:主/從緩沖選擇BUFM/S11緩沖方式/主PIC10緩沖方式/從PIC0x非緩沖方式/正常第一百二十四頁(yè),共204頁(yè)。初始化編程舉例例:

某8086微機(jī)系統(tǒng)中有一片82C59A,中斷請(qǐng)求信號(hào)為電平觸發(fā),中斷類型碼為40H~47H,中斷優(yōu)先級(jí)管理采用普通全嵌套方式,中斷結(jié)束方式采用自動(dòng)結(jié)束方式,系統(tǒng)中未使用數(shù)據(jù)緩沖器,系統(tǒng)分配給82C59A的端口地址為20H和21H,試對(duì)該82C59A進(jìn)行初始化編程。第一百二十五頁(yè),共204頁(yè)。分析:由于系統(tǒng)中使用單片82C59A,所以初始化時(shí)不需要ICW3,本例中82C59A要求工作在非緩沖方式,故在硬件上將SP*/EN*接+5V,ICW4中的M/S*位無意義,可設(shè)置為0

對(duì)82C59A的初始化程序如下: MOVAL,00011011B;設(shè)置ICW1初始化命令字 OUT20H,AL;將ICW1輸出到偶地址端口 MOVAL,01000000B;ICW2中斷類型號(hào)基值 OUT21H,AL;將ICW2送入奇地址端口 MOVAL,00000011B;ICW4OUT21H,AL ;將ICW4送入奇地址瑞口

第一百二十六頁(yè),共204頁(yè)。8259A的操作命令字OCWOCW用于設(shè)置8259的工作狀態(tài)在初始化后寫入OCW的寫入順序可任意寫入地址要求:OCW1必須寫入奇地址端口(A0=1)OCW2,OCW3必須寫入偶地址端口(A0=0)

第一百二十七頁(yè),共204頁(yè)。OCW1——中斷屏蔽字Mi=1中斷請(qǐng)求線IRi被屏蔽(不允許中斷)=0允許該IRi中斷OCW1將寫入IMR寄存器。A0=1時(shí)讀OCW1可讀出設(shè)置的IMR內(nèi)容。A0 D7 D6 D5 D4 D3 D2 D1 D0

1 M7M6 M5 M4 M3

M2

M1

M0第一百二十八頁(yè),共204頁(yè)。OCW2——中斷結(jié)束和優(yōu)先級(jí)循環(huán)L2~L0:優(yōu)先級(jí)編碼R:優(yōu)先級(jí)自動(dòng)循環(huán)SL:指定優(yōu)先級(jí)EOI:結(jié)束中斷命令

RSLEOI001非指定EOI命令(NSEOI),全嵌套方式011指定EOI命令(SEOI),全嵌套方式,按L2-L0編碼復(fù)位ISR101NSEOI命令,優(yōu)先級(jí)自動(dòng)循環(huán)100自動(dòng)EOI,設(shè)置優(yōu)先級(jí)自動(dòng)循環(huán)000自動(dòng)EOI,取消優(yōu)先級(jí)自動(dòng)循環(huán)(固定優(yōu)先級(jí))111SEOI命令,按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))110按L2-L0編碼循環(huán)優(yōu)先級(jí)(L2-L0設(shè)為最低優(yōu)先級(jí))

A0 D7 D6 D5 D4

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論