技術(shù)與DMA控制器.ppt_第1頁
技術(shù)與DMA控制器.ppt_第2頁
技術(shù)與DMA控制器.ppt_第3頁
技術(shù)與DMA控制器.ppt_第4頁
技術(shù)與DMA控制器.ppt_第5頁
已閱讀5頁,還剩88頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第8章 DMA技術(shù)與DMA控制器,8.1 DMA技術(shù)概述 8.2 可編程DMA控制器8237A 8.3 DMA技術(shù)在微機(jī)系統(tǒng)中的應(yīng)用,直接存儲器存取,2,1.DMA(Direct Memory Access)的概念 DMA方式不用處理器干預(yù)完成M與I/O間數(shù)據(jù)傳送。 DMA期間系統(tǒng)總線由其它主模塊控制(驅(qū)動) 控制總線的主模塊要提供系統(tǒng)的地址及控制信號。 DMA控制器與處理器配合可實現(xiàn)系統(tǒng)的DMA功能,8.1 DMA技術(shù)概述,3,2. DMA系統(tǒng)組成及工作過程 DMA系統(tǒng)組成,4,DMAC的基本功能,接收接口往DMA控制器發(fā)出DMA請求信號后,DMA控制器能向CPU發(fā)出總線請求信號HOLD

2、(高電平)。 當(dāng)CPU向DMA發(fā)出響應(yīng)信號HLDA(高電平)以后,DMA能接管對總線的控制,進(jìn)入DMA方式。 能向地址總線發(fā)出內(nèi)存地址信息,對其進(jìn)行尋址及修改地址指針,5,DMAC的基本功能,能向存儲器或I/O接口發(fā)相應(yīng)的讀寫控制信號。 能決定傳送字節(jié)數(shù),并判斷DMA傳送是否結(jié)束。 DMA過程結(jié)束,能向CPU發(fā)出DMA結(jié)束信號,HOLD變低,將總線控制權(quán)還給CPU,CPU恢復(fù)正常工作,6,允許 DMA,DMA 請求,DMAC發(fā)BUS請求,CPU響應(yīng)DMA 放棄BUS,DMAC控制 傳一個字節(jié),塊結(jié)束否,放棄總線中斷請求,N,DMA 放 總 線,N,Y,字節(jié)傳送,Y,DMA傳送方式,7,允許 D

3、MA,DMA請求,DMAC發(fā)BUS請求,CPU 響應(yīng) DMA 放棄 BUS,DMAC控制 傳一個字節(jié),塊結(jié)束否,放總線中斷請求,DMA請求,N,Y,Y,N,塊傳送,DMA傳送方式,8,允許 DMA,DMA請求,DMAC發(fā)出BUS請求,CPU響應(yīng)DMA放棄總線,DMAC 控制傳一個字節(jié),塊結(jié)束否,放總線中斷請求,Y,DMA請求,Y,放總線,N,N,Y,隨機(jī)請求 DEMAND REQUEST,DMA傳送方式,9,I/O設(shè)備向DMAC發(fā)出DMA請求,DMAC向CPU發(fā)出總線請求,CPU在執(zhí)行完當(dāng)前指令的當(dāng)前 的總線周期后,向DMAC發(fā)出 總線響應(yīng)信號,CPU脫離對系統(tǒng)總線的控制, 由DMAC接管對系

4、統(tǒng)總線的控制,DMAC向I/O設(shè)備發(fā)出 的DMA應(yīng)答信號,DMAC進(jìn)行一個字節(jié)的傳送,完成設(shè)定的字節(jié)數(shù)據(jù)傳送, CPU恢復(fù)對系統(tǒng)總線的控制,DMA傳送的過程,10,8.2 可編程DMA控制器8237A,8.2.1 8237A的主要特性 1具有四個獨立的DMA通道,每個通道都具有64K的存貯器尋址能力,即一次傳送的最大長度為64K字節(jié)。 2可實現(xiàn)內(nèi)存與外設(shè)之間的高速大批量數(shù)據(jù)傳送 ,也可實現(xiàn)內(nèi)存兩個不同區(qū)域之間的高速數(shù)據(jù)傳送。 3每個通道的DMA請求均可分別允許或禁止,且四個通道的DMA請求的優(yōu)先權(quán)可由軟件設(shè)置為固定的或循環(huán)的,11,8237A的主要特性,4具有單字節(jié)傳送、數(shù)據(jù)塊傳送、請求傳送和

