189 Chapter 6 直接記憶體存取.

Slides:



Advertisements
Similar presentations
微型计算机原理及应用.
Advertisements

LinkIt ONE開發板的簡介.
第七章 8254可程式規劃計時/計數器 8254 Programmable Timers.
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
校園網路管理實電務 電子計算機中心 謝進利.
輔助記憶體.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
Parallel I/O Interfacing
主題五 CPU Learning Lab.
題目:十六對一多工器 姓名:李國豪 學號:B
第五章 总线 及其形成 本节课之前,大家学习了:
新世代計算機概論.
第 6 章 I/O 接口和总线 中国科学技术大学 何克东.
記憶體的概況 張登凱.
正反器 一、循序邏輯電路 二、動作情形:用時序(timing),其次輸出( )是由外界輸入與( )所共同決定。
TCP協定 (傳輸層).
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
2-3 基本數位邏輯處理※.
第3章 電腦的組成與架構 3-1 電腦的基本架構 3-2 個人電腦的主機.
二、相關知識 多工器(multiplexer,MUX)或稱資料選擇器(data selector),它主要的功能是從許多條資料輸入線,選擇其中一條輸入資料送至單一輸出線上。 解多工器(Demultiplexer,DEMUX)的動作和多工器恰好相反。 一般而言,多工器與解多工器是用來執行多段選擇開關的功能,它用在類比(analog)和數位(digital)上是有所不同。
第6章組合邏輯應用實驗 6-1 編碼∕解碼器實驗 6-2 多工∕解多工器實驗 6-3 七段顯示解碼器.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
HiNet 光世代非固定制 用戶端IPv6設定方式說明
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
2-1 接腳說明 2018/11/30 第2章 系統分析.
數位邏輯設計與實習 Ch06 計數器與暫存器設計.
SQL Stored Procedure SQL 預存程序.
DMA 控制器 5-1.
第8章 PCH中的常规接口.
Echo Server/Client Speaker:Fang.
Computer Hardware
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
第 2 章、電腦的硬體結構 作者:陳鍾誠.
Chap3 Linked List 鏈結串列.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
第 12 章 8237A DMA控制器及其应用 中国科学技术大学 何克东.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
PLC-GPPW軟體使用教學 授課教師:張祖烈
類比轉數位 IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
第7章 I/O接口和总线 7.1 I/O接口 7.2 总线.
第五章:输入输出基本技术 主讲教师:范新民.
4-15 WDT HT66F50.
第七單元 正反器 (教科書第四章) 數位系統實驗
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
4.19 Fsys _ SLOW MODE HT66F70A.
取得與安裝TIDE 從TIBBO網站取得TIDE
自停式向下計數器 通訊一甲 B 楊穎穆.
陣列與結構.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
ZigBee PRO教學系統 CC2530 實驗.
第3章 電腦的組成與架構 3-1 電腦的基本架構 3-2 個人電腦的主機.
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
Cloud Operating System - Unit 03: 雲端平台建構實驗
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
可變式計數器 通訊一甲 B 楊穎穆.
資料表示方法 資料儲存單位.
一、 OP-Amp 放大器原理 反相放大電路 圖一.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
Chapter 4 Multi-Threads (多執行緒).
快取映射 之直接對映 計算整理.
Lab#9 Serial Port 實驗.
單晶片實作講義 微電腦控制界面 (LCD) 。.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
2-4 中斷.
Presentation transcript:

189 Chapter 6 直接記憶體存取

189 若是希望鍵盤也能夠配合磁碟機的資料傳送速度,電腦中提供了一直接記憶體存取 (direct memory access, DMA) 週邊裝置與記憶體之間的資料讀取或是寫入,可不需要CPU的介入仍能完成。

191 DMA的動作原理 程式執行過程中,是由CPU負責系統所有匯流排的驅動及管理,以提供位址和控制訊息及資料的傳送。週邊裝置希望達到快速的資料傳輸與接收時,且能不在CPU的控制下,仍可以與主機板上的主記憶體直接作傳送的動作,此種不透過CPU所控制的匯流排,即謂之直接記憶體存取,簡稱為DMA。

DMA的動作流程 1. 週邊裝置送出一DMA要求信號 ( 為DREQ) 給DMA控制 器。 2. DAM控制器將此DAM要求一排定優先順序。 192 DMA的動作流程 1. 週邊裝置送出一DMA要求信號 ( 為DREQ) 給DMA控制 器。 2. DAM控制器將此DAM要求一排定優先順序。 3. 待優先權順序決定後,DAM控制器送出一保持 (hold) 信號 (HRQ) 給CPU,以要求讓出匯流排管理權,CPU 在現有的匯流排週期結束時即讓出系統匯流排之管理權。

