版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章基本輸入輸出接口6.1接口技術(shù)概述6.2CPU與外設(shè)之間數(shù)據(jù)傳送方式6.3DMA控制器6.1.1CPU與外部設(shè)備之間的接口信息
CPU通過接口與外部設(shè)備的連接如圖6.1所示,其中既有數(shù)據(jù)端口,又有狀態(tài)端口,還有控制端口,每一個I/O端口對應一個I/O地址。從硬件角度看,端口可以理解為寄存器。數(shù)據(jù)端口可以是雙向的,狀態(tài)端口只作輸入操作,控制端口只作輸出操作。在I/O操作中,主要有三類信息:數(shù)據(jù)信息、狀態(tài)信息和控制信息。6.1接口技術(shù)概述圖6.1簡單的外設(shè)接口數(shù)據(jù)信息是CPU和I/O設(shè)備交換的基本信息,通常是8位或16位。數(shù)在輸入過程中,數(shù)據(jù)信息一般是由外部設(shè)備通過接口芯片傳遞給系統(tǒng)的。數(shù)據(jù)信息由外設(shè)經(jīng)過外設(shè)和接口之間的數(shù)據(jù)線進入接口,再到達系統(tǒng)的數(shù)據(jù)總線,然后送入CPU。在輸出過程中,數(shù)據(jù)信息從CPU經(jīng)過數(shù)據(jù)總線進入接口,再通過外設(shè)和接口之間的數(shù)據(jù)線,到達外設(shè)。狀態(tài)信息反映了當前外設(shè)的工作狀態(tài),它是由外設(shè)通過接口送入CPU的。對于輸入設(shè)備來說,用Ready信號來表示待輸入的數(shù)據(jù)是否準備就緒;對于輸出設(shè)備來說,用Busy信號來表示輸出設(shè)備是否處于空閑狀態(tài),如空閑,則可接收CPU送來的數(shù)據(jù)信息,否則CPU等待??刂菩畔⑹荂PU通過接口送給外設(shè)的。CPU通過發(fā)送控制信息控制外設(shè)的工作。外設(shè)種類不同,控制信息也各不相同。接口控制信號一般可分為兩類:總線控制信號和輸入/輸出控制信號。總線控制信號包括數(shù)據(jù)線、地址線、IOR、LOW等;輸入/輸出控制信號比較復雜,一般包括數(shù)據(jù)線、輸入/輸出應答信號等。6.1.2輸入/輸出指令及其尋址方式在微型計算機系統(tǒng)中,端口的編址通常有兩種不同的方式,一是I/O端口與存儲器單元統(tǒng)一編址;二是I/O端口獨立編址。
1.I/O端口與存儲器單元統(tǒng)一編址所謂I/O端口與存儲器單元統(tǒng)一編址,也稱為存儲器映像(MemoryMapped)I/O方式,既把每個I/O端口都當作一個存儲器單元看待,I/O端口與存儲器單元在同一個地址空間中進行統(tǒng)一編址。通常,是在整個地址空間中劃分出一小塊連續(xù)的地址分配給I/O端口。被分配給I/O端口的地址,存儲器不能再使用。內(nèi)存映射與I/O映射編址如圖6.2所示。圖6.2內(nèi)存映射與I/O映射編址(a)統(tǒng)一編址;(b)獨立編址采用這種編址方式的微處理器有6800、6502、68000等,其優(yōu)點是簡化指令系統(tǒng)的設(shè)計,同時I/O控制信號與存儲器的控制信號共用,給應用帶來極大的方便,另外由于訪問存儲器的指令種類多、尋址方式多樣化,對訪問外設(shè)帶來了很大的靈活性。對I/O設(shè)備可以使用功能強大且像訪問存儲器那樣的指令,如直接對I/O數(shù)據(jù)進行運算等。統(tǒng)一編址的缺點是外設(shè)占用了一部分內(nèi)存地址空間,減少了內(nèi)存可用的地址范圍,對內(nèi)存容量有潛在的影響。此外,從指令上不易區(qū)分當前指令是對內(nèi)存進行操作還是對外設(shè)進行操作。
2.I/O端口獨立編址所謂I/O端口獨立編址(I/OMapped),也稱為I/O隔離編址或I/O指令尋址方式,即I/O端口地址區(qū)域和存儲器地址區(qū)域,分別各自獨立編址。訪問I/O端口使用專門的I/O指令,而訪問內(nèi)存則使用MOV、ADD等指令。CPU在尋址內(nèi)存和外設(shè)時,使用不同的控制信號來區(qū)分當前是對內(nèi)存操作還是對I/O操作。在單CPU模式時,當前的操作是由IO/信號的電平來區(qū)別的。對于8088CPU系統(tǒng),當IO/為低電平時,表示當前執(zhí)行的是存儲器操作,地址總線上地址是某個存儲單元地址;當IO/為高電平時,表示當前執(zhí)行的是I/O操作,地址總線上地址是某個I/O端口的地址。在多CPU模式時,若訪問存儲器,則使MEMW或MEMR信號有效;而訪問I/O端口時,則使或信號有效。這種單獨編址的優(yōu)點是I/O端口不占用存儲器的地址空間,使用專門的I/O指令對端口進行訪問,具有I/O指令短、執(zhí)行速度快、譯碼簡單的優(yōu)點。缺點是專門的I/O指令功能相對較弱,一般只有傳送功能,而沒有運算功能。Intel80x86CPU中,I/O端口和存儲器是單獨編址的,采用專用的輸入/輸出指令訪問端口。
3.輸入/輸出指令及其尋址1)8086/8088采用的IN和OUT指令
I/O指令可以采用8位(單字節(jié))或16位(雙字節(jié))地址兩種尋址方式。如采用單字節(jié)作為端口地址,則最多可以有256個端口(端口地址號從00H~FFH),并且是直接尋址(直接端口尋址)方式,指令格式如下:輸入: IN AX,Port ;從Port端口輸入16位數(shù)據(jù)到AX IN AL,Port ;從Port端口輸入8位數(shù)據(jù)到AL輸出: OUT Port,AX ;從AX輸出16位數(shù)據(jù)到Port端口
OUT Port,AL ;從AL輸出8位數(shù)據(jù)到Port端口這里Port是一個單字節(jié)的8位地址。如用雙字節(jié)地址作為端口地址,則最多可以有64K個端口(端口地址號從0000H~FFFFH),并且是間接尋址方式,即把端口地址放在DX寄存器內(nèi)(間接端口尋址)。其指令格式如下:輸入: MOV DX,XXXXH ;16位地址
IN AX,DX ;16位傳送或 IN AL,DX ;8位傳送輸出: MOV DX,XXXXH OUT DX,AX ;16位傳送或 OUT DX,AL ;8位傳送這里XXXXH為兩字節(jié)地址信息。2)80286和80386/486還支持I/O端口直接與內(nèi)存之間的數(shù)據(jù)傳送輸入: MOV DX,Port LES DI,Bufferin
INSB
;8位傳送或 INSW ;16位傳送輸出: MOV DX,Port LDS SI,Bufferout
OUTSB ;8位傳送或 OUTSW ;16位傳送這里的輸入與輸出是直接對內(nèi)存儲器的RAM而言,當輸入時,用ES:DI指向RAM中的目標緩沖區(qū)Bufferin;當輸出時,用DS:SI,指向源緩沖區(qū)Bufferout。若在INS或OUTS指令前加上REP重復前綴時,則可以實現(xiàn)I/O端口與RAM上的緩沖區(qū)之間進行成批數(shù)據(jù)傳送。從輸入/輸出指令可以看出,對于PC系列的機器,I/O端口內(nèi)的數(shù)據(jù)也有8位與16位之分,通常16位數(shù)據(jù)端口地址安置在偶數(shù)地址號上,CPU在一次總線周期內(nèi)就可以存取16位的數(shù)據(jù)。8位數(shù)據(jù)的端口地址可以安置在偶地址號或奇地址號上,偶地址使用數(shù)據(jù)總線D7~D0傳送數(shù)據(jù),奇地址使用數(shù)據(jù)總線D15~D8傳送數(shù)據(jù)。表6-l列出8位或16位數(shù)據(jù)端口在奇數(shù)或偶數(shù)端口地址號上,單字節(jié)直接尋址的輸入/輸出指令。表6-1IBM-PC機上I/O端口地址配置I/O端口配置地址數(shù)據(jù)總線指令舉例8位偶數(shù)地址D7~D0INAL,20HOUT20H,AL奇數(shù)地址D15~D8INAL,21HOUT21H,AL16位偶數(shù)地址D15~D0INAX,20HOUT20H,AX6.2CPU與外設(shè)之間數(shù)據(jù)傳送方式6.2.1程序控制方式1.無條件傳送無條件傳送是一種最簡單的輸入/輸出控制方法,一般用于控制CPU與低速I/O接口之間的信息交換,例如,開關(guān)、繼電器和速度、溫度、壓力、流量等變送器(即A/D轉(zhuǎn)換器)。由于這些信號變化很緩慢,當需要采集這些數(shù)據(jù)時,外部設(shè)備已經(jīng)把數(shù)據(jù)準備就緒,無需檢查端口的狀態(tài),就可以立即采集數(shù)據(jù)。數(shù)據(jù)保持時間相對于CPU的處理時間長得多。因此,輸入的數(shù)據(jù)就用不著加鎖存器而直接用三態(tài)緩沖器與系統(tǒng)總線連接。實現(xiàn)無條件輸入的方法是:在程序的適當位置直接安排IN輸入指令,當程序執(zhí)行到這些指令時,外部設(shè)備的數(shù)據(jù)早已準備就緒,可以在執(zhí)行當前指令時間內(nèi)完成接受數(shù)據(jù)的全部過程。若外部設(shè)備是輸出設(shè)備(例如LED顯示器),一般要求接口有鎖存能力,也就是要求CPU送給外部設(shè)備的數(shù)據(jù),應該在輸出設(shè)備接口電路中保持一段時間,這個時間的長短應該和外部設(shè)備的接受動作時間相適應。實現(xiàn)無條件輸出的方法是在程序的適當位置安排OUT輸出指令,當程序執(zhí)行到這些指令時,就將輸出給外部設(shè)備的數(shù)據(jù)存入鎖存器。無條件傳送方式的工作過程:輸入時,外界將數(shù)據(jù)送到緩沖器輸入端(外界可以是開關(guān)、A/D轉(zhuǎn)換器等),當CPU執(zhí)行INAL,07H指令時,CPU首先向地址譯碼器送來啟動信號,并把端口地址07H送到74LS138譯碼器輸入端,譯碼器的作用是把端口地址轉(zhuǎn)變?yōu)槭蛊淠骋桓敵鼍€為有效低電平。例如,當端口地址為07H時,則使譯碼器的Y7為低電平。然后CPU送出IOR低電平信號,使三態(tài)緩沖器的控制端為有效電平(選此三態(tài)緩沖器)。將外部設(shè)備送來的數(shù)據(jù)送到數(shù)據(jù)總線上,并將數(shù)據(jù)打入CPU內(nèi)部的通用寄存器AL中。因為,CPU執(zhí)行一次數(shù)據(jù)讀入,對于8088來說一般只需要微秒級時間,而外界數(shù)據(jù)在緩沖器輸入端保持的時間,可達秒級或幾十毫秒,因此,輸入數(shù)據(jù)不必鎖存。而且,CPU執(zhí)行INAL,07H指令時,要讀入的數(shù)據(jù)早已送入緩沖器的輸入端,所以可以立即讀入,無需查詢數(shù)據(jù)是否已準備就緒。假設(shè)端口號07H也是另一接口電路輸出鎖存器的入口地址,鎖存器從數(shù)據(jù)總線接收數(shù)據(jù),當出現(xiàn)由或門U1輸出的觸發(fā)鎖存器的觸發(fā)脈沖時,就將它的輸出數(shù)據(jù)鎖存入鎖存器,并通過其輸出端送給外部設(shè)備。所以,當需要向07H號端口輸出數(shù)據(jù)時,可在程序中插入一條輸出指令OUT07H,AL。當CPU執(zhí)行這條指令時,它把AL的內(nèi)容送上數(shù)據(jù)總線,并把端口地址07H和啟動信號送入譯碼器。譯碼器譯碼后使Y7為有效低電平,同時LOW也為有效低電平(此時IOR為高電平),由或門U1輸出觸發(fā)脈沖時,就將數(shù)據(jù)總線上的數(shù)據(jù)存入鎖存器,CPU執(zhí)行OUT07H,AL指令時,AL中的數(shù)據(jù)在數(shù)據(jù)總線上停留的時間也只有微秒級,所以,輸出數(shù)據(jù)必須通過存器鎖存。也就是要求輸出的數(shù)據(jù),應該在輸出接口電路的輸出端保持一段時間,這個時間的長短,應該和外部接受設(shè)備的動作時間相適應。當CPU再次執(zhí)行OUT07H,AL指令時,AL中新的數(shù)據(jù)會取代原鎖存器中的內(nèi)容。無條件傳送方式的接口電路和控制程序都比較簡單。需要注意的是,輸入時,當CPU執(zhí)行IN指令時,要確保輸入的數(shù)據(jù)已經(jīng)準備好,否則,就可能讀入不正確的數(shù)據(jù);在輸出時,當CPU執(zhí)行OUT指令時,需確保外部設(shè)備已將上次送來的數(shù)據(jù)取走,它就可以接收新的數(shù)據(jù)了,否則,會發(fā)生數(shù)據(jù)“沖突”。無條件傳送控制方式,一般用于定時已知或數(shù)據(jù)變化十分緩慢的外部設(shè)備。
2.有條件傳送有條件傳送方式又稱為程序查詢方式。這種傳送方式在接口電路中,除具有數(shù)據(jù)緩沖器或數(shù)據(jù)鎖存器外,還應具有外設(shè)狀態(tài)標志位,用來反映外部設(shè)備數(shù)據(jù)的情況。比如,在輸入時,若數(shù)據(jù)已準備好,則將該標志位置位;輸出時,若數(shù)據(jù)已空(數(shù)據(jù)已被取走),則將標志位置位。在接口電路中,狀態(tài)寄存器也占用端口地址號。使用有條件傳送方式控制數(shù)據(jù)的輸入/輸出,通常要按圖6.4的流程進行。即首先讀入設(shè)備狀態(tài)標志信息,再根據(jù)所讀入的狀態(tài)信息進行判斷,若設(shè)備未準備就緒,則程序轉(zhuǎn)移去執(zhí)行某種操作,或循環(huán)回去重新執(zhí)行讀入設(shè)備狀態(tài)信息;若設(shè)備準備好,則執(zhí)行完成數(shù)據(jù)傳送的I/O指令。數(shù)據(jù)傳送結(jié)束后,CPU轉(zhuǎn)去執(zhí)行其他任務,剛才所操縱的設(shè)備脫離CPU控制。圖6.4條件傳送示意圖有條件傳送的優(yōu)點是:能較好地協(xié)調(diào)外設(shè)與CPU之間的定時關(guān)系;缺點是:CPU需要不斷查詢標志位的狀態(tài),這將占用CPU較多的時間,尤其是與中速或慢速的外部設(shè)備交換信息時,CPU真正花費在傳送數(shù)據(jù)上的時間極少,絕大部分時間都消耗在查詢上。為克服這一缺點,可以采用中斷控制方式。6.2.2中斷控制方式有條件傳送的缺點除了占用CPU較多的工作時間外,還難以滿足實時控制系統(tǒng)對I/O工作的要求。因為在查詢方式中,CPU處于主動地位,而外設(shè)接口處于消極被查詢的被動地位。而在一般實時控制系統(tǒng)中,外設(shè)要求CPU為它服務是隨機的,而且支持系統(tǒng)的外設(shè)往往有幾個甚至幾十個,若采用查詢方式工作,很難實現(xiàn)系統(tǒng)中每一個外設(shè)都工作在最佳工作狀態(tài)。所謂工作在最佳狀態(tài),是指一旦某個外設(shè)請求CPU為它服務時,CPU應該以最快的速度響應其請求。這就要求系統(tǒng)中的外設(shè),具有主動申請CPU為其服務的權(quán)利。比如,當某個A/D轉(zhuǎn)換器的模擬量已轉(zhuǎn)換為數(shù)字量后,這時它就可以立刻向CPU發(fā)出中斷請求,CPU暫時中止處理當前的事務,而轉(zhuǎn)去執(zhí)行優(yōu)先的中斷服務程序,輸入A/D轉(zhuǎn)換器的數(shù)字量數(shù)據(jù)。微型計算機都具有中斷控制的能力,8086/8088CPU的中斷結(jié)構(gòu)靈活,功能很強。所以,微機系統(tǒng)采用中斷控制I/O方式是很方便的。CPU執(zhí)行完每一條指令后,都會去查詢外部是否有中斷請求,若有,就暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)去執(zhí)行中斷服務程序,完成傳送數(shù)據(jù)的任務。當然,在一個具有多個外設(shè)的系統(tǒng)中,在同一時刻就往往不止一個外設(shè)提出中斷請求,這就引入了所謂中斷優(yōu)先權(quán)管理和中斷嵌套等問題(有關(guān)中斷的詳細討論參見第8章)。6.2.3直接存儲器存取(DMA)控制方式采用中斷方式,信息的傳送是依靠CPU執(zhí)行中斷服務程序來完成的,所以,每進行一次I/O操作,都需要CPU暫停執(zhí)行當前程序,把控制轉(zhuǎn)移到優(yōu)先權(quán)最高的I/O程序。在中斷服務程序中,需要有保護現(xiàn)場和恢復現(xiàn)場的操作,而且I/O操作都是通過CPU來進行的。當從存儲器輸出數(shù)據(jù)時,首先需要CPU執(zhí)行傳送指令,將存儲器中的數(shù)據(jù),讀入CPU中的通用寄存器AL(對于字節(jié)數(shù)據(jù))或AX(對于字數(shù)據(jù)),然后,執(zhí)行OUT指令,把數(shù)據(jù)由通用寄存器AL或AX傳送到I/O端口;當從I/O端口向存儲器存入數(shù)據(jù)時,過程正相反。CPU執(zhí)行IN指令時,將I/O端口數(shù)據(jù)讀入通用寄存器AL或AX,然后CPU執(zhí)行傳送指令,將AL或AX的內(nèi)容存入存儲器單元。這樣,每次I/O操作都需要幾十甚至幾百微秒,對于一些高速外設(shè),如高速磁盤控制器或高速數(shù)據(jù)采集系統(tǒng),中斷控制方式往往滿足不了它們的需要。為此,提出了數(shù)據(jù)在I/O接口與存儲器之間的傳送,不經(jīng)CPU的干預,而是在專用硬件電路的控制下直接傳送。這種方法稱為直接存儲器存取(DirectMemoryAccess,縮寫為DMA)。為實現(xiàn)這種工作方式而設(shè)計的專用接口電路,稱為DMA控制器(DMAC)。例如,Intel公司的8257、8237,Zilog公司的Z8410(Z80DMAC),Motorola公司的MC6844等,都是能實現(xiàn)DMA方式的可編程DMAC芯片。用DMA方式傳送數(shù)據(jù)時,在存儲器和外部設(shè)備之間,直接開辟高速的數(shù)據(jù)傳送通路。數(shù)據(jù)傳送過程不要CPU介入,只用一個總線周期,就能完成存儲器和外部設(shè)備之間的數(shù)據(jù)傳送。因此,數(shù)據(jù)傳送速度僅受存儲器的存取速度和外部設(shè)備傳輸特性的限制。
DMA的工作過程大致如下:(1)當外設(shè)準備好,可以進行DMA傳送時,外設(shè)向DMA控制器發(fā)出DMA傳送請求信號(DRQ)。(2)DMA控制器收到請求后,向CPU發(fā)出“總線請求”信號HOLD,申請占用總線。(3)CPU在完成當前總線周期后會立即對HOLD信號進行響應。響應包括兩個方面,一是CPU將數(shù)據(jù)總線、地址總線和相應的控制信號線均置為高阻態(tài),由此放棄對總線的控制權(quán)。另一方面,CPU向DMA控制器發(fā)出“總線響應”信號(HLDA)。(4)DMA控制器收到HLDA信號后,就開始控制總線,并向外設(shè)發(fā)出DMA響應信號DACK。(5)DMA控制器送出地址信號和相應的控制信號,實現(xiàn)外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存之間的直接數(shù)據(jù)傳送。例如,在地址總線上發(fā)出存儲器的地址,向存儲器發(fā)出寫信號MEMW,同時向外設(shè)發(fā)出I/O地址、IOR和AEN信號,即可從外設(shè)向內(nèi)存?zhèn)魉鸵粋€字節(jié)。(6)DMA控制器自動修改地址和字節(jié)計數(shù)器,并據(jù)此判斷是否需要重復傳送操作。規(guī)定的數(shù)據(jù)傳送完后,DMA控制器就撤消發(fā)往CPU的HOLD信號。CPU檢測到HOLD失效后,緊接著撤消HLDA信號,并在下一時鐘周期重新開始控制總線時,繼續(xù)執(zhí)行原來的程序。
DMA方式在傳送路徑和程序控制下數(shù)據(jù)傳送的途徑不同。程序控制下數(shù)據(jù)傳送的途徑必須經(jīng)過CPU,而采用DMA方式傳送數(shù)據(jù)不需要經(jīng)過CPU。另外,程序控制下數(shù)據(jù)傳送的源地址、目的地址是由CPU提供的,地址的修改和數(shù)據(jù)塊長的控制也必須由CPU承擔,數(shù)據(jù)傳送的控制信號也是由CPU發(fā)出的。而DMA方式傳送數(shù)據(jù),則由DMA控制器提供源地址和目的地址,而且修改地址、控制傳送操作的結(jié)束和發(fā)出傳送控制信號也都由DMAC承擔,即DMA傳送數(shù)據(jù)方式是一種由硬件代替軟件的方法,因而提高了數(shù)據(jù)傳送的速度,縮短了數(shù)據(jù)傳送的響應時間。因為DMA方式控制數(shù)據(jù)傳送不需要CPU介入,即不利用CPU內(nèi)部寄存器,因此,DMA方式不像中斷方式控制下的數(shù)據(jù)傳送,需要等一條指令執(zhí)行結(jié)束才能進行中斷響應,只要執(zhí)行指令的某個機器周期結(jié)束,就可以響應DMA請求。另外,DMA既然不利用CPU內(nèi)部設(shè)備來控制數(shù)據(jù)傳送,因此,響應DMA請求,進入DMA方式時就不必保護CPU的現(xiàn)場。采用中斷控制的數(shù)據(jù)傳送,進入中斷服務(傳送數(shù)據(jù))之前,必須保護現(xiàn)場狀態(tài),這會大大延遲響應時間。因此,采用DMA控制數(shù)據(jù)傳送的另一個優(yōu)點是,縮短數(shù)據(jù)傳送的響應時間。所以,一般要求響應時間在微秒以下的場合,通常采用DMA方式。當然用DMA控制傳送也存在一些問題,因為采用這種方式傳送數(shù)據(jù)時,DMAC取代CPU控制了系統(tǒng)總線,即CPU要把對總線的控制權(quán)讓給DMAC。所以,當DMA控制總線時,CPU不能讀取指令。另外,若系統(tǒng)使用的是動態(tài)存儲器,而且是由CPU負責管理動態(tài)存儲器的刷新,則在DMA操作期間,存儲器的刷新將會停止。而且,當DMAC占用總線時,CPU不能去檢測和響應來自系統(tǒng)中其他設(shè)備的中斷請求。
DMA傳送也存在以下兩個額外開銷源:第一個額外開銷是總線訪問時間,由于DMAC要同CPU和其他可能的總線主控設(shè)備爭用對系統(tǒng)總線的控制權(quán),因此,必須有一些規(guī)則來解決爭用總線控制權(quán)的問題,這些規(guī)則一般是用硬件實現(xiàn)排隊的,但是排隊過程也要花費時間;第二個額外開銷是對DMAC的初始化,一般情況下,CPU要對DMAC寫入一些控制字,因此,DMAC的初始化建立,比程序控制數(shù)據(jù)傳送的初始化,可能要花費較多時間。所以,對于數(shù)據(jù)塊很短或要頻繁地對DMAC重新編程初始化的情況下,可能就不宜采用DMA傳送方式。此外,DMA控制數(shù)據(jù)傳送是用硬件控制代替CPU執(zhí)行程序來實現(xiàn)的。所以它必然會增加硬件的投資,提高系統(tǒng)的成本。因此,只要CPU來得及處理數(shù)據(jù)傳送,就不必采用DMA方式。DMA主要適用以下幾種場合:(1)硬盤和軟盤I/O??梢允褂肈MAC作磁盤存儲介質(zhì)與半導體主存儲器之間傳送數(shù)據(jù)的接口。這種場合需要將磁盤中的大量數(shù)據(jù)(如磁盤操作系統(tǒng)等)快速地裝入內(nèi)部存儲器。(2)快速通信通道I/O。例如,光導纖維通信鏈路,DMAC可以用來作為計算機系統(tǒng)和快速通信通道之間的接口,可作為同步通信數(shù)據(jù)的發(fā)送和接收,以便提高響應時間,支持較高的數(shù)據(jù)傳輸速率,并使CPU脫出來做其他工作。(3)多處理機和多程序數(shù)據(jù)塊傳送。對于多處理機結(jié)構(gòu),通過DMAC控制數(shù)據(jù)傳送,可以較容易地實現(xiàn)專用存儲器和公用存儲器之間的數(shù)據(jù)傳送,對多任務應用、頁式調(diào)度和任務調(diào)度都需要傳送大量的數(shù)據(jù)。因此,采用DMA方式可以提高數(shù)據(jù)傳輸速度。(4)掃描操作。在圖像處理中,對CRT屏幕送數(shù)據(jù),也可以采用DMA方式。(5)快速數(shù)據(jù)采集。當要采集的數(shù)據(jù)量很大,而且數(shù)據(jù)是以密集突發(fā)的形式出現(xiàn),例如,對波形的采集,此時采用DMA方式可能是最好的方法,它能滿足響應時間和數(shù)據(jù)傳輸速率的要求。(6)在PC/XT機中還采用DMA方式進行DRAM的刷新操作。。6.2.4I/O處理機方式8089是專門用來處理輸入/輸出的協(xié)處理器。它共有52條指令、lMB尋址能力和兩個獨立的DMA通道。當8086/8088加上8089組成系統(tǒng)后,8089能代替8086/8088,以通道控制方式管理各種I/O設(shè)備。以通道控制方式管理I/O設(shè)備,目前只有在大中型計算機中才普遍使用,因此,8089為微機的輸入/輸出系統(tǒng)設(shè)計帶來換代性的變化。一般情況下,通過接口電路控制I/O外設(shè),必須依靠CPU的支持,對于非DMA方式,從外部設(shè)備每讀入一個字節(jié)或發(fā)送給外部設(shè)備一個字節(jié),都必須由CPU執(zhí)行指令來完成。雖然高速設(shè)備可以用DMA傳送數(shù)據(jù),但仍然需要CPU對DMAC進行初始化,啟動DMA操作,以及完成每次DMA操作之后都要檢查傳送的狀態(tài)。對I/O數(shù)據(jù)的處理,如對數(shù)據(jù)的變換、拆、裝、檢查等,更加需要CPU支持。普通I/O接口,不管是DMA方式還是非DMA方式,在I/O傳送過程都要占去CPU的開銷。8089是一個智能控制器,它可以取出和執(zhí)行指令,除了控制數(shù)據(jù)傳送外,還可以執(zhí)行算術(shù)和邏輯運算、轉(zhuǎn)移、搜索和轉(zhuǎn)換。當CPU需要進行I/O操作時,它只要在存儲器中建立一個信息塊,將所需要的操作和有關(guān)參數(shù)按照規(guī)定列入,然后通知8089前來讀取。8089讀得操作控制信息后,能自動完成全部的I/O操作。因此,對配合8089的CPU來說,所有輸入/輸出的操作過程中,數(shù)據(jù)都是以塊為單位成批發(fā)送或接收的,而把一塊數(shù)據(jù)按字或字節(jié)與I/O設(shè)備(如CRT終端,行式打印機)交換都由8089來完成,當8089控制數(shù)據(jù)交換時,CPU可以并行處理其他操作。由于引入8089來承擔原來必須由CPU承擔的I/O操作,這就大大地減輕了CPU控制外設(shè)的負擔,有效地減少了CPU在I/O處理中的開銷。6.3DMA控制器6.3.1DMA控制器的功能通用的DMA控制器應具有以下功能:(1)編程設(shè)定DMA的傳輸模式及其所訪問內(nèi)存的地址區(qū)域。(2)屏蔽或接受外部設(shè)備的DMA請求(DREQ)。當有多個設(shè)備同時請求時,還要進行優(yōu)先級排隊,首先接受最高級的請求。(3)向CPU轉(zhuǎn)達DMA請求。DMA控制器要向CPU發(fā)出總線請求信號HOLD(高電平有效),請求CPU放棄總線的控制。(4)接收CPU的總線響應信號(HLDA)。接管總線控制權(quán),實現(xiàn)對總線的控制。(5)向相應外部設(shè)備轉(zhuǎn)達DMA允許信號DACK。于是在DMA控制器的管理下,實現(xiàn)外部設(shè)備和存儲器之間的數(shù)據(jù)直接傳送。(6)在傳送過程中進行地址修改和字節(jié)計數(shù)。在傳送完要求的字節(jié)數(shù)后,向CPU發(fā)出DMA結(jié)束信號(EOP),撤消總線請求(HRQ),將總線控制權(quán)交還給CPU。DMA控制器一方面可以接管總線,直接在其他I/O接口和存儲器之間進行讀寫操作,就像CPU一樣成為總線的主控器件,這是有別于其他I/O控制器的根本不同之處。另一方面,作為一個可編程I/O器件,其DMA控制功能正是通過初始化編程來設(shè)置的。當CPU用I/O指令對DMA控制器寫入或者讀出時,它又和其他I/O電路一樣成為總線的從屬部件。6.3.2可編程DMA控制器Intel8237DMAC的主要性能和內(nèi)部結(jié)構(gòu)8237DMAC是Intel8080、8085、8086、8088系列通用的,一種高性能可編程DMA控制器芯片,它的性能如下:(1)使用單一的+5V電源、單相時鐘、40條引腳、雙列直插式封裝。時鐘頻率為3~5MHz,最高速率可達1.6MB/s。(2)具有四個獨立的通道??梢圆捎眉壜?lián)方式擴充用戶所需要的通道,每個通道都具有16位地址寄存器和16位字節(jié)計數(shù)器。(3)用戶通過編程,可以在四種操作類型和四種傳送方式之中任選一種。(4)每個通道都具有獨立的允許/禁止DMA請求的控制。所有通道都具有獨立的自動重置原始狀態(tài)和參數(shù)的能力。(5)有增1和減1自動修改地址的能力。(6)具有固定優(yōu)先權(quán)和循環(huán)優(yōu)先權(quán)兩種優(yōu)先權(quán)排序的優(yōu)先權(quán)控制邏輯。(7)每個通道都有軟件的DMA請求。還各有一對聯(lián)絡(luò)信號線(通道請求信號DREQ和響應信號DACK),而且DREQ和DACK信號的有效電平可以通過編程來設(shè)定。(8)具有終止DMA傳送的外部信號輸入引腳,外部通過此引腳輸入有效低電平的過程終止信號EOP,可以終止正在執(zhí)行的DMA操作。每個通道在結(jié)束DMA傳送后,會產(chǎn)生過程終止信號EOP輸出,可以用它作為中斷請求信號輸出。8237A的內(nèi)部寄存器的類型和數(shù)量如表6-3所示。表6-38237A內(nèi)部寄存器寄存器名容量數(shù)量寄存器名容量數(shù)量基地址寄存器基字節(jié)計數(shù)器當前地址寄存器當前字節(jié)計數(shù)器狀態(tài)寄存器16位16位16位16位8位44441命令寄存器暫時寄存器模式寄存器屏蔽寄存器請求寄存器8位8位6位4位4位114118237A由I/O緩沖器、時序和控制邏輯、優(yōu)先級編碼器和循環(huán)優(yōu)先級邏輯、命令控制邏輯和內(nèi)部寄存器組五部分組成,如圖6.7所示。其中圖(a)是8237A內(nèi)部結(jié)構(gòu)框圖,圖(b)是四通道示意圖。通道部分只畫出了一個通道的情況,即每個通道都有一個基地址寄存器、基字節(jié)數(shù)寄存器、當前地址寄存器和當前字節(jié)數(shù)寄存器(16位),每一個通道都有一個6位的模式寄存器以控制不同的工作模式。圖6.78237A結(jié)構(gòu)(a)內(nèi)部結(jié)構(gòu)框圖;(b)四通道示意框圖圖6.78237A結(jié)構(gòu)(a)內(nèi)部結(jié)構(gòu)框圖;(b)四通道示意框圖6.3.38237的引腳和時序圖6.88237引腳引腳的功能定義如下:
CLK(Clock):時鐘輸入,用來控制8237內(nèi)部操作定時和DMA傳送時的數(shù)據(jù)傳送速率。
CS(ChipSelect):片選輸入,低電平有效。在CPU控制總線時,即8237在受控方式下,當CS有效時,選中該8237作為I/O設(shè)備,而當CPU向8237寫入編程控制字時,它開啟I/O寫輸入;當CPU從8237讀回狀態(tài)字,或當前地址、當前字節(jié)計數(shù)器內(nèi)容時,它開啟I/O讀輸入。在DMA控制總線時,自動禁止CS輸入,以防止DMA操作期間該器件選中自己。
RESET:復位輸入,高電平有效。RESET有效時,會清除命令、狀態(tài)、請求和暫存寄存器,并清除字節(jié)指示器和置位屏蔽寄存器。復位后,8237處于空閑周期,它的所有控制線都處于高阻狀態(tài),并且禁止所有通道的DMA操作。復位之后必須重新對8237初始化,它才能進入DMA操作。
READY:準備好輸入信號。當選用的存儲器或I/O設(shè)備速度比較慢時,可用這個異步輸入信號使存儲器或I/O讀寫周期插入等待狀態(tài),以延長8237傳送的讀/寫脈沖(IOR,LOW,EMMR和MEMW)。HRQ(HoldRequest):請求占有信號,輸出,高電平有效。在僅有一塊8237的系統(tǒng)中,HRQ通常接到CPU的HOLD引腳,用來向CPU請求對系統(tǒng)總線的控制權(quán)。如果通道的相應屏蔽位被清除,也就是說DMA請求未被屏蔽,只要出現(xiàn)DREQ有效信號,8237就會立即發(fā)出HRQ有效信號。在HRQ有效之后,至少等待一個時鐘周期后,HLDA才會有效。
HLDA(HoldAcknowledge):同意讓出總線響應輸入信號,高電平有效。來自CPU的同意讓出總線響應信號,它有效表示CPU已經(jīng)讓出對總線的控制權(quán),把總線的控制權(quán)交給DMAC。DREQ0~DREQ3(DMARequest):DMA請求輸入信號。它們的有效電平可由編程設(shè)定。復位時使它們初始化為高電平有效。這4條DMA請求線是外部電路為取得DMA服務,而送到各個通道的請求信號。在固定優(yōu)先權(quán)時,DREQ0的優(yōu)先權(quán)最高,DREQ3的優(yōu)先權(quán)最低。各通道的優(yōu)先權(quán)級別是可以編程設(shè)定的,當通道的DREQ有效時,就向8237請求DMA操作。DACK是響應DREQ信號后,進入DMA服務的應答信號,在響應的DACK產(chǎn)生前DREQ必須維持有效。
DACK0~DACK3(DMAAcknowledge):DMA響應輸出,它們的有效電平可由編程設(shè)定,復位時使它們初始化為低電平有效。8237用這些信號來通知各自的外部設(shè)備已經(jīng)被授予一個DMA周期了,即利用有效的DACK信號作為I/O接口的選通信號。系統(tǒng)允許多個DREQ同時有效,但在同一時間,只能一個DACK信號有效。
A3~A0(Address):地址線的低4位,雙向、三態(tài)地址線。CPU控制總線時,它們是輸入信號,用來尋址要讀出或?qū)懭氲?237內(nèi)部寄存器,在DMA的有效周期內(nèi),由它們輸出低4位地址。
A7~A4:三態(tài)、輸出的地址線。在DMA周期,輸出低字節(jié)的高4位地址A7~A4。DB7~DB0:雙向、三態(tài)的數(shù)據(jù)總線,連接到系統(tǒng)數(shù)據(jù)總線上。在I/O讀期間,在編程條件下,輸出被允許。可以將8237內(nèi)部的地址寄存器、狀態(tài)寄存器、暫存寄存器和字節(jié)計數(shù)器中的內(nèi)容讀入CPU。當CPU對8237的控制寄存器寫入控制字時,在一個I/O寫周期內(nèi),這些輸出被禁止,數(shù)據(jù)從CPU寫入8237。在DMA操作期間,8237的高8位地址A7~A0,由DB7~DB0輸出,并由ADSTB信號將這些地址信息鎖存入地址鎖存器。若是進行存儲器與存儲器之間的DMA操作,則在存儲器讀出期間,把從源存儲器讀出的數(shù)據(jù)輸入到8237的暫存器;而在存儲器寫入期間,數(shù)據(jù)再從暫存器輸出,然后寫入到新的目的存儲單元。
ADSTB(AddressStrobe):地址選通、輸出信號,高電平有效。用來將從DB7~DB0,輸出的高8位地址A7~A0選通到地址鎖存器。
AEN(AddressEnable):地址允許、輸出信號,高電平有效。在DMA傳送期間,該信號有效時,禁止其他系統(tǒng)總線驅(qū)動器使用系統(tǒng)總線,同時允許地址鎖存器中的高8位地址信息送上系統(tǒng)地址總線。
IOR(I/ORead):I/O讀,雙向、三態(tài),低電平有效。CPU控制總線時由CPU發(fā)來,若該信號有效,表示CPU讀取8237內(nèi)部寄存器。在進行DMA操作時由8237發(fā)出,采用讀取I/O設(shè)備的控制信號。
LOW:I/O寫,雙向、三態(tài),低電平有效。CPU控制總線時由CPU發(fā)來,CPU用它把數(shù)據(jù)寫入8237。而在DMA操作期間LOW是由8237發(fā)出,作為對I/O設(shè)備寫入的控制信號。
MEMR(MemoryRead):存儲器讀,輸出,三態(tài),低電平有效。在DMA操作期間MEMR是由8237發(fā)出,作為從選定的存儲單元讀出數(shù)據(jù)的控制信號。
MEMW(MemoryWrite):存儲器寫,輸出,三態(tài),低電平有效。在DMA操作期間,MEMW由8237發(fā)出,作為把數(shù)據(jù)寫入選定的存儲單元的控制信號。
EOP(EndOfProcess):過程結(jié)束,雙向,低電平有效。表示DMA服務結(jié)束。當8237接收到有效的EOP信號時,就會終止當前正在執(zhí)行的DMA操作。當復位請求位時,如果是允許自動預置(自動再啟動方式),就將該通道的基址寄存器和基字節(jié)計數(shù)器的內(nèi)容,重新寫入當前的地址寄存器和當前的字節(jié)計數(shù)器,并使屏蔽位保持不變。若不是自動預置方式,當EOP有效時,將會使當前運行通道的狀態(tài)字中的屏蔽位和TC位置位,EOP可以由I/O設(shè)備輸入給8237。另外,當8237的任一通道到達計數(shù)終點(TC)時,會產(chǎn)生低電平的輸出脈沖信號,此信號除了使8237終止DMA服務外,還可以送出作為中斷請求信號等使用。EOP信號不用時,必須通過上拉電阻接到高電平,以防止誤輸入。8237的操作時序如圖6.9所示。它有三種操作周期:空閑周期(IdelCycle),即DMAC工作于被動狀態(tài);請求應答周期和DMA操作周期,即DMAC工作于主動狀態(tài)。每個操作周期又由若干狀態(tài)組成,每種狀態(tài)是一個時鐘周期。8237有SI、S0、S1、S2、S3、S4和Sw
共七種狀態(tài)。1.空閑周期SI8237在編程進入允許DMA工作狀態(tài)之前或雖已編程進入允許DMA,但無DMA請求時,8237處于空閑周期,執(zhí)行空閑狀態(tài)SI。在空閑周期內(nèi),在每個SI的下降沿,8237采樣DREQI輸入信號,以確定是否有通道請求DMA服務。同時,還采樣CS輸入引腳,判斷CPU是否要對該8237芯片進行編程寫入或讀出,若8237采樣到CS有效,只要HLDA是低電平,便可以進入編程工作狀態(tài)(即CPU可以訪問8237)。CPU可以訪問由地址信息A3~A0尋址的內(nèi)部寄存器。
2.請求應答周期S0
對8237編程完成后,在SI的下降沿采樣到DREQI有效后,8237將在SI的上升沿,向CPU輸出占有總線的請求信號HRQ,并向CPU請求DMA服務,進入S0狀態(tài),等待CPU同意讓出總線的回答信號HLDA,在HLDA有效之前的S0狀態(tài)中,CPU仍可以訪問8237。S0狀態(tài)是8237送出HRQ信號向CPU提出控制總線的請求信號HRQ后,到它接收到CPU發(fā)回同意讓出總線的HLDA有效信號之間的周期狀態(tài)。這是8237從被動狀態(tài)過渡到主動狀態(tài)的過渡時期。
3.DMA操作周期在HLDA到達之后,8237開始進入數(shù)據(jù)傳送周期,開始以DMA方式傳送數(shù)據(jù)。一個完整的DMA傳送周期包括S1、S2、S3和S4共四個狀態(tài)。如果是慢速的存儲器或I/O設(shè)備,可以由READY引腳輸入低電平,當S3結(jié)束的下降沿采樣READY為低電平時,就在S3和S4之間插入Sw狀態(tài)(見圖6.9(c)),以達到速度的匹配。對于存儲器至存儲器之間的數(shù)據(jù)傳送,每傳送一個數(shù)據(jù),需先從源存儲器單元讀出數(shù)據(jù),將它存入暫存器,再寫入目的存儲器單元中,這樣傳送一個數(shù)據(jù)要八個狀態(tài)。因此,狀態(tài)標注采用兩位數(shù)標注,從存儲器讀出要用S11、S12、S13和S14共四個狀態(tài),寫入存儲器用S21、S22、S23和S24共四個狀態(tài)(見圖6.9(b))。圖6.98237操作時序圖6.98237操作時序圖6.98237操作時序一個DMA有效周期時序是:8237收到有效的HLDA響應信號后進入S1時,立即輸出地址允許信號AEN,這標志著8237獲得了系統(tǒng)總線控制權(quán)和DMA周期的開始。8237在S1期間把高8位地址A15~A8送到數(shù)據(jù)總線DB7~DB0上,并發(fā)出ADSTB地址選通信號。在ADSTB的下降沿(在S2內(nèi)),把高8位地址存入地址鎖存器,再由地址允許信號AEN把高8位地址送上地址總線A15~A8。低8位地址A7~A0由8237直接或經(jīng)驅(qū)動器輸出到地址總線A7~A0上。對于一般的DMA在S2發(fā)出DACK信號,通知請求DMA服務的設(shè)備,即DACK信號可以用作I/O端口的片選信號。因為,DMAC從地址總線上發(fā)出的地址已被用來訪問存儲器。若是M→I/O或I/O→M的傳送方式,對I/O設(shè)備的尋址就用DACK擔任。隨后,若是DMA讀操作,就發(fā)出存儲器讀命令MEMR;若是DMA寫操作,則發(fā)出I/O讀命令I(lǐng)OR讀取要傳送的數(shù)據(jù)。在S3狀態(tài)中8237發(fā)出寫命令,把讀出的數(shù)據(jù)寫入指定的地址單元。對于DMA讀操作發(fā)出I/O寫命令I(lǐng)OW;對于DMA寫操作發(fā)出MEMW命令。若編程選用擴展寫命令,則寫入操作和讀出操作同時開始。在S2期間同時發(fā)出MEMR和LOW或IOR和MEMW。在存儲器和I/O設(shè)備之間傳送數(shù)據(jù)時,數(shù)據(jù)不讀入8237,而是保持在數(shù)據(jù)線DB7~DB0上。所以,寫周期一開始,即可從數(shù)據(jù)總線上直接寫到存儲器或I/O端口。也就是說DMA通道提供了直接傳送數(shù)據(jù)的功能。對于存儲器至存儲器的傳送,不發(fā)I/O讀寫命令。每傳送一個字節(jié)用八個狀態(tài),前四個狀態(tài)發(fā)出MEMR命令,把數(shù)據(jù)從源地址存儲器讀入8237暫存器,后四個狀態(tài)發(fā)出MEMW命令,把暫存器中的數(shù)據(jù)寫入目的存儲器。對于成組或請求傳送,連續(xù)傳送多個數(shù)據(jù),其地址碼是連續(xù)變化的。對于大多數(shù)傳送來說,保存在地址鎖存器中的高8位地址是不變的,只有當?shù)?位地址發(fā)生進位或借位時,才會改變高8位地址。為了加快傳送速度,只有對地址鎖存器中的A15~A8內(nèi)容進行修改時,才去執(zhí)行S1狀態(tài),否則可以不進入S1狀態(tài)。在S3后沿,8237檢測READY輸入信號。若READY為低電平時,8237插入Sw狀態(tài);若READY為高電平時,就進入S4狀態(tài)。S4狀態(tài)結(jié)束后,8237已完成數(shù)據(jù)傳送,因此,對應的讀寫信號變?yōu)闊o效。S4狀態(tài)結(jié)束后,若8237還處于DMA操作,即開始另一個DMA傳送周期。若DMA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程顧問合作聯(lián)盟合同
- 教室桌椅訂購協(xié)議
- 招標公告宿舍方案邀約
- 酒店裝修合同協(xié)議
- 房屋買賣定金合同范例文本
- 農(nóng)村民間借貸合同格式
- 文化藝術(shù)品交易平臺合作協(xié)議
- 煤炭運輸招標費用明細
- 租賃與信托業(yè)務招標說明
- 房屋買賣合同的貸款辦理
- 阜陽師范大學《語文教學論》2022-2023學年第一學期期末試卷
- DB34T 4912-2024二手新能源汽車鑒定評估規(guī)范
- 空調(diào)維保服務投標方案 (技術(shù)方案)
- 省級高水平醫(yī)院評價指標(眼科專科醫(yī)院)
- T-CISA 370.4-2024 鋼鐵企業(yè)廠區(qū)內(nèi)設(shè)備、管道及附屬結(jié)構(gòu)涂料防腐蝕工程技術(shù)規(guī)范 第4部分:表面處理與涂料涂裝
- 2024-2030年中國工控機行業(yè)需求狀況及發(fā)展趨勢分析研究報告
- 國家開放大學電大《社會調(diào)查研究與方法》期末試題標準題庫及答案
- 人教版九年級物理全第十三章十四章復習課教學設(shè)計
- 專題07:名著閱讀-近兩年(2022-2023)中考語文一模、二模試題分類匯編(廣州專用)原卷版+解析
- 16 《大家排好隊》(教學設(shè)計)2024-2025學年統(tǒng)編版(2024)小學道德與法治一年級上冊
- 借條范本有擔保人2024年
評論
0/150
提交評論