微機接口技術(shù)-第3章講訴課件_第1頁
微機接口技術(shù)-第3章講訴課件_第2頁
微機接口技術(shù)-第3章講訴課件_第3頁
微機接口技術(shù)-第3章講訴課件_第4頁
微機接口技術(shù)-第3章講訴課件_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機接口技術(shù)NanjingUniversityofScience&TechnologyNanjingUniversityofScience&Technology本課程主要內(nèi)容第2章總線技術(shù)第5章人機接口技術(shù)第4章串行通信及接口技術(shù)第3章DMA與DMA控制器第1章接口技術(shù)基礎(chǔ)第6章D/A、A/D轉(zhuǎn)換及接口技術(shù)NanjingUniversityofScience&Technology

高速外部設(shè)備和存儲器在進行數(shù)據(jù)交換時,一般是在CPU的控制下進行的,即CPU首先執(zhí)行一條輸入指令,發(fā)出訪問源數(shù)據(jù)所在地的地址碼和讀信號,并將傳送的數(shù)據(jù)通過數(shù)據(jù)總線讀入CPU的累加器中暫存,然后再執(zhí)行一條輸出指令,發(fā)出訪問目的數(shù)據(jù)所在地的地址碼和寫信號,將暫存的這些數(shù)據(jù)送入外部設(shè)備或送入存儲器。用此方法的傳輸速率約為幾十KB/s,速度太慢,對于大量的數(shù)據(jù)傳送很費時。DMA(DirectMemoryAccess)概述NanjingUniversityofScience&Technology為此,產(chǎn)生了直接存儲器存取技術(shù)。它是采用一個DMA控制器,在進行DMA存取時,CPU讓出總線控制權(quán),不再采用輸入、輸出指令的方法進行數(shù)據(jù)存取,而用硬件方法由DMA控制器控制地址總線、控制總線和數(shù)據(jù)總線,存儲器和外設(shè)直接交換數(shù)據(jù),減少了中間環(huán)節(jié),提高了傳送速度,傳送速率可達1.6MB/s。DMA(DirectMemoryAccess)概述NanjingUniversityofScience&TechnologyDMA控制器的原理圖NanjingUniversityofScience&Technology外部設(shè)備向DMA控制器發(fā)出DMA請求。如果DMA控制器未被屏蔽,則在接到DMA請求后,向CPU發(fā)出總線請求,希望CPU讓出總線控制權(quán),由DMA控制器控制。CPU執(zhí)行完現(xiàn)行的總線周期,若CPU同意讓出總線控制權(quán),向DMA控制器發(fā)出響應(yīng)請求的回答信號。DMA控制器接管系統(tǒng)總線,向外部設(shè)備發(fā)出DMA請求響應(yīng)的應(yīng)答信號。進行DMA傳送。DMA控制器給出傳送數(shù)據(jù)的內(nèi)存地址,傳送的字節(jié)數(shù)及發(fā)出RD/WR信號;在DMA控制下,每傳送一個字節(jié),字節(jié)計數(shù)器減1,直至計數(shù)器之值為0。傳送結(jié)束,DMA控制器撤除要求CPU讓出總線控制權(quán)的申請,CPU重新控制總線,恢復CPU的工作。DMA方式的數(shù)據(jù)傳輸過程NanjingUniversityofScience&Technology

DMA傳送不僅用于高速外部設(shè)備與存儲器之間的數(shù)據(jù)傳送,還可用于存儲器與存儲器之間,外部設(shè)備與外部設(shè)備之間的數(shù)據(jù)傳送。通常在微機系統(tǒng)中,圖像顯示、磁盤存取、磁盤間的數(shù)據(jù)傳送和高速的數(shù)據(jù)采集系統(tǒng)均可采用DMA數(shù)據(jù)交換技術(shù)。DMA方式的數(shù)據(jù)傳輸過程NanjingUniversityofScience&TechnologyIntel8237ADMA控制器

DMA控制器8237A是Intel86系列微處理器的配套芯片,可用來接管CPU對總線的控制權(quán),在存儲器與高速外設(shè)之間建立直接進行數(shù)據(jù)塊傳送的高速通路。8237ADMA控制器有四個通道,每個通道都可用于DMA數(shù)據(jù)傳送,也就是說一片8237可以帶四臺外部設(shè)備。在IBMPC/XT微型機中,8237A占據(jù)00H~0FH共16個端口地址。對8237A控制器的4個通道安排如下:

CH0:用作動態(tài)存儲器的刷新控制;

CH1:為用戶預(yù)留;

CH2:軟盤驅(qū)動器數(shù)據(jù)傳輸用的DMA控制;

CH3:硬盤驅(qū)動器數(shù)據(jù)傳輸用的DMA控制;NanjingUniversityofScience&Technology