5、級聯(lián)傳送四種工作方式。 5可用級聯(lián)方式擴(kuò)展DMA通道數(shù)目。 6DMA傳送結(jié)束信號可由內(nèi)部計數(shù)產(chǎn)生,也可由外部輸入提供。 7單一的+5V電源,40個引腳雙列直插式封裝。 8采用5MHz時鐘,傳送速率可達(dá)1.6M字節(jié)/秒,12,8采用5MHz時鐘,傳送速率可達(dá)1.6M字節(jié)/秒。 8237進(jìn)行一次DMA傳送需要3個時鐘周期(不包括插入的等待周期SW)。時鐘周期為200 ns,則一次DMA傳送需要200 ns3200 ns700 ns(1.6 M字節(jié)/秒)。多加一個200 ns是考慮到人為插入一個SW的緣故。另外,8237為了提高傳輸速率,可以在壓縮定時狀態(tài)下工作。在此狀態(tài)下,每一個DMA總線周期僅用

6、兩個時鐘周期(200 ns2=400ns )就可實現(xiàn),這大大提高了傳輸速率,13,8.2.2 8237A的工作原理,18237A的編程結(jié)構(gòu) 編程結(jié)構(gòu)見下頁圖 內(nèi)部有大量寄存器,內(nèi)部寄存器的功能、端口地址等信息 參見下表,14,Intel 8237A可編程DMA控制器框圖,15,1)8237A組成說明: 8237A有四個獨立通道:通道0通道3。每個通道可獨立響應(yīng)外部DMA請求,完成DMA傳送,15,16,控制寄存器, 8位,16,四個通道公用,優(yōu)先級編碼電路-優(yōu)先級裁決,17,8237的引腳功能,17,18,8237的引腳功能,請求/應(yīng)答信號 外設(shè)接口電路向8237的請求信號:DREQ3DREQ

7、0 8237對外設(shè)接口電路的應(yīng)答信號:DACK3DACK0 8237向CPU申請總線的信號:HRQ(連至CPU的HOLD) CPU向8237傳送的允許使用總線信號:HLDA,CPU,DMA,外設(shè),HRQ,DREQ,HLDA DACK,18,19,8237的引腳功能,地址信號 :CPU初始化8237或讀8237狀態(tài)時所需的片選信號 A7A0(輸出):8237訪問存儲器的地址信號的低8位。 A3A0(輸入):CPU初始化8237或讀8237狀態(tài)時,用于尋址8237內(nèi)部寄存器,19,20,8237的引腳功能,數(shù)據(jù)信號(雙向): DB7DB0,CPU為主控時,可以通過I/O讀命令查詢8237的狀態(tài)寄存

8、器的內(nèi)容,或通過I/O寫命令對8237的內(nèi)部寄存器進(jìn)行編程,數(shù)據(jù)傳送通過DB7DB0 8237為主控時, DB7DB0輸出要訪問的內(nèi)存地址的高8位,并通過ADSTB鎖存到外部地址鎖存器中,和A7A0輸出的低8位地址一起構(gòu)成16位地址,20,21,8237的引腳功能,地址允許信號:AEN 8237作為主控時(8237控制總線),輸出AEN=1。 8237作為從控時(CPU控制總線),輸出AEN=0。 DMA傳輸結(jié)束信號: (雙向) 當(dāng)DMAC內(nèi)部任一通道傳輸結(jié)束,8237發(fā)出 若由外部給DMAC送入有效的 ,則強(qiáng)制DMAC內(nèi)部 所有通道結(jié)束傳輸,21,22,8237的引腳功能,MEMR/MEMW

