微型計算機原理與接口技術(shù)_第1頁
微型計算機原理與接口技術(shù)_第2頁
微型計算機原理與接口技術(shù)_第3頁
微型計算機原理與接口技術(shù)_第4頁
微型計算機原理與接口技術(shù)_第5頁
已閱讀5頁,還剩135頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 教學提示: 微處理器同外設(shè)的連接和信息交換,是微型機 系統(tǒng)要解決的主要問題之一。 本章描述了輸入輸出的基礎(chǔ)知識,包括外設(shè)接 口的一般結(jié)構(gòu)、I/O端口的尋址方式和數(shù)據(jù)傳送 的控制方式,以及PC機I/O地址空間、基本輸入 和輸出接口等內(nèi)容。 另外還描述了DMA控制器8237A的結(jié)構(gòu)、功能 及實際應用。 教學目標: 了解微處理器同外設(shè)接口交換的3種信息;清楚 端口與接口的區(qū)別;了解I/O端口的編址方式。 深刻理解程序控制傳送方式的原理、特點及應 用場合,能夠編寫簡單的應用程序。深刻理解 PC機I/O地址空間、基本輸入和輸出接口、地址 譯碼器等內(nèi)容。 理解DMA方式數(shù)據(jù)傳輸?shù)幕竟ぷ髟?。熟?82

2、37A芯片內(nèi)部結(jié)構(gòu)以及外部引腳的連接方法; 熟知8237A的4種工作方式;熟知8237A內(nèi)部寄 存器的作用;能夠讀懂并編寫簡單的初始化程 序和應用程序。 5.1 概 述 5.1.1 接口的功能 如圖5.1所示,用戶可以根據(jù)自己的需要,選擇 不同類型的外設(shè),配置相應的接口電路,通過 接口將不同類型的外設(shè)連接到系統(tǒng)總線上,構(gòu) 成不同用途、不同規(guī)模的應用系統(tǒng)。 一般情況下,存儲器接口電路及相應的控制比 較單一,而I/O設(shè)備種類和型號繁多,相應I/O 接口電路邏輯不同,控制較復雜。因此本章及 后續(xù)章節(jié)接口多指I/O接口,也稱為外設(shè)接口。 雖然接口因外設(shè)的種類繁多而結(jié)構(gòu)各異,但作 為連接計算機系統(tǒng)總線與

3、外部設(shè)備的橋梁,一 般均有如下的功能: 圖5.1 CPU與外設(shè)連接示意圖 1. 數(shù)據(jù)緩沖功能和接口狀態(tài)的表示 數(shù)據(jù)緩沖功能主要解決CPU的高速度與外設(shè)的低速度 之間的矛盾,從而避免了因速度不一致而導致的數(shù)據(jù) 丟失。一般在接口中通過設(shè)置數(shù)據(jù)緩沖器或鎖存器解 決此類矛盾,通常把具有緩沖或鎖存數(shù)據(jù)能力的寄存 器稱為數(shù)據(jù)端口。 接口從系統(tǒng)總線或外設(shè)接收一個數(shù)據(jù),通過發(fā)出“準 備好”聯(lián)絡(luò)信號,通知外設(shè)或CPU取走數(shù)據(jù)。一次數(shù) 據(jù)傳輸完成后,接口又可發(fā)出“數(shù)據(jù)緩沖區(qū)空”信號, 準備進行下一次傳輸。接口有向CPU提供接口狀態(tài)或 外設(shè)工作狀態(tài)的能力。在接口電路中這些用于表示 “空”、“滿”、“準備好”、“忙”

4、、“閑”等狀 態(tài)信號的寄存器稱為狀態(tài)端口。 2. 接收和執(zhí)行CPU命令的功能 CPU對I/O設(shè)備的控制命令一般均以代碼的形式 發(fā)送到接口的命令寄存器,命令寄存器稱為控 制端口或命令端口。接口電路將這些命令代碼 進行識別和分析,產(chǎn)生若干個控制信號。這些 控制信號的作用一般有兩個:一是控制所連接 外設(shè)的工作,二是用于設(shè)置接口的工作方式。 3. 信號轉(zhuǎn)換功能 因為外設(shè)所需的控制信號與外設(shè)提供的狀態(tài)信 號往往與微型機總線的信號不匹配,信號轉(zhuǎn)換 是不可以避免的。信號轉(zhuǎn)換的主要內(nèi)容是對信 號之間的邏輯關(guān)系、時序配合以及電平匹配進 行轉(zhuǎn)換。 4. 設(shè)備選擇功能 微型機系統(tǒng)中可能帶有多種外設(shè),或者多臺同 種外

5、設(shè),需要CPU通過地址信號來標識和選擇 不同的接口。因此接口應對系統(tǒng)總線上傳輸?shù)?地址進行譯碼,檢測到本端口地址時,產(chǎn)生相 應的“選中”信號,并按CPU的要求進行信息 傳輸。一般情況下,端口尋址方法類似存儲器 的尋址方法,通過高位地址譯碼產(chǎn)生片選信號 選擇外設(shè)接口芯片,低位地址選擇芯片內(nèi)部寄 存器或鎖存器。 5. 中斷管理功能 外設(shè)需要及時得到CPU的服務(wù),所以接口必須 要有簡單的中斷管理功能。如:發(fā)出中斷請求, 提供中斷類型碼等。在PC機中,有些功能由專 門的中斷控制器實現(xiàn)。 6. 數(shù)據(jù)格式轉(zhuǎn)換功能 CPU能直接處理的是并行數(shù)據(jù),如8位、16位和 32位等。而有些外設(shè)只能處理串行數(shù)據(jù),如串

6、行通信設(shè)備、終端機等。所以當外設(shè)使用的數(shù) 據(jù)格式與CPU數(shù)據(jù)格式不同時,接口要進行兩 種數(shù)據(jù)格式之間的相互轉(zhuǎn)換。 7. 可編程功能 目前接口芯片大部分是可編程的,可以用命令 字或控制字來設(shè)定其工作方式、工作參數(shù)。所 以在不改動硬件電路的情況下只修改相應的命 令字或控制字,就可以改變接口的工作方式, 大大增加了接口的靈活性和可擴充性。 8. 錯誤檢測及復位功能 許多數(shù)據(jù)傳輸量大、傳輸速率高的接口,具有 檢測信號傳輸錯誤的功能。常見的信號傳輸錯 誤有以下兩種:物理信道上的傳輸錯誤(主要由 干擾造成)和數(shù)據(jù)傳輸中的覆蓋錯誤(主要由數(shù) 據(jù)收發(fā)不及時造成)。在數(shù)據(jù)傳輸?shù)倪^程中接口 應能及時檢錯和糾錯。常

