第五章數(shù)字量輸入輸出7of7dma_第1頁
第五章數(shù)字量輸入輸出7of7dma_第2頁
第五章數(shù)字量輸入輸出7of7dma_第3頁
第五章數(shù)字量輸入輸出7of7dma_第4頁
第五章數(shù)字量輸入輸出7of7dma_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、§5.7直接器存取DMA12345DMA傳輸DMA操作DMA器DMA系統(tǒng)實模式下DMA應(yīng)用程序的開發(fā)1.DMA1 .1DMA傳輸?shù)奶攸cDMA傳輸數(shù)據(jù)的數(shù)率高DMA方式不用處理器干預(yù),完成器與I/O間、存與間的數(shù)據(jù)傳送。DMA期間系統(tǒng)總線由DMA(驅(qū)動)。信號。DMADMA器模塊提供系統(tǒng)的地址及器與處理器配合可實現(xiàn)系統(tǒng)的DMA功能。傳輸DMA傳輸方式實現(xiàn):器與外設(shè)、外設(shè)與外設(shè)、器與器之間直接交換數(shù)據(jù),不需經(jīng)過CPU的累加器中轉(zhuǎn),在傳送過程中,不需CPU控制,由DMA。器負(fù)責(zé)對DMA傳送的全過程1.2DMA傳輸?shù)倪^程申請階段響應(yīng)階段數(shù)據(jù)傳輸階段傳輸結(jié)束階段I/O向DMACDMAC向U響應(yīng)

2、DMAC向DMAC初始化發(fā)請求CPU發(fā)請求DMAC請求I/O發(fā)響應(yīng)DMA傳輸結(jié)束DMAC發(fā)出內(nèi)存地址DMA傳輸進(jìn)行DMAC發(fā)出信號2DMA操作2.1.DMA操作類型以器為參照點DMA讀:從DMA寫:向器讀出器寫入Ø 數(shù)據(jù)傳輸:Ø 數(shù)據(jù)校驗:過程同于,但不發(fā)讀寫信號。Ø 數(shù)據(jù)檢索:過程同于校驗,但是在指定的內(nèi)存區(qū)域內(nèi)查找數(shù)據(jù)。2.2DMA操作方式每次DMA操作僅傳送一個字節(jié)v 單字節(jié)方式:連續(xù)(塊字節(jié))方式:每次DMA操作數(shù)據(jù)塊一個請求(詢問)方式:外部有DMA請求時,DMA才占用總線,實現(xiàn)塊操作。單字節(jié)方式MA請求?YDMAC傳一個字節(jié)DMA放棄總線N塊結(jié)束否?Y

3、放棄總線產(chǎn)生終止計數(shù)信號T/CCPU響應(yīng)DMA放棄總線DMAC發(fā)總線請求 NDDMA連續(xù)方式DMA請求?束否?YDMA請求?N放棄總線產(chǎn)生終止計數(shù)信號T/CAC字節(jié)DM傳一個N塊結(jié)YCPU 響應(yīng) DMA放棄總線DMAC發(fā)總線請求DMA請求方式NDMA請求?YNDMA請求?塊結(jié)束否?NY總線總線產(chǎn)生終止計數(shù)信號T/CDMAC傳送一個字節(jié)CPU響應(yīng)DMA,放棄總線DMAC發(fā)出總線請求YDMA3DMA器3.1DMA器在系統(tǒng)中的工作狀態(tài) 1. DMA器的兩種工作狀態(tài)1)CPU態(tài)(DMA空閑周期)總線,DMAC接受CPU對它的和指揮2)主動態(tài)(DMA有效周期)DMAC取得總線權(quán),向器和外設(shè)3.2DMA器

4、與CPU之間的總線權(quán)轉(zhuǎn)移HLDADACKR/W經(jīng)判優(yōu)及屏蔽處理后(仲裁)經(jīng)總線裁決后認(rèn)可, 進(jìn)入總線保持狀態(tài),由態(tài)進(jìn)入主動態(tài)CPU失去總線權(quán)RAMI/ODMACI/ODREQDMACHRQU3.3-3.4DMA器82C37A的外部特性寄存器及編程命令1.特點:(1)四個通道(可對4個I/O設(shè)備進(jìn)行DMA服務(wù))(2)64KB尋址與計數(shù)能力(3)數(shù)據(jù)傳輸率1.5Mb/s(4)有級聯(lián)多種操作模式圖282C37A內(nèi)部邏輯框圖HOLDHRQIOR#HLDAMEMR#IOW# MEMW#HLDACLOCKRENAEN關(guān)閉U地址鎖存器READYRESETADSTBEN#DB7:DB0DREQ0DACK0ST

