Download presentation
Presentation is loading. Please wait.
1
189 Chapter 直接記憶體存取
2
189 若是希望鍵盤也能夠配合磁碟機的資料傳送速度,電腦中提供了一直接記憶體存取 (direct memory access, DMA) 週邊裝置與記憶體之間的資料讀取或是寫入,可不需要CPU的介入仍能完成。
3
191 DMA的動作原理 程式執行過程中,是由CPU負責系統所有匯流排的驅動及管理,以提供位址和控制訊息及資料的傳送。週邊裝置希望達到快速的資料傳輸與接收時,且能不在CPU的控制下,仍可以與主機板上的主記憶體直接作傳送的動作,此種不透過CPU所控制的匯流排,即謂之直接記憶體存取,簡稱為DMA。
4
DMA的動作流程 1. 週邊裝置送出一DMA要求信號 ( 為DREQ) 給DMA控制 器。 2. DAM控制器將此DAM要求一排定優先順序。
192 DMA的動作流程 1. 週邊裝置送出一DMA要求信號 ( 為DREQ) 給DMA控制 器。 2. DAM控制器將此DAM要求一排定優先順序。 3. 待優先權順序決定後,DAM控制器送出一保持 (hold) 信號 (HRQ) 給CPU,以要求讓出匯流排管理權,CPU 在現有的匯流排週期結束時即讓出系統匯流排之管理權。
5
4. CPU於讓出系統匯流排的控制權之前,會先送出一HLDA信號給DMA控制器,此為一表示匯流排已釋出的允許信號。
192 4. CPU於讓出系統匯流排的控制權之前,會先送出一HLDA信號給DMA控制器,此為一表示匯流排已釋出的允許信號。 5. 此時,DMA控制器將可直接和系統匯流排連接上,直接驅動位址及控制匯流排,允許提出要求的週邊裝置可與記憶體執行資料直接傳輸。 6. DMA控制器再送出一DMA要求允許信號 (DACK) 信號給週邊裝置,則可達到週邊與記憶體的資料直接傳輸。
6
192
7
8237-5控制器 DMA控制器是為INTEL的8237-5。 每秒的傳送速率可高達到1.6Mbyte。
195 8237-5控制器 DMA控制器是為INTEL的8237-5。 每秒的傳送速率可高達到1.6Mbyte。 分有三個主要基本控制單元;四組獨立通道提供四組I/O裝置與記憶體間的資料傳輸。另外8237中則提供有27個暫存器,由344個位元所組成 . 通道中亦具有個別且獨立的DREQ和DACK的優先權控制邏輯;DMA的結束則是透過一EOP 輸入信號來表示一個DMA傳輸動作。
8
193
9
8237A的接腳說明 8237A DMA控制器是為一具有40腳的DIP IC,可完成三大主要基本控制:
195 8237A的接腳說明 8237A DMA控制器是為一具有40腳的DIP IC,可完成三大主要基本控制: 1. 時序與控制邏輯單元:產生所有內部與外部之時序以 供應控制外界匯流排與內部工作之用。 2. 程式化命令控制:解碼由CPU先前送來的各種不同命 令。 3. 優先權分解器優先權旋控制單元:是負責DMA通道要 求的優先權之次序。
10
195
11
輸入接腳部分 1. CLK時脈輸入 2. READY 此信號是用來擴充8237的記憶體之讀 / 寫時脈週期 3. RESET重置
196 輸入接腳部分 1. CLK時脈輸入 2. READY 此信號是用來擴充8237的記憶體之讀 / 寫時脈週期 3. RESET重置 4. HOLDA:HOLD的允許 此腳的信號是接收來自於CPU,當HOLDA為高態“H” 時,表示CPU已經讓出系統匯流排的控制權。 5. CS:晶片選擇
12
197 6. DREQ0~DREQ3:DMA要求 若是有外部裝置希望要求DMA服務時,則是透過這些 輸入線以達到要求信號的輸入。四個通道對應有四個 輸入要求,在固定的優先順序下,DREQ0具有最高的 優先順序而DREQ3最低。
13
I/Q部分 ( 雙向傳輸 ) DB0-DB7資料匯流排
197 I/Q部分 ( 雙向傳輸 ) DB0-DB7資料匯流排 CPU要對8237A之暫存器寫入資料時,則DB0~DB7為資料輸入線;反之CPU要對8237A的暫存器讀取資料時,此DB0~DB7就是為輸出線。
14
A0~A7位址線 而在動作週期 則為A0~A3與A4~A7共合成A0~A7八位元以送出位址值的低位元組。
197 A0~A7位址線 在此八位元中可予以拆成兩部分,分別是為A0~A3、A4~A7,在8237A的閒置週期 (idle cycle) 時A0~A3是用來定址CPU所要寫入或讀出的暫存器名稱 . 而在動作週期 則為A0~A3與A4~A7共合成A0~A7八位元以送出位址值的低位元組。
15
198
16
輸出接腳部分 A4~A7位址線 此四條位址線於DMA的動作週期時才會被致能,並與A0~A3共同組成位址線的低位元組。 HRQ:暫停要求
199 輸出接腳部分 A4~A7位址線 此四條位址線於DMA的動作週期時才會被致能,並與A0~A3共同組成位址線的低位元組。 HRQ:暫停要求 此信號是由8237所發出,向CPU提出匯流排控制權的要求。若有任何一個通道的DREQ有要求時,就會迫使8237A發出一個HRQ信號。
17
當DMA取得匯流排的控制權之後,則以DACK信號通知週邊裝置已經被允許做DMA傳輸。
200 DACK0~DACK3:DMA允許 當DMA取得匯流排的控制權之後,則以DACK信號通知週邊裝置已經被允許做DMA傳輸。 AEN:位址致能 此信號線提供有兩種功用,分別是為:將高位元組的位址鎖住器 (latcher) 致能。另外是為在DMA的動作期間,可利用此信號來將CPU的系統匯流排予以隔離。
18
ADSTB (Address-Strobe):位址激發
200 ADSTB (Address-Strobe):位址激發 本信號控制腳是屬高態動作,為將資料線觸控成 位址線的外部鎖住器,此信號是與ALE相配合使用。 MEMR,MEMW 記憶體讀及寫信號線是為三態輸出,當DMA控制器要從記憶體讀資料時,則MEMR信號為低態“L”;若是要向記憶體寫資料時則MEMW信號為低態“L”。
19
DMA的動作時序 8237A的時序大致上可分有七個獨立的狀態,其中每一個狀態均是為一個標準的時序週期:
200 DMA的動作時序 8237A的時序大致上可分有七個獨立的狀態,其中每一個狀態均是為一個標準的時序週期: 1. SI:閒置狀態 ,8237A未取得匯流排的控制權. 2. S0 (State 0):為8237A的DMA服務開始的第一個狀 態,此狀態是表示DMA已送出HRQ信號,但是CPU尚未 允許的這段時間。
20
201 3. S1, S2, S3, S4 (State 1, 2, 3, 4):是為當CPU已 回應HLDA時,DMA即開始進入動作週期,是為DMA服務 時的工作狀態。 4. SW (state wait) 等待狀態:若要完成一DMA的動 作,需要較長時間的話就可加入一等待狀態。此等待 狀態 (SW) 是可以藉由8237的READY線之控制,而插 入SW於S2和S3或S3和S4之間。
21
202
22
週邊裝置與記憶體間的資料傳輸 記憶體寫入的DMA時序中可得知。沒有裝置送出DMA要求的信號,而DMA控制器則可接受來自CPU控制命令。
203 週邊裝置與記憶體間的資料傳輸 記憶體寫入的DMA時序中可得知。沒有裝置送出DMA要求的信號,而DMA控制器則可接受來自CPU控制命令。 S1~S4的狀態中,是用來讀取I/O的資料及完成寫入到記憶體.
23
204 記憶體與記憶體間的資料傳輸 記憶體對記憶體的DMA動作時序。在記憶體之間的讀、寫時,是從記憶體的一位址中讀取資料,先行存入DMA控制器內的臨時暫存器,再於下一個DMA工作週期 (S21, S22, S23, S24) 時由DMA控制器的內部臨時暫存器寫入到記憶體中的另一位址。
24
204
25
205 8237A的內部暫存器之功能說明 一個8237A的內部包括有一個控制暫存器、狀態暫存器、位址暫存器以及四個可以分別規劃的通道,在每一通道均有下列暫存器: 1. 目前位址暫存器; 2. 基底位址暫存器; 3. 目前位元組計數暫存器; 4. 基底位元組計數暫存器; 5. 要求暫存器; 6. 遮罩暫存器; 7. 模式暫存器。
26
DMA控制器 / 介面結構 DMA控制器包含有四個暫存器分別是為: 1. 狀態暫存器 (State Register)
205 DMA控制器 / 介面結構 DMA控制器包含有四個暫存器分別是為: 1. 狀態暫存器 (State Register) 專門記錄各種情況下,DMA控制器的狀態。 2. 控制暫存器 (Control Register) 記錄控制DMA控制器的一些功能。 3. 位址暫存器 (Address Register) 記錄下一個欲工作的位址。 4. 位元組計數器 (Byte Counter) 記錄總共所有要傳遞的位元組個數。
27
206
28
資料傳遞步驟 當一資料需要由週邊裝置透過介面傳遞到記憶體時,是經由下列步驟來完成。 1. 介面送出要求信號到控制器。
207 資料傳遞步驟 當一資料需要由週邊裝置透過介面傳遞到記憶體時,是經由下列步驟來完成。 1. 介面送出要求信號到控制器。 2. 控制器獲得系統匯流排的控制權。 3. 目前位址暫存器的值放入位址匯流排上。 4. 控制器送出允許的信號 (DACK) 至介面,通知介面將 週邊裝置的資料置放於資料匯流排 (DB0~DB7) 上。
29
5. 此筆資料被寫入到位址匯流排上所指定的記憶體位址內。
207 5. 此筆資料被寫入到位址匯流排上所指定的記憶體位址內。 6. 控制器內部的目前位址暫存器,位址值加1或是減1 ( 可視情況,由程式來加以規劃設定之。) 7. 位元組計數器之值減1。 8. 檢查位元組計數器 (TC) 之值,若不為0則回到第一步再執行DMA;否則停止DMA動作。
30
207 位址暫存器 (一)目前位址暫存器 是為一16位元的暫存器,且每一個通道均有。此暫存器是用於DMA傳輸時,保持位址的值,每當傳輸一次時,此位址值就自動的加1或是減1.
31
208 (二) 基底位址暫存器 每一個通道均有一基底位址暫存器且是為16位元,此暫存器的值是用來儲存所相對應的目前位址暫存器之最初被設定值。
32
位元組計數暫存器 每一個通道中均有1個,且分有兩種,分別為目前位元組計數暫存器及基底位元組計數暫存器,兩者均為16位元。
209 位元組計數暫存器 每一個通道中均有1個,且分有兩種,分別為目前位元組計數暫存器及基底位元組計數暫存器,兩者均為16位元。 於目前位元組計數暫存器內之值是由CPU寫入,而此暫存器內之值即是決定有多少個位元組將於DMA的執行週期中被傳輸。 當暫存器的值是由0000H→FFFFH時,一個計數結束 (TC) 信號就會產生,同時使EOP動作。
33
位址及計數暫存器的輸出 / 入位址 8237A共有6個可以被讀出和寫入的輸出/入埠 (I/O PORT) 位址,這16個埠位址又分為二類:
209 位址及計數暫存器的輸出 / 入位址 8237A共有6個可以被讀出和寫入的輸出/入埠 (I/O PORT) 位址,這16個埠位址又分為二類: 1. 第一類:位址是定在0000H~0007H之間,此8個位址 是讀/寫位址暫存器以及位元組計數暫存器。
34
2. 第二類:位址是定在0008H~000FH之間,這8個位址是控制命令及狀態暫存器的位址.
210 2. 第二類:位址是定在0008H~000FH之間,這8個位址是控制命令及狀態暫存器的位址.
35
清除位元組指示正反器 命令暫存器的寫 DMA控制器的資料匯流排只有8位元,因此要將資料寫入16位元的位址及位元組計數暫存器中須分兩次傳送。
211 清除位元組指示正反器 DMA控制器的資料匯流排只有8位元,因此要將資料寫入16位元的位址及位元組計數暫存器中須分兩次傳送。 命令暫存器的寫 此暫存器是用來控制DMA控制器的操作型態,其內部的值是由CPU的08H位址做寫的動作來完成。
36
狀態暫存器 (State Register)
214 狀態暫存器 (State Register) 0008H位址可以得到控制器的狀態暫存器。此暫存器所包括的狀態位元是用以表示某一通道是否已經計數結束。由後四個位元來分別定義四個通道,此四位元可由Reset來清除。
37
模式暫存器 暫存器的取得可由輸入埠OBH的位址作寫入動作而得到,是用來定義通道的工作模式。 位元0、位元1:通道選擇
215 模式暫存器 暫存器的取得可由輸入埠OBH的位址作寫入動作而得到,是用來定義通道的工作模式。 位元0、位元1:通道選擇 此兩位元用以選擇使用這個模式的DMA通道是為那一個。
38
兩位元用以定義所指定的通道 (0~3) 是由位元0及1所決定,將於工作週期中所執行的DMA的動作型態:
215 位元2、位元3:通道的動作型態 兩位元用以定義所指定的通道 (0~3) 是由位元0及1所決定,將於工作週期中所執行的DMA的動作型態: 1. 驗證動作: 2. 寫入動作: 3. 讀出動作:
39
216 位元4:自動啟始之設定 位元5:決定目前位址暫存器值的改變方式
40
217 位元6、位元7:工作模式的決定 此兩位元是用以決定通道的工作模式之選擇: 要求傳輸模式
41
218 單一傳輸模式 於此傳輸模式下,每傳輸完一個位元組之後DREQ就須再重新提出要求,並等候DMA控制器送回一個DACK信號,再繼續傳送下一個位元組。
42
219 整塊傳輸模式 當I/O週邊提出DMA要求,只要保持信號,直到接收到DACK後就開始執行整塊傳輸,當位元組計數暫存器的值計數到0時,整塊傳輸才停止。
43
220 串接模式 (Cascade Mode) 若是要串接一個以上的DMA控制器時才使用本模式。在多個8237A串接中,第一階只有一個8237A,而第二階的8237A便可接於第一階的DREQ及DACK端,共可接4個.
44
220 要求暫存器
45
位元0、位元1:通道名稱選擇 位元2:重置要求設定 為所要求的通道之選擇,即是軟體所設定的DMA執行之特定通道名稱。
221 位元0、位元1:通道名稱選擇 為所要求的通道之選擇,即是軟體所設定的DMA執行之特定通道名稱。 位元2:重置要求設定 本位元是為對要求通道的設定 (set) 或是清除的設定。但是當 TC 達到0或是有外部 產生時,會自動設定本位元,而當RESET產生時,則會將整個暫存器之內容清除。
46
221 遮罩暫存器 暫存器的命令乃是用來控制外界的DMA要求是否被允許接受,其命令型態分有三種: 1. 單一通道遮罩命令
47
222 2. 多通道遮罩命令 3. 清除遮罩暫存器
48
主清除 在程式的規劃方法中,提供有三個命令可用來清除8237A控制器: 1. 清除指示正反器; 2. 清除遮罩暫存器; 3. 主清除。
223 主清除 在程式的規劃方法中,提供有三個命令可用來清除8237A控制器: 1. 清除指示正反器; 2. 清除遮罩暫存器; 3. 主清除。 主清除 (master clear) 是對位址0DH作寫入動作時即可完成將DMA控制器清除的目的。主清除的功能就相當於硬體的重置 (reset).
49
223 臨時暫存器 臨時暫存器的主要功用是提供DMA動作在執行記憶體與記憶體間的傳輸時,由臨時暫存器用以保持 (hold) 住資料.
50
224 PC AT的DMA規劃 AT是利用著DMA的方式來將大量資料傳輸於儲存裝置及主記憶體之間。PC AT中使用了兩個8237A的DMA控制器傳送8位元或16位元的資料;最多可達64K的位元組。於AT中有7個DMA通道,其中四個是來自擴充插槽的J1至J8,另外三個則是來自於J10至J14及J16做16位元的操作,於每一條DMA通道中有一DMA的要求輸入信號線及一個DMA要求允許輸出信號。
51
225 圖6-23 PC AT的8237 DMA控制器相關電路
52
224 AT的DMA動作 通道的DMA要求信號 (DREQ) 可以給AT中兩個8237A DMA控制器的任何一個,是否有要求服務的信號出現。然後再發出匯流排請求信號給CPU;及DMA回送要求允許信號給週邊裝置。隨之DMA控制器將控制系統匯流排;CPU將暫時中止匯流排的控制權,直到資料傳輸完畢。
53
226 頁暫存器74LS612 8237A DMA控制器可處理高達16位元 為64K位元組, 74LS612是為一具有40腳的DIP,其提供有64K的邊界位址,其內部有RAM的記憶容量,透過頁暫存器 (page register) 來選擇16個中的任何一個,其選擇線是由XA1~XA3來編碼。
54
227
Similar presentations