7、用的檢錯方法有奇偶 校驗法、方陣碼校驗法和CRC冗余校驗法等。 同時,接口在收到系統(tǒng)的復位信號后,應能將 接口電路和所連的外部設(shè)備置為初始狀態(tài)。 5.1.2 接口與端口 圖5.2所示的I/O接口,稱為輸入/輸出接口,也 稱為外設(shè)接口。 外設(shè)接口是CPU與外設(shè)之間傳送信息的一個界 面、一種連接電路。 外設(shè)接口一端通過系統(tǒng)三總線(數(shù)據(jù)總線、地址 總線、控制總線)與CPU相連,另一端與外設(shè)相 連并與外設(shè)交換三種信息:數(shù)據(jù)信息、狀態(tài)信 息和控制信息。 圖5.2 I/O接口典型結(jié)構(gòu) 1. 數(shù)據(jù)信息 數(shù)據(jù)信息是CPU與外設(shè)接口交換信息的主要部 分。外設(shè)有數(shù)字量、模擬量和開關(guān)量三種信號。 接口電路將輸入設(shè)備

8、的輸入信號,轉(zhuǎn)變成CPU 能夠接收的數(shù)據(jù)信息,保存在寄存器中等待 CPU讀??;接口電路將CPU輸出到外設(shè)的數(shù)據(jù)信 息,轉(zhuǎn)變成外設(shè)能夠接收的信號,送往外設(shè)。 2. 狀態(tài)信息 狀態(tài)信息表明外部設(shè)備或接口當前所處的工作 狀態(tài),用來協(xié)調(diào)CPU與外部設(shè)備之間的輸入/輸 出操作。 輸入設(shè)備在完成一次輸入操作后,發(fā)出就緒信 號(READY),表明輸入設(shè)備已經(jīng)把數(shù)據(jù)送到接 口,等待CPU給予處理。 輸出設(shè)備接口在接收從CPU送出的一批數(shù)據(jù)信 息進行輸出的過程中,發(fā)出忙信號(BUSY),表 明目前接口不能接收新的數(shù)據(jù)信息。 狀態(tài)信息用于協(xié)調(diào)CPU與外設(shè)之間的通信。 3. 控制信息 控制信息是CPU向接口發(fā)出的命

9、令,用于控制 外設(shè)及接口的工作方式以及外設(shè)的啟動或停止。 控制信息的格式因設(shè)備及接口而異??刂菩畔?也可以設(shè)置接口芯片的工作方式。 數(shù)據(jù)信息、狀態(tài)信息和控制信息通常都通過接口 與CPU交換,這些信息分別存放在外設(shè)接口的不 同的寄存器中。 CPU同外設(shè)之間的信息傳送,實際上是CPU對接 口中的寄存器進行讀或?qū)懖僮鳌?接口中這些可以由CPU進行讀或?qū)懙募拇嫫鞅环Q 為端口。 按存放信息的不同類型,這些端口可以分為: “數(shù)據(jù)端口” “狀態(tài)端口” “控制端口” 分別存放數(shù)據(jù)信息、狀態(tài)信息和控制信息。 CPU通過向控制端口發(fā)送控制字,對接口工作 方式進行設(shè)置。 CPU訪問設(shè)備是通過訪問相關(guān)的端口來實現(xiàn)的。

10、 5.1.3 I/O端口的編址方式 在一個外設(shè)接口中往往有多個I/O端口。 將接口中的端口進行編號,將編號加上所在接 口的基地址即為該端口的I/O端口地址。 對I/O端口的編址有存儲器映象編址和獨立編址 兩種方式。 1. 存儲器映象編址(存儲器與I/O端口統(tǒng)一編址) 存儲器映象編址的地址空間分配如圖5.3所示。 這種編址方式的特點是存儲器和I/O端口共用統(tǒng) 一的地址空間,它把內(nèi)存的一部分地址分配給 I/O端口,一個8位端口占用一個內(nèi)存單元地址。 已經(jīng)用于I/O端口的地址,存儲器不能再使用。 圖5.3 統(tǒng)一編址方式地址空間分配 這種編址方式的優(yōu)點是:訪問內(nèi)存單元和I/O端 口可以使用相同的指令,

11、不需要專用的I/O指令, 這有助于降低CPU控制電路的復雜性,同時可 使系統(tǒng)變得比較靈活;I/O端口的地址空間是內(nèi) 存空間的一部分,其地址空間可大可小,從而 使連接外設(shè)的數(shù)目幾乎不受限制。但是,這種 編址方式也存在著一定的缺點,即I/O端口占用 內(nèi)存地址,相對減少了內(nèi)存的可用空間;而且 難以區(qū)分指令是訪問內(nèi)存還是訪問I/O,降低了 程序的可讀性和可維護性。 2. 獨立編址(I/O端口單獨編址) 獨立編址方式的地址空間分配如圖5.4所示。這種方式 的特點是內(nèi)存儲器和I/O端口各自有自己獨立的地址空 間。 訪問I/O端口需要專門的I/O指令。 8086CPU采用這種編址方式。 圖5.4 單獨編址方

12、式地址空間分配 這種編址方式的優(yōu)點是: I/O端口地址碼較短,譯碼電路較簡單; 存儲器和I/O 端口的操作指令不同,程序比較 清晰; 存儲器和I/O端口的控制結(jié)構(gòu)相互獨立,可以分 別設(shè)計; 指令執(zhí)行速度較快。 其缺點是: 需要專用的I/O指令,這些指令的功能一般不如 存儲器訪問指令豐富,導致程序設(shè)計的靈活性 較差。 5.2 數(shù)據(jù)傳送的控制方式 計算機的各種操作中最基本和最頻繁的操作是 數(shù)據(jù)傳送,在微型機系統(tǒng)中,數(shù)據(jù)傳送主要在 CPU、存儲器和I/O接口之間進行。由于CPU與 外設(shè)的工作速度相差很大,所以在CPU與外設(shè) 的數(shù)據(jù)傳送過程中,需要解決數(shù)據(jù)傳送的控制 方式,即CPU何時從輸入設(shè)備讀取數(shù)