5、BDATA SUB鎖存器DREQ1DACK1IO / M#CS#地址總線A15A8 A7A0DREQ2DACK2A3A0DREQ3DACK3A7A4EOP#Intel 82C37A可編程DMA器框圖通道3通道2ADDR.譯 碼通道1通道0可讀非讀基字節(jié)計數(shù)器16當(dāng)前字節(jié)計數(shù)器16基地址寄存器 16當(dāng)前地址寄存器 16請求 REG. 8暫存器 8命令 REG. 8狀態(tài) REG. 8REG. 8Addr.Temp.16Count Temp. 16工作方式 REG. 8v 82C37A組成說明:82C37A有四個通道。自的4個寄存器:16位基地址REG,16位當(dāng)Ø 每個通道前地址REG;1

6、6位基字節(jié)計數(shù)器,16位當(dāng)前字節(jié)計數(shù)器。Ø 四個通道公用寄存器,狀態(tài)寄存器,寄存器,請求標(biāo)志寄存器及暫存器,各寄存器均為8位。v 8237A引線說明:Ø DB7-DB0:雙向數(shù)據(jù)總線。8237A為從模塊時為數(shù)據(jù)線:被處理器編程或讀狀態(tài),傳輸數(shù)據(jù)或命令字。8237A為主模塊時為地址和數(shù)據(jù)分時復(fù)用線:地址線:數(shù)據(jù)線:在器的高8位地址A15-A8,器到器傳送操作時,經(jīng)器數(shù)據(jù)送8237A暫存器。DB7-DB0,將READY:輸入,準(zhǔn)備就緒,主模塊時的長度,與慢速設(shè)備同步??偩€周期A3-A0:地址線,雙向。8237A為從模塊時為輸入,處理器尋址8237A;8237A為主模塊時輸出低4

7、位地址。Ø A7-A4:地址線,主模塊時輸出A7-A4。CS:片選,從模塊時處理器用來尋址8237A。IOR,IOW:I/O讀寫,雙向。8237A在從模塊時為輸入,在主模塊時為輸出。Ø HRQ:8237A向處理器發(fā)出的總線請求信號。Ø HLDA:處理器發(fā)給8237A的總線請求響應(yīng)信號。Ø AEN,ADSTB:輸出,8位地址鎖存選通。在主模塊時位地址。外部鎖存器鎖存8237A的高8Ø MEMR,MEMW:輸出,器讀寫,主模塊時送器。Ø RESET:輸入,復(fù)位信號,復(fù)位時置1,其它寄存器置0。Ø EOP:雙向。輸出時,表明內(nèi)部通

8、道傳送結(jié)束;寄存器輸入時,表明外部強(qiáng)迫DMA傳送停止。Ø DREQ0DREQ3:I/O設(shè)備DMA請求輸入信號。Ø DACK0-DACK3:輸出DMA請求的響應(yīng)。82C37A寄存器端口地址端口通道I/O 口地址寄 存器讀(IOR)寫(IOW)DMA+ DMA+ DMA+ DMA+ DMA+ DMA+ DMA+ DMA+ DMA+DMA+ DMA+DMA+ DMA+ DMA+ DMA+DMA+000102030405060708090A0B0C0D0E0F讀通道0的當(dāng)前地址寄存器讀通道0的當(dāng)前字節(jié)計數(shù)寄存器讀通道1的當(dāng)前地址寄存器讀通道1的當(dāng)前字節(jié)計數(shù)寄存器讀通道2的當(dāng)前地址寄

9、存器讀通道2的當(dāng)前字節(jié)計數(shù)寄存器讀通道3的當(dāng)前地址寄存器讀通道3的當(dāng)前字節(jié)計數(shù)寄存器讀狀態(tài)寄存器讀暫存寄存器寫通道0的基地址與當(dāng)前地址寄存器寫通道0的基字節(jié)計數(shù)與當(dāng)前字節(jié)計數(shù)寄存器寫通道1的基地址與當(dāng)前地址寄存器寫通道1 的基字節(jié)計數(shù)與當(dāng)前字節(jié)計數(shù)寄存器寫通道2的基地址與當(dāng)前地址寄存器寫通道2 的基字節(jié)計數(shù)與當(dāng)前字節(jié)計數(shù)寄存器寫通道3的基地址與當(dāng)前地址寄存器寫通道3 的基字節(jié)計數(shù)與當(dāng)前字節(jié)計數(shù)寄存器寫命令寄存器寫請求寄存器寫單個通道寄存器寫工作方式寄存器寫清除先/后觸發(fā)寄存器*寫總清命令*寫清四個通道寄存器命令* 寫置四個通道寄存器* 為軟命令1. 命令寄存器:只寫不讀,用來格式(寫8號端口)

