發布日期:2022-04-20 點擊率:48
預處理階段測試設備狀態;向DMA控制器的設備地址寄存器中送入設備號,并啟動設備;向主存地址計數器中送入欲交換數據的主存起始地址;向字計數器中送入欲交換的數據個數 。
外部設備準備好發送的數據(輸入)或上次接收的數據已處理完畢(輸出)時,將通知DMA控制器發出DMA請求,申請主存總線。數據傳送輸入操作 ①.首先從外部設備讀入一個字(設每字16位)到DMA數據緩沖寄存器IODR中(如果設備是面向字節的,一次讀入一個字節,需要將兩個字節裝配成一個字)。②.外部設備發選通脈沖,使DMA控制器中的DMA請求標志觸發器置“1”。③.DMA控制器向CPU發出總線請求信號(HOLD)。④.CPU在完成了現行機器周期后,即響應DMA請求,發出總線允許信號(HLDA),并由DMA控制器發出DMA響應信號,使DMA請求標記觸發器復位。此時,由DMA控制器接管系統總線。
⑤.將DMA控制器中主存地址寄存器中的主存地址送地址總線,⑥.將DMA數據緩沖寄存器中的內容送數據總線。⑦.在讀/寫控制信號線上發出寫命令。⑧.將DMA地址寄存器的內容加1,從而得到下一個地址,字計數器減1。⑨.判斷字計數器的值是否為“0”。若不為“0”,說明數據塊沒有傳送完畢,返回⑤,傳送下一個數據;若為“0”,說明數據塊已經傳送完畢,則向CPU申請中斷處理。輸出操作①.當DMA數據緩沖寄存器已將輸出數據送至I/O設備后,表示數據緩沖寄存器為“空”;②.外部設備發選通脈沖,使DMA控制器中的DMA請求標志觸發器置“1”;③.DMA控制器向CPU發出總線請求信號(HOLD);④.CPU在完成了現行機器周期后,即響應DMA請求,發出總線允許信號(HLDA),并由DMA控制器發出DMA響應信號,使DMA請求標記觸發器復位。此時,由DMA控制器接管系統總線;⑤.將DMA控制器中主存地址寄存器中的主存地址送地址總線,在讀/寫控制信號線上發出讀命令;⑥.主存將相應地址單元的內容通過數據總線讀入到DMA數據緩沖寄存器中;⑦.將DMA數據緩沖寄存器的內容送到輸出設備;⑧.將DMA地址寄存器的內容加1,從而得到下一個地址,字計數器減1;⑨.判斷字計數器的值是否為“0”。若不為“0”,說明數據塊沒有傳送完畢,返回到⑤,傳送下一個數據;若為“0”,說明數據塊已經傳送完畢,則向CPU申請中斷處理。
傳送后處理校驗送入主存的數據是否正確。決定是否繼續用DMA傳送其他數據塊。測試在傳送過程中是否發生錯誤。
原理一個設備接口試圖通過總線直接向另一個設備發送數據(一般是大批量的數據),它會先向CPU發送DMA請求信號。外設通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管總線控制權的總線請求,CPU收到該信號后,在當前的總線周期結束后,會按DMA信號的優先級和提出DMA請求的先后順序響應DMA信號。CPU對某個設備接口響應DMA請求時,會讓出總線控制權。于是在DMA控制器的管理下,外設和存儲器直接進行數據交換,而不需CPU干預。數據傳送完畢后,設備接口會向CPU發送DMA結束信號,交還總線控制權。
中斷處理過程基本上由3部分組成,第一部分為準備部分,其基本功能是保護現場,對于非向量中斷方式則需要確定中斷源,最后開放中斷,允許更高級的中斷請求打斷低級的中斷服務程序;第二部分為處理部分,即真正執行具體的為某個中斷源服務的中斷服務程序;第三部分為結尾部分,首先要關中斷,以防止在恢復現場過程中被新的中斷請求打斷,接著恢復現場,然后開放中斷,以便返回原來的程序后可響應其他的中斷請求。中斷服務程序的最后一條指令一定是中斷返回指令。
下一篇: PLC、DCS、FCS三大控
上一篇: 微電子器件概述