版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第8章章 DMA技術(shù)技術(shù)8.1 DMA概述8.2 DMA控制器8237A8.3 8237A在80X86系列微機(jī)上的應(yīng)用習(xí) 題 8第第8章章 DMA技術(shù)技術(shù)v DMA(Direct Memory Access,直接存儲(chǔ)器存?。┦?,直接存儲(chǔ)器存取)是指計(jì)算機(jī)系統(tǒng)中的外部設(shè)備與存儲(chǔ)器之間直接進(jìn)行數(shù)據(jù)交換指計(jì)算機(jī)系統(tǒng)中的外部設(shè)備與存儲(chǔ)器之間直接進(jìn)行數(shù)據(jù)交換的一種數(shù)據(jù)傳送方式。在的一種數(shù)據(jù)傳送方式。在DMA方式下,外部設(shè)備利用專用方式下,外部設(shè)備利用專用的接口電路直接和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送,不需要經(jīng)過(guò)的接口電路直接和存儲(chǔ)器進(jìn)行數(shù)據(jù)傳送,不需要經(jīng)過(guò)CPU,這樣,傳送時(shí)就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類(lèi)的一系列額外的操
2、作,這樣,傳送時(shí)就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類(lèi)的一系列額外的操作,具有較高的數(shù)據(jù)傳輸速率。具有較高的數(shù)據(jù)傳輸速率。v 本章講述本章講述DMA基本概念;基本概念;DMA控制器控制器8237A的內(nèi)部編的內(nèi)部編程結(jié)構(gòu)、初始化方法;程結(jié)構(gòu)、初始化方法;8237A在在80X86系列微機(jī)中的應(yīng)用。系列微機(jī)中的應(yīng)用。8.1 DMA概述概述 8.1.1 DMA方式的提出方式的提出v 在程序控制的傳送方式中,所有傳送均通過(guò)在程序控制的傳送方式中,所有傳送均通過(guò)CPU執(zhí)行指執(zhí)行指令來(lái)完成,而令來(lái)完成,而CPU指令系統(tǒng)只支持指令系統(tǒng)只支持CPU和存儲(chǔ)器或外設(shè)之和存儲(chǔ)器或外設(shè)之間的數(shù)據(jù)傳輸。間的數(shù)據(jù)傳輸。v 如果外設(shè)要和內(nèi)存
3、儲(chǔ)器進(jìn)行數(shù)據(jù)交換,那么即使采用效如果外設(shè)要和內(nèi)存儲(chǔ)器進(jìn)行數(shù)據(jù)交換,那么即使采用效率較高的中斷方式進(jìn)行傳送,也免不了要走外設(shè)率較高的中斷方式進(jìn)行傳送,也免不了要走外設(shè)CPU存儲(chǔ)器存儲(chǔ)器這條路線或相反的路線,這將會(huì)限制數(shù)據(jù)傳輸?shù)乃俣取<僭O(shè)這條路線或相反的路線,這將會(huì)限制數(shù)據(jù)傳輸?shù)乃俣取<僭O(shè)I/O設(shè)備的數(shù)據(jù)傳輸率較高,那么通過(guò)設(shè)備的數(shù)據(jù)傳輸率較高,那么通過(guò)CPU和這樣的外設(shè)進(jìn)和這樣的外設(shè)進(jìn)行數(shù)據(jù)傳輸時(shí),即使盡量壓縮程序查詢方式或中斷方式的非行數(shù)據(jù)傳輸時(shí),即使盡量壓縮程序查詢方式或中斷方式的非數(shù)據(jù)傳輸時(shí)間,也仍然不能滿足要求。為此,提出了數(shù)據(jù)傳輸時(shí)間,也仍然不能滿足要求。為此,提出了DMA方式。方式。
4、 v DMA方式是指不通過(guò)方式是指不通過(guò)CPU的干預(yù),直接在外設(shè)和內(nèi)存的干預(yù),直接在外設(shè)和內(nèi)存之間進(jìn)行數(shù)據(jù)傳送的方式。實(shí)現(xiàn)之間進(jìn)行數(shù)據(jù)傳送的方式。實(shí)現(xiàn)DMA方式需要專門(mén)的硬件方式需要專門(mén)的硬件裝置裝置DMA控制器(控制器(DMAC)來(lái)協(xié)調(diào)和控制外設(shè)接口與內(nèi)存)來(lái)協(xié)調(diào)和控制外設(shè)接口與內(nèi)存之間的數(shù)據(jù)傳輸。除了事先要用指令設(shè)置之間的數(shù)據(jù)傳輸。除了事先要用指令設(shè)置DMA控制器外,控制器外,傳送是應(yīng)外設(shè)請(qǐng)求、在硬件控制下完成的,數(shù)據(jù)的傳輸速度傳送是應(yīng)外設(shè)請(qǐng)求、在硬件控制下完成的,數(shù)據(jù)的傳輸速度基本上取決于外設(shè)和內(nèi)存的速度,因此能夠滿足高速外設(shè)數(shù)基本上取決于外設(shè)和內(nèi)存的速度,因此能夠滿足高速外設(shè)數(shù)據(jù)傳輸?shù)?/p>
5、需要。據(jù)傳輸?shù)男枰?8.1.2 DMA控制器的功能和基本結(jié)構(gòu)控制器的功能和基本結(jié)構(gòu) 1DMA控制器的功能控制器的功能v 因?yàn)橐驗(yàn)镈MA方式在數(shù)據(jù)傳輸過(guò)程中不需要方式在數(shù)據(jù)傳輸過(guò)程中不需要CPU的干預(yù),的干預(yù),所以所以DMA控制器應(yīng)具備以下這些功能:控制器應(yīng)具備以下這些功能:v (1)當(dāng)外設(shè)準(zhǔn)備就緒,希望進(jìn)行)當(dāng)外設(shè)準(zhǔn)備就緒,希望進(jìn)行DMA操作時(shí),會(huì)向操作時(shí),會(huì)向DMA控制器發(fā)出控制器發(fā)出DMA請(qǐng)求信號(hào),請(qǐng)求信號(hào),DMA控制器接收到此信號(hào)控制器接收到此信號(hào)后,應(yīng)能向后,應(yīng)能向CPU發(fā)出總線請(qǐng)求信號(hào)。發(fā)出總線請(qǐng)求信號(hào)。v (2)當(dāng))當(dāng)CPU接收到總線請(qǐng)求信號(hào)后,如果同意讓出總接收到總線請(qǐng)求信號(hào)后
6、,如果同意讓出總線,則會(huì)發(fā)出線,則會(huì)發(fā)出DMA響應(yīng)信號(hào),同時(shí)響應(yīng)信號(hào),同時(shí)CPU會(huì)放棄對(duì)總線的控會(huì)放棄對(duì)總線的控制,此時(shí)制,此時(shí)DMA控制器應(yīng)能對(duì)總線實(shí)行控制??刂破鲬?yīng)能對(duì)總線實(shí)行控制。 v (3)DMA控制器得到總線控制權(quán)以后,要往地址總線控制器得到總線控制權(quán)以后,要往地址總線發(fā)送地址信號(hào),修改所用的存儲(chǔ)器或接口的地址指針。發(fā)送地址信號(hào),修改所用的存儲(chǔ)器或接口的地址指針。v (4)在)在DMA期間,應(yīng)能發(fā)讀期間,應(yīng)能發(fā)讀/寫(xiě)控制信號(hào)。寫(xiě)控制信號(hào)。v (5)能決定本次)能決定本次DMA傳送的字節(jié)數(shù),并且判斷本次傳送的字節(jié)數(shù),并且判斷本次DMA傳送是否結(jié)束。傳送是否結(jié)束。v (6)DMA過(guò)程結(jié)束
7、時(shí),能向過(guò)程結(jié)束時(shí),能向CPU發(fā)出發(fā)出DMA結(jié)束信號(hào),結(jié)束信號(hào),并將總線控制權(quán)交還給并將總線控制權(quán)交還給CPU。 2DMA控制器的基本結(jié)構(gòu)控制器的基本結(jié)構(gòu)v 要完成上述基本功能,要完成上述基本功能,DMA控制器必須有相應(yīng)的硬件控制器必須有相應(yīng)的硬件作為支持,比如地址寄存器、字節(jié)計(jì)數(shù)器、控制寄存器、狀作為支持,比如地址寄存器、字節(jié)計(jì)數(shù)器、控制寄存器、狀態(tài)寄存器等,其基本結(jié)構(gòu)如圖態(tài)寄存器等,其基本結(jié)構(gòu)如圖8-1所示。所示。v 除了狀態(tài)寄存器外,其他寄存器在塊傳輸前都要進(jìn)行初除了狀態(tài)寄存器外,其他寄存器在塊傳輸前都要進(jìn)行初始化。每傳送始化。每傳送1個(gè)字節(jié)以后,地址寄存器的內(nèi)容加個(gè)字節(jié)以后,地址寄存器
8、的內(nèi)容加1(或減(或減1,這取決于數(shù)據(jù)傳輸方向的設(shè)定),字節(jié)計(jì)數(shù)器減這取決于數(shù)據(jù)傳輸方向的設(shè)定),字節(jié)計(jì)數(shù)器減1。當(dāng)然,。當(dāng)然,在進(jìn)行字傳輸時(shí),地址寄存器和字節(jié)計(jì)數(shù)器均要以在進(jìn)行字傳輸時(shí),地址寄存器和字節(jié)計(jì)數(shù)器均要以2為修改為修改量。量。圖8-1 DMA控制器基本結(jié)構(gòu) 8.1.3 DMA操作的工作過(guò)程操作的工作過(guò)程 1完整完整DMA操作工作過(guò)程操作工作過(guò)程v 在外設(shè)和內(nèi)存之間傳送一個(gè)數(shù)據(jù)塊時(shí),一個(gè)完整的在外設(shè)和內(nèi)存之間傳送一個(gè)數(shù)據(jù)塊時(shí),一個(gè)完整的DMA操作的工作過(guò)程通常包括初始化等操作的工作過(guò)程通常包括初始化等5個(gè)階段,分述如下:個(gè)階段,分述如下: (1)初始化)初始化v 在啟動(dòng)在啟動(dòng)DMA傳
9、送之前,傳送之前,DMA控制器和其他接口芯片一控制器和其他接口芯片一樣受樣受CPU控制,由控制,由CPU執(zhí)行相應(yīng)指令來(lái)對(duì)執(zhí)行相應(yīng)指令來(lái)對(duì)DMA控制器進(jìn)行控制器進(jìn)行初始化編程,以確定通道的選擇、數(shù)據(jù)的傳送方式、傳送類(lèi)初始化編程,以確定通道的選擇、數(shù)據(jù)的傳送方式、傳送類(lèi)型、傳送的字節(jié)數(shù)等等。型、傳送的字節(jié)數(shù)等等。 (2)DMA請(qǐng)求請(qǐng)求v 當(dāng)外設(shè)準(zhǔn)備就緒時(shí),就通過(guò)其接口向當(dāng)外設(shè)準(zhǔn)備就緒時(shí),就通過(guò)其接口向DMA控制器發(fā)出控制器發(fā)出一個(gè)一個(gè)DMA傳送請(qǐng)求傳送請(qǐng)求DRQ,DMA控制器接到此請(qǐng)求信號(hào)后送控制器接到此請(qǐng)求信號(hào)后送到判優(yōu)電路(如果系統(tǒng)中存在多個(gè)到判優(yōu)電路(如果系統(tǒng)中存在多個(gè)DMA通道),判優(yōu)電路
10、通道),判優(yōu)電路把優(yōu)先級(jí)最高的把優(yōu)先級(jí)最高的DMA請(qǐng)求選擇出來(lái)向請(qǐng)求選擇出來(lái)向CPU發(fā)總線請(qǐng)求信號(hào)發(fā)總線請(qǐng)求信號(hào)HOLD,請(qǐng)求,請(qǐng)求CPU暫時(shí)放棄對(duì)系統(tǒng)總線的控制權(quán)。暫時(shí)放棄對(duì)系統(tǒng)總線的控制權(quán)。 (3)DMA響應(yīng)響應(yīng)v CPU接到總線請(qǐng)求信號(hào)接到總線請(qǐng)求信號(hào)HOLD后,在執(zhí)行完當(dāng)前指令的后,在執(zhí)行完當(dāng)前指令的當(dāng)前總線周期后,向當(dāng)前總線周期后,向DMA控制器發(fā)出響應(yīng)信號(hào)控制器發(fā)出響應(yīng)信號(hào)HLDA,同時(shí),同時(shí)放棄對(duì)系統(tǒng)總線的控制。放棄對(duì)系統(tǒng)總線的控制。 (4)DMA傳送傳送v DMA控制器收到總線響應(yīng)信號(hào)控制器收到總線響應(yīng)信號(hào)HLDA后,即取得了后,即取得了系統(tǒng)總線的控制權(quán)。系統(tǒng)總線的控制權(quán)。DM
11、A控制器向控制器向I/O設(shè)備發(fā)出設(shè)備發(fā)出DMA請(qǐng)求的請(qǐng)求的應(yīng)答信號(hào)應(yīng)答信號(hào)DACK。v DMA控制器向地址總線發(fā)送地址信號(hào),同時(shí)發(fā)出相控制器向地址總線發(fā)送地址信號(hào),同時(shí)發(fā)出相應(yīng)的讀應(yīng)的讀/寫(xiě)控制信號(hào),完成一個(gè)字節(jié)的傳送。寫(xiě)控制信號(hào),完成一個(gè)字節(jié)的傳送。v 每傳送一個(gè)字節(jié),每傳送一個(gè)字節(jié),DMA控制器會(huì)自動(dòng)修改地址寄存控制器會(huì)自動(dòng)修改地址寄存器的值,以指向下一個(gè)要傳送的字節(jié),同時(shí)修改字節(jié)計(jì)數(shù)器,器的值,以指向下一個(gè)要傳送的字節(jié),同時(shí)修改字節(jié)計(jì)數(shù)器,并判斷本次傳送是否結(jié)束,如果沒(méi)有結(jié)束,則繼續(xù)傳送。并判斷本次傳送是否結(jié)束,如果沒(méi)有結(jié)束,則繼續(xù)傳送。v (5)DMA結(jié)束結(jié)束v 當(dāng)字節(jié)計(jì)數(shù)器的值達(dá)到計(jì)
12、數(shù)終點(diǎn)時(shí),當(dāng)字節(jié)計(jì)數(shù)器的值達(dá)到計(jì)數(shù)終點(diǎn)時(shí),DMA操作過(guò)程結(jié)操作過(guò)程結(jié)束。這時(shí)束。這時(shí)DMA控制器向控制器向CPU發(fā)發(fā)DMA傳送結(jié)束信號(hào),將總線傳送結(jié)束信號(hào),將總線控制權(quán)交還給控制權(quán)交還給CPU。 2DMA傳送示例傳送示例v 下面以圖8-2為例來(lái)簡(jiǎn)要說(shuō)明DMA操作方式的工作過(guò)程。假定8086CPU工作于最小模式,且是將存儲(chǔ)器中的數(shù)據(jù)傳送給外部設(shè)備。在DMA操作之前,DMA控制器作為系統(tǒng)的一個(gè)接口部件,接受CPU送來(lái)的操作命令,也即對(duì)DMA控制器進(jìn)行初始化,以規(guī)定傳送類(lèi)型(存儲(chǔ)器和外設(shè)之間)、操作方式(單字節(jié)傳送)、傳送方向、內(nèi)存的首地址、傳送的字節(jié)數(shù)等。在完成初化編程之后,DMA控制器就準(zhǔn)備好進(jìn)
13、行DMA操作,傳送一個(gè)字節(jié)數(shù)據(jù)的過(guò)程如下(在圖8-2中以括號(hào)內(nèi)的序號(hào)表示)。v (1)接口已作好接收數(shù)據(jù)準(zhǔn)備,向DMA控制器發(fā)出DMA請(qǐng)求信號(hào)DRQ。v (2)DMA控制器向CPU發(fā)總線請(qǐng)求信號(hào)HRQ,該請(qǐng)求信號(hào)送到CPU的HOLD引腳。v (3)CPU在完成當(dāng)前總線周期操作之后(若總線處于空閑狀態(tài),則立即做出響應(yīng)),使地址總線、數(shù)據(jù)總線及部分控制總線引腳處于高阻態(tài)(也即和系統(tǒng)總線處于隔離狀態(tài)),并向DMA控制器發(fā)總線請(qǐng)求的響應(yīng)信號(hào)HLDA,把總線控制權(quán)交給DMA控制器。v (4)DMA控制器將地址(A19A0)送地址總線,該地址用來(lái)尋址內(nèi)存儲(chǔ)單元。v (5)DMA控制器向I/O接口發(fā)DMA請(qǐng)
14、求的響應(yīng)信號(hào)DACK,該信號(hào)通常作為接口接受數(shù)據(jù)的控制信號(hào)。v (6)DMA控制器向存儲(chǔ)器發(fā)讀控制信號(hào),在該信號(hào)的控制下,由A19A0指定的內(nèi)存單元內(nèi)容被送入數(shù)據(jù)總線。圖8-2 用DMA方式傳送單個(gè)數(shù)據(jù)v (7)DMA控制器向接口發(fā)寫(xiě)控制信號(hào),在該信號(hào)及DACK信號(hào)的共同作用下,將數(shù)據(jù)總線上的內(nèi)容寫(xiě)入接口中的數(shù)據(jù)寄存器,并通過(guò)接口將數(shù)據(jù)傳送給外設(shè),至此完成了一個(gè)字節(jié)數(shù)據(jù)的傳送。v (8)DMA控制器撤銷(xiāo)對(duì)CPU的總線請(qǐng)求信號(hào)。v (9)CPU撤銷(xiāo)總線請(qǐng)求的響應(yīng)信號(hào)并恢復(fù)對(duì)總線的控制。v 如果數(shù)據(jù)塊未傳送完,則又從第二步開(kāi)始重復(fù)上述過(guò)程。8.2 DMA控制器控制器8237Av 8237A是Int
15、el系列高性能可編程DMA控制器芯片,每片8237A內(nèi)部有4個(gè)獨(dú)立的DMA通道,每個(gè)通道可分別進(jìn)行數(shù)據(jù)傳送,一次傳送的最大長(zhǎng)度可達(dá)64KB;每個(gè)通道的DMA請(qǐng)求都可以允許和禁止,具有不同的優(yōu)先級(jí),并且每個(gè)通道的優(yōu)先級(jí)可以是固定的,也可以是循環(huán)的;每個(gè)DMA通道具有4種傳送方式:?jiǎn)巫止?jié)傳送方式,數(shù)據(jù)塊傳送方式,請(qǐng)求傳送方式和級(jí)聯(lián)方式。 8.2.1 8237A的編程結(jié)構(gòu)和引腳的編程結(jié)構(gòu)和引腳v DMA控制器一方面可以控制系統(tǒng)總線,這時(shí)它是總線主設(shè)備;另一方面又可以和其它接口一樣,接收CPU對(duì)它的讀/寫(xiě)操作,這是它又成了總線從設(shè)備。8237A的內(nèi)部結(jié)構(gòu)和外部連接都與這兩方面的工作情況相關(guān),圖8-3給
16、出了8237A內(nèi)部編程結(jié)構(gòu)框圖。圖8-3 DMA控制器8237A及輔助邏輯框圖v 從圖8-3可以看到,8237A內(nèi)部包含4個(gè)獨(dú)立的DMA通道,每個(gè)通道包含16位的地址寄存器和16位的字節(jié)計(jì)數(shù)器,還包含一個(gè)8位的模式寄存器。4個(gè)通道公用控制寄存器和狀態(tài)寄存器。v 8237A的內(nèi)部寄存器如表8-1所示。它與用戶編程直接發(fā)生關(guān)系。表8-1 8237A的內(nèi)部寄存器v 基地址寄存器用來(lái)存放本通道DMA傳送時(shí)的地址初值,它由CPU編程寫(xiě)入。編程時(shí),初值也同時(shí)被寫(xiě)入當(dāng)前地址寄存器。當(dāng)前地址寄存器的值在每次DMA傳送后自動(dòng)加1或減1。CPU可以用輸入指令分兩次讀出當(dāng)前地址寄存器的值,每次讀8位,但基地址寄存器
17、的值不能被讀出。當(dāng)一個(gè)通道被進(jìn)行自動(dòng)預(yù)置時(shí),一旦計(jì)數(shù)到達(dá)0,當(dāng)前地址寄存器會(huì)根據(jù)基地址寄存器的內(nèi)容自動(dòng)回到初值。v 基本字節(jié)計(jì)數(shù)器用來(lái)存放每次DMA操作需要傳送的字節(jié)總數(shù),其值比實(shí)際需傳送的字節(jié)數(shù)少1。初值也是在編程時(shí)由CPU寫(xiě)入的,而且初值也被同時(shí)寫(xiě)入當(dāng)前字節(jié)計(jì)數(shù)器。在DMA傳送時(shí),每傳送1個(gè)字節(jié),當(dāng)前字節(jié)計(jì)數(shù)器就值就自動(dòng)減1,當(dāng)由0減到FFFFH時(shí),產(chǎn)生計(jì)數(shù)結(jié)束信號(hào)。當(dāng)前字節(jié)計(jì)數(shù)器的值也可由CPU通過(guò)兩條輸入指令讀出,每次讀8位。v 對(duì)其它寄存器的功能,在后面結(jié)合工作模式和工作過(guò)程再講述。v 8237A的引腳如圖8-4所示,各引腳功能如下:v CLK:時(shí)鐘輸入端。v :片選信號(hào)輸入端,低電
18、平有效。v RESET:復(fù)位信號(hào)輸入端,高電平有效。芯片復(fù)位時(shí)清除內(nèi)部各寄存器,并置位屏蔽寄存器。v REDAY:準(zhǔn)備好信號(hào)輸入端,高電平表示存儲(chǔ)器或外設(shè)已經(jīng)準(zhǔn)備好。該信號(hào)用于DMA操作時(shí)與慢速存儲(chǔ)器或外部設(shè)備同步。CSv AEN:地址允許信號(hào)輸出端,高電平有效。AEN為高電平時(shí),允許8237A將高8位地址輸出至地址總線,同時(shí)使與CPU相連的地址鎖存器無(wú)效,即禁止CPU使用地址總線。AEN為低電平時(shí),8237A被禁止,CPU占用地址總線。圖8-4 8237A引腳圖v ADSTB:地址選通信號(hào)輸出端,高電平有效。在DMA傳送期間,此信號(hào)用于將DB7DB0輸出的當(dāng)前地址寄存器中高8位地址送到外部鎖
19、存器,與8237A芯片直接輸出的低8位地址A7A0共同構(gòu)成內(nèi)存單元地址的偏移量。v :I/O讀信號(hào),是雙向、低電平有效的三態(tài)信號(hào)。在CPU控制總線期間,它為輸入信號(hào),低電平有效時(shí),CPU讀取8237A內(nèi)部寄存器的值;在DMA傳送期間,它為輸出信號(hào),與 相配合,控制數(shù)據(jù)由外設(shè)傳送到存儲(chǔ)器。v :I/O寫(xiě)信號(hào),是低電平有效的雙向三態(tài)信號(hào)。在CPU控制總線期間,它為輸入信號(hào),CPU在 控制下對(duì)8237A內(nèi)部寄存器進(jìn)行編程。在DMA傳送期間,它為輸出信號(hào),與 配合將數(shù)據(jù)從存儲(chǔ)器傳送到外設(shè)接口中。IORMEMWIOWIOWMEMRv :存儲(chǔ)器讀信號(hào),低電平有效的三態(tài)輸出信號(hào),僅用于DMA傳送。在DMA寫(xiě)
20、傳送時(shí),它與 配合,把數(shù)據(jù)從存儲(chǔ)器傳到外設(shè);在存儲(chǔ)器到存儲(chǔ)器傳送時(shí), 有效控制從源區(qū)讀出數(shù)據(jù)。v :存儲(chǔ)器寫(xiě)信號(hào),低電平有效的三態(tài)輸出信號(hào),僅用于DMA傳送。在DMA寫(xiě)傳送時(shí),它與 配合,把數(shù)據(jù)從外設(shè)傳送到存儲(chǔ)器;在存儲(chǔ)器到存儲(chǔ)器傳送時(shí), 有效控制把數(shù)據(jù)寫(xiě)入目的區(qū)。MEMRMEMRIORMEMWMEMWIORv DREQ3DREQ0:通道DMA請(qǐng)求輸入信號(hào),通道3至通道0分別對(duì)應(yīng)于DREQ3至DREQ0。當(dāng)外設(shè)請(qǐng)求DMA服務(wù)時(shí),由I/O接口向8237A發(fā)出DMA請(qǐng)求信號(hào)DREQ,該信號(hào)一直保持有效,直到收到DMA響應(yīng)信號(hào)DACK后,信號(hào)才撤銷(xiāo)。其有效電平由編程設(shè)定。在優(yōu)先級(jí)固定的方式上,DRE
21、Q0優(yōu)先級(jí)最高,DREQ3優(yōu)先級(jí)最低。v DACK3DACK0:DMA響應(yīng)輸出信號(hào),是8237A對(duì)DREQ信號(hào)的響應(yīng),每個(gè)通道各有一個(gè)。當(dāng)8237A接收到DMA響應(yīng)信號(hào)HLDA后,開(kāi)始DMA傳送,響應(yīng)的通道DACK信號(hào)輸出有效,其有效電平由編程確定。v HRQ:總線請(qǐng)求輸出信號(hào)。當(dāng)8237A的任一個(gè)未屏蔽通道接收到DREQ請(qǐng)求時(shí),8237A就向CPU發(fā)出HRQ信號(hào),請(qǐng)求CPU出讓總線控制權(quán)。v HLDA:總線響應(yīng)信號(hào),是CPU對(duì)HRQ信號(hào)的響應(yīng),將在現(xiàn)行總線周期結(jié)束后讓出總線的控制權(quán),使HLDA信號(hào)有效,通知8237A接收總線的控制權(quán),用以完成DMA傳送。v DB7DB0:8位雙向三態(tài)數(shù)據(jù)總線
22、,與系統(tǒng)的數(shù)據(jù)總線相連。CPU可以用I/O讀命令,從DB7DB0讀取8237A的狀態(tài)寄存器和現(xiàn)行地址寄存器、字節(jié)數(shù)計(jì)數(shù)器的內(nèi)容,以了解8237A的工作狀態(tài);也可以用I/O寫(xiě)命令通過(guò)DB7DB0對(duì)各個(gè)寄存器進(jìn)行編程。在DMA傳送期間,DB7DB0輸出當(dāng)前地址寄存器中的高8位,由ADSTB信號(hào)鎖存到外部鎖存器中,與地址線A0A7一起組成16位地址。v A7A4:4位雙向三態(tài)地址線。只用于DMA傳送時(shí),輸出要訪問(wèn)的存儲(chǔ)單元地址低8位中的高4位。v A3A0:4位雙向三態(tài)地址線。CPU對(duì)8237A進(jìn)行編程時(shí),它們是輸入信號(hào),用于尋址8237A的內(nèi)部各寄存器。在DMA傳送期間,這4條輸出要訪問(wèn)的存儲(chǔ)單元
23、地址低4位。v :DMA過(guò)程結(jié)束信號(hào)。它是雙向低電平有效信號(hào),其有效時(shí),可使8237A內(nèi)部寄存器復(fù)位。在DMA傳送期間,當(dāng)任一通道當(dāng)前字節(jié)寄存器的值為0時(shí),8237A從 引腳輸出一個(gè)低電平信號(hào),表示DMA傳輸結(jié)束。另外,8237A允許由外設(shè)送入一個(gè)有效的 信號(hào),強(qiáng)制結(jié)束DMA傳送過(guò)程。EOPEOPEOP 8.2.2 8237A的工作周期和時(shí)序的工作周期和時(shí)序v 8237A有兩種工作周期,即空閑周期和有效周期,每一個(gè)周期由多個(gè)時(shí)鐘周期組成。 1空閑周期空閑周期v 當(dāng)8237A的任一通道無(wú)DMA請(qǐng)求時(shí)就進(jìn)入空閑周期,在空閑周期8237A始終處于SI狀態(tài),每個(gè)SI狀態(tài)都采樣通道的請(qǐng)求輸入線DREQ。
24、此外,8237A在SI狀態(tài)還采樣片選信號(hào),當(dāng)為低電平,且4個(gè)通道均無(wú)DMA請(qǐng)求,則8237A進(jìn)入編程狀態(tài),即CPU對(duì)8237A進(jìn)行讀/寫(xiě)操作。8237A復(fù)位后處于空閑周期。 2有效周期有效周期v 當(dāng)8237A在SI狀態(tài)采樣到外設(shè)有DMA請(qǐng)求時(shí),就脫離空閑周期進(jìn)入有效周期,8237A作為系統(tǒng)的主控芯片,控制DMA傳送操作。由于DMA傳送是借用系統(tǒng)總線完成的,所以,它的控制信號(hào)以及工作時(shí)序類(lèi)似CPU總線周期。圖8-5為8237A的DMA傳送時(shí)序,每個(gè)時(shí)鐘周期用S狀態(tài)表示,而不是CPU總線周期的T狀態(tài)。圖8-5 8237A的DMA傳輸時(shí)序v (1)當(dāng)在SI脈沖的下降沿檢測(cè)到某一通道或幾個(gè)通道同時(shí)有D
25、MA請(qǐng)求時(shí),則在下一個(gè)周期就進(jìn)入S0狀態(tài);而且在SI脈沖的上升沿,使總線請(qǐng)求信號(hào)HRQ有效。在S0狀態(tài)8237A等待CPU對(duì)總線請(qǐng)求的響應(yīng),只要未收到有效的總線請(qǐng)求應(yīng)答信號(hào)HLDA,8237A始終處于S0狀態(tài)。當(dāng)在S0的上升沿采樣到有效的HLDA信號(hào),則進(jìn)入DMA傳送的S1狀態(tài)。v (2)典型的DMA傳送由S1、S2、S3、S4四個(gè)狀態(tài)組成。在S1狀態(tài)使地址允許信號(hào)AEN有效。自S1狀態(tài)起,一方面把要訪問(wèn)的存儲(chǔ)單元的高8位地址通過(guò)數(shù)據(jù)總線輸出,另一方面發(fā)出一個(gè)有效的地址選通信號(hào)ADSTB,利用ADSTB的下降沿把在數(shù)據(jù)線上的高8位地址鎖存至外部的地址鎖存器中。同時(shí),地址的低8位由地址線輸出,且
26、在整個(gè)DMA傳送期間保持不變。v (3)在S2狀態(tài),8237A向外設(shè)輸出DMA響應(yīng)信號(hào)DACK。在通常情況下,外設(shè)的請(qǐng)求信號(hào)DREQ必須保持到DACK有效。即自狀態(tài)S2開(kāi)始使“讀寫(xiě)控制”信號(hào)有效。v 如果將數(shù)據(jù)從存儲(chǔ)器傳送到外設(shè),則8237A輸出 有效信號(hào),從指定存儲(chǔ)單元讀出一個(gè)數(shù)據(jù)并送到系統(tǒng)數(shù)據(jù)總線上,同時(shí)8237A還輸出 有效信號(hào)將系統(tǒng)數(shù)據(jù)總線的這個(gè)數(shù)據(jù)寫(xiě)入請(qǐng)求DMA傳送的外設(shè)中。MEMRIOWv 如果將數(shù)據(jù)從外設(shè)傳送到存儲(chǔ)器,則8237A輸出 有效信號(hào),從請(qǐng)求DMA傳送的外設(shè)讀取一個(gè)數(shù)據(jù)并送到系統(tǒng)數(shù)據(jù)總線上,同時(shí)8237A還輸出 有效信號(hào)將系統(tǒng)數(shù)據(jù)總線的這個(gè)數(shù)據(jù)寫(xiě)入指定的存儲(chǔ)單元。v 由
27、此可見(jiàn),DMA傳送實(shí)現(xiàn)了外設(shè)與存儲(chǔ)器之間的直接數(shù)據(jù)傳送,傳送的數(shù)據(jù)不進(jìn)入8237A內(nèi)部,也不進(jìn)入CPU。另外,DMA傳送不提供I/O端口地址(地址線上總是存儲(chǔ)器地址),請(qǐng)求DMA傳送的外設(shè)需要利用DMA響應(yīng)信號(hào)進(jìn)行譯碼以確定外設(shè)數(shù)據(jù)緩沖器。IORMEMWv (4)在8237A輸出信號(hào)控制下,利用S3和S4狀態(tài)完成數(shù)據(jù)傳送。若存儲(chǔ)器和外設(shè)不能在S4狀態(tài)前完成數(shù)據(jù)的傳送,則只能設(shè)法使READY信號(hào)變低,就可以在S3和S4狀態(tài)間插入等待狀態(tài)。在此狀態(tài),所有控制信號(hào)維持不變,從而加寬DMA傳送周期。v (5)在數(shù)據(jù)塊傳送方式下,S4后面應(yīng)接著傳送下一個(gè)字節(jié)。因?yàn)镈MA傳送的存儲(chǔ)器區(qū)域是連續(xù)的,通常情況
28、下地址的高8位不變,只是低8位增量或減量。所以,輸出和鎖存高地址的S1狀態(tài)不需要了,直接進(jìn)入S2狀態(tài),由輸出地址低8位開(kāi)始,在讀寫(xiě)信號(hào)的控制下完成數(shù)據(jù)傳送。這個(gè)過(guò)程一直持續(xù)到把規(guī)定的數(shù)據(jù)個(gè)數(shù)傳送完。此時(shí),一個(gè)DMA傳送過(guò)程結(jié)束,8237A又進(jìn)入空閑周期,等待新的請(qǐng)求。v 8.2.3 8237A的工作方式和傳送類(lèi)型的工作方式和傳送類(lèi)型v 18237A的工作方式的工作方式v 8237A的每個(gè)DMA通道都有四種工作方式:?jiǎn)巫止?jié)傳輸方式、塊傳輸方式、請(qǐng)求傳輸方式和級(jí)聯(lián)傳輸方式。v (1)單字節(jié)傳送方式v 這種方式下每次傳送一個(gè)字節(jié)之后就釋放總線。傳送一個(gè)字節(jié)后,字節(jié)數(shù)寄存器減1,地址寄存器加1或減1,
29、HRQ變?yōu)闊o(wú)效。這樣,8237A釋放系統(tǒng)總線,將總線控制權(quán)交還CPU。若此時(shí)當(dāng)前字節(jié)數(shù)由0減到FFFFH,將發(fā)出 信號(hào),從而結(jié)束DMA傳送。否則8237A會(huì)立即對(duì)DREQ信號(hào)進(jìn)行檢測(cè),一旦DERQ有效,8237A立即向CPU發(fā)出總線請(qǐng)求信號(hào),獲得總線控制權(quán)后,再進(jìn)行下一個(gè)字節(jié)的傳送。EOPv 單字節(jié)傳送方式的特點(diǎn)是:一次傳送一個(gè)字節(jié),效率較低;但它可以保證在兩次DMA傳送之間CPU有機(jī)會(huì)重新獲取總線控制權(quán),執(zhí)行一個(gè)CPU總線周期。 (2)塊傳輸方式v 這種傳輸方式可以連續(xù)傳送多個(gè)字節(jié)。8237A獲得總線控制權(quán)之后,可以完成一個(gè)數(shù)據(jù)塊的傳送,直到當(dāng)前字節(jié)數(shù)寄存器由0減為FFFFH,或由外部接口輸
30、入有效的信號(hào),8237A才釋放總線,將總線控制權(quán)交還CPU。v 數(shù)據(jù)塊傳送的特點(diǎn)是:一次請(qǐng)求傳送一個(gè)數(shù)據(jù)塊,效率高;但整個(gè)DMA傳送期間CPU長(zhǎng)時(shí)間無(wú)法控制總線。 (3)請(qǐng)求傳輸方式v 這種傳輸方式也可以連續(xù)傳送多個(gè)字節(jié)的數(shù)據(jù)。8237A進(jìn)行DMA傳輸時(shí),若出現(xiàn)當(dāng)前字節(jié)寄存器由0減為FFFFH、外部接口輸入 有效信號(hào)或外界的DREQ信號(hào)變?yōu)闊o(wú)效這3種情況之一時(shí),8237A結(jié)束傳送,釋放總線,由CPU接管總線。v 其中當(dāng)外界的DREQ信號(hào)變?yōu)闊o(wú)效時(shí),8237A釋放總線,CPU可繼續(xù)操作。8237A相應(yīng)通道將保存當(dāng)前地址和字節(jié)數(shù)寄存器的中間值。8237A釋放總線后繼續(xù)檢測(cè)DREQ,一旦變?yōu)橛行盘?hào)
31、,傳送就可以繼續(xù)進(jìn)行。EOP (4)級(jí)聯(lián)傳輸方式v 這種傳輸方式是通過(guò)級(jí)聯(lián)擴(kuò)展傳輸通道。級(jí)聯(lián)方式構(gòu)成的主從式DMA系統(tǒng)中,第一級(jí)的DREQ和DACK信號(hào)分別連接第二級(jí)的HRQ和HLDA,第二級(jí)的HRQ和HLDA連接系統(tǒng)總線,此時(shí)第二級(jí)各個(gè)8237A芯片的優(yōu)先級(jí)與所連的第一級(jí)通道相對(duì)應(yīng)。這樣由5片8237構(gòu)成的二級(jí)主從式DMA系統(tǒng)中,DMA數(shù)據(jù)通道可擴(kuò)展到16個(gè)。值得注意的是主片需要在模式寄存器中設(shè)置為級(jí)聯(lián)方式,而從片不設(shè)置為級(jí)聯(lián)方式。 2DMA傳輸類(lèi)型傳輸類(lèi)型v 8237A允許每個(gè)DMA通道有四種傳送類(lèi)型:讀傳輸、寫(xiě)傳輸、DMA傳輸和存儲(chǔ)器到存儲(chǔ)器的傳輸。 (1)讀傳輸v 是指從指定的存儲(chǔ)器單
32、元讀出數(shù)據(jù)寫(xiě)入到響應(yīng)的I/O設(shè)備。DMA控制器發(fā)出 和 信號(hào)。 (2)寫(xiě)傳輸v 是指從I/O設(shè)備讀出數(shù)據(jù)寫(xiě)入到指定的存儲(chǔ)器單元。DMA控制器發(fā)出 和 信號(hào)。MEMRIOWMEMWIOR (3)DMA傳送v 是一種偽傳送操作,用于校驗(yàn)8237A的內(nèi)部功能。它與讀傳輸和寫(xiě)傳輸一樣產(chǎn)生存儲(chǔ)器地址和時(shí)序信號(hào),但存儲(chǔ)器和I/O的讀寫(xiě)控制信號(hào)無(wú)效。 (4)存儲(chǔ)器到存儲(chǔ)器的傳送v 使用此方式可實(shí)現(xiàn)存儲(chǔ)器內(nèi)部不同區(qū)域之間的傳送。這種傳送類(lèi)型僅適用于通道0和通道1,此時(shí)通道0的地址寄存器存源數(shù)據(jù)區(qū)地址,通道1的地址寄存器存目的數(shù)據(jù)區(qū)地址,通道1的字節(jié)計(jì)數(shù)器存?zhèn)魉偷淖止?jié)數(shù)。傳送由設(shè)置通道0的DMA請(qǐng)求(設(shè)置請(qǐng)求寄
33、存器)啟動(dòng),8237A按正常方式向CPU發(fā)出HRQ請(qǐng)求信號(hào),待HLDA響應(yīng)后傳送就開(kāi)始。每傳送一個(gè)字節(jié)需用8個(gè)狀態(tài),前4個(gè)狀態(tài)用于從源數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù)并存放于8237A中的數(shù)據(jù)暫存器,后4個(gè)狀態(tài)用于將數(shù)據(jù)暫存器的內(nèi)容寫(xiě)入目的存儲(chǔ)器中。 8.2.4 8237A的內(nèi)部寄存器及編程控制字的內(nèi)部寄存器及編程控制字 18237A的內(nèi)部寄存器的內(nèi)部寄存器v 8237A共有10種內(nèi)部寄存器,對(duì)它們的操作有時(shí)需要配合三個(gè)軟件命令,它們由最低地址A0A3區(qū)分,如表8-2所示。表表8-2 8237A寄存器和軟件命令的尋址寄存器和軟件命令的尋址 (1)當(dāng)前地址寄存器v 用于保持DMA傳送過(guò)程中當(dāng)前地址值,每次D
34、MA傳送后其內(nèi)容自動(dòng)增1或減1。這個(gè)寄存器的值可由CPU寫(xiě)入或讀出。若8237A編程為自動(dòng)初始化,則在每次DMA操作結(jié)束發(fā)出 信號(hào)后,該寄存器自動(dòng)恢復(fù)為它的初始值。 (2)當(dāng)前字節(jié)數(shù)寄存器v 它保持著當(dāng)前要傳送的字節(jié)數(shù),每次DMA傳送后內(nèi)容減1。當(dāng)它的值由零減為FFFFH時(shí),將發(fā)出 信號(hào),表明DMA操作結(jié)束。它的值可由CPU讀出。在自動(dòng)初始化方式時(shí), 有效時(shí)自動(dòng)裝入初始值(即基地址寄存器的值)。EOPEOPEOP (3)基地址寄存器v 它存放著與當(dāng)前地址寄存器相聯(lián)系的初始值。CPU同時(shí)寫(xiě)入基地址寄存器和當(dāng)前地址寄存器。但基地址寄存器的值不會(huì)修改,且不能讀出。 (4)基字節(jié)數(shù)寄存器v 它存放著與
35、當(dāng)前字節(jié)數(shù)寄存器相聯(lián)系的初始值。CPU同時(shí)寫(xiě)入基字節(jié)數(shù)寄存器和當(dāng)前字節(jié)數(shù)寄存器。但基字節(jié)數(shù)寄存器的值不會(huì)修改,且不能讀出。 (5)模式寄存器v 用于存放8237A相應(yīng)通道的工作模式、地址增減、是否自動(dòng)預(yù)置、傳輸類(lèi)型及通道選擇,在CPU對(duì)8237A初始化編程時(shí)設(shè)定。工作模式寄存器各位的定義如圖8-6所示。圖8-6 8237A模式寄存器的格式v 模式寄存器的最高2位用來(lái)設(shè)置工作模式。D7D600時(shí),為請(qǐng)求傳送模式;D7D601時(shí),為單字節(jié)傳送模式;D7D610時(shí),為塊傳送模式;D7D611時(shí),為級(jí)聯(lián)傳送模式。v 模式寄存器的D5位指出每次傳輸后地址寄存器內(nèi)容是增1還是減1。v 模式寄存器的D4位為
36、1時(shí),可以使DMA控制器進(jìn)行自動(dòng)預(yù)置。所謂自動(dòng)預(yù)置就是指在計(jì)數(shù)器到達(dá)0時(shí),當(dāng)前地址寄存器和當(dāng)前字節(jié)計(jì)數(shù)器會(huì)從基本地址寄存器和基本字節(jié)計(jì)數(shù)器中重新取得初值,從而進(jìn)入下一個(gè)數(shù)據(jù)傳輸過(guò)程。需要注意的是,如果一個(gè)通道被設(shè)置為具有自動(dòng)預(yù)置功能,那么本通道的對(duì)應(yīng)屏蔽位必須為0。v 模式寄存器的D3、D2位用來(lái)設(shè)置數(shù)據(jù)傳輸類(lèi)型。數(shù)據(jù)傳輸?shù)娜N類(lèi)型分別為寫(xiě)傳輸、讀傳輸和校驗(yàn)傳輸。其中校驗(yàn)傳輸是用來(lái)對(duì)讀傳輸功能或?qū)憘鬏敼δ苓M(jìn)行校驗(yàn),是一種虛擬傳輸,此時(shí),8237A也會(huì)產(chǎn)生地址信號(hào)和 信號(hào),但并不產(chǎn)生對(duì)存儲(chǔ)器及I/O接口的讀/寫(xiě)信號(hào)。校驗(yàn)傳輸功能是器件測(cè)試時(shí)才用的,一般使用者對(duì)此并不感興趣。v 模式寄存器的最低2
37、位用來(lái)指出通道號(hào)。 (6)命令寄存器v 8237A的4個(gè)DMA通道共用一個(gè)8位的控制寄存器,用于設(shè)定8237A的工作方式,由CPU編程寫(xiě)入,并用復(fù)位信號(hào)和軟件命令清除。復(fù)位時(shí)使其清零??刂萍拇嫫鞯母袷饺鐖D8-7所示。EOP圖8-7 8237A控制寄存器的格式v 控制寄存器的D0為1時(shí)將選擇存儲(chǔ)器到存儲(chǔ)器的傳送方式。此時(shí),通道0的地址寄存器存放源地址,而用通道1的地址寄存器和字節(jié)計(jì)數(shù)器存放目的地址和計(jì)數(shù)器。若D1也為1,則在整個(gè)存儲(chǔ)器到存儲(chǔ)器的傳送過(guò)程中始終保持同一個(gè)源地址,這樣就可以使同一個(gè)數(shù)據(jù)傳輸?shù)秸麄€(gè)內(nèi)存區(qū)域。v 控制寄存器的D2位是用來(lái)啟動(dòng)和停止8237A的工作的,當(dāng)D2為1時(shí),停止82
38、37A的工作,當(dāng)D2為0時(shí),則啟動(dòng)8237A工作。v 控制寄存器的D3位是用來(lái)控制DMA所用的時(shí)序類(lèi)型,在系統(tǒng)性能允許的范圍,為獲得較高的傳輸效率,8237A能將每次傳輸時(shí)間從正常時(shí)序的3個(gè)時(shí)鐘周期變?yōu)閴嚎s時(shí)序的2個(gè)時(shí)鐘周期。在正常時(shí)序時(shí),命令字的D5選擇滯后寫(xiě)或擴(kuò)展寫(xiě)。其不同之處是寫(xiě)信號(hào)滯后在S4狀態(tài)有效(滯后寫(xiě))還是擴(kuò)展到S3狀態(tài)有效(擴(kuò)展寫(xiě))。v 8237A中有兩種優(yōu)先級(jí)編碼方式:固定優(yōu)先級(jí)編碼和循環(huán)優(yōu)先級(jí)編碼。在固定優(yōu)先級(jí)編碼中,4個(gè)通道的優(yōu)先級(jí)是固定的,其優(yōu)先級(jí)從高到低的排列順序?yàn)椋和ǖ?、通道1、通道2、通道3,顯然通道0的優(yōu)先級(jí)最高,通道3的優(yōu)先級(jí)最低。在循環(huán)優(yōu)先級(jí)編碼中,本次循
39、環(huán)中最近一次服務(wù)的通道在下次循環(huán)中變成最低優(yōu)先級(jí),其他通道依次輪流相應(yīng)的優(yōu)先級(jí),比如,某次傳輸前的優(yōu)先級(jí)次序?yàn)?012,那么在通道1進(jìn)行一次傳輸后,優(yōu)先級(jí)次序成為2301,如果這時(shí)通道2沒(méi)有DMA請(qǐng)求,而通道3有DMA請(qǐng)求,那么,在通道1完成DMA傳輸后,優(yōu)先級(jí)次序成為3012。不論用哪種優(yōu)先級(jí)編碼方式,某個(gè)通道經(jīng)判別優(yōu)先級(jí)獲得服務(wù)后,其他通道無(wú)論其優(yōu)先級(jí)高低,均會(huì)被禁止,直到已服務(wù)的通道結(jié)束傳送為止。v 到底是采用固定優(yōu)先級(jí)還是循環(huán)優(yōu)先級(jí),由控制寄存器的D4位來(lái)確定,為0表示采用固定優(yōu)先級(jí),為1則表示采用循環(huán)優(yōu)先級(jí),采用循環(huán)優(yōu)先級(jí)可以防止某一個(gè)通道單獨(dú)壟斷總線。v 控制寄存器的最高兩位是用來(lái)
40、控制DREQ和DACK的極性的,若D6為1,則DREQ信號(hào)為低電平有效;若為0,則DREQ信號(hào)為高電平有效。如果D7為1,則DACK信號(hào)為高電平有效。v (7)請(qǐng)求寄存器v 8237A的每個(gè)通道對(duì)應(yīng)一條硬件DREQ請(qǐng)求線。但是,當(dāng)工作在數(shù)據(jù)塊傳送模式時(shí)也可以由軟件發(fā)出DREQ請(qǐng)求,所以有一個(gè)請(qǐng)求寄存器。CPU通過(guò)請(qǐng)求字寫(xiě)入請(qǐng)求寄存器,圖8-8為請(qǐng)求字格式。其中D1D0位決定寫(xiě)入的通道,D2位決定是請(qǐng)求(置位)還是復(fù)位。每個(gè)通道的軟件請(qǐng)求位分別設(shè)置,它們是非屏蔽的。它們的優(yōu)先權(quán)同樣受優(yōu)先權(quán)邏輯的控制。它們可由TC或外部的 信號(hào)復(fù)位,RESET復(fù)位信號(hào)使整個(gè)寄存器清除。EOP圖 8-8 8237A
41、請(qǐng)求寄存器格式 (8)屏蔽寄存器v 8237A內(nèi)部的屏蔽寄存器對(duì)應(yīng)于每個(gè)通道的屏蔽觸發(fā)器,當(dāng)其設(shè)置為1時(shí)禁止該通道的DMA請(qǐng)求。在復(fù)位后,4個(gè)通道全置于屏蔽狀態(tài)。所以,在編程時(shí)根據(jù)需要清除某些屏蔽位,允許產(chǎn)生DMA請(qǐng)求。如果某個(gè)通道編程規(guī)定為禁止自動(dòng)下,則當(dāng)該通道產(chǎn)生 信號(hào)時(shí),它所對(duì)應(yīng)的屏蔽位置位,必須再次編程為允許,才能進(jìn)行下一次DMA傳送。屏蔽寄存器的兩種格式見(jiàn)圖8-9所示。EOP圖8-9 8237 A屏蔽字格式 (9)狀態(tài)寄存器v 8237A內(nèi)部有一個(gè)可由CPU讀出的8位狀態(tài)寄存器,用來(lái)存放8237A的狀態(tài)信息。它的低4位反映讀命令這個(gè)瞬間每個(gè)通道是否產(chǎn)生TC,高4位反映每個(gè)通道的請(qǐng)求情
42、況(為1表示有請(qǐng)求),如圖8-10所示。這些狀態(tài)位在復(fù)位或被讀出后,均被清除。 8-10 8237A狀態(tài)字格式v 注意:只有在數(shù)據(jù)塊傳送模式才能使用軟件請(qǐng)求。若是存儲(chǔ)器到存儲(chǔ)器傳送,則必須由軟件請(qǐng)求啟動(dòng)通道0。 (10)暫存寄存器v 它是一個(gè)8位的寄存器,在存儲(chǔ)器至存儲(chǔ)器傳送期間,用來(lái)暫存從源地址單元讀出的數(shù)據(jù)。當(dāng)數(shù)據(jù)傳送完成時(shí),所傳送的最后一個(gè)字節(jié)數(shù)據(jù)可以由CPU讀出。用復(fù)位信號(hào)可清除此寄存器。 (11)復(fù)位命令及清除先后觸發(fā)器命令(軟件命令)v 8237A有3種軟件命令,不需要通過(guò)數(shù)據(jù)總線寫(xiě)入控制字,直接對(duì)地址和控制信號(hào)進(jìn)行譯碼得到。 總清除命令(軟件復(fù)位命令)v 其功能與硬件RESET信
43、號(hào)相同,執(zhí)行軟件復(fù)位命令使8237A的控制寄存器、狀態(tài)寄存器、DMA請(qǐng)求寄存器、暫存器及先/后觸發(fā)器清0,使屏蔽寄存器置1。寫(xiě)入此命令時(shí)要求地址信號(hào)A3A2A1A01101。 清除先/后觸發(fā)器(字節(jié)指示器)命令v 8237A的先/后觸發(fā)器用以控制寫(xiě)入或讀出內(nèi)部16位寄存器的高字節(jié)還是低字節(jié),采用這種控制是因?yàn)?237A只有8條數(shù)據(jù)線,對(duì)16位寄存器的操作必須分兩次進(jìn)行。若先/后觸發(fā)器為零,則讀寫(xiě)低字節(jié);為1則讀/寫(xiě)高字節(jié)。復(fù)位后,該觸發(fā)器被清0,進(jìn)行一次讀寫(xiě)低字節(jié)的操作后,觸發(fā)器變?yōu)?,再對(duì)高位進(jìn)行操作。使用此命令可以改變將要進(jìn)行的16位數(shù)據(jù)讀/寫(xiě)的順序。此時(shí)要求地址信號(hào)A3A2A1A0110
44、0。 清屏蔽寄存器命令v 這個(gè)命令使屏蔽寄存器的4位都清為0,使4個(gè)通道都被允許DMA通道請(qǐng)求。對(duì)8237A的編程,就是將數(shù)據(jù)和控制字分別寫(xiě)入地址寄存器、字節(jié)數(shù)寄存器和模式寄存器、屏蔽寄存器、命令寄存器。若不是軟件請(qǐng)求,則在完成編程后,由通道的引腳輸入有效DREQ信號(hào)啟動(dòng)DMA傳送過(guò)程。若用軟件請(qǐng)求,則再寫(xiě)入指定通道的請(qǐng)求字,就可開(kāi)始DMA傳送。8.3 8237A在在80X86系列微機(jī)上的應(yīng)用系列微機(jī)上的應(yīng)用 8.3.1 8237A在在IBM PC/XT上的應(yīng)用上的應(yīng)用v IBM PC/XT機(jī)使用一片Intel 8237A和DMA頁(yè)面寄存器74LS670、DMA地址鎖存器74LS373、DMA
45、地址驅(qū)動(dòng)器74LS244等組成DMA控制電路,如圖8-11所示。v 8237A有4個(gè)DMA通道,在IBM PC/XT機(jī)系統(tǒng)板上通道0作為動(dòng)態(tài)存儲(chǔ)器DRAM刷新使用,其DMA請(qǐng)求信號(hào)DREQ0來(lái)自計(jì)數(shù)器/定時(shí)器8253通道1的輸出端OUT1; 通道2和通道3分別用于軟盤(pán)驅(qū)動(dòng)器和內(nèi)存之間的數(shù)據(jù)傳輸以及硬盤(pán)驅(qū)動(dòng)器和內(nèi)存之間的數(shù)據(jù)傳輸,其中DREQ2接至軟盤(pán)適配器,DREQ3接至硬盤(pán)適配器;通道1用來(lái)提供其他傳輸功能,如網(wǎng)絡(luò)通信功能,當(dāng)使用串行同步通信適配器(SDLC卡)時(shí),通道1用于同步通信,在內(nèi)存與SDLC卡之間傳輸數(shù)據(jù),其DREQ1可來(lái)自用戶或SDLC通信卡。系統(tǒng)中采用固定優(yōu)先級(jí),即動(dòng)態(tài)RAM刷
46、新操作對(duì)應(yīng)的優(yōu)先級(jí)最高,硬盤(pán)和內(nèi)存的數(shù)據(jù)傳輸對(duì)應(yīng)的優(yōu)先級(jí)最低。圖 8-11 IBM PC/XT微型機(jī)的DMAC電路示意圖v 在IBM PC/XT機(jī)中,8237A對(duì)應(yīng)的端口地址為000FH,由于8237A只提供16位地址,系統(tǒng)的高4位地址由頁(yè)面寄存器(74LS670)提供,以形成整個(gè)微機(jī)系統(tǒng)需要的所有存儲(chǔ)器地址。系統(tǒng)分配給頁(yè)面寄存器的端口地址為80H83H。v 在系統(tǒng)ROM-BIOS中有一段上電自測(cè)試程序,它對(duì)系統(tǒng)各部件進(jìn)行測(cè)試,以確定系統(tǒng)部件是否無(wú)故障,然后對(duì)8237A的通道0通道4進(jìn)行初始化。下面是ROM-BIOS對(duì)8237A進(jìn)行測(cè)試和初始化的部分程序清單。 OUT 0DH, AL ; 發(fā)D
47、MA總清除命令 MOV AL, 0FFH ; 通道寄存器測(cè)試初始值 C16: MOV BL, AL ; 寄存器測(cè)試值寫(xiě)入BX MOV BH, AL MOV CX, 8 ; 準(zhǔn)備測(cè)試DMAC的4個(gè)通道的地址寄存器和 ; 計(jì)數(shù)寄存器07是否正常 MOV DX, 0 ; 通道寄存器地址送DX C17: OUT DX, AL ; 測(cè)試值低8位寫(xiě)入通道寄存器 OUT DX, AL ; 測(cè)試值高8位寫(xiě)入通道寄存器 MOV AL, 0101H IN AL , DX ; 讀通道寄存器高8位 MOV AH, AL IN AL, DX ; 讀通道寄存器低8位 CMP BX, AX ; 讀出值和寫(xiě)入值相等嗎? JE C18 ; 相等,則正確,轉(zhuǎn)下一組寄存器 JMP ERR01 ; 不等,則有故障,轉(zhuǎn)出錯(cuò)處理程序01 C18: INC DX ; DX指向下一個(gè)通道寄存器地址 LOOP C17 ; 循環(huán)測(cè)試 NOT AL ; 用初始值0 JZ C16 ; 對(duì)8個(gè)寄存器再測(cè)試一遍,如正常,表示 ; DMAC的4個(gè)通道的基準(zhǔn)和當(dāng)前地址寄存器 ; 以及計(jì)數(shù)器都正常,這時(shí)可啟動(dòng)內(nèi)存刷新 MOV AL, 0FFH ; 準(zhǔn)備做RAM刷新,將0FFFFH送DMAC的通 ; 道0(用于刷新)的基準(zhǔn)和當(dāng)前計(jì)數(shù)器,相當(dāng) ; 于置
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021屆湖北省孝感市普通高中高一下學(xué)期期末考試數(shù)學(xué)試題
- 2025年建筑施工《春節(jié)節(jié)后復(fù)工復(fù)產(chǎn)》工作實(shí)施方案 合計(jì)3份
- 小學(xué)一年級(jí)20以內(nèi)數(shù)學(xué)口算練習(xí)題大全
- 學(xué)校聘用教師勞動(dòng)合同書(shū)5篇
- 《肌組織課件》課件
- 你聽(tīng)“你聽(tīng)多美”命題作文寫(xiě)作指導(dǎo)與精彩例文
- 湖南高考語(yǔ)文試題分析報(bào)告
- 《勞動(dòng)定額知識(shí)》課件
- 商超連鎖店話務(wù)員工作總結(jié)
- 稅務(wù)籌劃與規(guī)劃實(shí)踐經(jīng)驗(yàn)分享
- 部隊(duì)保密安全課件
- 園林施工技術(shù)創(chuàng)新-洞察分析
- 醫(yī)院窗簾、隔簾采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 2025屆湖北省高三上學(xué)期12月聯(lián)考語(yǔ)文試題
- 國(guó)家開(kāi)放大學(xué)《Photoshop圖像處理》章節(jié)測(cè)試題參考答案
- 期末檢測(cè)卷(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 江蘇省南京市2023-2024學(xué)年高一上學(xué)期物理期末試卷(含答案)
- 新疆烏魯木齊市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版階段練習(xí)(上學(xué)期)試卷及答案
- 2024年人教版八年級(jí)生物上冊(cè)期末考試卷(附答案)
- JGJ120-2012建筑基坑支護(hù)技術(shù)規(guī)程-20220807013156
- 2024年叉車(chē)租賃合同經(jīng)典版(四篇)
評(píng)論
0/150
提交評(píng)論