8237DMA控制器是一個40引腳的雙列直插封裝芯片。8237A主從兩面性:作為DMAC,即8237A控制總線時是主模塊。這是8237工作的主方式;作為I/O芯片,8237A可被CPU讀寫,是系統(tǒng)總線的從設(shè)備,是8237A的從方式。運行時注意8237A主/從地址的變化。8237可編程DMA控制器Intel8237ADMA控制器的結(jié)構(gòu)圖NanjingUniversityofScience&TechnologyRESET——復位輸入端,高電平有效。復位時,屏蔽寄存器被置1,其他寄存器均清0。CS#——片選輸入端,低電平有效,由A4~A15譯碼得到。為低電平時,8237A被選中,CPU可以對8237A進行讀寫(進行預(yù)置或讀取工作狀態(tài))。A3~A0

——最低的4位地址線,它們是雙向信號引腳。DMA控制器作為從模塊時,A3~A0作為輸入端,用來選擇DMAC內(nèi)部的16個端口地址。IOR#——輸入/輸出設(shè)備讀信號,雙向、三態(tài)、低電平有效。在DMA控制器作為從模塊時,IOR為輸入控制信號。此信號有效時,CPU讀取DMA控制器中內(nèi)部寄存器的值。IOW#——輸入/輸出設(shè)備寫信號,和IOR類似,在DMA控制器作為從模塊時,是輸入信號。此信號有效時,CPU向DMA控制器的內(nèi)部寄存器中寫入信息,即進行編程。DB7~DB0——8位雙向三態(tài)數(shù)據(jù)線。在DMA控制器作為從模塊時,CPU通過DB7~DB0對8237A進行讀寫。8237A作為從模塊時的引腳信號NanjingUniversityofScience&Technology地址相關(guān)信號:A3~A0——DMAC為主模塊時,這4個信號端工作于輸出狀態(tài),提供存儲器的最低4位地址。A7~A4——這4位地址線始終工作于輸出狀態(tài)或者浮空狀態(tài)。它們在DMA傳輸時提供存儲器的中間4位地址。DB7~DB0——DMAC為主模塊時,DB7~DB0輸出當前地址寄存器中的高8位地址,并通過信號ADSTB打入外部鎖存器,這樣,和A7~A0輸出的低8位地址一起構(gòu)成16位地址。ADSTB——地址選通信號,輸出,高電平有效。此信號有效時,將DMA控制器的當前地址寄存器中的高8位地址經(jīng)DB7~DB0送到外部鎖存器。AEN——地址允許信號,輸出,高電平有效。AEN使地址鎖存器中鎖存的高8位地址以及頁面地址寄存器的4位地址一起送到地址總線上,與芯片直接輸出的低8位地址共同構(gòu)成內(nèi)存單元地址的20位地址。AEN信號也使與CPU相連的地址鎖存器無效。這樣,就保證了地址總線上的信號是來自DMA控制器,而不是來自CPU。8237A作為主模塊時的引腳信號NanjingUniversityofScience&Technology對存儲器/外設(shè)接口的讀寫控制信號:IOR#——DMAC作為主模塊時,IOR輸出外設(shè)接口的讀控制信號,此信號有效時,I/O接口部件中的數(shù)據(jù)被讀出送往數(shù)據(jù)總線。IOW#——DMAC作為主模塊時,IOW輸出外設(shè)接口的寫控制信號,此信號有效時,存儲器中讀出的數(shù)據(jù)被寫入I/O接口中。READY——準備就緒信號輸入端,高電平有效。當所用的存儲器或I/O接口的速度比較慢,需要延長傳輸時間時,使READY端處于低電位,8237A會自動插入等待周期。數(shù)據(jù)準備就緒時,READY端為高電平,表示可以進行數(shù)據(jù)傳輸。MEMR#——存儲器讀信號,低電平有效。此信號有效時,所選中的存儲器單元的內(nèi)容被讀到數(shù)據(jù)總線。MEMW#——存儲器寫信號,低電平有效。此信號有效時,數(shù)據(jù)總線上的內(nèi)容被寫入選中的存儲單元。8237A作為主模塊時的引腳信號NanjingUniversityofScience&TechnologyDMA聯(lián)絡(luò)信號DREQ——通道DMA請求信號,輸入。每個通道對應(yīng)一個DREQ信號端。DREQ的極性可以通過編程來選擇。當外設(shè)接口要求DMA傳輸時,便使DREQ處于有效電平,直到DMAC控制器送來DMA響應(yīng)信號DACK以后,I/O接口才撤除DREQ的有效電平。DACK——通道DMA應(yīng)答信號,輸出。這是DMAC送給I/O接口的回答信號,每個通道對應(yīng)一個DACK信號端。DMAC獲得CPU送來的總線允許信號HLDA以后,便產(chǎn)生DACK信號送到相應(yīng)的外設(shè)接口。DACK信號的極性可以通過編程選擇。在進行DMA傳輸時,系統(tǒng)地址總線上傳送的是存儲器地址,該信號相當于IO接口的地址選擇信號。8237A作為主模塊時的引腳信號NanjingUniversityofScience&TechnologyDMA聯(lián)絡(luò)信號HRQ(holdrequest)——總線請求信號,輸出。8237A收到外設(shè)接口發(fā)來DREQ信號后,如果該通道的DMA請求沒有被屏蔽,則DMA控制器的HRQ端輸出有效電平,向CPU發(fā)出總線請求。HLDA(holdacknowledge)——總線響應(yīng)信號,輸入。DMAC向CPU發(fā)總線請求信號HRQ以后,CPU發(fā)回的總線響應(yīng)信號。8237A收到該信號后,便獲得了總線控制權(quán)。HLDA也稱為總線保持回答信號。EOP(Endofprocess)——DMA傳輸過程結(jié)束信號,雙向。從外部往DMAC送一個EOP信號時,DMA傳輸過程被強制性地結(jié)束。另一方面,當DMAC的任一通道中計數(shù)結(jié)束時,會從EOP輸出一個有效電平,作為DMA傳輸結(jié)束信號。不論是從外部終止DMA過程,還是內(nèi)部計數(shù)結(jié)束終止DMA過程,都會使DMA控制器的內(nèi)部寄存器復位。可以使用EOP信號向CPU申請中斷,以便及時處理這一事件。8237A作為主模塊時的引腳信號NanjingUniversityofScience&Technology其它引腳信號:CLK——時鐘輸入端,8237A的時鐘頻率為3MHz,8237A-4的時鐘頻率為4MHz,8237A-5的時鐘頻率為5MHz。后面兩種DMA控制器是8237A的改進型,工作速度比較高,但工作原理及使用方法和8237A完全一樣。電源,地——提供8237A工作所需要的+5V電源和接地信號。8237A作為主模塊時的引腳信號NanjingUniversityofScience&Technology8237的工作周期