9、,8237發(fā)出的存儲器讀/寫信號,IOR/IOW,8237作為主控時,輸出的I/O讀/寫信號。 8237作為從控時,CPU發(fā)出的I/O讀/寫信號,用于讀/寫8237,22,23,8237的引腳功能,ADSTB:地址選通信號,用于啟動地址鎖存器,READY:存儲器或I/O的就緒信號,23,24,DMA控制器8237,工作方式 1)從模塊工作方式: 當(dāng)CPU將數(shù)據(jù)送入或取出8237時,DMA完全象一個普通的I/O接口,此時它工作于從模塊,24,25,DMA控制器8237,D0D7 DB0DB7 IOR IOR CPU IOW IOW 8237 A0A3 A0A3 A4A15 CS 此時CPU對82

10、37進(jìn)行初始化或讀出8237中的狀態(tài),25,譯碼,26,DMA控制器8237,2)主模塊工作方式: 此時DMA已取代CPU控制系統(tǒng)。它 將提供系統(tǒng)正常工作的地址信息,控 制信息完成DMA方式的數(shù)據(jù)傳送,26,27,DMA控制器8237,AEN A0A7 A0A7 8237 EN ADSTB DB0DB7 A8A15 IOW IOR MEMW MEMR,27,STB 鎖存器,28,DMA控制器8237,28,那對于20位地址線8237如何處理,由上可見8237工作于模塊方式,可取代CPU產(chǎn)生地址及控制信息,8237A處于DMA方式時,全部地址均用來尋址存儲器,無法同時提供I/O設(shè)備的端口地址.為

11、了尋址外部設(shè)備,8237A提供DACK信號,作為對請求DMA方式的外部設(shè)備的應(yīng)答,并指明該外部設(shè)備被認(rèn)可,可以進(jìn)行DMA傳送.在整個傳輸過程中只要DACK信號,IOR,IOW同時有效,就能完成讀外部設(shè)備的I/O讀寫操作.所以,在DMA方式下,I/O設(shè)備的地址無效.即:以DACK代替了片選和譯碼功能,在8086/88系統(tǒng)中,系統(tǒng)的尋址范圍是1MB,地址線有20條,即A0A19。為了能夠在8086/88系統(tǒng)中使用8237來實現(xiàn)DMA,需要用硬件提供一組4位的頁寄存器。 通道0、1、2、3各有一個4位的頁寄存器。在進(jìn)行DMA傳送之前,這些頁寄存器可利用I/O地址來裝入和讀出。當(dāng)進(jìn)行DMA傳送時,DM

12、AC將A0A15放在系統(tǒng)總線上,同時頁寄存器把A16A19也放在系統(tǒng)總線上,形成A0A19這20位地址信號實現(xiàn)DMA傳送。其地址產(chǎn)生如圖所示,29,利用頁寄存器產(chǎn)生存儲器地址,29,30,8237A的工作方式,DMA傳送方式 單字節(jié)傳送方式 數(shù)據(jù)塊傳送方式 請求傳送方式 級連方式 DMA傳送類型 DMA讀 DMA寫 DMA檢驗 存儲器到存儲器的傳送,31,1) DMA傳送單字節(jié)方式,每次DMA傳送時僅傳送一個字節(jié) 傳送一個字節(jié)之后,字節(jié)數(shù)寄存器減1,地址寄存器加1或減1,HRQ變?yōu)闊o效 8237A釋放系統(tǒng)總線,將控制權(quán)還給CPU 若傳送后使字節(jié)數(shù)從0減到FFFFH,則終結(jié)DMA傳送或重新初始化