13、據(jù)以及何 時向輸出設(shè)備寫入數(shù)據(jù)。按照I/O控制組織的發(fā) 展順序以及外設(shè)與CPU并行工作的程度,微型 機系統(tǒng)中數(shù)據(jù)傳送的控制方式主要有兩種:程 序控制傳送方式和直接存儲器存取(DMA)方式。 5.2.1 程序控制傳送方式 1. 無條件傳送方式 圖5.5 無條件傳送方式電路原理圖 例如:要求某數(shù)據(jù)采集系統(tǒng)每秒鐘定時采樣某 點的溫度信號2次。溫度傳感器已經(jīng)將溫度信號 轉(zhuǎn)換成電信號,經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)變?yōu)閿?shù)字量送 入輸入端口。當CPU讀取端口數(shù)據(jù)時,端口中 的溫度數(shù)字量已“準備好”。若端口地址為 40H,2次采集之間需要適當延時,并且讀端口 數(shù)據(jù)同時啟動了下一次A/D轉(zhuǎn)換。相應的采集程 序如下: AD

14、START:MOVCL,2 ;置采集次數(shù) MOV BX,2000H;置存放溫度值首地址 LOOPAINAL,40H;取溫度值 MOVBX,AL;存入內(nèi)存 INC BX;修改內(nèi)存偏移地址 CALL DELAY;調(diào)用延時子程序 DEC CL;修改采集次數(shù) JNZ LOOPA;未采完返回LOOPA繼續(xù) RET 2. 查詢傳送方式 查詢傳送方式也稱為條件傳送方式。 在這種傳送方式下,當CPU需要與一個I/O設(shè)備 進行數(shù)據(jù)傳送時,它首先通過程序不斷讀取并 測試接口的狀態(tài)。 如果輸入設(shè)備處于準備好狀態(tài),則CPU執(zhí)行輸 入指令從對應端口輸入數(shù)據(jù),反之CPU就等待。 輸出時,當輸出設(shè)備處于空閑狀態(tài),CPU向該

15、 設(shè)備接口對應端口輸出數(shù)據(jù)。 為此,接口電路除了有傳送數(shù)據(jù)的端口外,還 應有傳送狀態(tài)的端口。對于輸入過程來說,外 設(shè)將數(shù)據(jù)送到接口時,同時使接口狀態(tài)端口中 “準備好”標志位置1。 對于輸出過程來說,外設(shè)取走一個數(shù)據(jù)后,接 口便將狀態(tài)端口的對應標志位清零。表示當前 輸出寄存器已經(jīng)處于“空”狀態(tài),可以接收 CPU傳送的下一個數(shù)據(jù)。 查詢方式輸入接口電路原理圖見圖5.6。從圖中 可以看出:當輸入設(shè)備將準備好的數(shù)據(jù)傳送到 接口的鎖存器的同時,發(fā)出一個選通信號,該 選通信號一方面將數(shù)據(jù)鎖入鎖存器,同時通過D 觸發(fā)器置1表示數(shù)據(jù)準備好。CPU在輸入數(shù)據(jù)前, 應先通過狀態(tài)端口讀取狀態(tài)信息(在此系統(tǒng)中, 使用

16、數(shù)據(jù)總線的D0位),以便查詢輸入設(shè)備的數(shù) 據(jù)是否準備好。若未準備好,則CPU處于等待 外設(shè)的狀態(tài);如準備好,則執(zhí)行輸入指令,該 指令同時將觸發(fā)器清0,表示數(shù)據(jù)已被CPU讀 取。相應的匯編語言程序段如下: LOOP1:IN AL,STATUS_PORT ;讀狀態(tài)端口, ;D0=1表示“數(shù)據(jù)就緒” TEST AL,01H ;判斷“數(shù)據(jù)就緒”位 JZ LOOP1;未就緒,循環(huán)讀狀態(tài)端口等待 IN AL, DATA_PORT;已就緒, ;從數(shù)據(jù)端口讀取數(shù)據(jù) 圖5.6 查詢方式輸入接口電路原理圖 圖5.7表示用查詢方式進行輸出的接口電路工作 原理圖。 輸出傳送的工作原理及編程方式與輸入傳送有 許多的類似

17、之處。 當CPU需要向外設(shè)輸出數(shù)據(jù)時,先讀取狀態(tài)端 口中的狀態(tài)位(在此系統(tǒng)中使用數(shù)據(jù)總線的D0 位),如果狀態(tài)位表明外設(shè)空閑(或不忙),則執(zhí) 行輸出指令,向外設(shè)輸出數(shù)據(jù),否則CPU需查 詢等待。 相應的匯編語言程序段如下: LOOP2:IN AL, STATUS_PORT ;讀狀態(tài)端口,D0 =1表示“空閑” TEST AL, 01H;判斷“空閑”位 JZ LOOP2;忙,再讀狀態(tài)端口循環(huán)等待 MOV AL, DATA;空閑,取數(shù)據(jù)準備輸出 OUT DATA_PORT, AL ;將數(shù)據(jù)輸出至數(shù)據(jù)端口 圖5.7 查詢方式輸出接口電路原理圖 進行多個數(shù)據(jù)的輸入/輸出時,每進行一次輸入 /輸出都要首

18、先查詢它的狀態(tài)字,只有當設(shè)備就 緒時才可以進行數(shù)據(jù)的傳輸。 圖5.8所示為一個查詢方式輸入的流程圖。 圖5.8 查詢方式輸入流程圖 如果系統(tǒng)有多個外設(shè)需要使用查詢方式進行輸 入/輸出,則可采用循環(huán)查詢的方式。如假定有 三個設(shè)備(A、B、C),分別用狀態(tài)端口的D7、D6、 D5 位表示它們的狀態(tài)信息,則CPU可周期性逐 個查詢,測試狀態(tài)端口的相應位是否準備好。 其流程如圖5.9(p201)所示,相應的匯編語言程 序如下: PRO:IN AL,STATUS-PORT1;讀設(shè)備A的狀態(tài)端口 TEST AL,80H ;測試狀態(tài)位, ;如果為0表示沒準備好 JZ PROB1 ;沒準備好, ;轉(zhuǎn)移去讀設(shè)備

19、B的狀態(tài)端口 CALL PROAINOUT;準備好了, ;調(diào)子程序進行數(shù)據(jù)交換 PROB1:IN AL,STATUS-PORT2 TEST AL,40H JZ PROC1 CALL PROBINOUT PROC1: IN AL,STATUS-PORT3 TEST AL,20H JZ INPUT1 CALL PROCINOUT INPUT1: 3. 中斷傳送方式 為了提高CPU的工作效率,同時又能及時地傳 送數(shù)據(jù),可以采用中斷傳送方式。 當CPU需要與外設(shè)進行數(shù)據(jù)傳送時啟動外設(shè)。 在外設(shè)準備數(shù)據(jù)的同時,CPU繼續(xù)執(zhí)行程序, 此時CPU與外設(shè)并行工作。 當外設(shè)將傳送數(shù)據(jù)準備好,通過接口向CPU發(fā)