Intel8237有兩種主要的工作周期,即空閑周期和有效周期,每一個周期又由若干個時鐘周期組成。1、空閑周期SI(IdleCycle)8237A復位后就處于空閑周期,在此周期,CPU可對8237A作初始化編程,或者雖然已經(jīng)初始化,但還未有DMA請求輸入??臻e周期中,8237A要檢查DREQ的狀態(tài),以確定是否有通道請求DMA服務(wù)。同時也對CS端采樣,判定CPU是否要對8237A進行讀寫操作,如CS為低電平,且HLDA也為低電平,就使芯片進入編程工作狀態(tài)。NanjingUniversityofScience&Technology8237的工作周期2、有效周期(ActiveCycle):由S0~S4五種周期組成。1)S0:等待周期。它是8237A接到外設(shè)的DREQ請求,并向CPU發(fā)出了HRQ后進入的一個周期,在此期間等待CPU讓出總線控制權(quán)。在得到來自CPU的HLDA響應(yīng)后,結(jié)束S0狀態(tài),準備進入DMA操作過程。在S0期間,8237A仍可以接受來自CPU的讀寫操作。一個完整的DMA傳輸(完成一個字節(jié)傳輸)應(yīng)包括4個時鐘周期,即S1~S4。對于速度稍慢的外設(shè),也可以用READY信號在S3與S4之間產(chǎn)生等待周期Sw。NanjingUniversityofScience&Technology8237的工作周期2)S1周期:8237用DB0~DB7送出高8位地址A8~A15,同時使ADSTB有效,將高8位地址送入鎖存器(在S2的下降沿信號被鎖存)。由于S1是CPU已經(jīng)釋放總線后進入的狀態(tài),所以8237A還使AEN有效。但是,在傳輸一段連續(xù)的數(shù)據(jù)時,存儲器地址總是相鄰的,它們的高8位地址往往是不變的。這樣在進行下一個字節(jié)的傳輸時,就沒有必要再把高位地址鎖存一次,這種情況下S1可以省略。3)S2期間:8237A首先向外設(shè)送出DACK信號,啟動外設(shè)開始工作。同時開始送出讀數(shù)據(jù)的控制信號。如果是DMA讀操作,就送出MEMR到存儲器。反之,就把IOR送到外設(shè)。4)S3期間:送出寫操作所需的控制信號。如DMA讀,就將IOW送外設(shè);反之則將MEMW送存儲器。S3狀態(tài)結(jié)束時,在下降沿檢測READY端的狀態(tài),若為低電平,就在S3后產(chǎn)生一個Sw

周期,延續(xù)S3的各種狀態(tài)。在S3或Sw結(jié)束處若檢測到高電平,就進入S4周期。NanjingUniversityofScience&Technology8237的工作周期

4)S4周期:結(jié)束本次一個字節(jié)傳輸。如果整個DMA傳輸結(jié)束,后面緊接的是SI周期,如果還要繼續(xù)進行下一個字節(jié)傳輸,再次重復進行S1~S4的過程。如果進行存儲器之間數(shù)據(jù)傳輸,一個字節(jié)的傳輸要經(jīng)過兩個階段:第一階段是從源地址中讀出一個字節(jié),存入8237A的暫存寄存器,第二階段將這個字節(jié)寫入目的地址中。每個階段的完成都要經(jīng)過4個周期時間。此外由于READY的作用,還使8237A增加了一個Sw