13、 特點: 一次傳送一個字節(jié),效率略低 DMA傳送之間CPU有機(jī)會重新獲取總線控制權(quán),DMA傳送方式,32,2) DMA傳送數(shù)據(jù)塊方式,由DREQ啟動就連續(xù)地傳送數(shù)據(jù),直到字節(jié)數(shù)寄存器從0減到FFFFH終止計數(shù),或由外部輸入有效信號終結(jié)DMA傳送 DREQ只需維持有效到DACK有效 特點: 一次請求傳送一個數(shù)據(jù)塊,效率高 整個DMA傳送期間CPU長時間無法控制總線(無法響應(yīng)其他DMA請求、無法處理中斷等,33,3) DMA傳送請求方式,DREQ信號有效就連續(xù)傳送數(shù)據(jù) DREQ信號無效,DMA傳送被暫時中止,8237A釋放總線,CPU可繼續(xù)操作 DMA通道的地址和字節(jié)數(shù)的中間值仍被保持 DREQ信

14、號再次有效,DMA傳送就繼續(xù)進(jìn)行 如果字節(jié)數(shù)寄存器從0減到FFFFH,或者由外部送來一個有效的信號,將終止計數(shù) 特點: DMA操作可由外設(shè)利用DREQ信號控制傳送的過程,34,4) DMA傳送級連方式,用于通過多個8237A級連以擴(kuò)展通道 第二級的HRQ和HLDA信號連到第一級某個通道的DREQ和DACK上 第二級芯片的優(yōu)先權(quán)等級與所連通道的優(yōu)先權(quán)相對應(yīng) 第一級只起優(yōu)先權(quán)網(wǎng)絡(luò)的作用,實際的操作由第二級芯片完成 還可由第二級擴(kuò)展到第三級等,35,8237A的級聯(lián),36,DMA讀把數(shù)據(jù)由存儲器傳送到外設(shè) 由MEMR*有效從存儲器讀出數(shù)據(jù),由IOW*有效把這一數(shù)據(jù)寫入外設(shè) DMA寫把外設(shè)輸入的數(shù)據(jù)寫

15、入存儲器 由IOR*有效從外設(shè)輸入數(shù)據(jù),由MEMW*有效把這一數(shù)據(jù)寫入存儲器。 DMA檢驗空操作 8237A不進(jìn)行任何檢驗 外設(shè)可以進(jìn)行DMA校驗 存儲器和I/O控制線保持無效,不進(jìn)行傳送,DMA傳送類型,37,固定使用通道0和通道1 通道0的地址寄存器存源區(qū)地址 通道1的地址寄存器存目的區(qū)地址,通道1的字節(jié)數(shù)寄存器存?zhèn)魉偷淖止?jié)數(shù) 傳送由設(shè)置通道0的軟件請求啟動 每傳送一字節(jié)需用8個時鐘周期 前4個時鐘周期用通道0地址寄存器的地址從源區(qū)讀數(shù)據(jù)送入8237A的臨時寄存器 后4個時鐘周期用通道1地址寄存器的地址把臨時寄存器中的數(shù)據(jù)寫入目的區(qū),存儲器到存儲器的傳送,38,8237A的工作方式由寫模式

