




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 DMA傳輸6.1 DMA傳輸原理6.2 DMA控制器8237A6.3 8237A的編程使用直接存儲器傳送(Direct Memory AccessDMA)將外設的數據不經過CPU直接送入內存儲器,或者,從內存儲器不經過CPU直接送往外部設備一次DMA傳送只需要執行一個DMA周期(相當于一個總線讀寫周期),因而能夠滿足高速外設數據傳輸的需要。6.1 DMA傳輸原理1. DMA控制器 使用DMA方式傳輸時,需要一個專門的器件來協調外設接口和內存儲器的數據傳輸,這個專門的器件稱為DMA控制器,簡稱DMAC。DMAC內部的寄存器: 地址寄存器:存放DMA傳輸時存儲單元地址; 字節計數器:存放D
2、MA傳輸的字節數; 控制寄存器:存放由CPU設定的DMA傳輸方式,控制命令等; 狀態寄存器:存放DMAC當前的狀態,包括有無DMA請求,是否結束等。圖6-1 DMAC在系統中有二種不同的作用: 總線從模塊:CPU對DMAC進行預置操作,也就是向DMAC寫入內存傳送區的首地址、傳送字節數和控制字時,DMAC相當于一個外設接口,稱為總線從模塊。 總線主模塊: 進行DMA傳輸時,CPU暫停對系統總線的控制,DMAC取得了對總線的控制權,這時的DMAC稱為總線主模塊。2. DMA傳輸過程 總線請求:DMAC向CPU申請使用總線 總線控制轉移:CPU同意DMAC管理總線 數據傳輸:外設接口和存儲器之間傳
3、輸數據 修改地址和計數器:為下一次傳輸做準備 結束處理:DMAC放棄對總線的控制權 以上的過程完全由硬件電路實現,速度很快。 用DMA方式進行一次數據傳輸所經歷的時間稱為“DMA周期”,大體上相當于一次總線讀寫周期的時間。例:用DMA方式將串行通信口接收到的200字節 的數據存入以BUFFER為首地址內存區域 對DMAC進行預置:向DMAC寫入內存首地址,傳輸字 節數(200),傳輸方向(外設接口內存),控制命令 (允許DMA傳輸)等; 對串行通信接口進行初始化,設置串行通信的參數,允 許串行輸入等; 串口每輸入一個數據,自動進行DMA傳輸; 最后一個數據傳輸結束后,DMAC發出傳輸結束信號
4、EOP。CPU可以通過查詢知道傳輸已經結束,也可以利 用EOP信號申請中斷,在中斷服務程序里進行結束處理。 DMA方式傳輸200字節過程為:1次對DMAC初始化, 1次對串口初始化, 200次DMA周期,1次結束處理。8086系統中的DMA信號最小模式CPU通過HOLD接收DMA控制器的總線請求; 在HLDA引腳上發出對總線請求的允許信號。最大模式通過RQ/GT0和RQ/GT1引腳接收DMA控制器的總線請求,發送對總線請求的允許信號。RQ/GT0引腳有較高的優先權。6.2 DMA控制器8237A1 8237A芯片的主要特點 有4個完全獨立的DMA通道,可分別進行編程控制。 每個通道的DMA請求
5、均可分別允許和禁止,并對各通道進行 優先級排隊。 數據塊最大為64KB,每傳送一個字節后地址自動加1或減1。 DMA請求可以由外部輸入,也可以由軟件設置。 可以用級聯的方法擴展DMA通道數。 可以進行從存儲器到存儲器的數據傳輸,用于對存儲區域進 行初始化。2 8237A的工作方式(1)單字節傳輸方式8237A每申請一次總線,進行1個字節傳輸,然后釋放系統總線,一次DMA傳輸結束。 CPU可以在每個DMA周期結束后控制總線,進行數據傳輸,所以不會對系統的運行產生大的影響。(2)塊傳輸方式 DMA控制器獲得總線控制權后,可以連續進入多個DMA周期,進行多個字節的傳輸(最多64K字節)。 這種方式可
6、以獲得最高的數據傳輸速度。如果一次傳輸的數據較多,對系統工作可能產生一定的影響。(3)請求傳輸方式 申請一次總線可以連續進行多個數據的傳輸。 每傳輸1個字節后,8237A都對外設接口的請求信號 進行測試:DREQ端無效,暫停傳輸;DREQ有效,接著進行下一個數據的傳輸。 允許數據不連續,按照外設的最高速度進行數據傳輸, 使用比較靈活。(4)級聯傳輸方式 幾個8237A進行級聯,一片8237A用作主片,其余用 作從片,構成主從式DMA系統。 從片收到外設接口的DMA請求信號后,向DMA控制器 主片申請,再由主片向CPU申請。 一片主片最多可以連接四片從片。這樣,五片8237A 構成的二級DMA系
7、統,可以得到16個DMA通道。 級聯時,主片通過軟件在方式寄存器中設置為級聯 傳輸方式。從片設置成上面的三種方式之一。3 8237A的傳輸類型(1)DMA寫傳輸(IO存儲器)(2)DMA讀傳輸(存儲器IO)(3)DMA檢驗(完成校驗過程,測試DMA控制器的狀態)。(4)存儲器到存儲器傳輸 6.2.2 8237A的內部結構和外部連接8237A的內部結構分成二部分: 四個DMA通道和一個公共控制部分1. DMA通道8237A有四個獨立的通道(CH0一CH3)每個通道: 16位地址寄存器; 16位字節計數器; 8位方式寄存器; 1位的DMA請求觸發器; 1位的屏蔽觸發器。 四個通道公用一個控制寄存器
8、和一個狀態寄存器。DMA通道-地址寄存器 由基地址寄存器和當前地址寄存器組成。 對8237編程時,把本通道DMA傳輸的地址初值寫入基地址寄 存器,再由8237A傳送到當前地址寄存器。 當前地址寄存器在每次DMA傳輸后自動加 1或減1。 CPU可以通過輸入指令讀出當前地址寄存器值(每次讀8位)。 基地址寄存器不能被讀出,且一直保持初值。 數據塊傳送完成后,可以把當前地址寄存器的內容恢復為基 地址寄存器保存的初值。(需要在編程時設置“自動預置”方式)DMA通道-字節計數器 字節計數器由基本字節計數器和當前字節計數器組成。 編程時,由指令把DMA傳輸的字節數寫入基本字節計數器, 繼而傳送到當前字節計
9、數器(初值要比實際傳輸的字節數少1) 每進行一次DMA傳輸,當前字節計數器自動減1。它的值由0 減到FFFFH(-1)時,產生計數結束信號EOP。 當前計數器的值可以由CPU通過輸入指令分兩次讀出。2. 讀寫邏輯8237A在系統總線中作為“從模塊”時 接收CPU對IO接口的讀(IOR#)、寫(IOW#)信號; 對地址總線的低4位 (A0 A3) 譯碼; 片選和IOW#信號有效時,把數據總線的內容寫入所尋 址的寄存器; 片選和IOR#有效時,把選擇的寄存器內容送到數據總 線上。2. 讀寫邏輯8237A在系統總線中作為“主模塊”時 DMA寫周期: 讀寫邏輯產生IOR# 控制邏輯產生存儲器寫(MEM
10、W#) 數據從外設接口傳送到存儲器單元; DMA讀周期: 讀寫邏輯產生IOW# 控制邏輯產生存儲器讀(MEMR#) 數據從存儲器單元傳送到外設接口。3. 控制邏輯DMA周期內,控制邏輯通過產生控制信號和16位要存取的存儲單元地址來控制DMA操作步驟。初始化時,通過對方式寄存器編程,使控制邏輯可以對各個通道的操作進行控制。4 鎖存緩沖器(外接) 使用8237A工作時,需要外接一個八位的地址鎖存緩沖電路,它能夠儲存八位的地址信號,通過可控的三態門連接系統地址總線。在DMA傳送之前,8237A從DB0DB7把存儲器地址的A8A15送入這個鎖存器。在DMA周期里,鎖存器將鎖存的地址送往系統地址總線的A
11、8A15,同時從A0A7引腳發送地址的低八位。5 頁面地址寄存器(外接) 8237A控制了地址總線的16位,所以最多只能連續傳送64K字節的數據。為了控制8086系統20位的物理地址,需要外接一個四位的“頁面地址寄存器”(PC機地址:83H)頁面地址寄存器的值由CPU寫入8237A發送低16位地址時,高四位的地址從頁面地址寄存器發往地址總線的A16A196.2.3 8237A的對外連接信號8237A作為從模塊時的引腳信號(1)RESET復位輸入端,高電平有效。復位時,屏蔽寄存器 被置1,其他寄存器均清0。CS# 片選輸入端,低電平有效,由A4A15譯碼得到。 為低電平時,8237A被選中,CP
12、U可以對8237A進 行讀寫(進行預置或讀取工作狀態)。A3A0最低的4位地址線,雙向信號引腳。DMA控制器 作為從模塊時,A3A0作為輸入端,用來選擇 DMAC內部的16個端口地址。8237A作為從模塊時的引腳信號(2)IOR#IO設備讀信號,雙向、三態、低電平有效。 作為從模塊時為輸入。有效時,CPU讀DMA控 制器內部寄存器的值。IOW#IO設備寫信號,雙向、三態、低電平有效。 作為從模塊時輸入。有效時,CPU向DMA控制 器的內部寄存器中寫入信息(進行編程)。DB7DB08位雙向三態數據線。DMA控制器作為從 模塊時,CPU通過DB7DB0對8237A進行讀寫。8237A作為總線主模塊
13、時的引腳信號(1)地址信號A3A0 DMAC為主模塊時,提供存儲器最低4位地址 (輸出) 。A7A4 - 提供存儲器的中間4位地址(輸出) DB7DB0 輸出當前地址寄存器中的高8位地址,并通過信號 ADSTB打入外部鎖存器,和A7A0輸出的低8位 地址一起構成16位地址。地址信號ADSTB地址選通信號,輸出,高電平有效。信號有效 時,將DMAC高8位地址經DB7DB0送到外部 鎖存器。AEN地址允許信號,輸出,高電平有效。 把高12位地址(地址鎖存器中高8位、頁面地址寄 存器最高4位)一起送到地址總線上,與芯片直接 輸出的低8位地址共同構成20位內存地址。 AEN信號也使與CPU相連的地址鎖
14、存器無效。保證 地址總線上的信號來自DMA控制器,而不是來自 CPU。(2)對存儲器/外設接口的讀寫控制信號IOR#作為主模塊時,IOR#輸出外設接口的讀控制信 號,信號有效時,IO接口部件中的數據被讀出 送往數據總線。IOW#作為主模塊時,IOW#輸出外設接口的寫控制信 號,信號有效時,存儲器中讀出的數據被寫入 IO接口中。READY準備就緒信號,輸入,高電平有效。所用的存 儲器或IO接口的速度較慢時,使READY處于 低電位,8237A會自動插入等待周期。數據準備 就緒時,READY端為高電平,表示可以進行數 據傳輸。(2)對存儲器/外設接口的讀寫控制信號MEMR#存儲器讀信號,低電平有效
15、,輸出。信號有效 時,所選中的存儲器單元的內容被讀到數據總 線。MEMW#存儲器寫信號,低電平有效,輸出。信號有 效時,數據總線上的內容被寫入選中的存儲單 元。(3) DMA聯絡信號DREQ通道DMA請求信號,輸入。 每個通道對應一個DREQ信號端,它的極性可以 通過編程來選擇。 外設接口要求DMA傳輸時,使DREQ處于有效, DMAC控制器送來DMA響應信號DACK以后, 接口撤除DREQ的有效電平。DACK通道DMA應答信號,輸出。DMAC送給接口的回答 信號,每個通道有一個DACK信號端。DMAC獲得CPU送來的總線允許信號HLDA以后, 產生DACK信號送到外設接口。 DACK信號的極
16、性可以通過編程選擇。該信號相當 于IO接口的地址選擇信號。HRQ總線請求信號,輸出。8237A收到外設接口發來 DREQ信號后,如果該通道的DMA請求沒有被 屏蔽,DMAC通過HRQ端向CPU發出總線請求。HLDA總線響應信號,輸入。DMAC向CPU發總線請求信號HRQ以后,CPU發回的總線響應信號。 8237A收到該信號后,便獲得了總線控制權。HLDA也稱為總線保持回答信號。EOP#DMA傳輸結束信號,低電平有效,雙向。 從外部向DMAC送一個 EOP# 信號時,DMA傳輸過程 被強制性地結束。 DMAC任一通道計數結束時,EOP#會輸出一個有效 電平,作為DMA傳輸結束信號??梢允褂肊OP
17、#信號向 CPU申請中斷,進行DMA傳輸的結束處理。3. 其他引腳信號CLK時鐘輸入端。8237A的時鐘頻率為3MHz;8237A-4的時鐘頻率為4MHz;8237A-5的時鐘頻率為5MHz后面兩種DMA控制器是8237A的改進型,工作速度比較高,但工作原理及使用方法相同。電源,地提供8237A工作所需要的+5V電源。4. 小結(1)作為從模塊工作時 CPU對8237A進行預置或讀取狀態,8237A相當于一個IO接口CPU發來的高12位地址經過地址譯碼器產生片選信號,使得CS為低電平,表示本芯片片被選中。CPU發來的低4位地址送到8237A的相應引腳,選擇內部寄存器。IOR#和IOW#作為輸入
18、信號,用作對8237A的讀寫控制。IOR#為低電平:CPU讀取8237A內部寄存器的值。IOW#為低電平:CPU將數據寫入8237A的內部寄存器。(2)作為主模塊工作時 向總線提供要訪問的內存地址:高八位地址在ADSTB信號的配合下,通過DB7DB0輸出到外部連接的地址鎖存緩沖器。低八位通過A7A0輸出AEN輸出高電平:選通外部鎖存器的輸出三態門,將鎖存器高8位地址送往A15A8頁面地址寄存器向A16A19輸出4位地址與CPU相連的三個地址鎖存器停止工作在整個數據塊的傳輸過程中,頁面4位地址保持不變,因此,DMA傳輸的字節數限制在 216以下。 向接口和存儲器提供讀寫控制信號:輸出IOR#和I
19、OW#,控制外設接口的數據傳輸方向。輸出MEMR#和MEMW#,控制存儲器的讀寫。(2)作為主模塊工作時 6.2.4 8237A的工作時序8237A使用獨立于CPU的時鐘;時鐘周期分為兩大類:空閑周期有效周期周期也稱為狀態(STATUS)。1. 空閑周期SI 8237A復位后就處于空閑周期:在此周期,CPU可對8237A作初始化編程或者,雖然已經初始化,但還未有DMA請求輸入。空閑周期中,8237A要檢查DREQ的狀態,確定是否有通道請求DMA服務。同時也對CS端采樣,判定CPU是否要對8237A進行讀寫操作。2. 有效周期(由S0S4五種周期組成)S0-等待周期8237A接到外設的DREQ請
20、求,向CPU發出了HRQ,等待CPU讓出總線控制權。得到來自CPU的HLDA響應后,結束S0狀態。S1地址周期8237用DB0DB7送出高8位地址A8A15用ADSTB將高8位地址送入鎖存器使AEN有效傳輸一段連續的數據時,存儲器地址是相鄰的,高8位地址往往是不變的。此時,S1可以省略。S2數據讀出周期:向外設送出DACK信號,啟動外設工作送出數據讀控制信號DMA讀操作-送出MEMR#DMA寫操作-送出IOR#S3-數據寫入周期:送出寫操作所需的控制信號:DMA讀操作-送出IOW#DMA寫操作-送出MEMW#S3狀態結束時:READY無效,插入SW周期READY有效,進入S4周期S4結束周期:
21、結束本次一個字節傳輸。存儲器之間數據傳輸:從源地址中讀出一個字節,存入8237A暫存寄存器將這個字節寫入目的地址中每個階段的完成都要經過4個周期(狀態)。S4之后應該是哪一個周期?擴展寫 寫控制信號一般在S3開始有效;采用擴展寫方式,寫信號在S2就開始變得有效這種做法可以增加寫操作時間,滿足某些設備的需要。壓縮時序正常時序中,S1用于鎖定高8位地址高8位地址不變時,S1是可以省略的S3是一個延長周期,用來保證可靠的讀寫操作在追求高速傳輸,且器件的讀寫速度又可以跟得上時,S3也是可以省略的省略S3之后的時序稱為壓縮時序壓縮時序下,一個字節的傳輸最少只要兩個時鐘周期(S2,S4)就可完成6.3 8
22、237A的編程使用8237A:共占用16個端口地址(PC機內地址000FH)每個通道占用2個端口地址(共8個)其余8個端口地址由各通道共用地址鎖存器(外配,不占用端口地址):鎖存8237A送出的高8位地址信號發送高8位地址信號頁面寄存器(外配,端口地址83H):存儲和發送最高4位地址信號A19A16與8237A發出的16位地址組合得到20位地址信號地址讀操作寫操作0讀通道0基地址寄存器寫通道0當前地址寄存器1讀通道0基本字節計數器寫通道0當前字節計數器2讀通道1基地址寄存器寫通道1當前地址寄存器3讀通道1基本字節計數器寫通道1當前字節計數器4讀通道2基地址寄存器寫通道2當前地址寄存器5讀通道2
23、基本字節計數器寫通道1當前字節計數器6讀通道3基地址寄存器寫通道3當前地址寄存器7讀通道3基本字節計數器寫通道3當前字節計數器8讀狀態寄存器寫命令寄存器9寫請求寄存器10寫單個屏蔽寄存器11寫工作方式寄存器12清除先/后觸發器13讀暫存寄存器寫總清寄存器14屏蔽位總清命令15綜合屏蔽命令6.3.1 8237A通道專用寄存器每一通道內包含四個16位的寄存器:基地址寄存器基字節數寄存器現行地址寄存器現行字節數計數器存放DMA傳輸的存儲器地址及數據字節數每個通道內有一個8位的模式寄存器記錄通道的工作方式1 基地址寄存器和基字節數寄存器 基地址寄存器存放DMA傳送的內存起始地址:寄存器的內容在初始化時
24、由程序寫入先寫低字節,后寫高字節在整個數據塊的DMA傳輸過程中內容保持不變寫入后,其內容同時傳送到現行地址寄存器基字節數寄存器存放DMA傳送的字節數減1寫入后,其內容同時傳送到現行字節數寄存器這二個寄存器的內容只能寫入,不能讀出。2. 現行地址寄存器 來自基地址寄存器存放DMA傳送的當前地址值每次DMA傳送后,該寄存器的值自動增量或減量可由CPU讀出(先低位,后高位)若設置為自動預置,則在每次計數結束后,自動恢復為它的初始值(即保存在基地址寄存器中的初值)。3. 現行字節數寄存器 存放DMA傳送過程中沒有傳送完的字節數減1每次傳送后,寄存器的值自動減1該寄存器的值減為FFFFH(-1)時,數據
25、塊傳送結束,EOP#引腳變為低電平寄存器的值可由CPU讀出若設置為自動預置,則在每次計數結束后,自動恢復為它的初始值(即保存在基字節數寄存器中的初值)。圖6-34. 方式寄存器 (BASE+0BH)6.3.2 8237A通道公用寄存器圖6-41. 控制寄存器(BASE+08H)圖6-52. 狀態寄存器(BASE+08H)圖6-63. 請求寄存器(BASE+09H)圖6-7屏蔽寄存器(BASE+0AH)圖6-8綜合屏蔽寄存器(BASE+0FH)4. 復位命令(BASE+0DH)復位命令的功能和RESET功能相同:使控制寄存器,狀態寄存器、DMA請求寄存器、暫存器以及先后觸發器都清0使屏蔽寄存器置
26、位對端口地址為BASE+0DH的端口實施一次寫操作,可以實現對8237A的復位操作。 8237A內的“先后觸發器” :為0時,訪問16位寄存器的低字節;為1時,訪問高字節8237A復位時清0。每訪問一次16位寄存器,能自動翻轉(0變1或1變0)寫入內存起始地址或字節計數器初值之前,將這個觸發器清0,就可以按照先低位字節,后高位字節的順序寫入初值清除先后觸發器(BASE+0CH)6.3.3 8237A端口地址及通道分配PC機中,8237A占據00H0FH共16個端口地址。8237A控制器各通道在PC機內的任務:CH0:用作動態存儲器的刷新控制CH1:為用戶預留CH2:軟盤驅動器數據傳輸用的DMA
27、控制CH3:硬盤驅動器數據傳輸用的DMA控制6.3.4 8237A的編程(1)發復位命令(*)(2)寫命令字,設置8237A的工作方式(*)(3)寫方式字,設置需使用的通道的工作方式(4)清除先/后觸發器(5)寫入內存儲器起始地址(先寫低位,后寫高位)(6)寫入傳送的字節數-1(先寫低位,后寫高位)(7)清除該通道的屏蔽位(8)啟動外部設備,如果是內存到輸出設備,用指令設置第一次DMA請求對于IBM-PC系列微型計算機,它的8237A通道0、2、3已分配使用,而且在開機時已對8237A作了初始化。在這種情況下,不允許再對它重新初始化和重新設置控制字上述編程過程的(1)、(2)二步改為:將所需使用的通道置屏蔽狀態(這樣做是為了在其他設置未完成時避免誤動作)。說 明2 應用舉例用DMA方式從網絡接收數據存入內存緩沖區使用8237A的通道1;82
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考二模語文試題(pdf版含答案)-4
- 環保型車間出租合同及廢棄物處理協議
- 采石場環保設施與經營權整體轉讓協議
- 公司節能改善活動方案
- 公司文體娛樂活動方案
- 知識產權辦公用品采購與保護合同
- 《出租車公司女性司機招聘及權益保護合同》
- 公司生圣誕晚會策劃方案
- 公司數字化文化活動方案
- 推進城鄉人居環境整治的實踐研究
- GB/T 12149-2017工業循環冷卻水和鍋爐用水中硅的測定
- 斷絕子女關系協議書模板(5篇)
- 成都小升初數學分班考試試卷五
- Q∕SY 01007-2016 油氣田用壓力容器監督檢查技術規范
- 水利水電 流體力學 外文文獻 外文翻譯 英文文獻 混凝土重力壩基礎流體力學行為分析
- 零星維修工程項目施工方案
- 物流公司超載超限整改報告
- 起重機安裝施工記錄表
- 江蘇省高中學生學籍卡
- 碳排放問題的研究--數學建模論文
- 贏越酒會講解示范
評論
0/150
提交評論