10、8237A的操作。D6D5D4D3D2D1D0D7DACK有效電平MEMMEM. 傳輸MEMMEM傳輸保持不變DREQ有效電平擴(kuò)展寫8237A 工作優(yōu)先權(quán)類型時序類型0正常時序1壓縮時序D0=1固定優(yōu)先權(quán)0循環(huán)優(yōu)先權(quán)1082C37A182C37A不擴(kuò)展寫信號0擴(kuò)展寫信號10Channel 0 地址可變1Channel 0 地址不變D0=0高電平有效0低電平有效101低電平有效0高電平有效12. 工作方式寄存器(寫0B端口):工作方式的設(shè)定:用于設(shè)置DMA的操作類型、操作方式、地址改變方式、自動預(yù)置,以及選擇通道。D7D6D5D4D3D2D1D0模式選擇通道選擇傳輸類型選擇地址增量選擇外設(shè)內(nèi)存內(nèi)

11、存外設(shè)用通道0和通道1無意義自動預(yù)置功能選擇非自動0自動100校驗傳輸01DMA寫10DMA讀11器器XXD7 D6=1100選 0# Channel01選 1# Channel10選 2# Channel11選 3# Channel請求傳輸方式00單字節(jié)傳輸方式01數(shù)據(jù)塊傳輸方式10級聯(lián)傳輸方式11地址加10地址減11例1.用通道2(D1D0=10),單字節(jié)傳送(D7D6=01),地址增1(D5=0),不用自動預(yù)置(D4=0),寫出方式字。解:方式DMA寫( DMA讀(校驗字器)器)010001100100101001000010=46H4AH42H讀盤寫盤 校驗盤3. 地址寄存器:

12、6; 基地址寄存器16位,存放DMA傳送的內(nèi)存首址,傳送過程不變。只能寫不能讀Ø 當(dāng)前地址寄存器:16位,可讀可寫。存放DMA傳送過程中的內(nèi)存地址,在每次傳送后地址增1或減1,它的初值與基地址寄存器的內(nèi)容相同。4. 字節(jié)計數(shù)寄存器Ø 基字節(jié)計數(shù)寄存器:16位,只能寫不能讀,存放DMA傳送的總字節(jié)數(shù),傳送過程中基字節(jié)數(shù)計數(shù)器內(nèi)容不變。計數(shù)總字節(jié)數(shù)(N-1)。Ø 當(dāng)前字節(jié)計數(shù)器:16位,可讀可寫。存放DMA傳送過程中沒有傳送完的字節(jié)數(shù)。5.請求寄存器:只寫不讀。軟件啟動DMA請求,用于器與器之間傳送。格式(寫9號端口)通道選擇不用0不請求傳輸1請求傳輸00Channe

13、l 001Channel 110Channel 211el 3D7D6D5D4D3D2D1D06.寄存器:只寫不讀。用來或通道的DMA請求有兩種命令對應(yīng)兩個寄存器:a單通道寄存器(0AH 端口)格式通道選擇不用MOVOUTAL,00000010 BDMA+0AH,AL;開放通道2,作為響應(yīng)軟盤的DMA請求0100el 001el 110el 211Channel 3D7D6D5D4D3D2D1D0b. 4個通道寄存器(寫0FH端口)格式D6D3D2D1D0D5D4D7不用例如:將00000100寫入0FH端口,MOV AL ,00000100BOUT DMA+0FH ,AL;將(開放)0,1,

14、3 號通道,0 號通道。2號通道00000100B 若寫入0AH 端口僅向0EH 端口寫一個任意字時,將開放所有通道: OUTDMA+0EH ,ALChannel 30Channel 31Channel 20Channel 210Channel 01el 00el11el17.狀態(tài)寄存器:讀08H號端口,將得到狀態(tài)寄存器的8位值,可監(jiān)測運(yùn)行狀態(tài)。格式(讀8 號端口)D6D3D2D1D0D7D5D41:通道 3計數(shù)結(jié)束通道 0 有DMA請求11:通道 2計數(shù)結(jié)束通道 1 有DMA請求11:通道 1計數(shù)結(jié)束通道 2有DMA請求11:通道 0計數(shù)結(jié)束通道 3 有DMA請求18. 暫存寄存器v 用于器