20、出中斷請求信號,CPU收到中斷請求信號并予 以響應,CPU暫停正在執(zhí)行的原程序(主程序), 而轉(zhuǎn)去執(zhí)行中斷請求對應的輸入輸出中斷處理 程序,待處理完成,CPU返回原程序繼續(xù)運行。 由于CPU的工作速度很快,傳送一次數(shù)據(jù)(包括 進入中斷、退出中斷程序)所需的時間很短。 圖5.10 中斷傳送方式電路原理圖 5.2.2 直接存儲器存取(DMA)方式 所謂直接存儲器存取(Direct Memory Access, DMA)是指在存儲器和外設(shè)接口之間、存儲器和 存儲器之間直接進行數(shù)據(jù)傳送(如磁盤接口與內(nèi) 存交換數(shù)據(jù)、高速數(shù)據(jù)采集卡與內(nèi)存交換數(shù)據(jù)、 內(nèi)存與內(nèi)存的高速數(shù)據(jù)塊傳送等),傳送過程無 需CPU介入

21、。 使用DMA方式傳輸時,仍然使用系統(tǒng)的數(shù)據(jù)總 線、地址總線和控制總線。 但系統(tǒng)總線原來由CPU或者總線控制器管理, 在用DMA方式進行數(shù)據(jù)傳輸時,接口電路要向 CPU發(fā)出申請,使CPU讓出總線的控制權(quán),交由 控制DMA傳輸?shù)慕涌陔娐贰?這個接口電路就是DMA控制器,簡稱DMAC。 DMAC控制DMA傳輸過程時,應具備如下功能: (1) 當外設(shè)準備就緒,需要進行DMA操作時, 通過外設(shè)接口向DMA控制器發(fā)出“DMA請求信 號”。 DMA控制器收到此信號后,向CPU發(fā)“總線請 求”信號。 CPU收到總線請求信號后,如果允許,會在當 前總線周期結(jié)束后,發(fā)出“總線響應”信號, 同時放棄對總線的控制。

22、 這時DMA控制器開始實行對總線的控制。 (2) DMAC得到總線控制權(quán)后,要向地址總線發(fā) 送地址信號。 為此,DMA內(nèi)部設(shè)有地址寄存器,事先由程序往 此寄存器中設(shè)置DMA首地址。 對于數(shù)據(jù)輸入過程,向外設(shè)接口發(fā)出“I/O讀” 控制信號,同時向存儲器發(fā)出“存儲器寫”信號。 在這兩個信號的作用下,一字節(jié)的數(shù)據(jù)從外設(shè)接 口送往數(shù)據(jù)總線,而存儲器從數(shù)據(jù)總線接收這個 數(shù)據(jù),寫入由地址總線上的地址指定的內(nèi)存單元。 對于數(shù)據(jù)輸出過程,情況正好相反。DMAC向存 儲器發(fā)讀命令,向外設(shè)接口發(fā)寫命令,一字節(jié)數(shù) 據(jù)從存儲器傳送到外設(shè)接口,完成一次輸出操作。 (3) 傳送1個字節(jié)之后,DMAC自動對地址寄存 器的內(nèi)

23、容進行修改,指向下一個要傳送的字節(jié)。 同時,為了判斷DMA傳送是否結(jié)束,在DMA內(nèi) 部必須有一個字節(jié)計數(shù)器,用來存放所傳送的 字節(jié)數(shù),即數(shù)據(jù)塊長度。 在開始傳送前,由程序設(shè)置數(shù)據(jù)塊長度,在 DMA傳送過程中,每傳送一個字節(jié),字節(jié)計數(shù) 器減1,當減到0時,DMA傳送結(jié)束。 (4) 一次數(shù)據(jù)傳輸結(jié)束,DMA控制器向CPU申請 撤銷“總線請求”信號,于是CPU撤銷允許使 用總線的“總線響應”信號,并且收回對總線 的控制權(quán)。 以上過程完全由硬件電路實現(xiàn),速度很快。用 DMA方式進行一字節(jié)數(shù)據(jù)傳輸所經(jīng)歷的時間稱 為“DMA周期”,大體上相當于一次總線讀寫 周期的時間。 在DMAC的內(nèi)部,為了實現(xiàn)內(nèi)存與I

24、/O接口間傳 送數(shù)據(jù),應包括如下寄存器: 一個地址寄存器,存放內(nèi)存和I/O交換數(shù)據(jù)時內(nèi) 存的起址; 一個字節(jié)計數(shù)器,存放交換字節(jié)的個數(shù); 一個用于存放CPU設(shè)定DMA傳輸方式及各種控 制信息的控制寄存器; 一個用于存放DMAC當前的狀態(tài),包括有無 DMA請求、是否結(jié)束等狀態(tài)信息的狀態(tài)寄存器。 圖5.12 DMAC內(nèi)部基本結(jié)構(gòu)及在系統(tǒng)中的連接 在系統(tǒng)中,DMAC有如下特點: 它一方面是一個接口電路,因為它也有I/O端口 地址,CPU可以通過端口地址對DMAC進行讀寫 操作,以便對DMAC進行初始化或讀取狀態(tài)。 另一方面,DMAC在得到總線控制權(quán)后,能夠控 制系統(tǒng)總線,它可以提供一系列控制信號,像

25、 CPU一樣控制外設(shè)和內(nèi)存之間的數(shù)據(jù)傳輸,此 時,DMAC又不同于一般的接口電路。 所以,它在系統(tǒng)中具有總線從模塊和總線主模 塊雙重功能。 (1) 總線從模塊:當CPU對DMAC進行預置參數(shù), 即向DMAC寫入內(nèi)存?zhèn)魉蛥^(qū)的首地址、傳送字節(jié) 數(shù)和控制字時,DMAC相當于一個外設(shè)接口,稱 為總線從模塊。 (2) 總線主模塊:當進行DMA傳輸時,CPU暫停 對系統(tǒng)總線的控制,DMAC取得了對總線的控制 權(quán),這時的DMAC稱為總線主模塊。 5.3 PC機I/O地址空間及基本輸入、輸出接口 5.3.1 I/O地址空間 1. I/O地址空間 基于8086/8088 CPU的I/O地址空間為64KB,每個地

