8257 DMA 控制器的工作原理
最初,處理器對 8257 進行程式設計。在此,處理器充當主控器,而 8257 則以從機模式工作。透過從資料傳輸記憶體的起始地址寫入地址暫存器來獲取程式通道,並透過使用直接記憶體訪問方案寫入計數器暫存器,其中包含要傳輸的位元組數。由最低有效 14 位指定的資訊位元組數。而最高有效 2 位指示要發生的哪種資料傳輸型別。之後,處理器寫入控制埠,英特爾將其稱為特殊模式暫存器。它指定啟用的 DMA 通道,並區分它們是固定還是旋轉的。當 I/O 埠需要 DMA 服務時,會啟用通道的 DRQ 輸入,而 8257 則依次啟用 HRQ。HRQ 的輸出再次連線到 8085 的 HOLD 輸入,透過 DMA 請求啟用 8085 的 HOLD 輸入。然後 8085 完成當前機器週期,再次進入 HOLD 狀態。在此,地址引腳 HOLD 狀態地址引腳,RD*、WR* 和 IO/M* 引腳處於三態。在此,8085 與系統的其餘部分斷開連線。它宣告 HLDA 輸出由 HOLD 狀態啟用。
8057 之前是 8085 的從機,透過接收來自 8085 的命令,它成為計算機的主控器。
DMA 資料傳輸分類如下:
- 單位元組傳輸
- 短突發模式
- 長突發模式
- 單位元組傳輸 - 一些 I/O 埠(如英特爾 8272)用於為每個 DMA 資料傳輸位元組生成 DMA 請求。對於每個資料傳輸位元組,執行以下步驟。
英特爾 8272 啟用 8257 的 DRQ 輸入。
英特爾 8257 透過啟用 HRQ 輸出啟用 8085 的 HOLD 輸入。
英特爾 8085 進入 HOLD 狀態,暫停程式執行並激活 HLDA 輸出。
英特爾 8257 啟用 DACK* 輸出。
英特爾 8257 生成執行位元組資料傳輸所需的控制訊號。AR 增加,CR 減少。
英特爾 8272 取消啟用 DRQ 請求。
英特爾 8257 透過取消啟用 HRQ 輸出取消啟用 8085 的 HOLD 輸入。
英特爾 8085 退出 HOLD 狀態並取消啟用 HLDA 輸出。
英特爾 8085 恢復暫停的程式一段時間。
英特爾 8272 重新啟用 DRQ,並重復該序列,直到達到 TC。
短突發模式 - 一些 I/O 埠(如英特爾 8275)會生成 DRQ 並保持其啟用狀態,直到傳輸多個位元組。根據 8275 的程式設計方式,8257 的 DRQ 輸入保持啟用狀態,最多可啟用八次 DACK*。這會導致 8 位元組的 DMA 資料傳輸。在相當長的一段時間內,DRQ 輸出保持非活動狀態。8257 的 HRQ 輸出變為非活動狀態,導致 8085 退出 HOLD 狀態並進入活動狀態,在此期間。然後根據上述序列,重複該操作,直到所有位元組傳輸完畢並激活 TC 輸出。這種資料傳輸稱為短突發模式傳輸,因為 DRQ 輸入保持啟用狀態,直到傳輸一小塊資料。此方案用於速度適中的外設。
長突發模式 - 在此模式下,只有在傳輸所有位元組後,I/O 端口才會撤回 DRQ 請求並激活 TC 輸出。但 DACK* 輸出會為每個資料傳輸位元組脈衝。此方案用於高速外設,如硬碟控制器。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP