




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章輸入輸出技術
6.1外設接口的基本模型6.2程序控制I/O方式6.3中斷方式6.4直接存貯器存取(DMA)方式
6.1外設接口的基本模型
1.應答聯絡大多數外設與計算機進行信息交換時都需要事先進行聯絡,只有雙方建立好聯絡關系(即握手成功)之后,雙方才能進行信息交換。例如,欲將計算機內部的數據輸出給外設,常規的工作過程為:首先由CPU讀外設與系統連接的狀態端口,獲得外設的工作狀態,CPU根外設狀態決定輸出數據的時刻。圖6.1外設接口基本模型2.端口地址當計算機系統中有多個外設時,CPU在某個時刻只能與一個外設打交道。為了確定此刻哪一個外設可以與計算機打交道,采取與內存同樣的處理方法,利用二進制編碼為外設編號,該編號被稱為外設地址(又稱I/O地址),也即通過外設地址來識別不同的外設。3.輸入輸出方法外設與計算機間的信息交換可以用不同的輸入輸出方法完成?;镜妮斎胼敵龇椒ㄓ校撼绦蚩刂艻/O方式(無條件傳送方式與查詢方式)、中斷方式、直接存貯器存取(DMA)方式。
6.2程序控制I/O方式
6.2.1無條件傳送方式所謂無條件傳送方式是指可以在需要的時刻讓CPU直接與外設進行輸入輸出操作,也即CPU僅需要通過I/O指令即可由接口獲取外設數據或為外設提供數據。這種方式的實現很簡單,硬件上只需要提供CPU與外設連接的數據端口,而軟件上則只提供相應的輸入或輸出指令即可。1.輸入接口設計對于簡單的輸入設備,在硬件上只需要設計一個數據輸入接口即可以將該外設與CPU連接起來。實現數據輸入接口的器件可選用三態門,如74LS244。圖6.2開關K與微機系統連接的接口電路如果希望完成如下任務:當開關接通時,CPU執行程序段ON;當開關斷開時,CPU執行程序段OFF。下述指令的執行可以完成該任務:
MOVDX,0FFF7HINAL,DXANDAL,01HJZON;假定程序段ON與本程序段在同一內存段中
JMPOFF圖6.3三態門作為數據輸入接口的一般連接模式2.輸出接口設計作為無條件傳送方式實現數據輸出的例子,下面給出CPU對發光二極管的控制。圖6.4為發光二極管與微機系統連接的接口電路。鎖存器作為發光二極管與微機系統數據總線連接的中間接口,接收來自CPU的輸出數據。當鎖存器的CP端出現上升沿信號時,數據總線上的數據被鎖存于鎖存器內部并輸出。圖6.4發光二極管與微機系統連接的接口電路反相器對鎖存器起保護作用,當發光二極管發亮時,反相器提供足夠大的吸入電流,以保護鎖存器不受損壞。對于圖中電路,CPU執行下述指令可以使兩個發光二極管發亮:
MOVDX,0000HMOVAL,81HOUTDX,AL而CPU執行下述指令可以使兩個發光二極管不發亮:
MOVDX,0000HMOVAL,00HOUTDX,AL圖6.5鎖存器作為數據輸出接口的一般連接模式6.2.2查詢方式1.查詢方式的實現當外設已處于準備好數據的狀:①在中斷處理程序中要有開中斷指令。
②要設置足夠大的堆棧。
③要正確地操作堆棧。
圖6.6典型的查詢方式工程流程圖6.7查詢方式實現I/O傳送示例
(a)外設與微機接口電路;(b)外設工作時序DAOUT:MOVAX,0D200HMOVDS,AXMOVBX,0;初始化內存首地址
MOVCX,1000;初始化計數器
MOVDX,02F9HMOVAL,01HOUTDX,AL;初始化選通信號NEXT:MOVDX,02FAHWAT:INAL,DXANDAL,80HJNZWAT;狀態查詢環
MOVDX,02F8HMOVAL,OUTDX,AL;數據輸出
MOVDX,02F9HMOVAL,00HOUTDX,AL圖6.8幾種輪詢控制流程CALLDLY100μs;DLY100μs為100μs的延遲子程序MOVAL,01HOUTDX,AL;產生選通信號INCBX;修改內存指針LOOPNEXT;輸出次數的循環控制RET2.多外設的查詢控制在微機系統中,希望以查詢方式與微機進行信息交換的外設可能有多個。查詢方式是一種同步機制,它以輪詢的方式依次對各個外設進行服務。輪詢的順序確定了外設的優先級,而輪詢的順序又是根據外設的重要性確定。通常是相對重要的和速度快的外設先被查詢、服務,而相對不重要的和速度慢的外設后被查詢、服務。6.3中斷方式
6.3.1中斷概念所謂中斷是指某事件的發生引起CPU暫停當前程序的運行,轉入對所發生事件的處理,處理結束又回到原程序被打斷處接著執行這樣一個過程。
1.中斷源2.中斷過程中斷方式的實現一般需要經歷下述過程:中斷請求—→中斷響應—→斷點保護—→中斷源識別—→中斷服務—→斷點恢復—→中斷返回1)中斷請求①信號形式應滿足CPU要求。②中斷請求信號應被有效地記錄,以便CPU能夠檢測到它。③一旦CPU對某中斷源的請求提供了服務,則該中斷源的請求信號應及時撤消。2)中斷響應
CPU對內部中斷源提出的中斷請求必須接受,而對外部中斷源提出的中斷請求是否響應取決于外中斷源類型及響應條件。不同的微機對可屏蔽中斷請求有不同的響應條件,8086(88)系統的響應條件為:①指令執行結束;②CPU處于開中斷狀態(即IF=1);③沒有發生復位(RESET)、保持(HOLD)和非屏蔽中斷請求(NMI);④開中斷指令(STI)、中斷返回指令(IRET)執行完,需要再執行一條指令,才能響應INTR請求。圖6.9微機系統中實現中斷的基本模型圖6.10有中斷產生的情況下CPU運行程序的軌跡3)斷點保護4)中斷源識別常用的中斷源識別方法有:①軟件查詢法。
②中斷矢量法。
6)斷點恢復7)中斷返回3.中斷優先級及嵌套圖6.11中斷源識別的軟件查詢法(a)硬件接口;(b)軟件查詢流程①不同優先級的多個中斷源同時提出中斷請求時,CPU應首先響應最高優先級的中斷源提出的請求;②CPU正在對某中斷源服務時,若有優先級更高的中斷源提出請求,則CPU應對高優先級的中斷作出響應,即高優先級的中斷請求可以中斷低優先級的中斷服務。目前采用的解決中斷優先級控制的方案有:①軟件查詢。
②硬件鏈式優先級排隊電路。③硬件優先級編碼比較電路。④利用可編程中斷控制器(PIC)。
圖6.12中斷嵌套示意圖6.3.2中斷系統1.8086(88)中斷系統8086(88)中斷系統可以容納最多256個中斷源,所有中斷源統一編碼,每個中斷源用一個字節型編碼標識,該編碼稱為中斷向量碼,它是CPU識別中斷源的標記。1)中斷源類型256個中斷源分為兩大類:(1)內部中斷它由CPU內部事件及執行軟中斷指令產生。已定義的內部中斷有:①除法錯中斷。②單步中斷。③斷點中斷。④溢出中斷。⑤軟件中斷。(2)外部中斷它是由外部中斷源產生對CPU的請求而引發的。8086(88)中斷系統將外部中斷源又分為兩種。①非屏蔽中斷。②可屏蔽中斷。2)中斷響應過程在8086(88)系統中,中斷控制是由CPU與中斷控制器共同完成的,這使得中斷過程簡化:①中斷請求;②中斷響應;③中斷處理:圖6.13中斷響應過程圖6.14中斷響應時CPU查詢中斷源的順序3)中斷向量表8086(88)微機系統在內存的最低端開辟了1KB的存貯區作為中斷向量表。該表以四字節為一組構造而成,共分為256組,按中斷向量碼的序號排列,如圖6.15所示。圖6.15中斷向量表2.80386(Pentium)中斷系統
Pentium及80386、80486,在程序運行過程中由于某種事件的發生而迫使處理器暫停該程序的運行,轉去對事件進行處理,待事件處理完以后,再回到原程序接著原狀態繼續運行。1)分類在80286以后的處理器中均將廣義中斷分為中斷和異常兩大類。(1)中斷由外部事件引起的中斷稱為外部中斷。表6.1中斷及其向量碼2)中斷或異常的響應過程(1)優先級80386之后的處理器有許多中斷和異常發生,它們的優先級如表6.2所示。表6.2中斷和異常的優先級(2)實地址模式下的響應過程
Pentium在實地址模式下對中斷或異常的響應過程與8086(88)的十分相似,但更加靈活。①獲得向量碼。②進行斷點保護。③獲得查表值。查表值=基地址+中斷向量碼×4
圖6.16實模式下中斷向量表圖6.17保護模式下的中斷描述符表圖6.18錯誤碼格式3)保護模式下中斷響應過程在保護模式下,每個中斷源或每個異常都事先構造好自己的中斷描述符。①中斷描述符表。②錯誤碼。③響應過程。(i)由IDTR的基地址和中斷向量碼、處理器計算出查表值:查表值=基地址+中斷向量碼×8(ii)由中斷描述符中規定的選擇符,在GDT(全局描述符表)或LDT(局部描述符表)中查到代碼段描述符。(iii)由段描述符取出基地址(線性基地址),將其與中斷描述符中的偏移量結合在一起,構成中斷服務程序的入口地址,即:中斷服務入口=段線性基地址+偏移量
(iv)斷點保護。
圖6.19中斷響應過程圖6.20核心堆棧保存的斷點信息6.3.3中斷控制器82591.8259內部結構8259內部結構如圖6.21所示,它的工作過程如下:①中斷請求輸入端IR0~IR7接收外部中斷源的請求信號;②外部中斷源的請求狀態鎖存在中斷請求寄存器IRR(8位)的相應位(即置1),并與中斷屏蔽寄存器IMR(8位)相“與”,送給優先級判決電路;
④控制電路接收到中斷請求有效信號后,向CPU輸出INT信號;⑤CPU接受INT信號,在中斷允許(IF=1)的情況下,發出響應信號;⑥8259接收信號,在第1個INTA周期,先設置ISR的相應位,并恢復IRR的相應位,然后,主控8259送出級聯地址CAS0~CAS2加載至從屬8259上;⑦單獨使用的8259或是由CAS0~CAS2選擇的從屬8259,在第2個INTA周期,將中斷向量碼輸出至數據總線;⑧CPU讀取中斷向量碼,轉移到相應的中斷處理程序;⑨中斷結束時,通過在中斷處理程序中向8259送一條EOI(中斷結束)命令,使ISR相應位復位;或8259選擇自動結束中斷方式時,由8259在第2個信號的后沿自動將ISR相應位復位。圖6.218259內部結構圖2.8259引腳功能8259是具有28個引腳的集成芯片,如圖6.22所示,各引腳功能如下:
D0~D7:雙向數據線,與系統數據總線相連,接收CPU發來的命令字,給CPU提供中斷向量碼與內部寄存器狀態。
A0:地址輸入線,與系統地址總線中某位相連,用來選擇8259內部寄存器。:片選輸入信號,由系統中地址譯碼器控制,低電平有效。:寫和讀控制信號,輸入,與系統控制總線中的(外設寫)和(外設讀)信號相連。
INT:中斷請求輸出信號,可接入CPU的INTR引腳。:中斷響應輸入信號,接收CPU送出的
信號。
CAS0~CAS2:級聯地址,在8259級聯時使用。:雙功能線。
IR0~IR7:中斷請求輸入端,接收可屏蔽中斷源的請求信號,信號形式可以是上升沿,也可以是高電平。圖6.228259引腳圖3.8259工作方式1)中斷結束方式(1)非自動結束方式①一般中斷結束命令(EOI)。②特殊中斷結束命令(SEOI)。(2)自動結束方式2)緩沖方式①非緩沖方式。②緩沖方式。
3)嵌套方式①一般嵌套方式。②特殊全嵌套方式。4)屏蔽方式屏蔽方式也是用于8259進行優先級控制的,它也有兩種形式:①一般屏蔽方式。②特殊屏蔽方式。5)優先級規定①固定優先級。
②循環優先級。
4.8259命令字1)初始化命令字初始化命令字用于初始設定8259的工作狀態。①ICW1。規定8259的連接方式(單片或級聯)與中斷源請求信號的有效形式(邊沿或電平觸發)。命令字格式如圖6.23所示,利用A0=0,D4=1尋址。②ICW2。③ICW3。
圖6.23ICW1格式圖6.24ICW2格式圖6.25ICW3格式圖6.26ICW4格式2)操作命令字①OCW1。
②OCW2。
③OCW3。
圖6.27OCW1格式圖6.28OCW2格式圖6.29OCW3格式5.8259級聯1)級聯結構8259采用兩級級聯,級聯結構如圖6.30所示。
2)級聯方式下8259的中斷響應3)級聯方式下8259的特殊操作有幾項操作應該特別注意:①初始化時,主控器與從屬器的ICW3應以不同格式填寫;主控器的嵌套方式必須選擇為特殊全嵌套方式,從屬器的嵌套方式必須選擇為一般嵌套方式。②當結束來自從屬8259的中斷時,中斷處理程序中要發送兩個EOI命令,一個發給相關的從屬8259(由I/O地址確定),一個發給主控8259。圖6.308259級聯結構6.3.4中斷方式的實現1.連接8259表6.38259內部寄存器的尋址控制方式圖6.318259在系統中的連接2.編寫中斷初始化程序1)初始化8259因為8259的內部寄存器尋址與命令字的寫入順序有關,所以,對8259的初始化一定要按規定的順序進行,見圖6.32所示。下面是一段對8259初始化的程序(假定8259連接電路如圖6.31所示,占用的I/O地址為FF00H和FF02H):SET59A:MOVDX,0FF00H;8259的地址A0=0
MOVAL,13H;寫ICW1,邊沿觸發,單片,需要ICW4OUTDX,ALMOVDX,0FF02H;8259地址A0=1MOVAL,48H;寫ICW2,設置中斷向量碼OUTDX,ALMOVAL,03H;寫ICW4,8086/88模式,自動EOI,非緩沖,一般嵌套OUT
DX,ALMOVAL,0E0H;寫OCW1,屏蔽IR5、IR6、IR7(假定這3個中斷輸入未用)OUTDX,ALMOVAL,0OUTDX,AL;寫OCW1,將00H寫入IMRINAL,DX;讀IMRORAL,AL;判斷IMR內容為00H否JNZIMRERRMOVAL,0FFHOUTDX,ALINAL,DXADDAL,1JNZIMRERR圖6.328259的初始化順序
CPU對8259的IMR讀出時,可利用I/O地址直接尋址,而要讀出ISR、IRR或中斷狀態寄存器時,則需要先設置命令字OCW3。下面是CPU讀出ISR內容的一段程序:
MOVDX,0FF00H;8259的地址A0=0MOVAL,0BHOUTDX,AL;寫OCW3INAL,DX;讀出ISR內容放入AL中2)設置中斷向量表①直接寫中斷向量表。利用寫指令,直接將中斷處理程序的首地址寫入內存地址為4*n的區域中。程序如下:
INTITB:MOVAX,0MOVDS,AX;將內存段設置在最低端
MOVSI,0120H;n=48H,4*n=120HMOVAX,OFFSETCLOCK;獲取中斷處理程序首地址之段內偏移地址
MOV[SI],AX;段內偏移地址寫入中斷向量表4*n地址處
MOVAX,SEGCLOCK;獲取中斷處理程序首地址之段地址
MOV[SI+2],AX;段地址寫入中斷向量表4*n+2地址處②利用DOS功能調用。若系統運行在DOS環境下,可利用DOS功能調用設置中斷向量表,調用格式為:功能號25H→AH
中斷向量碼→AL
中斷處理程序首地址之段地址:偏移地址→DS:DXINT21H程序如下:MOVAH,25HMOVAL,48HMOV
DX,SEGCLOCKMOVDS,DXMOVDX,OFFSETCLOCKINT21H3.編寫中斷處理程序1)中斷嵌套8086(88)中斷系統將所有中斷源分為三類,即INT、NMI及
INTR,并規定CPU對INT與NMI圖6.33可嵌套的中斷處理程序流程2)改變中斷優先級在中斷處理程序中寫進如下一段程序,可實現在該中斷處理程序結束后將IR7定義為優先級最高:
MOVDX,0FF00H;8259的地址A0=0MOVAL,0C6H;設置指定(特殊)循環優先級及OCW2尋址信息
OUTDX,AL;寫OCW2蔽方式的設置用下述指令完成:
MOVDX,0FF00H;8259的地址A0=0MOVAL,68H;設置特殊屏蔽方式(SMM=1)及OCW3尋址信息OUTDX,AL;寫OCW3…MOVDX,0FF00H;8259的地址A0=0MOVAL,48H;設置SMM=0及OCW3尋址信息OUTDX,AL;寫OCW33)產生EOI命令例如,當來自8259中斷輸入端IR6的中斷請求被CPU響應時,8259自動設置ISR的數據位D6為1(即ISR6=1)。在IR6中斷處理程序中,CPU執行以下指令,產生對8259的一般EOI命令:
MOVDX,0FF00H;8259的地址A0=0MOVAL,20H;設置一般EOI命令
OUTDX,AL;寫OCW2圖6.34特殊屏蔽方式示意圖4)舉例CLOCKPROCFARPUSHAXPUSHSIMOVAX,SEGTIMERMOVDS,AXMOVSI,OFFSETTIMERMOVAL,[SI];取50次計數
INCALMOV[SI],ALCMPAL,50;判斷1s到否?JNETRNEDMOVAL,0MOV[SI],ALMOVAL,[SI+1];取60s計數ADDAL,1DAAMOV[SI+1],ALCMPAL,60H;判斷1min到否?JNETRNEDMOVAL,0MOV[SI+1],ALMOVAL,[SI+2];取60min計數ADDAL,1DAAMOV[SI+2],ALCMPAL,60H;判斷1h到否?JNETRNEDMOVAL,0MOV[SI+2],ALMOVAL,[SI+3];取小時計數ADDAL,1DAA
MOV[SI+3],ALCMPAL,24H;判24h到否
JNETRNEDMOVAL,0MOV[SI+3],ALTRNED:POPSI
POPAXSTIIRETENDP
6.4直接存貯器存取(DMA)方式
6.4.1DMA工作過程
DMA方式之所以能夠實現外設與計算機系統的高速信息交換,關鍵在于該方式的實現采用了專用控制器(稱之為DMA控制器)而CPU不參與控制,這使得DMA方式與其他I/O方式有了顯著的區別:DMA方式不是在程序控制下進行的,而是以純硬件控制的方式進行的。圖6.35DMA方式工作示意圖
DMA方式的實現過程如圖6.35所示,描述如下:①外設向DMAC發出DMA請求DREQ;②DMAC將此請求傳遞到CPU的總線保持端HOLD,向CPU提出DMA請求;③CPU在完成當前總線周期后檢測HOLD,在非總線封鎖條件下,對DMA請求作出響應:一是CPU將地址總線、數據總線、控制總線置高阻,放棄對總線的控制權;二是CPU送出有效的總線響應信號HLDA加載至DMAC,告之可以使用總線;④DMAC接收到有效的總線響應信號后,向外設送出DMA應答信號DACK,通知外設做好數據傳送準備,同時占用總線,開始對總線實施控制;⑤DMAC送出內存地址和對內存與外設的控制信號,控制外設與內存或內存與內存之間的數據傳送;⑥DMAC通過計數控制將預定的數據傳送完后,向CPU發出無效的HOLD信號,撤消對CPU的DMA請求:⑦CPU收到此信號后,送出無效的HLDA,并重新開始控制總線,實現正常的總線控制操作。圖6.36不同I/O方式下的數據通路(a)程控或中斷方式下的數據傳送通路;(b)DMA方式下內存與外設間數據傳送通路;(c)DMA方式下內存與內存間數據傳送通路6.4.2DMA控制器82371.8237的引線及功能
DMAC8237的外部引線圖如圖6.37所示。
A0~A3:雙向地址線,具有三態輸出。
A4~A7:三態輸出線。
DB0~DB7:雙向三態數據總線。
:雙向三態低電平有效的I/O寫控制信號。:雙向三態低電平有效的I/O讀控制信號。:三態輸出低電平有效的存貯器寫控制信號。
:三態輸出低電平有效的存貯器讀控制信號。
ADSTB:地址選通信號,高電平有效的輸出信號。
AEN:地址允許信號,高電平有效輸出信號。:片選信號,低電平有效輸入信號。
RESET:復位信號,高電平有效輸入信號。
READY:準備好輸入信號,當DMAC工作期間遇上慢速內存或I/O接口時,可由它們提供READY信號,使DMAC在傳送過程中插入時鐘周期SW,以便適應慢速內存或外設。此信號與CPU上的準備好信號類似。
HRQ:保持請求信號,高電平有效的輸出信號。
HLDA:保持響應信號,高電平有效的輸入信號。
DREQ0~DREQ3:DMA請求(通道0~3)信號。
DACK0~DACK3:DMA響應信號,分別對應通道0~3。
CLK:時鐘輸入,用來控制8237的內部操作并決定DMA的傳輸速率。:過程結束,低電平有效的雙向信號。
圖6.37DMAC8237引腳圖2.8237的工作時序8237內部有三種狀態,空閑狀態SI、請求狀態SO和傳送狀態S1~S4。隨著8237在系統中主、從屬性的改變,其內部狀態的變換構成了8237的工作時序,如圖6.38所示。圖6.388237工作時序3.8237的工作方式8237工作有兩種周期,即空閑周期和工作周期。1)空閑周期2)工作周期①單字節傳送方式。
②數據塊傳送。
③請求傳送。
④級聯方式。
圖6.398237級聯結構圖3)傳送類型①接口到存貯器的傳送。
②存貯器到接口。
③存貯器到存貯器。
4)優先級①固定優先級。
②循環優先級。5)傳輸速率4.8237的內部寄存器8237有4個獨立的DMA通道,有許多內部寄存器。表6.4給出這些寄存器的名稱、長度和數量。表6.48237的內部寄存器1)基地址寄存器2)基字數寄存器3)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業務外包合同服務協議書條款
- 不銹鋼門窗承包加工安裝合同
- 凈化隔墻工程合同
- 儲能能源管理合同
- 藥物治療基礎練習試題及答案
- 國際貿易合同類型
- 窖口租房合同范本
- 財務專業知識培訓
- 簡單合伙開店合同范本
- 樂器購買簡易合同范本
- JT-GQB-016-2000關于采用交通行業標準《公路橋涵標準圖》有關問題的通知
- 2024年注冊安全工程師考試題庫及參考答案【完整版】
- 家庭農場經營與管理-家庭農場產品營銷
- 尋訪家鄉名人 主題課件 《綜合實踐活動》七年級上冊
- 建筑結構荷載規范DBJ-T 15-101-2022
- 中華民族共同體概論課件專家版4第四講 天下秩序與華夏共同體的演進(夏商周時期)
- 2023年海南省初中學業水平考試歷史真題(答案詳解)
- UHPC板幕墻施工方案
- 《中國人民站起來了》練習(含解析) 統編版高中語文選擇性必修上冊
- 創新創效方案
- 《古籍概論》課件
評論
0/150
提交評論