26、址 可以訪問1字節(jié)數(shù)據(jù),從偶地址開始相鄰的兩個地址中 的2字節(jié)數(shù)據(jù),也可以使用1條指令訪問。 例如: IN AL ,20H ;I/O端口地址20H中的數(shù)據(jù),讀入AL,訪問1字節(jié) IN AX,20H ;I/O端口20H、21H中的數(shù)據(jù),讀入AX,訪問2字節(jié) ;20H端口數(shù)據(jù)讀入AL、21H端口數(shù)據(jù)讀入AH 指定I/O端口地址的方法有2種。一種是在指令 中直接給出地址,但是要求地址小于等于255; 另一種是由DX內(nèi)容作為地址,地址范圍為 065535。例如: OUT 40H,AL ;AL內(nèi)容輸出到40H地址指定的I/O端口 MOV DX,200H ;I/O端口地址為200H,送入DX OUT DX

27、,AX ;AX內(nèi)容送I/O端口,地址為200H、201H的單元 ;AL內(nèi)容送200H單元,AH內(nèi)容送201H單元 錯誤格式舉例: IN AL,100H ;地址100H超過了255 OUT 200H,AX ;地址200H超過了255 對于上述2條指令,必須先把地址送入DX: MOV DX,100H IN AL,DX MOV DX,200H OUT DX,AX 2. 有固定用途的I/O地址 在使用8088 CPU的PC/XT機中,有一些I/O端口 地址已經(jīng)有了固定用途,如表5.1所示。 5.3.2 PC機I/O指令 下述指令是8086/8088 CPU支持的指令。 輸入指令,指的是從I/O端口讀數(shù)

28、據(jù),通過數(shù)據(jù) 總線,傳輸?shù)紺PU中AL或AX中的指令; 輸出指令,指的是從CPU中AL或AX中,將數(shù)據(jù) 傳輸?shù)絀/O端口。 I/O端口的地址要在I/O指令中直接或間接給出。 I/O指令格式如下: IN AL,PORT8 ;輸入指令,從端口地址PORT8,讀入一字節(jié)數(shù)據(jù), ;PORT8為8位端口地址,范圍為0255 IN AX,PORT8 ;輸入指令,從端口PORT8,PORT8+1;讀入2字節(jié)數(shù)據(jù) IN AL,DX ;DX內(nèi)容作為I/O端口地址,范圍為065535 IN AX,DX ;DX內(nèi)容作為I/O端口地址,范圍為065535 OUT PORT8,AL ;輸出指令 OUT PORT8,AX

29、 ;輸出指令 OUT DX,AL ;輸出指令 OUT DX,AX ;輸出指令 5.3.3 基本輸入、輸出接口 1. 基本輸入接口 圖5.13是一個與8個開關(guān)相連的基本輸入接口, 可以將74LS244三態(tài)緩沖器輸入端1A12A4的 狀態(tài)(高電平表示1,低電平表示0),由輸入指 令讀入AL中。74LS244的輸出端1Y12Y4與數(shù) 據(jù)總線連接,-SEL信號是由另外的譯碼器產(chǎn)生 的,當指令中指定的地址不為0F0H時,譯碼器 輸出-SEL為高電平,1Y12Y4處于高阻狀態(tài), 74LS244與數(shù)據(jù)總線相當于斷開;當指令中指 定的地址為0F0H時,譯碼器輸出-SEL為低電平, 74LS244輸出1Y12Y

30、4與數(shù)據(jù)總線接通。 圖5.13 與8個開關(guān)連接的基本輸入接口 2. 基本輸出接口 圖5.14是一個與8個LED發(fā)光二極管相連的基本 輸出接口。 圖5.14 與8個LED燈相連的基本輸出接口 5.3.4 地址譯碼器 地址譯碼器一端與CPU地址總線、控制總線連 接,另一端是產(chǎn)生的選擇信號,用于輸入接口 使緩沖器處于接通狀態(tài)(非高阻),或者用于輸 出接口作為鎖存器鎖存信號。 譯碼器可以連接全部16位地址,這種方式稱為 全譯碼;或者只連接部分低位地址,稱為部分 譯碼。 圖5.15是使用74LS138作為譯碼器的一個例子 。 圖5.15 地址為F0H時能夠產(chǎn)生Y0有效的譯碼電路(讀) 通過指令: IN

31、AL,0F0H 能夠?qū)D5.13中74LS244連接的狀態(tài),讀入AL。 圖5.16是使用74LS138的另外一個例子 圖5.16 地址為F1H時能夠產(chǎn)生Y1有效的譯碼電路(寫) 通過指令: OUT 0F1,AL 能夠?qū)L中數(shù)據(jù)送圖5.14中74LS374。 5.3.5 80386以上微處理器I/O指令及I/O地址 1. I/O指令 IN EAX,PORT8 ;輸入32位數(shù)據(jù),PORT8指定的I/O地址范圍為0255 IN EAX,DX ;輸入32位數(shù)據(jù),DX指定的I/O地址范圍為065535 INSB ;輸入8位數(shù)據(jù),DX指定端口地址,數(shù)據(jù) ;送ES:DI內(nèi)存單元,DI=DI1 INSW ;

32、輸入16位數(shù)據(jù),DX指定端口地址,數(shù)據(jù) ;送ES:DI內(nèi)存單元,DI=DI2 INSD ;輸入32位數(shù)據(jù),DX指定端口地址,數(shù)據(jù) ;送ES:DI內(nèi)存單元,DI=DI4 OUT PORT8,EAX ;輸出32位數(shù)據(jù),PORT8指定的I/O地址范圍為0255 OUT DX,EAX ;輸出32位數(shù)據(jù),DX指定的I/O地址范圍為065535 OUTSB ;從DS:SI尋址的內(nèi)存單元,輸出8位數(shù)據(jù),DX ;內(nèi)容指定端口地址,SI=SI1 OUTSW ;從DS:SI尋址的內(nèi)存單元讀數(shù)據(jù)輸出,輸出16 ;位數(shù)據(jù),DX內(nèi)容指定端口地址,SI=SI2 OUTSD ;從DS:SI尋址的內(nèi)存單元讀數(shù)據(jù)輸出,輸出 ;

33、32位數(shù)據(jù),DX內(nèi)容指定端口地址,SI=SI4 上述INS、OUTS指令均可以加REP指令前綴。 另外傳送前應該設(shè)置標志寄存器FR中的方向標 志DF位。 2. I/O地址 80386以上微處理器I/O地址空間為065535。 80386以上微處理器I/O指令允許使用的數(shù)據(jù)總 線寬度為8位(字節(jié))、16位(字)和32位(雙字), 不允許使用64位。 5.4 可編程DMA控制器8237A(DMAC) 5.4.1 8237A的結(jié)構(gòu)和基本功能 1. 8237A芯片的主要特點 (1) 在一個8237A中,有4個獨立的DMA通道。 (2) 每一個通道的DMA請求有不同的優(yōu)先權(quán), 優(yōu)先權(quán)可以固定,也可以循環(huán)

