8257 程式設計
從對 8257 的描述研究中,我們知道它由 40 個引腳組成,並且它在從模式和主模式下工作時的條件。從微處理器的角度來看,I/O 埠是一個專門用於 DMA 控制應用程式的晶片,不用於介面 I/O 裝置,以實現與處理器的資料傳輸。該晶片僅用於控制四個 I/O 埠的 DMA 資料傳輸。每個 I/O 埠都存在一個相應的 DMA 通道。該晶片提供了 DMA 資料傳輸所需的所有功能。地址暫存器的概念如下。
每個 DMA 通道都包含一個地址暫存器和一個計數暫存器。這些暫存器長度為 16 位。在每個 16 位中,有四個 AR 標記為 AR3-0。除了四個 CR 外,還有控制暫存器和狀態暫存器。它們是獨立的 8 位暫存器,但具有相同的地址。處理器只能寫入控制暫存器,但可以讀取狀態暫存器。
我們有四個計數器,從 CR3-0 開始,每個計數器都包含 16 位。當 CR 訪問 16 位寬的處理器時,暫存器的最低有效位元組和最高有效位元組以交替的方式訪問,從最低有效位元組開始。此外,M/L* 觸發器在此處提供幫助。使用 DMA 傳輸的位元組數資訊包含在計數器暫存器中,對於 DMA 資料傳輸中的每個位元組,計數器暫存器遞減 1。當計數器暫存器變為 0 時,最後一次 DMA 資料傳輸導致 8257 啟用終端計數 (TC) 輸出。在四個通道中,只有一個輸出讀取 8257 的狀態埠由處理器讀取,以找出哪個通道負責啟用 8257 的輸出。
處理器在活動狀態下寫入 8257 的控制暫存器以配置其工作目的。為了找出 8257 的狀態,處理器讀取處理器的狀態暫存器。控制暫存器的長度為 8 位,處理器只能寫入,不能讀取。只有當 CS* 為 0,A3-0 為 1000,並且 IOW* 為 0 時,才會選擇它。
狀態暫存器的長度為 8 位。處理器只能讀取而不能寫入,只有當 CS* 為 0,A3-0 為 1000,並且 IOR* 為 0 時,才會選擇它。
圖。Intel 8257 的程式設計師檢視一覽。