15、對器傳輸時,暫時保存從源地址讀出的數(shù)據(jù)。RESET信號和總清除命令可清除暫存寄存器的內(nèi)容。9. 軟命令(與端3個)有關(guān),與DB線上的內(nèi)容無關(guān)。(1)/后觸發(fā)器(向0CH地址寫一任意值)用來對16位的寄存器次序進(jìn)行:清除字節(jié)指針,使將裝入的順序為:先LSB,后MSB。0:1:低8位字節(jié)高8位字節(jié)MOV AL, 0AAHOUT (DMA+12), AL; AL為任意值; 置先/后觸發(fā)器為0態(tài)l 對DMA+0H7H端口每一次,該觸發(fā)器就反轉(zhuǎn)向DMA+0CH端口寫一個任意值,將對該觸發(fā)器清“0”(2)總清除命令(向0DH地址寫任意值)寄存器為1,其它寄存器為0 。(稱軟件復(fù)位)MOVOUTAL, 0B

16、BH(DMA+13), AL; AL為任意值; 總清命令端口(3)清寄存器命令(向0EH地址寫任意值)清除4個通道的位。MOVOUTAL, 0CCH(DMA+14), AL; AL為任意值; 清寄存器命令端口3.5DMA器82C37的工作時序v 8237A-5 有7種狀態(tài)周期:SIS0S1S2S3S4和 SW態(tài)(空閑周期)主動態(tài)(有效周期)1.空閑周期SI上電后,未編程前,還沒有DMA請求,進(jìn)入空閑周期SI,DMA處于工作方式,CPU可對DMAC編程。2.過渡狀態(tài)S0若檢測到DREQ請求,DMAC即向CPU發(fā)出總線請求信號HRQ。并且,DMAC從SI狀態(tài)跳入S0狀態(tài),并重復(fù)執(zhí)行,直到收到HLD

17、A信號(CPU)進(jìn)入S1狀態(tài),DMAC從態(tài)主動態(tài)。3.DMA有效周期(S1S4) 在CPU的回答信號HLDA到達(dá)后,DMAC進(jìn)入有效周期開始傳送數(shù)據(jù)。 一個完整的傳送周期包括S1 ,S2 ,S3 和S4四個周期,如果I/O速度跟不上,可在S3 和S4 之間待周期SW。等a)S1 周期:更新高8位地址。A8A15DMAC在S1 狀態(tài)發(fā)出地址AEN和ADSTB信號,將高8位地址A8 A15送到數(shù)據(jù)總線上DB0DB7上。b) S2周期:完成DMA的響應(yīng)工作輸出16位地址到RAM,(其它高8位已鎖存)向I/O發(fā)請求回答信號DACK,準(zhǔn)備傳送數(shù)據(jù)。c) S3周期:讀周期發(fā)出MEMR(DMA讀)或IOR(

18、DMA寫)命令,從內(nèi)存或I/O準(zhǔn)備傳送數(shù)據(jù)。d)S4周期: 寫周期發(fā)IOW(DMA讀)或MEMW(DMA寫)命令,將數(shù)據(jù)寫到RAM或I/O接口。在PC例中,用于動態(tài)RAM刷新的通道00通道:有S1 S44個周期為840ns其他: S1 S3, SW,S41.02µs個周期為二、DMA有關(guān)的時序(P304 圖5.65)單字節(jié)SISIS0S0S1S2S3S4未就SWSW緒DREQHLDAI/O主動狀態(tài)內(nèi)部狀態(tài)流程圖數(shù)據(jù)傳輸狀態(tài)請求應(yīng)答態(tài)態(tài)塊字節(jié)4DMA系統(tǒng)4.1DMA器與微處理器的接口4.2 DMA器與IO電路的接口4.3 DMA系統(tǒng)中對器和IO設(shè)備的尋址DMA器(DMAC)有效地址的生

19、成有效地址:是指當(dāng)DMAC取得總線器,如何向權(quán)后,作為系統(tǒng)主和I/O設(shè)備發(fā)地址信號1.如何擴(kuò)展82C37A的尋址空間(1)DMAC只能提供16位地址A0A7(低8位)DB0 DB7(高8位)(2) 20位地址總線的系統(tǒng) DMAC提供16位A0A15(3) 24位地址總線的系統(tǒng)DMAC提供16位頁面地址寄存器8位(A16 A23)頁面地址寄存器4位, A16 A194.3 DMA系統(tǒng)中對器和IO設(shè)備的尋址(3) 32位地址總線的系統(tǒng) DMAC提供16位A0A152.如何對I/O設(shè)備尋址DMA器提供DACK信號來取代I/O設(shè)備地址選擇DACK信號、RD、WR信號同時有效,就能完成對I/O設(shè)備端口的