34、(由編程確定)。 (3) 對每一個通道的DMA請求都可以分別允許 和禁止。 (4) 每一個通道傳送數(shù)據(jù)的最大長度可以達到 64KB,可以在存儲器與外設(shè)間進行數(shù)據(jù)傳送, 也可以在存儲器的兩個區(qū)域間進行傳送。 (5) 8237A的DMA傳送有四種方式可供選擇:單 字節(jié)傳送方式、塊傳送方式、請求傳送方式、 級聯(lián)方式。 (6)結(jié)束處理的信號-EOP有兩種用途,用途一表 示DMA內(nèi)部某一通道指定長度的數(shù)據(jù)傳送完畢, 是8237A輸出信號;用途二把對應引腳作為輸 入端,由8237A片外發(fā)送信號,強制結(jié)束DMA 傳送或重新初始化。 (7) 8237A可以級聯(lián),擴展通道數(shù)。 2. 8237A的內(nèi)部結(jié)構(gòu)與外部連

35、接 DMA控制器一方面可以控制系統(tǒng)總線,在系統(tǒng) 中處于總線主模塊的地位; 另一方面,又可以接受CPU對它的讀寫操作, 在系統(tǒng)中處于總線從模塊的地位。 DMA控制器8237A的內(nèi)部結(jié)構(gòu)和外部連接與它 在系統(tǒng)中所處的地位是密切相關(guān)的。 8237A的內(nèi)部編程結(jié)構(gòu)和外部連接如圖5.17所 示。 由圖5.17可知,8237A由兩部分構(gòu)成:一部分是 4個DMA通道以及與外設(shè)的連接;另一部分是讀 /寫控制邏輯、控制邏輯、鎖存緩沖器和頁面地 址寄存器(另見圖5.25)。 1) DMA通道 8237A有四個相互獨立的通道(CH0CH3)。圖 5.17中給出了通道0的內(nèi)部編程結(jié)構(gòu),通道1 通道3與通道0相同。 圖

36、5.17 8237A的內(nèi)部編程結(jié)構(gòu)和外部連接 由圖5.17可知,每個通道都包含: 一個基本地址寄存器和一個當前地址寄存器、 基本字節(jié)計數(shù)器和當前字節(jié)計數(shù)器。 還有一個6位的方式寄存器(模式寄存器), 一個1位的DMA請求觸發(fā)器及 一個1位的屏蔽觸發(fā)器。 同時,每個通道都有兩個與外設(shè)相連的引腳, DREQ(引入外設(shè)的DMA請求信號)和DACK(送給 外設(shè)的DMA應答信號)。4個通道共用一個控制 寄存器和一個狀態(tài)寄存器。在DMA通道工作之 前,必須對相應的寄存器進行初始化設(shè)置。 2) 讀/寫控制邏輯 讀/寫控制邏輯主要用于控制數(shù)據(jù)的傳送方向。 在DMA傳送期間,8237A作為“主模塊”控制 總線。

37、 讀寫控制邏輯發(fā)出-IOR、-MEMW或-IOW、 -MEMR信號,控制數(shù)據(jù)從外設(shè)接口讀出后寫到 存儲器單元,或數(shù)據(jù)從存儲器單元讀出后寫到 外設(shè)接口。 8237A在系統(tǒng)中作為“從模塊”時,CPU控制總 線,8237A只作為一般的I/O接口,此時,讀/寫 邏輯電路接收CPU對I/O接口發(fā)出的讀(-IOR)或 寫(-IOW)信號,將所尋址的寄存器內(nèi)容送到數(shù) 據(jù)總線或?qū)?shù)據(jù)總線的內(nèi)容寫入所尋址的寄存 器。 3) 控制邏輯 控制邏輯主要用于控制8237A的工作方式。 初始化時,通過對方式寄存器及各種命令字的 編程,確定DMA如何工作。在DMA周期內(nèi),控 制邏輯根據(jù)設(shè)定的方式產(chǎn)生相應控制信號對各 個通道

38、進行控制。 4) 鎖存緩沖器(外接) 使用8237A工作時,需要外接一個8位的地址鎖 存緩沖器,它通過可控的三態(tài)門連接系統(tǒng)地址 總線A8A15,在DMA傳送時,8237A將高8位地 址A8A15通過DB0DB7送入這個鎖存器。在 DMA周期里,鎖存器將鎖存的地址送往系統(tǒng)地 址總線A8A15,同時從A0A7發(fā)送地址的低8位。 5) 頁面地址寄存器(外接) 由上文可以看出,8237A產(chǎn)生的地址總線為16 位,所以最多只能尋址64KB。但是8086存儲器 空間使用20條地址線,因此需要外接一個4位的 “頁面地址寄存器”。寄存器的值由CPU事先 寫入,8237A發(fā)送低16位地址時,高4位的地址 從頁面

39、地址寄存器發(fā)往地址總線的A16A19。在 DMA傳送期間,此寄存器在地址允許信號AEN 的作用下保持恒定的4位地址輸出。 3. 8237A的工作時序 8237A使用獨立的時鐘信號,工作過程可以分 為SI、S0、S1、S2、S3、SW、S4幾個狀態(tài),見圖 5.18。每個狀態(tài)占用1個時鐘周期,因此狀態(tài)也 可以稱為周期。 圖5.18 8237A工作狀態(tài) 1) 空閑狀態(tài) 2) 有效周期 3) 擴展寫與壓縮時序 4) 8237A工作時各信號的配合 (1) 作為從模塊工作時 (2) 作為主模塊工作時 4. 8237A的外部引腳 1) 請求與響應信號引腳 (1) DREQ(DMA Request,輸入) D

40、REQ0DREQ3。每個通道對應一個DREQ信號 引腳,此引腳連接外設(shè)的DMA請求信號。 (2) HRQ(Hold Request,輸出)8237A收到 外設(shè)接口發(fā)來DREQ信號后,如果該通道的DMA 請求沒有被屏蔽,則DMA控制器的HRQ端輸出 有效電平,向CPU發(fā)出總線請求。 (3) HLDA(Hold Acknowledge,輸入)DMAC 向CPU發(fā)總線請求信號HRQ以后,CPU發(fā)回的總 線響應信號。 (4) DACK(DMA channel Acknowledge,輸 出)DACK0DACK3。這是DMAC送給I/O接 口的回答信號,每個通道對應一個DACK信號引 腳。 2) DMA