周期,使全部周期分為7種。8237A的典型時序NanjingUniversityofScience&Technology

8237A是一個可編程的集成電路芯片,共占用了16個端口地址。其中每個通道有2個專用的地址,其余8個地址由各通道共用。與之配合工作的還有地址鎖存器,用來鎖存數(shù)據(jù)線DB7~DB0上分時送出的地址信號A15~A8;還有頁面寄存器,端口地址為83H,用來產(chǎn)生地址信號A19~A16,與8237A發(fā)出的16位地址組合得到20位地址信號。8237A的編程使用Intel8237ADMA控制器的結(jié)構(gòu)圖NanjingUniversityofScience&Technology1、基地址寄存器和基字節(jié)數(shù)寄存器

基地址寄存器(16位):存放需傳送的數(shù)據(jù)塊的第一個字節(jié)的地址。故DMA控制器一次可以傳輸?shù)淖畲髷?shù)據(jù)塊是64KB?;止?jié)數(shù)寄存器(16位):存放需傳送的數(shù)據(jù)塊的字節(jié)數(shù)。8237的寄存器組和編程這兩個寄存器的內(nèi)容在對8237初始化時由程序?qū)懭?,先寫低字?jié),后寫高字節(jié),其內(nèi)容在整個數(shù)據(jù)塊的DMA傳輸過程中保持不變。這兩個寄存器的內(nèi)容只能寫入,不能讀出。寫入后,其內(nèi)容還同時傳送到當前地址寄存器和當前字節(jié)數(shù)寄存器。NanjingUniversityofScience&Technology2、當前地址和當前字節(jié)數(shù)寄存器(16位)當前地址寄存器:存放DMA傳送的當前地址值,每次DMA傳送后,該寄存器的值自動增量或減量。該寄存器的值可由CPU讀出(先低位,后高位)。若設(shè)置為自動預(yù)置,則在每次計數(shù)結(jié)束后,自動恢復為它的初始值(即保存在基地址寄存器中的初值)。當前字節(jié)數(shù)寄存器:每次傳送后,該寄存器的值自動減1。該寄存器的值可由CPU讀出。若設(shè)置為自動預(yù)置,則在每次計數(shù)結(jié)束后,自動恢復為它的初始值(即保存在基字節(jié)數(shù)寄存器中的初值)。8237的寄存器組和編程NanjingUniversityofScience&Technology8237的內(nèi)部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0內(nèi)部觸發(fā)器DB0~DB70基/當前地址寫

010010

0000000001A0~A7A8~A15當前地址讀

001001

0000000001A0~A7A8~A15基和當前字節(jié)數(shù)寫

010010

0001000101W0~W7W8~W15當前字節(jié)數(shù)讀

001001

0001000101W0~W7W8~W151基/當前地址寫

010010

0010001001A0~A7A8~A15當前地址讀

001001

0010001001A0~A7A8~A15基和當前字節(jié)數(shù)寫

010010

0011001101W0~W7W8~W15當前字節(jié)數(shù)讀

001001

0011001101W0~W7W8~W15NanjingUniversityofScience&Technology8237的內(nèi)部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0內(nèi)部觸發(fā)器DB0~DB72基/當前地址寫

010010

0100010001A0~A7A8~A15當前地址讀

001001

0100010001A0~A7A8~A15基/當前字節(jié)數(shù)寫

010010

0101010101W0~W7W8~W15當前字節(jié)數(shù)讀

001001

0101010101W0~W7W8~W153基/當前地址寫

010010

0110011001A0~A7A8~A15當前地址讀

001001

0110011001A0~A7A8~A15基/當前字節(jié)數(shù)寫

010010

0111011101W0~W7W8~W15當前字節(jié)數(shù)讀

001001

0111011101W0~W7W8~W15NanjingUniversityofScience&Technology例:某外設(shè)通過通道1傳送100個字節(jié)的數(shù)據(jù)到起始地址為8000H的內(nèi)存區(qū)域,8237A芯片的片選地址是00H,CPU為8088。則初始化程序如下: MOV AL,00H;寫入存儲區(qū)首地址低8位 OUT 02H,AL;02H為通道1的基地址寄存器的端口地址 MOV AL,80H;寫入存儲區(qū)首地址高8位 OUT 02H,AL MOV AL,64H;傳送字節(jié)數(shù)的低8位 OUT 03H,AL;03H為通道1的基字節(jié)寄存器的端口地址 MOV AL,00H;傳送字節(jié)數(shù)的高8位 OUT 03H,AL

8237的寄存器組和編程NanjingUniversityofScience&Technology8237A每個通道都有一個模式寄存器,用于控制本通道的工作方式,CPU可通過XBH端口地址將控制字寫入該寄存器。模式寄存器(ModeRegister)模式選擇請求傳輸模式00單字節(jié)傳輸模式001111塊傳輸模式級聯(lián)傳輸模式地址增量選擇地址加10地址減11自動預(yù)置功能選擇禁止0

