【计算机原理与接口技术(UNIX)⑮】——输入/输出系统【查询方式、中断控制方式、DMA 、8237A】
? 通過對 【計算機與UNIX匯編原理 ① ~ ?】的學習,我們已經大致掌握了匯編程序設計的相關知識
接下來,我將其分欄名改為 【計算機原理與接口技術(UNIX) 】,重點將放在 “計算機原理與接口技術” 上
文章目錄
- 一、輸入/輸出系統的基礎知識點
- 1.1 接口電路
- 1.2 輸入輸出端口
- 1.3 常用的輸入輸出指令
- 1.3.1 直接尋址的 I/O 指令
- 1.3.2 DX 間址的 I/O 指令
- 二、系統與輸入輸出設備的信息交換方式
- 2.1 無條件傳送方式
- 2.2 查詢方式
- 2.2.1 查詢方式輸入
- 2.2.2 查詢方式輸出
- 2.3 中斷控制方式
- 2.4 直接存儲器存取方式
- 三、DMA 控制器
- 3.1 8237A DMA 控制器
- 3.1.1 8237A —— 控制寄存器
- 3.1.2 8237A —— 方式寄存器
- 3.1.3 8237A —— 地址寄存器
- 3.1.4 8237A —— 字節寄存器
- 3.1.5 8237A —— 先/后觸發器
- 3.1.6 8237A —— 狀態寄存器
- 3.1.7 8237A —— 請求寄存器
- 3.1.8 8237A —— (單通道)屏蔽寄存器
- 3.1.9 8237A —— 多通道屏蔽寄存器
- 3.2 8237A 在 PC 系列機中的應用
- 四、參考附錄
IN/OUT System ??
上一篇文章鏈接:【計算機原理與接口技術(UNIX)?】——再講存儲器系統【位、字擴展法 + 詳細例題】.
下一篇文章鏈接:【計算機原理與接口技術(UNIX)?】——中斷系統 [ 2萬5千字總結、8259A ].
一、輸入/輸出系統的基礎知識點
● 在前面,我們已經學習了《總線與總線標準》、《存儲器系統》兩章前驅知識,現在 “交通”(總線)、“數據站”(存儲器),“處理站”(CPU,前面已經學過)、“港口貨物站”(外設接口)都已經學習過了,接著,我們就要來學習它們之間的交換機制了,即馬上要學習的 “輸入/輸出系統”。
● 輸入輸出系統:指的是(微型)計算機系統中主機與外設進行數據交互的系統。
● 主機通過輸入/輸出接口與外設連接,在接口電路和驅動程序下進行信息交換。
1.1 接口電路
● 接口:是 CPU 與外部設備交換信息的中轉站。
● 接口電路的作用:【可視化圖如下】
??① CPU數據 → 輸出接口電路 → 輸出設備
??② CPU ← 輸入接口電路 ← 輸入設備數據
● 接口電路的功能:
??① 應具有數據暫存功能(數據緩存器[輸入]、數據鎖存器[輸出])
??② 應有端口地址譯碼器(便于使用IN、OUT指令讀寫數據)
??③ 與外設之間有聯絡功能
??④ 有中斷管理能力
??⑤ 有數據轉換功能(并 → 串、串 → 并)
1.2 輸入輸出端口
● 端口:是接口電路中,能與 CPU 交換信息(使用IN、OUT)的寄存器。
● 端口分類:
??① 數據端口:存放 CPU 向外設輸出或外設輸入的數據。【注意:接口電路必須具有數據端口】
??② 控制端口:存放控制信息——控制接口電路、外設的工作。
??③ 狀態端口:存放狀態信息——反映外設的狀態。
● 每個端口,系統都為它編了一個地址,系統只要給出某個地址,通過譯碼電路,就能找到相應的 I/O 接口電路中的端口寄存器。
● 問題:怎么區分 系統給出的地址 是內存單元地址還是 I/O 端口寄存器的地址?
解決方案:合理安排 I/O 端口寄存器的編址方式。
● 端口的編址方式:
??① 端口和存儲單元統一編址(也稱為存儲器映像方式)
????方式:把端口和存儲單元等同看待,統一編址。
????特點:凡訪問存儲單元的指令都可訪問 I/O 端口、端口地址占用存儲空間。
??② I/O 端口獨立編址
????方式:I/O 端口和存儲器分別使用兩個地址空間,單獨編址和譯碼。
????特點: I/O 端口不占用存儲空間、CPU要有專用的 I/O 指令、端口地址譯碼需要專門的控制電路和譯碼電路
-
端口分類:
① 端口和存儲單元統一編址(也稱為存儲器映像方式)
方式:把端口和存儲單元等同看待,統一編址。
特點:凡訪問存儲單元的指令都可訪問 I/O 端口、端口地址占用存儲空間、執行存儲器的指令往往比那些為獨立的 I/O 操作而專門設計的指令慢。
② I/O 端口獨立編址
方式:I/O 端口和存儲器分別使用兩個地址空間,單獨編址和譯碼。
特點:I/O 端口不占用存儲空間、CPU要有專用的 I/O 指令、端口地址譯碼需要專門的控制電路和譯碼電路。 -
PC系列機的端口一般采用獨立編址:
① 從 8088 ~ 奔騰微處理器,設計時用 A15 ~ A0 的低 16 位地址尋址 I/O 端口。所以, CPU 的端口尋址能力為 216=65536個。
② 基于微處理器的 PC 系列,實際使用 A9 ~ A0 做 I/O 地址。所以,PC 系列機 I/O 端口地址最多為 210=1024個。
注意:這 1024 個口地址, 系統本身(主板上, 以及常規 I/O 接口)已經占用了一部分。 且端口地址( I/O 空間 )沒有分段的概念。
1.3 常用的輸入輸出指令
1.3.1 直接尋址的 I/O 指令
● 當端口地址為 1 字節(8bit)時,可采用直接尋址方式。(8 位地址最多可訪問 256 個端口)
■ 輸入指令的格式:
IN AL,PORT ; 將 PORT 端口的內容輸入到 AL 寄存器 IN AX,PORT ; 將 PORT ~ PORT+1 端口的內容輸入到 AX 寄存器 IN EAX,PORT ; 將 PORT ~ PORT+3 端口的內容輸入到 EAX 寄存器■ 輸出指令的格式:
OUT PORT,AL ; 將 AL 寄存器的內容輸出到 PORT 端口 OUT PORT,AX ; 將 AX 寄存器的內容輸出到 PORT ~ PORT+1 端口 OUT PORT,EAX ; 將 EAX 寄存器的內容輸出到 PORT ~ PORT+3 端口● 樣例:
IN AL,61H ; (√) OUT 61H,AL ; (√)IN AX,100H ; (×), 因為 100H 超過了 8 位所能表示的地址(即 100H > FFH)1.3.2 DX 間址的 I/O 指令
● 當端口地址為 2 字節時,用間接尋址方式,此時最多可訪問 216 = 65,536 個端口,且端口地址必須放在寄存器 DX 中。
■ 輸入指令的格式:
IN AL,DX ; 將 AL 的內容輸出到 DX 指向的端口 IN AX,DX ; 將 AL 的內容輸出到 DX 指向的端口;再將 AH 的內容輸出到 DX+ 指向的端口 IN EAX,DX ; 將 EAX 中的雙字輸出到 DX ~ DX+3 指向的 4 個端口■ 輸出指令的格式:
IN AL,DX ; 從 DX 指向的 1 個端口中讀一個字節輸入到 AL 寄存器 IN AX,DX ; 從 DX ~ DX+1 指向的 2 個端口中讀一個字輸入到 AX 寄存器 IN EAX,DX ; 從 DX ~ DX+3 指向的 4 個端口中讀一個雙字輸入到 EAX 寄存器● 樣例:
MOV DX,3F8H IN AL,DX ;從 3F8H 端口取數 → AL● 注意:I/O 指令只能在端口和 AL、AX、EAX 之間交換信息,且用 DX 間址時不能使用方括,即不能寫成:IN AL,[DX]。
二、系統與輸入輸出設備的信息交換方式
● 微機系統與 I/O 端口的信息交換有四種方式:無條件傳送、查詢方式、中斷方式、DMA方式。
2.1 無條件傳送方式
● 無條件傳送方式:假設外設已準備好,即輸入數據已準備好,或輸出設備空閑,此時 CPU 可以直接用IN或OUT指令完成與接口之間的數據傳送。
-
無條件傳送的輸入方式:
① 當 CPU 未執行輸入指令時,I/O 讀信號 IOR ̄\overline{IOR}IOR 無效,暫存器(三態緩沖器)為高阻狀態,實現了外部數據與內部數據總線的隔離。② 當 CPU 執行輸入指令,且外部數據已經準備好時,I/O 讀信號 IOR ̄\overline{IOR}IOR 有效,輸入數據通過三態緩沖器(非高阻狀態)到達數據總線,供 CPU 讀取。
● 對上面張圖的說明:粗的箭頭線代表有很多根線,細的線代表傳輸 1 bit 數據的線。
-
無條件傳送的輸出方式:
① 當 CPU 未執行輸出指令時,I/O 寫信號 IOR ̄\overline{IOR}IOR 無效,鎖存器(三態緩沖器)為高阻狀態,實現了外部數據與內部數據總線的隔離。② 當 CPU 執行輸入指令,且 CPU 數據已經準備好時,I/O 寫信號 IOR ̄\overline{IOR}IOR 有效,輸出數據通過鎖存器(非高阻狀態)到達 I/O 端口,供外設讀取。
● 如果上一次的數據在鎖存器中未及時取走,則新輸出的數據會改變上一次輸出的數據狀態,造成輸出數據的丟失。
2.2 查詢方式
- 查詢方式:
① 采用查詢方式輸入數據前,CPU 要查詢輸入數據是否準備好。
② 采用查詢方式輸出數據前,CPU 要查詢輸出設備是否空閑。
③ 只有確認外設已具備了輸入或輸出的條件后,才能用 IN 或 OUT指令完成數據的傳送。
2.2.1 查詢方式輸入
● 查詢式輸入接口電路:
-
對上面張圖的說明:
① 輸入設備準備好數據后,先發出輸入選通信號,一方面把數據送入數據鎖存器(也稱為數據緩沖器),另一方面使狀態標志觸發器置1。
② 狀態標志是一個 “1bit信息”,它接在 CPU 數據線的某一位上(我們不妨設其接在 D7 位)
③ CPU 將會先讀取狀態端口(即圖中的正中紅色字體部分,注:細線代表1bit數據),查詢 D7 位是否為1,若是則表示輸入數據已經準備好,然后讀取數據端口(注:粗線代表8bit數據),取走輸入數據(8 bit),同時將狀態標志觸發器復位。
④ 若不是1,則會一直查詢,空轉…一直不是1,就一直查詢,直到是1…
● 樣例如下:
"設狀態端口地址 = 200H,數據端口地址 = 201H,假如我們要將 數據端口地址對應的數據 傳入到 CPU的數據總線 上。"則核心代碼如下:RSCAN: MOV DX, 200H ; 傳 狀態端口地址 到 DX 寄存器中(間址)IN AL, DX ; 讀取狀態口地址對應的外設信息TEST AL, 80H ; 測試測試外設是否已經準備好(通過D7位檢測)JZ RSCAN ; 如果外設沒準備好, 就繼續檢測 MOV DX, 201H IN AL, DX ; 將 數據端口地址對應的外設信息 輸入到 CPU的數據總線 上2.2.2 查詢方式輸出
● 查詢式輸出接口電路:
-
對上面張圖的說明:
① 輸出設備空閑時,將狀態標志觸發器置0。
② 輸出數據前,CPU 先從狀態端口讀取狀態信息(假設其接在數據線D0位,如圖右下角所示)。
③ 當 D0 = 0 時,表示輸出設備空閑,然后 CPU 對數據端口執行輸出指令,“數據端口選中” 信號一方面把輸出數據寫入鎖存器,另一方面使狀態標志觸發器置1,并告知輸出設備。
④ 若 D0 = 1 ,則會一直查詢,空轉…一直不是0,就一直查詢,直到是0…
⑤ 輸出設備取走當前數據后,會向接口發送 “確認”(ACK,acknowledge)信號,使狀態標志觸發器置0。
● 樣例如下:
"設狀態口地址 = 數據口地址 = 200H,假如我們要將 CPU的數據總線上的數據 傳入到 外設。"則核心代碼如下:TSCAN: MOV DX, 200H ; 將 狀態端口地址 送到 DX 寄存器中(間址)IN AL, DX ; 讀取狀態口地址對應的外設信息TEST AL, 1 ; 測試測試外設是否空閑(通過D0位檢測)JNZ TSCAN ; 如果外設未空閑, 就繼續檢測 MOV DX, 200H ; 將 數據端口地址 送到 DX 寄存器中(間址) MOV AL, 數據 ; 將 數據 傳入到 AL 中 OUT DX, AL ; 將 AL中的數據 輸出到 數據端口地址對應的外設設備 上2.3 中斷控制方式
● 在查詢方式中,CPU 通過不斷地讀取狀態信息來了解狀態,故導致 CPU 的利用率不高。
● 而且在有多個外設的系統中,一般會有多個外設要求 CPU 為它服務,且是隨機的。若采用查詢式方式就不能保證系統實時地對外設做出響應。
● 為了提高 CPU 的效率,使系統有實時性能,導致了中斷處理技術的產生。
-
中斷方式的執行流程:
① 在外設沒有作好數據傳送準備時,CPU 可執行與傳送數據無關的其它指令。
② 當外設作好傳送準備后,主動向 CPU 發送請求中斷。
③ 若 CPU 響應這一請求,則暫停正在運行的程序,轉入中斷服務程序,完成數據傳送。
④ 待服務完畢后,CPU 自動返回并執行原來運行的程序。
-
對上面張圖的說明:【中斷方式輸入接口電路】
① 輸入設備準備好數據后,先發出輸入選通信號,一方面把數據送入數據鎖存器(也稱為數據緩沖器),另一方面使中斷請求觸發器置1。② 如果此時 CPU 相應這個請求,一方面會向右下方的線路發出一個允許信號,接著就會產生中斷信號“INTR”;另一當面會向右上方的線路就緒信號,那么就會使得中斷請求觸發器置0(使它關閉,避免重復發送中斷請求)、也會使得三態緩沖器置1(使它打開,一會就可以輸入數據了)。
③ CPU 接受到INTR后,就會中斷當前原程序,轉而執行 “中斷服務程序”。
④ 待服務完畢后,那些觸發器、緩沖器將會復位,CPU 自動返回并執行原來運行的程序。
2.4 直接存儲器存取方式
● 采用中斷方式進行數據傳送,可以提高 CPU 的利用率。但是,中斷傳送是由 CPU 通過程序來實現的,每次執行中斷服務子程序都需要保護斷點,而且在中斷服務子程序中,需要保護現場,為中斷源服務,中斷服務結束后還要恢復現場,所以 CPU 需要執行若干指令來完成上述工作。
● 故對于高速外設來說(如高速磁盤驅動器),中斷方式往往就不能滿足要求了。這個時候就需要 DMA (全稱為 Direct Memory Access)。
● 直接存儲器存取方式(DMA):直接用硬件實現在外設與內存之間的數據交換,而不用通過 CPU(間接交換)。這種數據傳送速度的上限就取決于存儲器的工作速度,一般速度都很快。
三、DMA 控制器
● DMA (Direct Memory Access):直接存儲器存取,習慣上稱 DMA 傳送。即用硬件實現 存儲器和存儲器之間 或 存儲器與I/O設備之間 的直接進行的高速數據傳送,而不需 CPU 的干預。
● DMAC:DMA 控制器。它是實現 DMA 傳送的核心芯片
● 專用術語:
??① DMA 讀傳送:在 DMAC 控制下, 讀取RAM的內容 → I/O端口。
??② DMA 寫傳送:I/O端口信息 → 系統 RAM 某單元。
??③ 存儲單元讀/寫傳送:在 DMAC 控制下,實現系統 RAM <一> RAM。【注意:在 PC 系列機中禁止 RAM <一> RAM 的傳送。】
● 系統的三總線分別受到 CPU 和 DMAC 的控制。
● CPU 可以向地址總線、數據總線、控制總線上發送信息,DMAC 也可以向地址總線、數據總線、控制總線上發送信息。但同一時間,三總線只能受一個器件的控制,所以兩者之間必須一個 “聯絡信號”。
-
DMA 傳送的流程:
① I/O 端口首先向 DMAC 發出 “DMA 請求” 信號,請求 DMAC 為其傳送數據。② DMAC 檢測到有 DMA 請求之后,即向 CPU 提出總線保持請求 (請求 CPU 脫離總線)。
③ CPU 執行完當前指令的當前總線周期之后,便脫離系統總線,并向 DMAC 發出 “總線保持響應” 信號(即 HLDA,這是 CPU 對 HOLD 信號的響應信號,它會對 HOLD 信號做出響應,使 HLDA 輸出高電平)。
④ DMAC 收到 “總線響應” 信號之后,便接管系統總線的控制權,并向 I/O 接口發出 DMA 響應信號。
⑤ 若進行 DMA 讀傳送:DMAC 把 RAM 地址 → 地址總線上,然后 DMAC 發出存儲器讀命令和 I/O 寫命令;若進行 DMA 寫傳送:DMAC 把RAM地址 → 地址總線上,然后 DMAC 發出 I/O 讀命令和存儲器寫命令。
⑥ 當預定的字節數全部傳送完畢,DMAC 便脫離系統總線,CPU 再次控制系統總線,繼續執行被中斷的當前指令的其他總線周期。
-
DMA 傳送與中斷方式的比較:
① DMA 傳送比中斷傳送的速度快。(DMA 傳送一字節只占用 CPU 的一個總線周期,而中斷傳送方式是由 CPU 通過程序來實現的,每次執行中斷服務子程序, CPU 都要保護斷點,在中斷服務子程序中,也需保護現場和恢復現場,故需要執行若干指令才能傳送一字節)② DMA 響應比中斷響應的速度快。(中斷方式是在 CPU 的當前指令[一條指令需要執行若干個總線周期]執行完才能響應中斷請求,而 DMA 方式是在 CPU 當前指令的一個總線周期執行完就可以響應 DMA 的請求了)
③ 中斷請求分為內部中斷和外部中斷。DMA 請求的方式也有兩種:硬件 DMA 請求和軟件 DMA 請求。
3.1 8237A DMA 控制器
● 8237A:微型計算機系統中實現 DMA 功能的大規模集成電路控制器。
● 8237A 是具有4個獨立 DMA 通道的可編程 DMAC。
- 8237A 的基本功能:
① 在一個芯片中有4個獨立的 DMA 通道。
② 每一個通道的 DMA 請求都可以被允許或禁止。
③ 每一個通道的 DMA 請求有不同的優先級,可以是固定優先級,也可以是循環優先級。
④ 每一個通道一次傳送的最大字節數為64KB。
⑤ 它提供4種傳送方式:單字節傳送方式、數據塊傳送方式、請求傳送方式、級聯傳送方式。
● 8237A 的內部結構框圖如下:(大致看一下即可)
● 8237A 內部寄存器分成兩類:一類是4個通道共用的,另一類是每個通道專用的。
3.1.1 8237A —— 控制寄存器
● 8237A 的4個通道共用一個控制寄存器。編程時,由 CPU 寫入控制字,而由復位信號(RESET)或軟件清除命令清除它。控制寄存器格式如下:
- 對 8237A 控制寄存器的說明:
① D0:如圖所示。
② D1:如圖所示。
③ D2:如圖所示。
④ D3:如圖所示。
⑤ D4:選擇各通道 DMA 請求的優先級。
⑥ D5:如圖所示。
⑦ D6、D7:確定DREQ和DACK的有效電平極性。
● 注意:系統機加電后,由 BIOS 完成 DMAC 的初始化,控制命令字 = 0(即各個通道禁止RAM <一> RAM)、允許讀/寫傳送、使用正常時序、不擴展寫信號、DMA 請求高電平有效、DMA 應答信號低電平有效、各通道的 DMA 請求是固定優先級(即: DREQ0最高、REQ3最低。 用戶沒有必要也不應當改變控制寄存器的內容。
3.1.2 8237A —— 方式寄存器
● 8237A 每個通道都有屬于自己的一個方式寄存器,但是4個通道方式寄存器共用一個端口地址方式選擇命令字的格式如下:
● 說明:① 方式字的最低兩位用于 “對通道的選擇” 。(寫入命令字之后,8237A 會根據 D1、D0 的編碼把方式寄存器 D7 ~ D0 位的數據送到相應通道的方式寄存器中,進而確定該通道的傳送方式、數據傳送類型等)
● 舉一個栗子:
執行命令如下: MOV AL, 01001001B OUT 方式寄存器口地址, AL● 表示:對 CH1 (通道一)進行單字節讀傳送,自動加1變址, 沒有自動重裝功能。
3.1.3 8237A —— 地址寄存器
● 每個通道都有一個16位的 “基地址寄存器” 和一個16位的 “當前地址寄存器”。
● 基地址寄存器存放本通道 DMA 傳輸時所涉及的存儲區首地址或末地址,這個初始值是在初始化編程時寫入的,同時也被寫入當前的地址寄存器。
- 關于 DMA 傳送的地址生成機制:
① 先由當前地址寄存器向地址總線提供本次 DMA 傳送時的內存地址(低16位)
② 當前地址寄存器的值在每次 DMA 傳輸后自動加1或減1,為傳送寫下一字節做準備。
③ 在整個 DMA 傳送期間,基地址寄存器的內容一直保持不變。
④ 當通道初始化時選擇了 “自動重裝” 功能時,一旦全部字節傳送完成時,基地址寄存器的內容會自動重新裝入當前地址寄存器。
3.1.4 8237A —— 字節寄存器
● 每個通道都有一個16位的 “基本字節寄存器” 和一個16位的 “當前字節寄存器”。
● 基本字節寄存器存放本通道 DMA 傳輸時字節數的初值。(在初始化編程時,初值也被寫入當前字節寄存器)
● 在 DMA 傳送數據時,每傳送一字節,當前字節寄存器自動減1,當初值0減到FFFFH時,產生計數結束信號。
● 當通道初始化選擇 “自動重裝” 功能時,一旦全部字節傳送完畢,基本字節寄存器的內容自動重新裝入當前字節寄存器。
● 基本字節寄存器預置初值后將保持不變,也不能被 CPU 讀出,而當前字節寄存器中的內容可以隨時由 CPU 讀出。
3.1.5 8237A —— 先/后觸發器
● 8237A 只有8根數據線,而地址寄存器、字節寄存器都是16位。所以地址值(/字節值)需要分2次寫入。
● 先/后觸發器規定了寫入地址寄存器中的初值,以及寫入字節寄存器中的初值的寫入順序。 先將 先/后觸發器 清零,則先寫入的是低8位,后寫入的是高8位。
3.1.6 8237A —— 狀態寄存器
● 狀態寄存器的格式如下:
● 狀態寄存器高4位表示當前4個通道是否有DMA請求,低4位表示4個通道的DMA傳送是否結束,供 CPU 查詢。
3.1.7 8237A —— 請求寄存器
● 請求寄存器是4個通道共用的寄存器,使用時應寫入請求命令字。格式如下圖所示:
● 8237A 根據請求寄存器的 D2 ~ D0 位將相應通道的請求觸發器置1(或置0),使相應通道提出 “軟件 DMA 請求”。
3.1.8 8237A —— (單通道)屏蔽寄存器
● 屏蔽寄存器是4個通道共用的寄存器,使用時應寫入屏蔽命令字。格式如下圖所示:
● 功能:屏蔽某一通道的 DMA 請求。
3.1.9 8237A —— 多通道屏蔽寄存器
● 多通道屏蔽寄存器也是4個通道共用的寄存器,使用時應寫入屏蔽命令字。格式如下圖所示:
● 使用一個屏蔽字即可使4個通道的屏蔽寄存器分別置1或置0。
3.2 8237A 在 PC 系列機中的應用
① 用2片 8237A 級連提供7個 DMA 通道:
● 說明:通道0 通道3支持8位數據傳送,通道5 ~ 通道7支持16位數據傳送。通道4作為兩個 DMAC 的級聯。
② 擴充 8237A 的尋址范圍 (方法:增設頁面地址寄存器 )
● 由于 8237A 內部地址寄存器是16位,只能尋址64KB(216B)。為此,在 DMA 接口電路中,以 8237A 為核心為每一通道增加了一個 “頁面寄存器”,用來存放高4位 (AT機中為高8位)地址。
- 執行流程:
① 在執行 DMA 讀寫傳送之前,程序會把 DMA 傳送所涉及的 RAM 單元的高8位物理地址寫入相關通道的頁面寄存器。
② 然后再把 RAM 單元的低16位物理地址寫入相關通道的基本地址寄存器。
③ 接著把 DMA 傳送的實際字節數減1,并寫入相關通道的基本字節寄存器,從而做好初始化準備。
④ 一旦 I/O 端口有 DMA 請求,并且 DMAC 控制了系統三總線之后,由相關通道的 DMA 應答信號控制就會把頁面寄存器內容送到地址總線高8位,DMAC 再把相關通道的低16位地址經過外部地址鎖存和驅動送到低16位地址總線上,以便選擇某一存儲單元。
● 頁面寄存器的 I/O 端口地址如下表所示:
● 后續詳細樣例和編程,在學完后面的《中斷系統》即可上機。
四、參考附錄
[1]《微型計算機原理與接口技術(慕課板)》
清華大學出版社
上一篇文章鏈接:【計算機原理與接口技術(UNIX)?】——再講存儲器系統【位、字擴展法 + 詳細例題】.
下一篇文章鏈接:【計算機原理與接口技術(UNIX)?】——中斷系統 [ 2萬5千字總結、8259A ].
?? ??
總結
以上是生活随笔為你收集整理的【计算机原理与接口技术(UNIX)⑮】——输入/输出系统【查询方式、中断控制方式、DMA 、8237A】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dede模板标签帮助[DedeCMS教程
- 下一篇: dede css文件,dede css教