41、傳送控制信號引腳(作為主模塊時使用 的接口信號) (1) A0A3(Address,輸入/輸出) (2) A4A7(Address,輸出) (3) DB0DB7(Data Bus,輸入/輸出) (4) ADSTB(Address Strobe,輸出) (5) AEN(Address Enable,輸出) (6) -IOR(I/O Read,輸入/輸出) (7) -IOW(I/O Write,輸入/輸出) (8) READY(Ready,輸入) (9) -MEMR(Memory Read,輸出) (10) -MEMW (Memory Write,輸出) (11) -EOP(End of Proc

42、ess,輸入/輸出) 3) 與處理器連接的信號引腳(作為從模塊時使用 的接 口信號) (1) RESET(Reset,輸入)復位信號 (2) -CS(Chip Select,輸入)片選信號 (3) A3A0(Address,輸入/輸出)低4位地址線 (4) -IOR (I/O Read,輸入/輸出)設(shè)備讀信號 (5) -IOW (I/O Write,輸入/輸出)設(shè)備寫信號 (6) DB7DB0(Data Bus,輸入/輸出) (7) CLK(Clock,輸入)時鐘信號 4) 其他信號引腳 VCC 電源,VSS地 表5.2給出了8237A引腳信號的分類(p217)。 5.4.2 8237A的傳送

43、方式和傳送類型 1. 8237A的傳送方式 8237A的每個通道有4種傳送方式可以選擇???以通過后面介紹的方式寄存器進行設(shè)置。 1) 單字節(jié)傳送方式 在這種方式下,8237A每傳送 1個字節(jié),修改 當前字節(jié)計數(shù)器及當前地址寄存器,然后釋放 系統(tǒng)總線,結(jié)束一次DMA傳送。如果收到新的 一個DMA請求,則重新申請總線,重復上述過 程。在這種方式下,CPU可以在每個DMA周期 結(jié)束后控制總線。 2) 塊傳送方式 在這種方式下,DMA控制器獲得總線控制權(quán)后, 可以連續(xù)進行多個字節(jié)的傳送(最多64K字節(jié))。 只有當字節(jié)計數(shù)器減為 0,或者收到外部輸入 的結(jié)束命令(從-EOP引腳輸入一個低電平信號) 時

44、,8237A才釋放總線而結(jié)束傳送。顯然,這 種模式的數(shù)據(jù)傳送速度很高。但在數(shù)據(jù)傳送期 間,CPU不能訪問總線。如果一次傳送的數(shù)據(jù) 較多,會對系統(tǒng)產(chǎn)生一定的影響。 3) 請求傳送方式 這種方式與塊傳送方式類似,申請一次總線可 以連續(xù)傳送多個數(shù)據(jù)。與塊傳送方式的區(qū)別在 于每傳送1個字節(jié)后,8237A都對外設(shè)接口的 DMA請求信號線DREQ進行測試,如果檢測到 DREQ端變?yōu)闊o效電平,則馬上暫停傳送。當 DREQ又變?yōu)橛行щ娖綍r,就繼續(xù)進行下一個數(shù) 據(jù)的傳送。當外設(shè)由于某種原因傳送的數(shù)據(jù)不 連續(xù)時,可采用此方式。 4) 級聯(lián)傳送方式 幾個8237A可以進行級聯(lián),一片8237A用作主片, 其余用作從片

45、,構(gòu)成主從式DMA系統(tǒng)。在級聯(lián) 方式下,從片收到外設(shè)接口的DMA請求信號后, 向主片發(fā)出申請,而主片再向CPU申請。即從 片的DREQ端和DACK端與外設(shè)相連;從片的 HRQ端連接至主片的DREQ端。主片的DACK端 連至從片的HLDA端。而主片的HRQ和HLDA通 過系統(tǒng)總線與CPU相連。一片主片最多可以連 接4片從片。 2. 8237A的傳送類型 8237A提供四種類型的傳送: (1) DMA寫傳送:指I/O設(shè)備到存儲器的傳送。 (2) DMA讀傳送:指存儲器到I/O設(shè)備的傳送。 (3) DMA檢驗 (4) 存儲器到存儲器傳送:可通過編程設(shè)置,在這種傳 送類型下,通道0的地址寄存器設(shè)置為存

46、儲器源數(shù)據(jù)區(qū) 地址。通道1的地址寄存器存放存儲器目標地址,字節(jié) 計數(shù)器為傳送字節(jié)數(shù),可通過軟件啟動傳送。傳送開 始后,用4個時鐘周期從存儲器源地址將數(shù)據(jù)讀入 8237A的內(nèi)部暫存寄存器,另4個時鐘周期再將暫存寄 存器的內(nèi)容寫入到目標地址的存儲單元中。 5.4.3 8237A內(nèi)部寄存器含義 8237A是一個可編程的DMA控制器芯片,內(nèi)部 共有10種不同的寄存器,見表5.3(p219)。每個 寄存器都起著不同的作用,在進行DMA傳送前 必須對8237A進行初始化編程,對各寄存器進 行設(shè)置以滿足所要求的功能,下面分別介紹這 10種寄存器的含義。 1. 8237A通道內(nèi)寄存器 1) 當前地址寄存器 2

47、) 當前字節(jié)計數(shù)器 3) 基本地址寄存器和基本字節(jié)計數(shù)器 4) 方式寄存器 圖5.19 8237A方式控制字格式 2. 8237A公用寄存器和命令 1) 控制寄存器 8237A控制寄存器用于控制8237的工作,可以 通過編程改變控制字的內(nèi)容。其格式如圖5.20 所示。 圖5.20 8237A控制字格式 2) 狀態(tài)寄存器 圖5.21 8237A狀態(tài)寄存器格式 3) 請求寄存器與請求命令字 圖5.22 8237A請求命令字格式 4) 屏蔽寄存器 圖5.23 8237A屏蔽命令字格式 圖5.24 8237A綜合屏蔽命令字格式 5) 主清除命令(軟件復位) 軟件復位命令的功能和RESET功能相同。即執(zhí)

48、 行復位命令后使控制寄存器、狀態(tài)寄存器、暫 存寄存器、DMA請求寄存器以及高/低觸發(fā)器復 位,屏蔽寄存器置位,同時使8237A進入空閑 周期,便于編程。 復位命令的執(zhí)行是通過對端口地址為起始地址 +13的端口實施一次寫操作,也就是對該端口 執(zhí)行一條輸出指令,與輸出的具體內(nèi)容無關(guān), 即可完成對8237A的復位操作。 6) 清除高/低觸發(fā)器命令 8237A內(nèi)部有一個“高/低觸發(fā)器”,當這個觸 發(fā)器為0時,與16位寄存器的低字節(jié)進行數(shù)據(jù)通 信;為1時,訪問高字節(jié)。 每訪問一次16位寄存器后,能自動翻轉(zhuǎn),0變1 或1變0。 在寫入存儲器起始地址到基本、當前地址寄存 器,以及寫入基本、當前字節(jié)計數(shù)器初值