允許1

通道選擇

0選0#

Channel

00

1

11

01選1#

Channel選2#

Channel選3#

Channel傳輸類型選擇

00校驗傳輸001111

XX寫傳輸

讀傳輸非法D7D6=11D0D1D2D3D4D5D6D7NanjingUniversityofScience&Technology

8237A一共有四種工作模式,分別是單字節(jié)傳輸模式、塊傳輸模式、請求傳輸模式和級聯(lián)模式。單字節(jié)傳輸模式

8237A完成1個字節(jié)傳輸后,8237A釋放系統(tǒng)總線,一次DMA傳輸結(jié)束。如果收到新的DMA請求,則重新申請總線,重復上述過程。這種方式下,CPU可以在每個DMA周期結(jié)束后控制總線,進行數(shù)據(jù)傳輸,所以不會對系統(tǒng)的運行產(chǎn)生大的影響。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology

8237A一共有四種工作模式,分別是單字節(jié)傳輸模式、塊傳輸模式、請求傳輸模式和級聯(lián)模式。塊傳輸方式

DMA控制器獲得總線控制權(quán)后,可以連續(xù)進入多個DMA周期,進行多個字節(jié)的傳輸(最多64KB)。當字節(jié)計數(shù)器減為0,或者收到外部輸入的強制停止命令(從EOP引腳輸入一個低電平信號)時,8237A才釋放總線而結(jié)束傳輸。在數(shù)據(jù)傳輸期間無需保持DREQ為有效電平。顯然,這種方式可以獲得最高的數(shù)據(jù)傳輸速度。在數(shù)據(jù)傳輸期間,CPU不能訪問總線(包括取指令)。如果一次傳輸?shù)臄?shù)據(jù)較多,這種方式會對系統(tǒng)工作產(chǎn)生一定的影響。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology

8237A一共有四種工作模式,分別是單字節(jié)傳輸模式、塊傳輸模式、請求傳輸模式和級聯(lián)模式。請求傳輸模式這種方式與塊傳輸類似,申請一次總線可以連續(xù)進行多個數(shù)據(jù)的傳輸,直到DREQ為無效電平或計數(shù)結(jié)束。但是,在每傳輸1個字節(jié)后,8237A都對外設(shè)接口的DMA請求信號線DREQ進行測試,如果檢測到DREQ端變?yōu)闊o效電平,則馬上暫停傳輸。當DREQ又變?yōu)橛行щ娖綍r,就接著進行下一個數(shù)據(jù)的傳輸。這種方式允許外設(shè)由于某種原因發(fā)生的數(shù)據(jù)不連續(xù),按照外設(shè)的最高速度進行數(shù)據(jù)傳輸,使用比較靈活。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology

8237A一共有四種工作模式,分別是單字節(jié)傳輸模式、塊傳輸模式、請求傳輸模式和級聯(lián)模式。級聯(lián)傳輸方式幾個8237A可以進行級聯(lián),一片8237A用作主片,其余用作從片,構(gòu)成主從式DMA系統(tǒng)。所謂級聯(lián),就是從片收到外設(shè)接口的DMA請求信號后,不是向CPU申請總線,而是向DMA控制器主片申請,再由主片向CPU申請。一片主片最多可以連接四片從片。這樣,五片8237A構(gòu)成的二級DMA系統(tǒng),可以得到16個DMA通道。級聯(lián)時,通過編程使主片的模式寄存器設(shè)置為級聯(lián)傳輸方式,從片設(shè)置成上面的三種方式之一。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology主從DMA系統(tǒng)NanjingUniversityofScience&Technology在前三種工作模式下,DMA傳送有三種類型:DMA讀傳送(存儲器到I/O接口的傳送)

把數(shù)據(jù)由存儲器傳送至外設(shè),操作時由MEMR#有效從存儲器讀出數(shù)據(jù),IOW#有效把數(shù)據(jù)傳送給外設(shè)。(2)DAM寫傳送(I/O接口到存儲器的傳送)

把外設(shè)輸入的數(shù)據(jù)寫至存儲器中,操作時由IOR#有效從外設(shè)輸入數(shù)據(jù),MEMW#有效把數(shù)據(jù)寫入內(nèi)存。(3)校驗傳送校驗傳送實際上不傳送數(shù)據(jù),主要用來對讀傳送或?qū)憘魉凸δ苓M行校驗。在校驗傳送時8237A保留對系統(tǒng)總線的控制權(quán),但不產(chǎn)生對I/O接口和存儲器的讀寫信號,只產(chǎn)生地址信號,計數(shù)器進行減1計數(shù),響應(yīng)EOP信號。校驗傳送一般用于器件測試。注意DMA的讀寫方向是以外設(shè)為參考設(shè)備的。模式寄存器(ModeRegister)NanjingUniversityofScience&Technology例如:PC機軟盤讀寫操作,選擇用8237的通道2作DMA傳輸,若采用單字節(jié)傳送,地址增量,不自動預(yù)置,則:從軟盤讀(I/O→M,DMA寫傳輸)模式控制字為:01000110B=46H向軟盤寫(M→I/O,DMA讀傳輸)模式控制字為:01001010B=4AH校驗軟盤模式控制字為:01000010B=42H模式寄存器(ModeRegister)NanjingUniversityofScience&Technology8位的寄存器,用來控制8237的工作,必須由CPU編程寫入至X8H端口地址??赏ㄟ^RESET信號或DMA的主清除指令使其復位??刂萍拇嫫?CommandRegistered)MEM傳輸DACK有效電平低電平有效0高電平有效1