4. CPU於讓出系統匯流排的控制權之前,會先送出一HLDA信號給DMA控制器,此為一表示匯流排已釋出的允許信號。 192 4. CPU於讓出系統匯流排的控制權之前,會先送出一HLDA信號給DMA控制器,此為一表示匯流排已釋出的允許信號。 5. 此時,DMA控制器將可直接和系統匯流排連接上,直接驅動位址及控制匯流排,允許提出要求的週邊裝置可與記憶體執行資料直接傳輸。 6. DMA控制器再送出一DMA要求允許信號 (DACK) 信號給週邊裝置,則可達到週邊與記憶體的資料直接傳輸。

192

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傳輸動作。

193

8237A的接腳說明 8237A DMA控制器是為一具有40腳的DIP IC,可完成三大主要基本控制: 195 8237A的接腳說明 8237A DMA控制器是為一具有40腳的DIP IC,可完成三大主要基本控制: 1. 時序與控制邏輯單元:產生所有內部與外部之時序以 供應控制外界匯流排與內部工作之用。 2. 程式化命令控制:解碼由CPU先前送來的各種不同命 令。 3. 優先權分解器優先權旋控制單元:是負責DMA通道要 求的優先權之次序。

195

輸入接腳部分 1. CLK時脈輸入 2. READY 此信號是用來擴充8237的記憶體之讀 / 寫時脈週期 3. RESET重置 196 輸入接腳部分 1. CLK時脈輸入 2. READY 此信號是用來擴充8237的記憶體之讀 / 寫時脈週期 3. RESET重置 4. HOLDA:HOLD的允許 此腳的信號是接收來自於CPU,當HOLDA為高態“H” 時,表示CPU已經讓出系統匯流排的控制權。 5. CS:晶片選擇

197 6. DREQ0~DREQ3:DMA要求 若是有外部裝置希望要求DMA服務時,則是透過這些 輸入線以達到要求信號的輸入。四個通道對應有四個 輸入要求,在固定的優先順序下,DREQ0具有最高的 優先順序而DREQ3最低。

I/Q部分 ( 雙向傳輸 ) DB0-DB7資料匯流排 197 I/Q部分 ( 雙向傳輸 ) DB0-DB7資料匯流排 CPU要對8237A之暫存器寫入資料時,則DB0~DB7為資料輸入線;反之CPU要對8237A的暫存器讀取資料時,此DB0~DB7就是為輸出線。

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八位元以送出位址值的低位元組。

198

輸出接腳部分 A4~A7位址線 此四條位址線於DMA的動作週期時才會被致能,並與A0~A3共同組成位址線的低位元組。 HRQ:暫停要求 199 輸出接腳部分 A4~A7位址線 此四條位址線於DMA的動作週期時才會被致能,並與A0~A3共同組成位址線的低位元組。 HRQ:暫停要求 此信號是由8237所發出,向CPU提出匯流排控制權的要求。若有任何一個通道的DREQ有要求時,就會迫使8237A發出一個HRQ信號。

當DMA取得匯流排的控制權之後,則以DACK信號通知週邊裝置已經被允許做DMA傳輸。 200 DACK0~DACK3:DMA允許 當DMA取得匯流排的控制權之後,則以DACK信號通知週邊裝置已經被允許做DMA傳輸。 AEN:位址致能 此信號線提供有兩種功用,分別是為:將高位元組的位址鎖住器 (latcher) 致能。另外是為在DMA的動作期間,可利用此信號來將CPU的系統匯流排予以隔離。

ADSTB (Address-Strobe):位址激發 200 ADSTB (Address-Strobe):位址激發 本信號控制腳是屬高態動作,為將資料線觸控成 位址線的外部鎖住器,此信號是與ALE相配合使用。 MEMR,MEMW 記憶體讀及寫信號線是為三態輸出,當DMA控制器要從記憶體讀資料時,則MEMR信號為低態“L”;若是要向記憶體寫資料時則MEMW信號為低態“L”。

DMA的動作時序 8237A的時序大致上可分有七個獨立的狀態,其中每一個狀態均是為一個標準的時序週期: 200 DMA的動作時序 8237A的時序大致上可分有七個獨立的狀態,其中每一個狀態均是為一個標準的時序週期: 1. SI:閒置狀態 ,8237A未取得匯流排的控制權. 2. S0 (State 0):為8237A的DMA服務開始的第一個狀 態,此狀態是表示DMA已送出HRQ信號,但是CPU尚未 允許的這段時間。

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之間。

202