49、之前, 應將這個觸發(fā)器清0,然后就可以按照先低后高 的字節(jié)順序?qū)懭氤踔怠?5.4.4 8237A的應用編程 18237A端口地址及通道分配 8273A端口地址及通道分配見表5.4(p224)。 2. 8237A的編程步驟 對8237A編程的一般步驟如下: (1) 輸出主清除命令。 (2) 清除高/低觸發(fā)器。 (3) 寫入存儲器起始地址(先寫低字節(jié),后寫高字節(jié))。 (4) 寫入傳送的字節(jié)數(shù),其值為傳送的字節(jié)數(shù)減1(先寫 低字節(jié),后寫高字節(jié))。 (5) 寫控制字,設(shè)置8237A的工作方式。 (6) 寫方式字,設(shè)置使用通道的工作方式。 (7) 對該通道的屏蔽位進行清除。 (8) 啟動外部設(shè)備,如果是

50、內(nèi)存到輸出設(shè)備,用軟件設(shè) 置第一次DMA請求。 3. 應用舉例 在IBM-PC/XT微型機中,8237A占據(jù)00H0FH 共16個端口地址。 對8237A控制器的4個通道安排如下: (1) CH0:用在系統(tǒng)板上,作為動態(tài)存儲器的刷 新控制。 (2) CH1:用于擴展選件上,為用戶預留的DMA 通道。 (3) CH2:用于擴展選件上,作為軟盤驅(qū)動器數(shù) 據(jù)傳送用的DMA控制。 (4) CH3:用于擴展選件上,作為硬盤驅(qū)動器數(shù) 據(jù)傳送用的DMA控制。 對于IBM-PC系列微型計算機,它的8237A通道0、 2、3已分配使用,而且在開機時已對8237A作 了初始化。在這種情況下,不允許再對它重新 初始

51、化和重新設(shè)置控制字,也不允許修改屏蔽 寄存器。只允許對通道1進行設(shè)置。 DMAC8237A只能向存儲器提供16位地址值即 A15A0。而8086/8088系統(tǒng)的存儲器需要20位 地址值即A19A0。在有些系統(tǒng)中,高4位地址 A19A16由頁面地址寄存器提供,通道1的頁面 地址寄存器的輸入端口號為83H。 【例5.1】假設(shè)用系統(tǒng)板上的8237A通道1,將 內(nèi)存起始地址為02000H的300H字節(jié)內(nèi)容直接輸 出給外部設(shè)備,DMA端口地址從00H到0FH。 程序如下: MOV AL,4;控制字,禁止8237A工作 OUT 08,AL ;寫控制寄存器 MOV AL,0 OUT 0DH,AL;主清除,同

52、時清除高/低觸發(fā)器 OUT 02,AL ;寫低位地址00H MOV AL,20H OUT 02,AL;寫高位地址20H MOV AL,0;頁面地址為0 OUT 83H,AL;寫入頁面地址寄存器 MOV AX,300H;傳輸字節(jié)數(shù) DEC AX OUT 03,AL;寫字節(jié)數(shù)低位 MOV AL,AH OUT 03,AL;寫字節(jié)數(shù)高位 MOV AL,49H;方式字:單字節(jié)讀,地址加1 OUT 0BH,AL MOV AL,40H;控制字:DACK和DREQ低電平有效, ;啟動8237A工作 OUT 08H,AL;普通時序,固定優(yōu)先級 MOV AL,01;清除通道1屏蔽 OUT 0AH,AL WAITF

53、: IN AL,08;讀通道1狀態(tài) AND AL,02;傳輸完成否 JZ WAITF;沒完成則等待 MOV AL,05;完成后屏蔽通道1 OUT 0A,AL 【例5.2】 編寫用8237A實現(xiàn)存儲器至存儲器傳 送數(shù)據(jù)的程序,把從物理地址12000H開始的 1000字節(jié)傳送到從物理地址34000H開始的數(shù)據(jù) 區(qū)。 解:數(shù)據(jù)塊從存儲區(qū)到存儲區(qū)的傳送使用8237A 通道0和通道1共同完成,假設(shè)20位物理地址的高 四位已經(jīng)分別送到頁面地址寄存器的對應處,對 8237A只需設(shè)定低16位地址2000H(通道0)和 4000H(通道1)就可以了。對8237A發(fā)送主清除 命令后,能夠清除8237A中全部寄存器

54、的內(nèi)容, 包括對高/低觸發(fā)器的清除。 ST37:MOV DX,DMA+0DH ;發(fā)主清除命令,同時清高/低觸發(fā)器 OUT DX,AL MOV DX,DMA+00H ;寫通道0低8位地址和高8位地址 MOV AX,2000H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,DMA+02H ;寫通道1低8位地址和高8位地址 MOV AX,4000H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,DMA+03H;寫通道1字節(jié)計數(shù)器 MOV AX,1000-1 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,DMA+0BH

55、;寫通道0方式寄存器 MOV AL,88H OUT DX,AL;塊傳送,讀存儲器方式 MOV DX,DMA+0BH;寫通道1方式寄存器 MOV AL,85H OUT DX,AL;塊傳送,寫存儲器方式 MOV DX,DMA+08H;寫控制寄存器,設(shè)置存儲 ;器到存儲器的傳送,啟動8237A工作 MOV AL,01 OUT DX,AL MOV DX,DMA+0FH;寫屏蔽寄存器 MOV AL,0CH OUT DX,AL MOV DX,DMA+09H ;寫請求寄存器,發(fā)出 ;軟件DMA請求啟動傳送 MOV AL,04H OUT DX,AL HLT 5.4.5 頁面地址寄存器 在進行DMA傳送時,8237A只能提供16位地址, 另外4位地址由頁面地址寄存器提供,如圖5.25 所示。頁面地址寄存器內(nèi)部有4組寄存器,每組 有四位。4組寄存器分別提供4個DMA通道的地 址。 圖5.25 頁面地址寄存器 表5.5中內(nèi)容為IBM-PC/XT機使用時的情況,地 址為80H83H,通道0 DMA用作動態(tài)存儲器刷 新,不使用頁面地址寄存器。其他通道的頁面 地址寫入時,作為普通I/O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論