01DREQ有效電平高電平有效擴展寫

MEM0

11

0

低電平有效不擴展寫

0擴展寫1D3=1

X優(yōu)先級類型01固定優(yōu)先級循環(huán)優(yōu)先級禁止允許Channel0地址保持不變

X源地址可變保持源地址不變

D0=08237A工作01

Enable8237A

Disable8237A時序類型01

X普通時序壓縮時序D0=1D0D1D2D3D4D5D6D7NanjingUniversityofScience&Technology存儲器到存儲器傳送通道0:地址寄存器:為源區(qū)的地址字節(jié)數(shù)寄存器:為要傳送的字節(jié)數(shù)通道1:地址寄存器:為目的區(qū)的地址字節(jié)數(shù)寄存器:要傳送的字節(jié)數(shù)傳送過程:傳送由通道0的軟件DREQ啟動,8237按正常方式向CPU發(fā)出DMA請求信號HRQ,待CPU用HLDA回答后,傳送就可以開始了。傳送時先將源區(qū)的數(shù)據(jù)放入8237的臨時寄存器中,然后再傳送到目的區(qū),每傳送一個字節(jié)需要8個時鐘周期。控制寄存器(CommandRegistered)NanjingUniversityofScience&Technology8237A的啟動和停止:D2=0啟動8237A工作,D2=1停止8237的工作。該位影響所有通道,一般情況下應(yīng)使它為0(啟動工作)時序類型普通時序:每傳輸一個字節(jié)一般需要3個時鐘周期,S1用于鎖定高8位地址,在高8位地址不變時,S1是可以省略的。S3是一個延長周期,以保證可靠的讀寫操作。壓縮時序:在追求高速傳輸,且器件的讀寫速度又可以跟得上時,S3也是可以省略的。于是一個字節(jié)的傳輸可壓縮到2個時鐘周期(S2,S4)就可完成。但是,使用壓縮時序時,8237A只改變低8位地址,因此傳輸?shù)淖止?jié)數(shù)限制在256個字節(jié)以內(nèi)。擴展寫:通常寫控制信號在S3才變得有效,擴展寫表示讀、寫脈沖同時產(chǎn)生,在S2就開始變得有效。這種做法可以使一些需要較長時間寫入的設(shè)備能得到足夠的寫入時間。使用壓縮時序時,這一位無意義??刂萍拇嫫?CommandRegistered)NanjingUniversityofScience&Technology例如:要求8237按如下要求工作:禁止存儲器到存儲器傳送,按正常時序,不進行擴展寫,通道按固定優(yōu)先權(quán)排序,允許8237進行DMA操作,DREQ和DACK均為高電平有效。則命令字為:

10000000B程序段為:

MOVAL,80H OUTDMA+8,AL控制寄存器(CommandRegistered)NanjingUniversityofScience&Technology8位的寄存器,只讀,端口地址和控制寄存器相同。D0~D3:用來指出4個通道的計數(shù)結(jié)束(TC,TerminalCount)狀態(tài)。如D3=1表示通道3計數(shù)到0,因而計數(shù)結(jié)束。D4~D7:表示4個通道當前有無DMA請求。比如D6=1,表示通道1當前有DMA請求需要處理。D7D6D5D4D3D2D1D0狀態(tài)寄存器(StatusRegister)1:通道0已達到TC1:通道1已達到TC1:通道2已達到TC1:通道3已達到TC1:通道3請求1:通道2請求1:通道1請求1:通道0請求NanjingUniversityofScience&Technology不用0清除MASK位建立MASK位1通道選擇整個8237芯片的啟動和停止由控制寄存器的D2位設(shè)置。每個通道的DREQ是否能被響應(yīng)可以由單通道屏蔽寄存器單獨控制。當一個通道的DMA屏蔽標志為1時,這個通道就不能接收DMA請求了。這時,不管是硬件的DMA請求,還是軟件的DMA請求,都不會被受理。CPU可通過寫控制字至XAH端口使其生效。單通道屏蔽寄存器(singlemaskregister)D7D6D5D4D3D2D1D000Channel001Channel110Channel211Channel3NanjingUniversityofScience&Technology不用0清Channel3M位設(shè)Channel3M位10清Channel2M位1設(shè)Channel2M位