16、寄存器決定,存放相應(yīng)通道的方式控制字 選擇某個DMA通道的工作方式 其中用最低2位選擇哪個DMA通道,請看方式字的格式,39,方式字格式(寫B(tài)號,00 請求模式 01 單字節(jié)模式 10 數(shù)據(jù)塊模式 11 級聯(lián)模式,0 地址增量(加1) 1 地址減量(減1,0 禁止自動初始化 1 允許自動初始化,00DMA校驗 01DMA寫 10DMA讀 11非法 若D7D611,00 通道0 01 通道1 10 通道2 11 通道3,40,DMA控制器8237,自動預(yù)置功能: D4:當(dāng)設(shè)置為自動預(yù)置時,每當(dāng)DMA過程結(jié)束信號EOP*產(chǎn)生時(不論是內(nèi)部終止計數(shù)還是外部輸入該信號)用基地址寄存器和基字節(jié)數(shù)寄存器的

17、內(nèi)容,使相應(yīng)的現(xiàn)行寄存器恢復(fù)為初始值,包括恢復(fù)屏蔽位、允許DMA請求這樣就作好了下一次DMA傳送的準(zhǔn)備,40,41,DMA控制器8237,D3 D2:傳輸方式設(shè)定 寫輸入: I/O設(shè)備往內(nèi)存寫入數(shù)據(jù)。 讀輸入; 將內(nèi)存數(shù)據(jù)送往I/O設(shè)備。 校驗傳輸:用于對讀傳輸和寫傳輸功能進(jìn)行 校驗,是虛擬傳輸,8237此時只產(chǎn) 生EOP信號和地址信號,41,42,DMA控制器8237,42,8237,存 儲 器,I/O 設(shè)備,8237,寫傳輸 讀傳輸,存 儲 器,I/O 設(shè)備,A0A15,MEMW,IOR,D0D7,A0A7,MEMR,IOW,43,當(dāng)8237A沒有被外圍設(shè)備用來進(jìn)行DMA操作時,此時它處于

18、所謂空閑狀態(tài)。在這種狀態(tài)下,微處理器可以向這個DMA控制器輸出命令以及讀寫它的內(nèi)部寄存器,8.4 827A的時序,44,DMA控制器的工作時序,DMA空閑周期SI 過渡狀態(tài)S0 有效周期(S1、S2、S3、S4,8237A內(nèi)部狀態(tài)變化流程,45,8237A的工作時序空閑周期,8237A的任一通道都沒有DMA請求時 8237A由微處理器控制作為一個接口芯片 CPU可對8237A編程,或從8237A讀取狀態(tài) 8237A采樣CS*選片信號,該信號有效,CPU就要對8237A進(jìn)行讀/寫操作 8237A還采樣通道的請求輸入信號DREQ,該信號有效,就進(jìn)入有效周期,進(jìn)入有效周期,46,8237A的工作時序

19、有效周期,8237A采樣到外設(shè)有DMA請求,就脫離空閑周期進(jìn)入有效周期 8237A作為系統(tǒng)的主控芯片,控制DMA傳送操作 DMA傳送借用系統(tǒng)總線完成,其控制信號以及工作時序類似CPU總線周期,進(jìn)入DMA傳送時序,47,DMA傳送時序,48,a) S1 周期: DMAC在S1 狀態(tài)發(fā)出地址允許AEN信號,通過數(shù)據(jù)總線DB0DB7將高8位地址A8 A15鎖存起來。多數(shù)情況下,這幾位地址不需改變,故可直接進(jìn)入S2周期。 b) S2周期:修改存儲單元的低8位地址,(高8位已鎖存) 向I/O發(fā)請求回答信號DACK,準(zhǔn)備 傳送數(shù)據(jù)。 c) S3周期:送高8位地址A8 A15到地址總線,發(fā)出MEMR或IOR

20、讀命令,從內(nèi)存或I/O準(zhǔn)備傳送數(shù)據(jù)。 d) S4周期:發(fā)IOW或MEMR命令。 用普通時序時,每進(jìn)行一次DMA傳輸,一般用3個時鐘周期( S2 S3 S4 );壓縮時序,用兩個時鐘周期(S2 S4 ),此時只更新低8位地址,不修改高8位地址,48,8237A的工作周期、時序與模式,49,8237A的寄存器,8237A共有10種內(nèi)部寄存器,對它們的操作有時需要配合3個軟件命令 8237A的“軟件命令” 不需要通過數(shù)據(jù)總線寫入控制字 直接由地址和控制信號譯碼實現(xiàn),全部都用地址A0A3區(qū)分,50,1. 8237A 的控制寄存器,存放8237A的命令字 設(shè)置8237A芯片的操作方式 影響每個DMA通道

21、 復(fù)位時使命令寄存器清零 設(shè)置D20才使8237A可以作為DMA控制器,請看命令字的格式,8.5 8237A 的控制寄存器和狀態(tài)寄存器,51,命令字格式,8237A 控制/命令寄存器格式(寫8號):硬件設(shè)置與運(yùn)行控制 8237A硬件設(shè)置,52,DMA控制器8237,控制寄存器格式和有關(guān)問題,52,D7 D6 D5 D4 D3 D2 D1 D0,DO:為1則為內(nèi)存到內(nèi)存的傳送。此時通道0用于存放源地址,通道1用于存放目的地址及計數(shù)值,53,DMA控制器8237,D0D7,53,8237,暫存器,內(nèi)存,內(nèi)存,A0A15,MEMW,MEMR,D0D7,內(nèi)存到內(nèi)存的傳輸,54,DMA控制器8237,D

