日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【计算机原理与接口技术(UNIX)⑮】——输入/输出系统【查询方式、中断控制方式、DMA 、8237A】

發布時間:2023/12/31 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【计算机原理与接口技术(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】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。