8237A還允許使用綜合屏蔽命令字來設(shè)置所有通道的屏蔽觸發(fā)器。這樣,用綜合屏蔽命令可以一次完成對4個通道的屏蔽設(shè)置。CPU可通過寫控制字至XFH端口使其生效。0清Channel0Mask位1設(shè)Channel0Mask位0清Channel1Mask位1設(shè)Channel1Mask位綜合屏蔽寄存器(allmaskregister)D7D6D5D4D3D2D1D0NanjingUniversityofScience&Technology例如:對軟盤讀寫操作前,在進行DMA初始化時,都必須解除通道2的屏蔽,以便響應(yīng)硬件DREQ2的DMA請求,可以采取下面兩種方式之一清除屏蔽寄存器:使用單一通道屏蔽命令

MOVAL,00000010B OUTDMA+0AH,AL使用綜合屏蔽命令

MOVAL,00001011B OUTDMA+0FH,AL屏蔽應(yīng)用實例NanjingUniversityofScience&Technology不用0清除DMA請求位建立DMA請求位100Channel001Channel110Channel211Channel38237A的每個通道都配備1個DMA請求觸發(fā)器和1個DMA屏蔽觸發(fā)器,分別用來設(shè)置DMA請求標志和屏蔽標志。DMA請求寄存器(RequestRegister)D7D6D5D4D3D2D1D0一般的情況下,DMA請求由硬件發(fā)出,通過DREQ引腳引入DMA請求。但也可以由軟件發(fā)出,由軟件來啟動DMA傳輸。DMA請求寄存器中的D1、D0位用來指出通道號,D2位用來表示是否對相應(yīng)通道設(shè)置DMA請求,如D2為1,則使相應(yīng)通道的DMA請求觸發(fā)器置1,于是產(chǎn)生DMA請求,如D2為0,則無請求。NanjingUniversityofScience&Technology8237A的軟件命令有3條:主清除命令(復位命令)、清除高/低觸發(fā)器和清除屏蔽標志主清除(masterclear)命令:該命令的功能和Reset相同,它使控制寄存器、狀態(tài)寄存器、DMA請求寄存器、暫存器以及高/低觸發(fā)器都清0,而使屏蔽寄存器置1,使8237A進入空閑周期。對端口地址為XDH的端口實施一次寫操作,也就是對該端口執(zhí)行一條輸出指令,就可以實現(xiàn)對8237A的復位操作。清除高/低觸發(fā)器:8237A內(nèi)部有一個“高/低觸發(fā)器”,當這個觸發(fā)器為0時,訪問16位寄存器的低字節(jié);為1時,訪問高字節(jié)。該觸發(fā)器在訪問一次16位寄存器后,能自動翻轉(zhuǎn),0變1或1變0。在寫入內(nèi)存儲器起始地址或字節(jié)計數(shù)器初值之前,將這個觸發(fā)器清0,就可以按照先低位字節(jié),后高位字節(jié)的順序?qū)懭氤踔怠PU通過寫XCH端口地址使其有效。清除屏蔽標志(clearmaskregister):清除4個通道的屏蔽標志,使各通道均能接受DMA請求。CPU通過寫XEH端口地址使其有效。軟件命令(SoftwareCommand)NanjingUniversityofScience&Technology寫0C號地址:清除高/低觸發(fā)器,使將裝入數(shù)據(jù)的順序為先LSB后MSB。寫0D號地址:總清除命令(軟件復位命令),屏蔽寄存器被置為1,其它寄存器被置為0,軟件復位。寫0E號地址:清除屏蔽標志。關(guān)于3個軟件命令:只與端口號有關(guān),與DB線上的內(nèi)容無關(guān)。軟件命令(SoftwareCommand)NanjingUniversityofScience&Technology8237的內(nèi)部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0內(nèi)部觸發(fā)器DB0~DB70基/現(xiàn)行地址寫

010010

0000000001A0~A7A8~A15現(xiàn)行地址讀

001001

0000000001A0~A7A8~A15基和現(xiàn)行字節(jié)數(shù)寫

010010

0001000101W0~W7W8~W15現(xiàn)行字節(jié)數(shù)讀

001001

0001000101W0~W7W8~W151基/現(xiàn)行地址寫

010010

0010001001A0~A7A8~A15現(xiàn)行地址讀

001001

0010001001A0~A7A8~A15基和現(xiàn)行字節(jié)數(shù)寫

010010

0011001101W0~W7W8~W15現(xiàn)行字節(jié)數(shù)讀

001001

0011001101W0~W7W8~W15NanjingUniversityofScience&Technology8237的內(nèi)部寄存器通道寄存器操作CS#I0R#I0W#A3A2A1A0內(nèi)部觸發(fā)器DB0~DB72基/現(xiàn)行地址寫

010010

0100010001A0~A7A8~A15現(xiàn)行地址讀

001001

0100010001A0~A7A8~A15基/現(xiàn)行字節(jié)數(shù)寫

010010

0101010101W0~W7W8~W15現(xiàn)行字節(jié)數(shù)讀