22、1:為1時,可實現(xiàn)內(nèi)存到內(nèi)存時,使源 地址不變而目的地址變化,用于實現(xiàn) 內(nèi)存的初始化。 D2:為0啟動8237工作,D2為1停止8237 作。 D3:為0普通時序,為1壓縮時序。 當(dāng)?shù)刂贩秶鷥H用于A7A0時的DMA時 序為壓縮時序,即一次可傳送最多 256個數(shù)據(jù),54,55,DMA通道的優(yōu)先權(quán)方式,D4=0 固定優(yōu)先權(quán)方式優(yōu)先權(quán)固定 通道0優(yōu)先權(quán)最高,通道1其次,通道2再次,通道3最低 D4=1 循環(huán)優(yōu)先權(quán)方式優(yōu)先權(quán)循環(huán)變化 最近一次服務(wù)的通道在下次循環(huán)中變成最低優(yōu)先權(quán),其他通道依次輪流相應(yīng)的優(yōu)先權(quán),DMA傳送不存在嵌套,D5:為0不擴(kuò)展寫信號;為1擴(kuò)展寫信號,使MEMW,IOW擴(kuò)展2個時鐘周

23、期,56,DMA控制器8237,2. 狀態(tài)寄存器格式,56,D7 D6 D5 D4 D3 D2 D1 D0,D0 D1 D2 D3:表示4個通道計數(shù)結(jié)束狀態(tài) 1:結(jié)束; 0:未結(jié)束 D4 D5 D6 D7:表示4個通道DMA請求情 況 1:申請; 0:無申請,讀8號,57,3. 請求寄存器,存放軟件DMA請求狀態(tài) 除硬件DMA請求外,當(dāng)工作在數(shù)據(jù)塊傳送方式時也可以通過軟件發(fā)出DMA請求 若是存貯器到存貯器傳送,則必須由軟件請求啟動通道0,請看請求字的格式,58,請求字格式,8237A DMA 請求寄存器 格式(寫9號,D6: 1:DREQ高電平有效,59,屏蔽寄存器,控制外設(shè)硬件DMA請求是否

24、被響應(yīng)(為0允許),各個通道互相獨立。3種方法: 單通道屏蔽字只對一個DMA通道屏蔽位進(jìn)行設(shè)置 主屏蔽字對4個DMA通道屏蔽位同時進(jìn)行設(shè)置 清屏蔽寄存器命令使4個屏蔽位都清零(允許) 復(fù)位使4個通道全置于屏蔽狀態(tài) 當(dāng)一個通道的DMA過程結(jié)束,如果不是工作在自動初始化方式,則這一通道的屏蔽位置位,必須再次編程為允許,才能進(jìn)行下次DMA傳送,請看屏蔽字的格式,60,單通道屏蔽字格式,8237A 屏蔽寄存器格式 (單一位)(寫A號,61,主屏蔽字格式,Di0 清通道I屏蔽位Di1 置通道I屏蔽位,8237A 全4位 MASK 寄存器 格式 (寫F號,62,臨時寄存器,在存儲器到存儲器的傳送方式下,臨

25、時寄存器保存從源存儲單元讀出的數(shù)據(jù),該數(shù)據(jù)又被寫入到目的存儲單元 傳送完成,臨時寄存器只會保留最后一個字節(jié),可由CPU讀出 復(fù)位使臨時寄存器內(nèi)容為零,63,4. 8237的字節(jié)指針(1) 現(xiàn)行地址寄存器,保持DMA傳送的當(dāng)前地址值 每次傳送后該寄存器的值自動加1或減1 這個寄存器的值可由CPU寫入和讀出,基地址寄存器 存放初始值,64,2) 現(xiàn)行字節(jié)數(shù)寄存器,保持DMA傳送的剩余字節(jié)數(shù) 每次傳送后,該寄存器的值減1 這個寄存器的值可由CPU寫入和讀出 該寄存器的值減至0,再減1(從0減到FFFFH)時,終止計數(shù),基字節(jié)數(shù)寄存器 存放初始值,傳送N個字節(jié),初始值為N1,65,讀寫通道寄存器,CP

26、U與8237A之間通過8位數(shù)據(jù)總線交換信息,8237A的通道寄存器均為16位 需要兩次讀寫操作才能實現(xiàn)CPU與8237A之間的一個完整數(shù)據(jù)的交換 8237A內(nèi)含一個高/低觸發(fā)器,用來控制讀寫通道寄存器的高、低字節(jié),66,高/低觸發(fā)器,該觸發(fā)器為0,控制讀寫低字節(jié) 該觸發(fā)器為1,控制讀寫高字節(jié) 軟、硬件復(fù)位后,觸發(fā)器為0 每次讀寫通道寄存器,自動改變觸發(fā)器狀態(tài)。如果對16位寄存器的操作用兩次連續(xù)讀寫進(jìn)行,就不必清除這個觸發(fā)器 清除高/低觸發(fā)器軟件命令(A3A2A1A01100)將使高/低觸發(fā)器清零,67,3個軟件命令,清除高/低觸發(fā)器軟件命令 A3A2A1A01100=0CH,使高/低觸發(fā)器清零

27、 主清除命令 A3A2A1A01101=0DH,使高/低觸發(fā)器清零 還使命令、狀態(tài)、請求、臨時寄存器清零 使屏蔽寄存器置為全1(禁止DMA請求) 主清除命令與硬件的RESET信號具有相同的功能 清屏蔽寄存器命令 A3A2A1A01110=0EH,使4個屏蔽位都清零(允許DMA請求,68,內(nèi)部寄存器的尋址問題,占用16個端口地址 問題:如此多的寄存器,采用什么方法只用16個端口地址就能訪問到? 端口分配表(見下頁,68,69,8237內(nèi)部寄存器的尋址,70,8.7 8237的編程,1. 編程步驟 8237的編程通??砂慈缦虏襟E進(jìn)行: (1) 輸出主清除命令;總清時只要求對總清地址進(jìn)行寫操作并不關(guān)

28、心寫入什么數(shù)據(jù)。 (2) 置頁面寄存器; (3) 寫入基和當(dāng)前地址寄存器; (4) 寫入基和當(dāng)前字節(jié)計數(shù)寄存器; (5) 寫入模式寄存器; (6) 寫入命令寄存器; (7) 寫入屏蔽寄存器; (8) 寫入請求寄存器,70,71,其中第(8)步是采用軟件DMA請求時所需要的,由此可將相應(yīng)的請求命令字寫入指定通道,從而啟動DMA傳送過程; 若為硬件DMA請求,則無需此步驟,只要在完成了(1)(7)步編程后,由通道的DREQ信號即可啟動DMA傳送過程,71,72,編程舉例 在IBMPC系統(tǒng)中,試?yán)?237通道1,將內(nèi)存8000H:0H開始的16K字節(jié)數(shù)據(jù)傳送至磁盤(地址增量傳送)。 要求采用塊傳送

29、方式,傳送完不自動預(yù)置,DREQ和DACK均為高電平有效,固定優(yōu)先級,普通時序,不擴(kuò)展寫信號。 系統(tǒng)中8237的端口地址為00H0FH。 通道1“頁面寄存器”的端口地址為83H,72,73,89H,塊方式,讀傳送,通道1,地址增量,非自動初始化,1)確定模式字,73,74,2)確定命令字,非存儲器至 存儲器傳送,無意義,控制器允許,普通時序,DACK 高電平有效,DREQ 高電平有效,正常寫,固定優(yōu)先級,80H,74,75,3)確定屏蔽字,01H,通道1的屏蔽位復(fù)位,75,76,初始化程序如下,OUT 0DH,AL ; 輸出主清除命令 MOV AL, 08H ; 置通道1“頁面寄存器” 頁面地