週邊裝置與記憶體間的資料傳輸 記憶體寫入的DMA時序中可得知。沒有裝置送出DMA要求的信號,而DMA控制器則可接受來自CPU控制命令。 203 週邊裝置與記憶體間的資料傳輸 記憶體寫入的DMA時序中可得知。沒有裝置送出DMA要求的信號,而DMA控制器則可接受來自CPU控制命令。 S1~S4的狀態中,是用來讀取I/O的資料及完成寫入到記憶體.

204 記憶體與記憶體間的資料傳輸 記憶體對記憶體的DMA動作時序。在記憶體之間的讀、寫時,是從記憶體的一位址中讀取資料,先行存入DMA控制器內的臨時暫存器,再於下一個DMA工作週期 (S21, S22, S23, S24) 時由DMA控制器的內部臨時暫存器寫入到記憶體中的另一位址。

204

205 8237A的內部暫存器之功能說明 一個8237A的內部包括有一個控制暫存器、狀態暫存器、位址暫存器以及四個可以分別規劃的通道,在每一通道均有下列暫存器: 1. 目前位址暫存器; 2. 基底位址暫存器; 3. 目前位元組計數暫存器; 4. 基底位元組計數暫存器; 5. 要求暫存器; 6. 遮罩暫存器; 7. 模式暫存器。

DMA控制器 / 介面結構 DMA控制器包含有四個暫存器分別是為: 1. 狀態暫存器 (State Register) 205 DMA控制器 / 介面結構 DMA控制器包含有四個暫存器分別是為: 1. 狀態暫存器 (State Register) 專門記錄各種情況下,DMA控制器的狀態。 2. 控制暫存器 (Control Register) 記錄控制DMA控制器的一些功能。 3. 位址暫存器 (Address Register) 記錄下一個欲工作的位址。 4. 位元組計數器 (Byte Counter) 記錄總共所有要傳遞的位元組個數。

206

資料傳遞步驟 當一資料需要由週邊裝置透過介面傳遞到記憶體時,是經由下列步驟來完成。 1. 介面送出要求信號到控制器。 207 資料傳遞步驟 當一資料需要由週邊裝置透過介面傳遞到記憶體時,是經由下列步驟來完成。 1. 介面送出要求信號到控制器。 2. 控制器獲得系統匯流排的控制權。 3. 目前位址暫存器的值放入位址匯流排上。 4. 控制器送出允許的信號 (DACK) 至介面,通知介面將 週邊裝置的資料置放於資料匯流排 (DB0~DB7) 上。

5. 此筆資料被寫入到位址匯流排上所指定的記憶體位址內。 207 5. 此筆資料被寫入到位址匯流排上所指定的記憶體位址內。 6. 控制器內部的目前位址暫存器,位址值加1或是減1 ( 可視情況,由程式來加以規劃設定之。) 7. 位元組計數器之值減1。 8. 檢查位元組計數器 (TC) 之值,若不為0則回到第一步再執行DMA;否則停止DMA動作。

207 位址暫存器 (一)目前位址暫存器 是為一16位元的暫存器,且每一個通道均有。此暫存器是用於DMA傳輸時,保持位址的值,每當傳輸一次時,此位址值就自動的加1或是減1.

208 (二) 基底位址暫存器 每一個通道均有一基底位址暫存器且是為16位元,此暫存器的值是用來儲存所相對應的目前位址暫存器之最初被設定值。

位元組計數暫存器 每一個通道中均有1個,且分有兩種,分別為目前位元組計數暫存器及基底位元組計數暫存器,兩者均為16位元。 209 位元組計數暫存器 每一個通道中均有1個,且分有兩種,分別為目前位元組計數暫存器及基底位元組計數暫存器,兩者均為16位元。  於目前位元組計數暫存器內之值是由CPU寫入,而此暫存器內之值即是決定有多少個位元組將於DMA的執行週期中被傳輸。 當暫存器的值是由0000H→FFFFH時,一個計數結束 (TC) 信號就會產生,同時使EOP動作。

位址及計數暫存器的輸出 / 入位址 8237A共有6個可以被讀出和寫入的輸出/入埠 (I/O PORT) 位址,這16個埠位址又分為二類: 209 位址及計數暫存器的輸出 / 入位址 8237A共有6個可以被讀出和寫入的輸出/入埠 (I/O PORT) 位址,這16個埠位址又分為二類: 1. 第一類:位址是定在0000H~0007H之間,此8個位址 是讀/寫位址暫存器以及位元組計數暫存器。

2. 第二類:位址是定在0008H~000FH之間,這8個位址是控制命令及狀態暫存器的位址. 210 2. 第二類:位址是定在0008H~000FH之間,這8個位址是控制命令及狀態暫存器的位址.