001001

0101010101W0~W7W8~W153基/現(xiàn)行地址寫

010010

0110011001A0~A7A8~A15現(xiàn)行地址讀

001001

0110011001A0~A7A8~A15基/現(xiàn)行字節(jié)數(shù)寫

010010

0111011101W0~W7W8~W15現(xiàn)行字節(jié)數(shù)讀

001001

0111011101W0~W7W8~W15NanjingUniversityofScience&Technology控制及狀態(tài)寄存器的尋址及有關(guān)命令端口地址A3A2A1A0操作寄存器CS#I0R#I0W#備注08H

10001000寫讀命令寄存器狀態(tài)寄存器

01000109H

10011001寫讀請求寄存器非法

0100010AH

10101010寫讀單通道屏蔽寄存器非法

010001對單一通道進行屏蔽0BH

10111011寫讀模式寄存器非法

0100010CH

11001100寫讀清高/低觸發(fā)器非法

010001軟件命令0DH

11011101寫讀主清除命令臨時寄存器

010001軟件命令0EH

11101110寫讀清除所有通道屏蔽非法

010001軟件命令0FH

11111111寫讀屏蔽所有通道非法

010001NanjingUniversityofScience&Technology8237的內(nèi)部口地址及操作(小結(jié))口地址讀(IOR)寫(IOW)00,02,04,06通道0~3當前地址寄存器通道0~3基地址、現(xiàn)行地址寄存器01,03,05,07通道0~3當前字節(jié)寄存器通道0~3基字節(jié)、現(xiàn)行字節(jié)寄存器08H狀態(tài)寄存器控制寄存器09H——請求寄存器0AH——單一通道屏蔽0BH——模式寄存器0CH——清除高/低后觸發(fā)器0DH暫存器主清除命令0EH——清通道屏蔽位0FH——綜合屏蔽標志NanjingUniversityofScience&Technology8237的編程步驟關(guān)閉8237A,以保證對8237A初始化編程結(jié)束后才響應(yīng)DMA操作請求;或?qū)νǖ肋M行屏蔽。發(fā)主清除(軟件復位)命令;將內(nèi)存起始地址送基地址和現(xiàn)行地址寄存器,先寫低位,后寫高位;將要傳送的字節(jié)數(shù)送基字節(jié)數(shù)和現(xiàn)行字節(jié)數(shù)寄存器,先寫低位,后寫高位;寫方式字,設(shè)置需使用的通道的工作方式;啟動8237A,并將對8237的操作方式控制字寫入控制寄存器,控制8237A工作。清除該通道的屏蔽位,準備接受DMA請求;可用軟件方法將請求DMA操作控制字寫入請求寄存器,或用硬件方法,等待DREQ引線端發(fā)出DMA操作申請。NanjingUniversityofScience&Technology對8237A的編程舉例例1:某外設(shè)通過通道1傳送100個字節(jié)的數(shù)據(jù)到起始地址為8000H的內(nèi)存區(qū)域,8237A芯片的片選地址是00H,CPU為8088。編寫初始化程序。MOV AL,04H;關(guān)閉8237A,令控制寄存器D2=1OUT 08H,AL;控制寄存器的端口地址OUT 0D,AL;復位命令,只要地址正確,與傳送數(shù)據(jù)無關(guān)MOV AL,00H;寫入存儲區(qū)首地址低8位OUT 02H,ALMOV AL,80H;寫入存儲區(qū)首地址高8位OUT 02H,ALMOV AL,64H;傳送字節(jié)數(shù)的低8位OUT 03H,ALMOV AL,00H;設(shè)置傳送字節(jié)數(shù)的高8位OUT 03H,ALMOV AL,55H;設(shè)置通道1工作方式控制字OUT 0BH,AL;單字節(jié)傳送,地址加1,自動預(yù)置MOV AL,02H;只允許通道1進行DMA傳送OUT 0FH,ALMOV AL,00H;DACK低電平有效,DREQ高電平有效OUT 08H,AL;固定優(yōu)先級,啟動8237A工作NanjingUniversityofScience&Technology對8237的編程舉例例2:假設(shè)要利用通道0的單字節(jié)寫模式,由外設(shè)輸入一個數(shù)據(jù)塊到內(nèi)存,數(shù)據(jù)塊長度為8K,內(nèi)存區(qū)首地址為2000H,采用地址加1變化,不進行自動預(yù)置。外設(shè)的DREQ與DACK均為低有效,普通時序,固定優(yōu)先級。試完成初始化程序與應(yīng)用程序。設(shè)8237A的口地址為0010H~001FH模式寄存器:01000100(44H)控制寄存器:01000000(40H)

OUT1DH,AL;軟件復位

MOVAL,00H;基地址OUT10H,ALMOVAL,20H;OUT10H,ALMOVAL,00H;基字節(jié)OUT11H,ALMOVAL,20HOUT11H,AL

MOVAL,44H;模式OUT1BH,AL

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論