20、讀/寫操作,而與I/O設(shè)備的端口地址無關(guān)頁面地址寄存器16位, A16 A31CPUD07A815A07S02A07DB07A03A03DMA器數(shù)據(jù)傳送線IORS02IOR IOWIOW總線器EOP DACK0 DRQ0總線信號DACK1DRQ總線請求 1HRQ總線裁決DACK2 DRQ2DACK3S01總線應(yīng)答HLDA機(jī)構(gòu)DRQ3圖4.5 PC系列DMA系統(tǒng)邏輯框圖I/O設(shè)備讀I/O設(shè)備寫I/O設(shè)備計數(shù)終止I/O設(shè)備0 I/O設(shè)備1 I/O設(shè)備2 I/O設(shè)備3鎖存器74LS373RAM16位地址讀RAM 寫RAM74LS670(612)A1619CPUD07)(A1623A815A07S02

21、A07DB07A03A03DMA器數(shù)據(jù)傳送線IORS02IOR IOWIOW總線器EOP DACK0 DRQ0總線信號DACK1DRQ總線請求 1HRQ總線裁決DACK2 DRQ2DACK3S01總線應(yīng)答HLDA機(jī)構(gòu)DRQ3圖4.5 PC系列DMA系統(tǒng)邏輯框圖I/O設(shè)備讀I/O設(shè)備寫I/O設(shè)備計數(shù)終止I/O設(shè)備0 I/O設(shè)備1 I/O設(shè)備2 I/O設(shè)備3鎖存器74LS373DMA頁面寄存器RAM24位地址讀RAM 寫RAM級聯(lián) 方式示意圖主片從 片D R E Q 0DA C K 0H R QH L D A8 2 3 7 AH R QD R E Q 1 DA C K 1 D R E Q 2DA

22、C K 2H L D A8 2 3 7 AD R E Q 3DA C K 3 46H R Q8 2 3 7 AH L D AC P U2.32位微機(jī)使用2片82C37A,并在了兩片82C37A.組82801BA中,集成2片8237DMAC支持7個DMA通道傳送。端口A17A23AA81H16230#4#保留保留軟盤保留A1A15HRQ1#5#DMAC 1#6#7#0000FHC0DFH只能在偶地址編程,其起始端口定為00C0H,每個端口地址間隔為2DMAC 0#A0A152#3#HRQ保留頁面寄存器頁面寄存器5.2DMA編程的步驟1.向命令寄存器寫入命令字確定DMA傳輸?shù)膶ο螅ㄆ髌?器I/O)

23、、工作時序、優(yōu)先級排隊方式、DREQ和DACK的有效邏輯電平,以及是否處于工作狀態(tài)。2. 向寄存器寫入字為了防止正在進(jìn)行初始值設(shè)置期間,由于外部另有DMA請求打斷尚未完成的初始值設(shè)置而出錯,在初始值設(shè)置之前必須先道的正在初始值設(shè)置的通道,待初始值設(shè)置結(jié)束后再解除該通。3. 向方式寄存器寫入確定DMA傳輸?shù)牟僮黝愋?、操作方式、地址改變方式、自動預(yù)置及通道選擇。5.2 DMA編程的步驟4.置先/后觸發(fā)器為0態(tài)執(zhí)行一條軟命令,即對82C37A的口地址+0CH,寫入任何數(shù)據(jù),可置先/后觸發(fā)器為0態(tài),為初始化地址寄存器和字節(jié)計數(shù)寄存器做準(zhǔn)備。5.寫基地址寄存器和基字節(jié)計數(shù)寄存器把DMA傳輸?shù)钠骱彤?dāng)前地址寄存器,并把要傳輸?shù)淖止?jié)數(shù)減1,寫入基字節(jié)計數(shù)寄存器和當(dāng)前字節(jié)計數(shù)寄存器。器首地址寫入基地址寄存5.2 DMA編程的步驟6.解除初始值設(shè)置的最后,需向通道的單個寄存器或4個寄存器寫入解除令字,即可開放相應(yīng)通道的DMA請求,以響應(yīng)DMA請求,進(jìn)入DMA傳輸周期。7.通過請求寄存器申請DMA傳輸如果DMA傳輸?shù)恼埱蟛皇怯赏獠坑布a(chǎn)生,而采用軟件申請DMA傳輸,則在完成通道初始值設(shè)置后,在程序的

溫馨提示

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

最新文檔

評論

0/150

提交評論