清除位元組指示正反器 命令暫存器的寫 DMA控制器的資料匯流排只有8位元,因此要將資料寫入16位元的位址及位元組計數暫存器中須分兩次傳送。 211 清除位元組指示正反器 DMA控制器的資料匯流排只有8位元,因此要將資料寫入16位元的位址及位元組計數暫存器中須分兩次傳送。 命令暫存器的寫 此暫存器是用來控制DMA控制器的操作型態,其內部的值是由CPU的08H位址做寫的動作來完成。

狀態暫存器 (State Register) 214 狀態暫存器 (State Register) 0008H位址可以得到控制器的狀態暫存器。此暫存器所包括的狀態位元是用以表示某一通道是否已經計數結束。由後四個位元來分別定義四個通道,此四位元可由Reset來清除。

模式暫存器 暫存器的取得可由輸入埠OBH的位址作寫入動作而得到,是用來定義通道的工作模式。 位元0、位元1:通道選擇 215 模式暫存器 暫存器的取得可由輸入埠OBH的位址作寫入動作而得到,是用來定義通道的工作模式。 位元0、位元1:通道選擇 此兩位元用以選擇使用這個模式的DMA通道是為那一個。

兩位元用以定義所指定的通道 (0~3) 是由位元0及1所決定,將於工作週期中所執行的DMA的動作型態: 215 位元2、位元3:通道的動作型態 兩位元用以定義所指定的通道 (0~3) 是由位元0及1所決定,將於工作週期中所執行的DMA的動作型態: 1. 驗證動作: 2. 寫入動作: 3. 讀出動作:

216 位元4:自動啟始之設定 位元5:決定目前位址暫存器值的改變方式

217 位元6、位元7:工作模式的決定 此兩位元是用以決定通道的工作模式之選擇: 要求傳輸模式

218 單一傳輸模式 於此傳輸模式下,每傳輸完一個位元組之後DREQ就須再重新提出要求,並等候DMA控制器送回一個DACK信號,再繼續傳送下一個位元組。

219 整塊傳輸模式 當I/O週邊提出DMA要求,只要保持信號,直到接收到DACK後就開始執行整塊傳輸,當位元組計數暫存器的值計數到0時,整塊傳輸才停止。

220 串接模式 (Cascade Mode) 若是要串接一個以上的DMA控制器時才使用本模式。在多個8237A串接中,第一階只有一個8237A,而第二階的8237A便可接於第一階的DREQ及DACK端,共可接4個.

220 要求暫存器

位元0、位元1:通道名稱選擇 位元2:重置要求設定 為所要求的通道之選擇,即是軟體所設定的DMA執行之特定通道名稱。 221 位元0、位元1:通道名稱選擇 為所要求的通道之選擇,即是軟體所設定的DMA執行之特定通道名稱。 位元2:重置要求設定 本位元是為對要求通道的設定 (set) 或是清除的設定。但是當 TC 達到0或是有外部 產生時,會自動設定本位元,而當RESET產生時,則會將整個暫存器之內容清除。

221 遮罩暫存器 暫存器的命令乃是用來控制外界的DMA要求是否被允許接受,其命令型態分有三種: 1. 單一通道遮罩命令

222 2. 多通道遮罩命令 3. 清除遮罩暫存器

主清除 在程式的規劃方法中,提供有三個命令可用來清除8237A控制器: 1. 清除指示正反器; 2. 清除遮罩暫存器; 3. 主清除。 223 主清除 在程式的規劃方法中,提供有三個命令可用來清除8237A控制器: 1. 清除指示正反器; 2. 清除遮罩暫存器; 3. 主清除。  主清除 (master clear) 是對位址0DH作寫入動作時即可完成將DMA控制器清除的目的。主清除的功能就相當於硬體的重置 (reset).

223 臨時暫存器 臨時暫存器的主要功用是提供DMA動作在執行記憶體與記憶體間的傳輸時,由臨時暫存器用以保持 (hold) 住資料.

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要求允許輸出信號。

225 圖6-23 PC AT的8237 DMA控制器相關電路

224 AT的DMA動作 通道的DMA要求信號 (DREQ) 可以給AT中兩個8237A DMA控制器的任何一個,是否有要求服務的信號出現。然後再發出匯流排請求信號給CPU;及DMA回送要求允許信號給週邊裝置。隨之DMA控制器將控制系統匯流排;CPU將暫時中止匯流排的控制權,直到資料傳輸完畢。

226 頁暫存器74LS612 8237A DMA控制器可處理高達16位元 為64K位元組, 74LS612是為一具有40腳的DIP,其提供有64K的邊界位址,其內部有RAM的記憶容量,透過頁暫存器 (page register) 來選擇16個中的任何一個,其選擇線是由XA1~XA3來編碼。

227