30、址為8(A19 A16=08H) OUT 83H, AL MOV AL, 00H ; 寫入基和當(dāng)前地址低8位 OUT 02H,AL MOV AL,00H ; 寫入基和當(dāng)前地址高8位 OUT 02H,AL MOV AL,00H ; 寫入基和當(dāng)前字節(jié)計數(shù)寄存器低8位 OUT 03H,AL MOV AL,40H ; 寫入基和當(dāng)前字節(jié)計數(shù)寄存器高8位 OUT 03H,AL MOV AL,89H ; 輸出模式字 OUT 0BH,AL MOV AL,80H ; 輸出命令字 OUT 08H,AL ;8237內(nèi)部寄存器的尋址 MOV AL,01H ; 輸出屏蔽字 OUT 0AH,AL,76,77,8237A的

31、編程(續(xù)1,DMA通道的DMA傳送編程: 將存儲器起始地址寫入地址寄存器(如果采用地址減量工作,則是結(jié)尾地址) 將本次DMA傳送的數(shù)據(jù)個數(shù)寫入字節(jié)數(shù)寄存器(個數(shù)要減1) 確定通道的工作方式,寫入方式寄存器 寫入屏蔽寄存器復(fù)位通道屏蔽位,允許DMA請求,請看實例,78,8237A的編程(續(xù)2,兩種方法反映DMA過程結(jié)束(即終止計數(shù)、發(fā)生TC): 狀態(tài)寄存器的低4位 信號(需配合DACK響應(yīng)信號確定通道) 應(yīng)用程序處理DMA傳送過程結(jié)束: 采用軟件查詢狀態(tài)字 采用硬件中斷在中斷服務(wù)程序處理,79,8237A的應(yīng)用,8237A在PC系列機(jī)的使用情況 DMA寫傳送 DMA設(shè)定子程序,80,8237A在

32、IBM PC系列機(jī)上的應(yīng)用,IBM PC/XT機(jī)使用一片8237A 通道0:動態(tài)存貯器DRAM刷新 通道1:用戶使用或SDLC卡 通道2:內(nèi)存與軟盤的高速數(shù)據(jù)交換 通道3:內(nèi)存與硬盤的高速數(shù)據(jù)交換 IBM PC/AT機(jī)采用兩片8237A DMAC1包含通道03,支持8位數(shù)據(jù)傳送 DMAC2組成通道47,通道57支持16位數(shù)據(jù)傳送,通道4用于級連,81,1) 8237A的初始化,8237A初始化寫入命令字為0,確定了: DREQ高電平有效、DACK低電平有效,固定優(yōu)先權(quán)(依次為通道0、17) 不進(jìn)行存儲器到存儲器的數(shù)據(jù)傳輸 PC機(jī)用DMA控制電路進(jìn)行刷新,所以DMA傳送不能長時間占用總線(不應(yīng)超

33、過15s),一般只能使用單字節(jié)傳送方式 在PC系列機(jī)上,用戶如果使用DMA通道,要注意遵從上述系統(tǒng)要求。除了要禁止8237A工作,用戶通常不必操作命令寄存器,82,2) 高位地址的形成,DMA傳送時的高位地址由“頁面寄存器”提供 頁面寄存器由CPU的輸出指令實現(xiàn)寫入 DMAC1的通道0通道3:8237A提供系統(tǒng)A0A15低16位地址,頁面寄存器輸出系統(tǒng)A16A23高8位地址 DMAC2的通道5通道7:8237A提供系統(tǒng)A1A16的16位地址,而系統(tǒng)A0被強(qiáng)迫為邏輯0,頁面寄存器僅輸出高7位地址A17A23,頁面寄存器不會自動增減量 高位地址在DMA傳送過程中不改變,83,DMA通道0的刷新編程,out 0dh,al;DMAC主清除命令 mov al,0 out 08,al;DMAC命令字 mov al,0 out

溫馨提示

  • 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

提交評論