第7章 系統_第1頁
第7章 系統_第2頁
第7章 系統_第3頁
第7章 系統_第4頁
第7章 系統_第5頁
已閱讀5頁,還剩141頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第7章 輸入和輸出技術第7章 輸入和輸出技術7.1 接口技術概述接口技術概述 7.2 CPU與外設之間數據傳送方式與外設之間數據傳送方式 7.3 DMA控制器控制器 習習 題題 7 第7章 輸入和輸出技術7.1.1 CPU與外部設備之間的接口信息與外部設備之間的接口信息 CPU通過接口通過接口與外外部設設備的連接如圖7.1所示,其中既有數數據端口據端口,又有狀態端口狀態端口,還有控制端口控制端口,每一個I/O端口對應一個I/O地址地址。從硬件角度看,端口端口可以理解為寄存器理解為寄存器。數據端口數據端口可以是雙向雙向的,狀態端口狀態端口只作輸入輸入操作,控制端口控制端口只作輸出輸出操作。CPU

2、用I/O指令對其直接訪問。在I/O操作中,主要有三類信息:數據信息、狀態信息和控制信息。 7.1 接口技術概述接口技術概述 第7章 輸入和輸出技術數據端口狀態端口控制端口CPU外設DBABCBI/O接口數據信息狀態信息控制信息圖7.1 簡單的外設接口 第7章 輸入和輸出技術 數據信息數據信息是CPU和I/O設備交換的基本信息,通常是8位或16位。數在輸入過程中,數據信息一般是由外部設備通過接口芯片傳遞給系統的。數據信息由外設經過外設和接口之間的數據線進入接口,再到達系統的數據總線,然后送入CPU。在輸出過程中,數據信息從CPU經過數據總線進入接口,再通過外設和接口之間的數據線,到達外設。第7章

3、 輸入和輸出技術 狀態信息狀態信息反映了當前外設的工作狀態外設的工作狀態,它是由外設通過接口送入CPU的。對于輸入設備輸入設備來說,用Ready信號來表示待輸入的數據是否準備就緒;對于輸出輸出設備來說,用Busy信號來表示輸出設備是否處于空閑狀態,如空閑,則可接收CPU送來的數據信息,否則CPU等待。 控制信息控制信息是CPU通過接口送給外設送給外設的。CPU通過發送控制信息控制外設的工作控制外設的工作。外設種類不同,控制信息也各不相同。接口控制信號一般可分為兩類:總線控制信號和輸入/輸出控制信號。總線控制信號包括數據線、地址線、IOR、LOW等;輸入/輸出控制信號比較復雜,一般包括數據線、輸

4、入/輸出應答信號等。第7章 輸入和輸出技術7.1.2 輸入輸入/輸出指令及其尋址方式輸出指令及其尋址方式 在微型計算機系統中,端口端口的編址編址通常有兩種不同的方式方式,一是I/O端口與存儲器單元統一編址與存儲器單元統一編址;二是I/O端口獨立編址獨立編址。 1. I/O端口與存儲器單元統一編址端口與存儲器單元統一編址 所謂I/O端口與存儲器單元統一編址,也稱為存儲器映像(Memory Mapped)I/O方式,既把每個I/O端口都當作一個存儲器單元看待,I/O端口與存儲器單元在同一個地址空間中進行統一編址。通常,是在整個地址空間中劃分出一小塊連續的地址分配給I/O端口。被分配給被分配給I/O

5、端口的地址,存儲器不能再使用端口的地址,存儲器不能再使用,如圖7.2所示。第7章 輸入和輸出技術圖7.2 內存映射與I/O映射編址(a) 內存映射編址;(b) I/O映射I/O編址 I/O端口NI/O端口2I/O端口1I/O端口0I/O端口NI/O端口2I/O端口1I/O端口0內存空間FFFFFH供I/O接口使用000000HI/O空間系統各I/O端口配置地址64 KB(a)內存空間FFFFFH00000H1 MBFFFFH0000HI/O空間系統各I/O端口配置地址64 KB(b)第7章 輸入和輸出技術采用這種編址方式的微處理器有6800、6502、68000等,其優點是簡化指令系統的設計簡

6、化指令系統的設計,同時I/O控制信號與存儲器的控制控制信號共用信號共用,給應用帶來極大的方便,另外由于訪問存儲器的指令種類多、尋址方式多樣化,對訪問外設帶來了很大的靈活性。對I/O設備可以使用功能強大的訪問存儲器那樣的指令,如直接對I/O數據進行運算等。統一編址的缺點缺點是外設占用了一部分內存地址空間,減少減少了內存內存可用的地址范圍,對內存容量有潛在的影響。此外,從指令上不易區分當前指令是對內存進行操作還是對外設進行操作。 第7章 輸入和輸出技術 2. I/O端口獨立編址端口獨立編址 所謂I/O端口獨立編址(I/O Mapped),也稱為I/O隔離編址或I/O指令尋址方式,即I/O端口地址區

7、域和存儲器地址區域,分別各自獨立編址。訪問I/O端口使用專門的專門的I/O指令指令,而訪問內存則使用MOV指令。CPU在尋址內存和外設時,使用不同的控制信不同的控制信號號來區分當前是對內存操作還是對I/O操作。在單CPU模式時,當前的操作是由IO/信號的電平來區別的。對于8088CPU系統,當IO/為低電平時,表示當前執行的是存儲器操作,地址總線上地址是某個存儲單元地址;當IO/為高電平時,表示當前執行的是I/O操作,地址總線上地址是某個I/O端口的地址。在多CPU模式時,若訪問存儲器,則使MEMW或MEMR信號有效;而訪問I/O端口時,則使或信號有效。第7章 輸入和輸出技術 這種單獨編址的優

8、點優點是I/O端口不占用存儲器的地址空間不占用存儲器的地址空間,使用專門的專門的I/O指令指令對端口進行訪問,具有I/O指令短指令短、執行速執行速度快度快、譯碼簡單譯碼簡單的優點。缺點是專門的專門的I/O指令功能相對較弱指令功能相對較弱,一般只有傳送功能只有傳送功能,而沒有運算沒有運算功能。Intel 80 x86 CPU中,I/O端口和存儲器是單獨編址單獨編址的,采用專用的輸入/輸出指令訪問端口。 第7章 輸入和輸出技術 3. 輸入輸入/輸出指令及其尋址輸出指令及其尋址 1) 8086/8088采用的IN和OUT指令 I/O指令可以采用8位(單字節)或16位(雙字節)地址兩種尋址方式。如采用

9、單字節單字節作為端口地址端口地址,則最多可以有256個端口(端口地址號從00HFFH),并且是直接尋址直接尋址(直接端口尋址直接端口尋址)方式,指令格式如下:輸入:INAX,Port;從Port端口輸入16位數據到AXINAL,Port;從Port端口輸入8位數據到AL輸出:OUTPort,AX;從AX輸出16位數據到Port端口OUTPort,AL;從AL輸出 8位數據到Port端口這里Port是一個單字節的8位地址。第7章 輸入和輸出技術 如用雙字節雙字節地址作為端口地址端口地址,則最多可以有64 K個端口(端口地址號從0000HFFFFH),并且是間接尋址間接尋址方式,即把端端口地址放在

10、口地址放在DX寄存器內寄存器內(間接端口尋址間接端口尋址)。其指令格式如下:輸入: MOVDX,XXXXH;16位地址INAX,DX;16位傳送或INAL,DX;8位傳送輸出: MOVDX,XXXXHOUTDX,AX;16位傳送或OUTDX,AL;8位傳送這里XXXXH為兩字節地址信息。第7章 輸入和輸出技術2) 80286和80386/486還支持I/O端口直接與內存之間的數據傳送端口直接與內存之間的數據傳送輸入: MOVDX,PortLESDI,BufferinINSB;8位傳送或INSW;16位傳送輸出: MOVDX,PortLDSSI,BufferoutOUTSB;8位傳送或OUTSW

11、;16位傳送第7章 輸入和輸出技術 這里的輸入與輸出是直接對內存儲器的RAM而言,當輸入時,用ES:DI指向RAM中的目標緩沖區Bufferin;當輸出時,用DS:SI,指向源緩沖區Bufferout。若在INS或OUTS指令前加上REP重復前綴時,則可以實現I/O端口與RAM上的緩沖區之間進行成批數據傳送。 從輸入/輸出指令可以看出,對于PC系列的機器,I/O端口內的數據也有8位與16位之分,通常16位數據端口地址安置在偶數地址號上,CPU在一次總線周期內就可以存取16位的數據。8位數據的端口地址可以安置在偶地址號或奇地址號上,偶地址使用數據總線D7D0傳送數據,奇地址使用數據總線D15D8

12、傳送數據。表7-l列出8位或16位數據端口在奇數或偶數端口地址號上,單字節直接尋址的輸入/輸出指令。第7章 輸入和輸出技術表表7-1 IBM-PC機上機上I/O端口地址配置端口地址配置I/O端口配置地址數據總線指令舉例8位偶數地址D7D0IN AL,20HOUT 20H,AL奇數地址D15D8IN AL,21HOUT 21H,AL16位偶數地址D15D0IN AX,20HOUT 20H,AX第7章 輸入和輸出技術7.1.3 CPU的輸入的輸入/輸出時序輸出時序 為了說明CPU的輸入和輸出時序,下面以8086為例簡要介紹讀寫I/O端口的總線時序。 1. I/O讀總線周期時序讀總線周期時序 一般I

13、/O設備設備的工作速度速度較慢慢,所以在I/O總線周期的T3和和T4之間間插入一個等待狀態等待狀態Tw,使整個周期由4個T狀態變為5個。所以各個信號也都要相應地延長或推遲一個時鐘周期。CPU仍是在T4狀態的開始采樣數據線,由于CPU只用A15A0尋址I/O端口,所以地址總線上沒有A19A16的狀態。其時序如圖7.3所示。第7章 輸入和輸出技術圖7.3 8086 I/O讀寫時序CLKA19 / S6 A16 / S3AD15 AD0ALEREADY2S0SDENRDT/8288產生)AIOWC ,IORC( 讀寫命令T1T2T3TWT4狀態信息A19 A16S6 S3A15 A0D15 D0寫讀

14、WAITREADY111S S S012第7章 輸入和輸出技術 2. I/O寫總線周期時序寫總線周期時序 I/O寫總線周期的時序與I/O讀相比,除()信號換成了()信號外,數據信號也提前產生,但仍必須保持到T4狀態的上升沿之后,以便I/O端口在T4為低電平的某個時刻寫入數據。第7章 輸入和輸出技術7.1.4 常用外圍接口芯片常用外圍接口芯片1. 三態緩沖器三態緩沖器74LS244 (無鎖存功能,用于輸入無鎖存功能,用于輸入)外設輸入的數據和狀態信號,通過數據輸入三態緩沖器經數據總線傳送給微處理器。74LS244芯片的8位三態總線驅動器如圖7.4所示。第7章 輸入和輸出技術圖7.4 74LS24

15、4結構及引腳 VCC2G 1Y12A41Y22A3 1Y32A2 1Y42A11G 1A12Y41A22Y31A3 2Y31A4 2Y1GND1234567891020 19 18 17 16 15 14 13 12 11(a) 邏輯電路(b) 引腳圖1A11A21A31A42A12A22A32A41Y11Y21Y31Y42Y12Y22Y32Y41G2G11第7章 輸入和輸出技術8個數據輸出端1Yl1Y4、 2Y12Y4與微型計算機的數據總線相連,8 個數據輸入端 1A11A4、 2A12A4 與外設相連。 加到輸出允許G1和G2的負脈沖將數據從數據輸入端送至數據輸出端。 當 G1為低電平時,

16、 1Y11Y4 的電平與 1A11A4 的電平相同, 即輸出反映輸入電平的高低; 同樣,當 G2為低電平時,2Y12Y4 的電平與 2A12A4 的電平相同。而當G1(或 G2)為高電平時,輸出 1Y11Y4(或 2Y12Y4)為高阻態。經74LS244 緩沖后,輸入信號被驅動,輸出信號的驅動能力加大。 74LS244 主要用于三態輸出的存儲地址驅動器、 時鐘驅動器和總線定向接收發器等。執行 IN 指令時,微處理器發出讀寄存器信號,該信號通常是端口地址和 I/O 讀信號IOR 相負與產生的。將讀寄存器信號接至74LS244 的輸出允許端,IN 指令就把三態緩沖器 74LS244 數據輸入端的數

17、據,經數據總線輸入累加器 AL 中。74LS244 可以用作無條件傳送的輸入接口電路。 第7章 輸入和輸出技術2. 數據收發器數據收發器74LS24574LS245是一種三態輸出的8總線收發器,其邏輯電路和引腳如圖7.5所示。該收發器有16個雙向雙向傳送的數據端,即A1A8,B1B8,另有兩個控制端使能端使能端和方向控方向控制端制端DIR,該芯片的功能見表7-2。74LS245通常用于數據的雙向傳送、緩沖和驅動。 第7章 輸入和輸出技術表表7-2 74LS245的真值表的真值表 使能端 G 方向控制端 DIR 傳送方向 0 0 BA 0 1 AB 1 X 隔開 第7章 輸入和輸出技術圖7.5

18、74LS245結構及引腳12345678910201918175678910VCCB1GB2B3B4B5B6B7B8使能DIR A1A2A3A4A5A6A7A8GND(a) 邏輯電路(b) 引腳圖A1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8GDIR第7章 輸入和輸出技術3. 輸出寄存器輸出寄存器(74LS273)數據輸出寄存器用來寄存微處理器送出的數據和命令寄存微處理器送出的數據和命令。數據輸出接口通常是用具有信息存儲能力的雙穩態觸發器來實現的。最簡單的輸出接口可用D觸發器構成。8D觸發器74LS273如圖7.6所示。8個數據輸入端D0D7與微型計算機的數據總線相連,8個數

19、據輸出端Q0Q7與外設相連。 第7章 輸入和輸出技術加到74LS273時鐘端CLK的脈沖信號的上升沿上升沿將出現在D0D7上的數據寫入數據寫入該觸發器寄存觸發器寄存。該觸發器寄存的數據可由CLR上的脈沖的下降沿清除下降沿清除。該觸發器寄存數據的過程是微處理器執行OUT指令指令完成的。執行OUT指令時,微處理器發出寫寄存器信號,該信號通常是端口地址和I/O寫信號IOW相負與產生的。將寫寄存器信號接至74LS273的CLK端。OUT指令就把累加器AL中的數據通過數據總線送至該觸發器寄存。74LS273可以用作無條件傳送的輸出接口電路。 第7章 輸入和輸出技術圖7.6 74LS273引腳及其真值表G

20、ND1510Q3D3D2Q2Q1D1D0Q0VCC201511Q7D7D6Q6Q5D5D4Q4CPs CPDiQi0 xx01 111 00真值表第7章 輸入和輸出技術4. 鎖存器鎖存器74LS373鎖存器是由三態緩沖器三態緩沖器和寄存器寄存器組成的。數據進入寄存器寄存后并不立即從寄存器輸出,要經過三態緩沖才能輸出。鎖存器既可以作數據輸入輸入寄存器,又可以作數據輸輸出出寄存器。74LS273的數據鎖存輸出端Q是通過一個一般的門(二態門)輸出的。也就是說,只要74LS273正常工作,其Q端總有一個確定的邏輯狀態(0或1)輸出。因此,74LS273無法直接用作輸入接口,即它的Q端絕對不允許直接與系

21、統的數據總線相連接。74LS373是一種8D鎖存器,具有三態驅動輸出,其引線圖和真值表如圖7.7所示。第7章 輸入和輸出技術圖7.7 74LS373結構及引腳 (a) 邏輯電路(b) 引腳圖1DGQ(1)(3)輸出控制OE1DDGQ(4)2DDGQ(7)3DDGQ(8)4DDGQ(13)5DDGQ(14)6DDGQ(17)7DDGQ(18)8D1使能G(11)(19)8Q(16)7Q(15)6Q(12)5Q(9)4Q(6)3Q(5)2Q(2)1Q1D2D3D4D5D6D7D8D1Q2Q3Q4Q5Q6Q7Q8QGOE第7章 輸入和輸出技術從引線上可以看出,它比 74LS273 多了一個輸出允許端

22、OE。只有當OE=0 時,74LS374 的輸出三態門才導通。OE=1 時,則呈高阻狀態。使能端 G 有效時,將 D 端數據打入鎖存器中 D 門,當輸出允許端OE有效時, 將鎖存器中鎖存的數據送到輸出端 Q。 其功能如表 7-3 所示。 第7章 輸入和輸出技術表表7-3 74LS373的真值表的真值表使能 G 輸出允許 OE 輸入 輸出 Q 1 0 0 0 1 0 1 1 0 0 X Q0 X 1 X 高阻抗 第7章 輸入和輸出技術當使能端 G 為高電平, 同時輸出允許端OE為低電平時, 輸出Q=輸入 D;當使能端 G 為低電平,同時輸出允許端OE為低電平時,輸出 Q=Q0(原狀態,即使能端

23、G 由高電平變為低電平前,保持輸出端 Q 的狀態鎖存);當輸出允許端OE為高電平時, 不論使能端G為何值, 輸出端Q總為高阻態。 74LS373鎖存器主要用于鎖存地址信息、數據信息以及 DMA 頁面地址信息等。 第7章 輸入和輸出技術7.2 CPU與外設之間數據傳送方式與外設之間數據傳送方式7.2.1 程序控制方式程序控制方式 1. 無條件傳送無條件傳送 無條件傳送是一種最簡單的輸入/輸出控制方法,一般用于控制CPU與低速低速I/O接口之間接口之間的信息交換,例如,開關、繼電器和速度、溫度、壓力、流量等變送器(即A/D轉換器)。由于這些信號變化很緩慢,當需要采集這些數據時,外部設備已經把數據準

24、備就緒準備就緒,無需檢查端口的狀態無需檢查端口的狀態,就可以立即采集數據。數據保持時間相對于CPU的處理時間長得多。因此,輸入的數據就用不不著加鎖存器加鎖存器而直接用三態緩沖器與系統總線連接三態緩沖器與系統總線連接。第7章 輸入和輸出技術 實現實現無條件輸入的方法是:在程序的適當位置適當位置直接安排IN輸入指令輸入指令,當程序執行到這些指令時,外部設備的數據早已準備就緒,可以在執行當前指令時間內完成接受數據的全部過程。若外部設備是輸出設備輸出設備(例如LED顯示器),一般要求接口有鎖要求接口有鎖存能力存能力,也就是要求CPU送給外部設備的數據,應該在輸出設備接口電路中保持一段時間,這個時間的長

25、短應該和外部設備的接受動作時間相適應。實現無條件輸出的方法是在程序的適當位置安排OUT輸出指令,當程序執行到這些指令時,就將輸出給外部設備的數據存入鎖存器。第7章 輸入和輸出技術 無條件傳送方式的工作過程:輸入時,外界將數據送到緩沖器輸入端(外界可以是開關、A/D轉換器等),當CPU執行IN AL,07H指令時,CPU首先向地址譯碼器送來啟動信號,并把端口地址07H送到74LS138譯碼器輸入端,譯碼器的作用是把端口地址轉變為使其某一根輸出線為有效低電平。例如,當端口地址為07H時,則使譯碼器的Y7為低電平。然后CPU送出IOR低電平信號,使三態緩沖器的控制端為有效電平(選此三態緩沖器)。將外

26、部設備送來的數據送到數據總線上,并將數據打入CPU內部的通用寄存器AL中。因為,CPU執行一次數據讀入讀入,對于8088來說一般只需要微秒級微秒級時間,而外界數據在緩沖器輸入端保持的時間在緩沖器輸入端保持的時間,可達秒級或幾十毫秒秒級或幾十毫秒,因此,輸入數據不必鎖存輸入數據不必鎖存。第7章 輸入和輸出技術 而且,CPU執行IN AL,07H指令時,要讀入的數據早已送入緩沖器的輸入端,所以可以立即讀入,無需查詢數據是否已準備就緒。假設端口號07H也是另一接口電路輸出鎖存器的入口地址,鎖存器從數據總線接收數據,當出現由或門U1輸出的觸發鎖存器的觸發脈沖時,就將它的輸出數據鎖存入鎖存器,并通過其輸

27、出端送給外部設備。所以,當需要向07H號端口輸出數據時,可在程序中插入一條輸出指令OUT 07H,AL。當CPU執行這條指令時,它把AL的內容送上數據總線,并把端口地址07H和啟動信號送入譯碼器。譯碼器譯碼后使Y7為有效低電平,同時LOW也為有效低電平(此時IOR為高電平),由或門U1輸出觸發脈沖時,就將數據總線上的數據存入鎖存器,CPU執行OUT 07H,AL指令時,AL中的數據在數據總線上停留的時間也只有微秒級,所以,輸出數據必須通過存器鎖存輸出數據必須通過存器鎖存。第7章 輸入和輸出技術也就是要求輸出的數據,應該在輸出接口電路的輸出端保持一要求輸出的數據,應該在輸出接口電路的輸出端保持一

28、段時間段時間,這個時間的長短,應該和外部接受設備的動作時間相和外部接受設備的動作時間相適應適應。當CPU再次執行OUT 07H,AL指令時,AL中新的數據會取代原鎖存器中的內容。無條件傳送方式的接口電路和控制程序都比較簡單。 需要注意的是,輸入時,當CPU執行IN指令時,要確保輸入的數據已經準備好,否則,就可能讀入不正確的數據;在輸出時,當CPU執行OUT指令時,需確保外部設備已將上次送來的數據取走,它就可以接收新的數據了,否則,會發生數據“沖突”。無條件傳送控制方式,一般用于定時已知或數據變化十分緩慢的外部設備。第7章 輸入和輸出技術 2. 有條件傳送有條件傳送 有條件傳送方式又稱為程序查詢

29、方式程序查詢方式。這種傳送方式在接口電路中,除具有數據緩沖器數據緩沖器或數據鎖存器數據鎖存器外,還應具有外設外設狀態標志位狀態標志位,用來反映外部設備數據的情況。比如,在輸入輸入時,若數據已準備好,則將該標志位置位標志位置位;輸出輸出時,若數據已空(數據已被取走),則將標志位置位標志位置位。在接口電路中,狀態寄存器也占用端口地址號。使用有條件傳送方式控制數據的輸入/輸出,通常要按圖7.8的流程進行。即首先讀讀入設備狀態標志狀態標志信息,再根據所讀入的狀態信息進行判斷判斷,若設備未準備就緒,則程序轉移去執行某種操作,或循環回去重新執行讀入設備狀態信息;若設備準備好,則執行完成數據傳送的I/O指令

30、。數據傳送結束后,CPU轉去執行其他任務,剛才所操縱的設備脫離CPU控制。第7章 輸入和輸出技術圖7.8 條件傳送示意圖讀入設備狀態準備好?傳送數據NY第7章 輸入和輸出技術 有條件傳送的優點優點是:能較好地協調外設與協調外設與CPU之間的定之間的定時關系時關系;缺點缺點是:CPU需要不斷查詢不斷查詢標志位的狀態,這將占用占用CPU較多的時間時間,尤其是與中速或慢速的外部設備交換信息時,CPU真正花費在傳送數據上的時間極少,絕大部分時間都消耗在查詢上。為克服克服這一缺點,可以采用中斷控制方式中斷控制方式。第7章 輸入和輸出技術7.2.2 中斷控制方式中斷控制方式 有條件有條件傳送的缺點缺點除了

31、占用占用CPU較多較多的工作時間時間外,還難以滿足實時實時控制系統對I/O工作的要求。因為在查詢方式中,CPU處于主動地位,而外設接口處于消極被查詢的被動地位。而在一般實時控制系統中,外設要求CPU為它服務是隨機的,而且支持系統的外設往往有幾個甚至幾十個,若采用查詢方式工作,很難實現系統中每一個外設都工作在最佳工作狀態。所謂工作在最佳狀態,是指一旦某個外設請求CPU為它服務時,CPU應該以最快的速度響應其請求。這就要求系統中的外設,具有主動申請CPU為其服務的權利。第7章 輸入和輸出技術比如,當某個A/D轉換器的模擬量已轉換為數字量后,這時它就可以立刻向CPU發出中斷請求,CPU暫時中止處理當

32、前的事務,而轉去執行優先的中斷服務程序,輸入A/D轉換器的數字量數據。微型計算機都具有中斷控制的能力,8086/8088CPU的中斷結構靈活,功能很強。所以,微機系統采用中斷控制I/O方式是很方便的。CPU執行完每一條指令后,都會去查詢外部是否有中斷請求,若有,就暫停執行現行的程序,轉去執行中斷服務程序,完成傳送數據的任務。當然,在一個具有多個外設的系統中,在同一時刻就往往不止一個外設提出中斷請求,這就引入了所謂中斷優先權管理和中斷嵌套等問題(有關中斷的詳細討論參見第8章)。第7章 輸入和輸出技術7.2.3 直接存儲器存取直接存儲器存取(DMA)控制方式控制方式 采用中斷方式中斷方式,信息的傳

33、送是依靠靠CPU執行中斷服務程序執行中斷服務程序來完成的,所以,每進行一次一次I/O操作操作,都需要要CPU暫停執行暫停執行當前程序當前程序,把控制轉移到優先權最高的I/O程序。在中斷服務程序中,需要有保護現場保護現場和恢復現場恢復現場的操作,而且I/O操作都是通過CPU來進行的。當從存儲器輸出數據時,首先需要CPU執行傳送指令,將存儲器中的數據,讀入CPU中的通用寄存器AL(對于字節數據)或AX(對于字數據),然后,執行OUT指令,把數據由通用寄存器AL或AX傳送到I/O端口;當從I/O端口向存儲器存入數據時,過程正相反。第7章 輸入和輸出技術 CPU執行IN指令時,將I/O端口數據讀入通用

34、寄存器AL或AX,然后CPU執行傳送指令,將AL或AX的內容存入存儲器單元。這樣,每次I/O操作都需要幾十甚至幾百微秒,對于一些高速外設,如高速磁盤高速磁盤控制器或高速數據采集系統高速數據采集系統,中斷控制方式往中斷控制方式往往滿足不了它們的需要往滿足不了它們的需要。 為此,提出了數據在I/O接口與存儲器接口與存儲器之間的傳送,不經不經CPU的干預,而是在專用硬件電路的控制下直接傳送。這種方法稱為直接存儲器存取直接存儲器存取(Direct Memory Access,縮寫為DMA)。為實現這種工作方式而設計的專用接口電路,稱為DMA控制控制器器(DMAC)。例如,Intel公司的8257、82

35、37,Zilog公司的Z 8410(Z80 DMAC),Motorola公司的MC6844等,都是能實現DMA方式的可編程DMAC芯片。第7章 輸入和輸出技術 用DMA方式傳送數據時,在存儲器存儲器和外部設備外部設備之間,直接開辟高速開辟高速的數據傳送通路數據傳送通路。數據傳送過程不要不要CPU介入介入,只用一個總線周期一個總線周期,就能完成存儲器和外部設備之間的數據傳送。因此,數據傳送速度僅受存儲器的存取速度和外部設備傳輸特性的限制。第7章 輸入和輸出技術 DMA的工作過程大致如下: (1) 當外設準備好外設準備好,可以進行DMA傳送時,外設向向DMA控控制器發出制器發出DMA傳送請求信傳送

36、請求信號(DRQ)。 (2) DMA控制器控制器收到請求后,向向CPU發出發出“總線請求總線請求”信信號號HOLD,申請占用總線申請占用總線。 (3) CPU在完成當前總線周期后會立即對HOLD信號進行響響應應。響應包括兩個方面,一是CPU將數據總線、地址總線和相應的控制信號線均置為高阻態,由此放棄對總線的控制權放棄對總線的控制權。另一方面,CPU向向DMA控制器發控制器發出“總線響應總線響應”信號(HLDA)。 第7章 輸入和輸出技術 (4) DMA控制器控制器收到HLDA信號后,就開始控制總線,并向向外設發出外設發出DMA響應信號響應信號DACK。 (5) DMA控制器控制器送出地址信號地

37、址信號和相應的控制信號控制信號,實現外設與內存或內存與內存之間的直接數據傳送。例如,在地址總線上發出存儲器的地址,向存儲器發出寫信號MEMW,同時向外設發出I/O地址、IOR和AEN信號,即可從外設向內存傳送一個字節。 (6) DMA控制器控制器自動修改地址和字節計數器修改地址和字節計數器,并據此判斷是否需要重復傳送操作。規定的數據傳送完后,DMA控制器就撤消發往CPU的HOLD信號。CPU檢測到HOLD失效后,緊接著撤消HLDA信號,并在下一時鐘周期重新開始控制總線時,繼續執行原來的程序。第7章 輸入和輸出技術 DMA方式在傳送路徑和程序控制下數據傳送的途徑不同不同。程程序控制下數據傳送的途

38、徑必須經過序控制下數據傳送的途徑必須經過CPU,而采用,而采用DMA方式傳送方式傳送數據不需要經過數據不需要經過CPU。另外,程序控制下數據傳送的源地址、目源地址、目的地址是由的地址是由CPU提供的提供的,地址的修改和數據塊長的控制地址的修改和數據塊長的控制也必須由CPU承擔,數據傳送的控制信號數據傳送的控制信號也是由CPU發出的。而DMA方式傳送數據,則由DMA控制器控制器提供源地址和目的地址,而且修改地址、控制傳送操作的結束和發出傳送控制信號也都由DMAC承擔,即DMA傳送數據方式是一種由硬件代替軟件的方法,因而提高了數據傳送的速度,縮短了數據傳送的響應時間。因為DMA方方式控制數據傳送不

39、需要式控制數據傳送不需要CPU介入介入,即不利用CPU內部寄存器,因此,DMA方式不像中斷方式控制下的數據傳送,需要等一條指令執行結束才能進行中斷響應,只要執行指令的某個機器周期結束,就可以響應DMA請求。第7章 輸入和輸出技術 另外,DMA既然不利用CPU內部設備來控制數據傳送,因此,響應DMA請求,進入DMA方式時就不必保護不必保護CPU的現場的現場。采用中斷控制的數據傳送,進入中斷服務(傳送數據)之前,必須保護現場狀態,這會大大延遲響應時間。因此,采用DMA控制數據傳送的另一個優點是,縮短數據傳送的響應時間。所以,一般要求響應時間在微秒以下的場合,通常采用DMA方式。當然用DMA控制傳送

40、也存在一些問題問題,因為采用這種方式傳送數據時,DMAC取代CPU控制了系統總線,即CPU要把對總線的要把對總線的控制權讓給控制權讓給DMAC。所以,當DMA控制總線時,CPU不能讀取指令。另外,若系統使用的是動態存儲器,而且是由CPU負責管理動態存儲器的刷新,則在DMA操作期間,存儲器的刷新將存儲器的刷新將會停止會停止。而且,當DMAC占用總線時,CPU不不能去檢測和響應來自系統中其他設備的中斷請求中斷請求。第7章 輸入和輸出技術 DMA傳送傳送也存在以下兩個額外開銷額外開銷源:第一個額外開銷是總線訪問時間總線訪問時間,由于DMAC要同CPU和其他可能的總線主控設備爭用對系統總線的控制權,因

41、此,必須有一些規則來解決爭用總線控制權的問題,這些規則一般是用硬件實現排隊的,但是排隊過程也要花費時間;第二個額外開銷是對DMAC的初始的初始化化,一般情況下,CPU要對DMAC寫入一些控制字,因此,DMAC的初始化建立,比程序控制數據傳送的初始化,可能要花費較多時間。所以,對于數據塊很短數據塊很短或要頻繁地對DMAC重新編程初始化的情況下,可能就不宜采用不宜采用DMA傳送方式。此外,DMA控制數據傳送是用硬件控制代替CPU執行程序來實現的。所以它必然會增加硬件的投資,提高系統的成本。因此,只要CPU來得及處理數據傳送,就不必采用DMA方式。DMA主要適用以下幾種場合場合:第7章 輸入和輸出技

42、術 (1) 硬盤和軟盤I/O。可以使用DMAC作磁盤存儲介質與半導體主存儲器之間傳送數據的接口。這種場合需要將磁盤中的大大量數據量數據(如磁盤操作系統等)快速地裝入內部存儲器。 (2) 快速通信通道I/O。例如,光導纖維通信鏈路,DMAC可以用來作為計算機系統和快速通信通道之間的接口,可作為同步通信數據的發送和接收,以便提高響應時間,支持較高的數據傳輸速率,并使CPU脫出來做其他工作。第7章 輸入和輸出技術 (3) 多處理機和多程序數據塊傳送。對于多處理機結構,通過DMAC控制數據傳送,可以較容易地實現專用存儲器和公用存儲器之間的數據傳送,對多任務應用、頁式調度和任務調度都需要傳送大量的數據。

43、因此,采用DMA方式可以提高數據傳輸速度。 (4) 掃描操作。在圖像處理中,對CRT屏幕送數據,也可以采用DMA方式。 第7章 輸入和輸出技術 (5) 快速數據采集。當要采集的數據量很大,而且數據是以密集突發的形式出現,例如,對波形的采集,此時采用DMA方式可能是最好的方法,它能滿足響應時間和數據傳輸速率的要求。 (6) 在PC/XT機中還采用DMA方式進行DRAM的刷新操作。DMA工作過程波形如圖7.9所示。第7章 輸入和輸出技術圖7.9 DMA工作波形選通脈沖READYHOLDHLDADMA 響應地址數據存儲器寫命令第7章 輸入和輸出技術7.2.4 I/O處理機方式處理機方式 8089是專

44、門用來處理輸入/輸出的協處理器。它共有52條指令、lMB尋址能力和兩個獨立的DMA通道。當8086/8088加上8089組成系統后,8089能代替8086/8088,以通道控制方式管理各種I/O設備。以通道控制方式管理I/O設備,目前只有在大中型計算機中才普遍使用,因此,8089為微機的輸入/輸出系統設計帶來換代性的變化。一般情況下,通過接口電路控制I/O外設,必須依靠CPU的支持,對于非DMA方式,從外部設備每讀入一個字節或發送給外部設備一個字節,都必須由CPU執行指令來完成。雖然高速設備可以用DMA傳送數據,但仍然需要CPU對DMAC進行初始化,啟動DMA操作,以及完成每次DMA操作之后都

45、要檢查傳送的狀態。第7章 輸入和輸出技術 對I/O數據的處理,如對數據的變換、拆、裝、檢查等,更加需要CPU支持,CPU控制I/O如圖7.10(a)所示。從圖中不難看出,普通I/O接口,不管是DMA方式還是非DMA方式,在I/O傳送過程都要占去CPU的開銷。8089是一個智能控制器,它可以取出和執行指令,除了控制數據傳送外,還可以執行算術和邏輯運算、轉移、搜索和轉換。當CPU需要進行I/O操作時,它只要在存儲器中建立一個信息塊,將所需要的操作和有關參數按照規定列入,然后通知8089前來讀取。8089讀得操作控制信息后,能自動完成全部的I/O操作。第7章 輸入和輸出技術 因此,對配合8089的C

46、PU來說,所有輸入/輸出的操作過程中,數據都是以塊為單位成批發送或接收的,而把一塊數據按字或字節與I/O設備(如CRT終端,行式打印機)交換都由8089來完成,當8089控制數據交換時,CPU可以并行處理其他操作。由于引入8089來承擔原來必須由CPU承擔的I/O操作,這就大大地減輕了CPU控制外設的負擔,有效地減少了CPU在I/O處理中的開銷。8089控制I/O如圖7.10(b)所示。第7章 輸入和輸出技術(a)(b)存儲器8086CPUCRT其他I/O設備軟盤控制器8272數據與指令命令與狀態數據命令與狀態數據命令與狀態命令與狀態數據聯絡信號軟盤DMAC823782558250數據與指令數

47、據與指令通道注意中斷請求數據命令與狀態數據命令與狀態數據命令與狀態軟盤82728251CRT80898255其他I/O存儲器8086CPU圖7.10 8086、8089控制I/O(a) 8086控制I/O; (b) 8089控制I/O第7章 輸入和輸出技術7.3 DMA控制器控制器7.3.1 DMA控制器的功能控制器的功能 通用的DMA控制器應具有以下功能: (1) 編程設定編程設定DMA的傳輸模式傳輸模式及其所訪問內存的地址區域。 (2) 屏蔽或接受屏蔽或接受外部設備的DMA請求(DREQ)。當有多個設備同時請求時,還要進行優先級排隊,首先接受最高級的請求。第7章 輸入和輸出技術 (3) 向

48、向CPU轉達轉達DMA請求請求。DMA控制器要向CPU發出總線請求信號HOLD(高電平有效),請求CPU放棄總線的控制。 (4) 接收接收CPU的總線響應信號的總線響應信號(HLDA)。接管總線控制權,實現對總線的控制。 (5) 向相應外部設備轉達向相應外部設備轉達DMA允許信號允許信號DACK。于是在DMA控制器的管理下,實現外部設備和存儲器之間的數據直接傳送。第7章 輸入和輸出技術 (6) 在傳送過程中傳送過程中進行地址修改地址修改和字節計數字節計數。在傳送完要求的字節數后,向CPU發出DMA結束信號(EOP),撤消總線請求(HRQ),將總線控制權交還給CPU。 DMA控制器一方面可以接管

49、總線,直接在其他I/O接口和存儲器之間進行讀寫操作,就像CPU一樣成為總線的主控器件,這是有別于其他I/O控制器的根本不同之處。另一方面,作為一個可編程I/O器件,其DMA控制功能正是通過初始化編程來設置的。當CPU用I/O指令對DMA控制器寫入或者讀出時,它又和其他I/O電路一樣成為總線的從屬部件。第7章 輸入和輸出技術7.3.2 可編程可編程DMA控制器控制器Intel8237DMAC的主要性能和內部結的主要性能和內部結構構 8237DMAC是Intel 8080、8085、8086、8088系列通用的,一種高性能可編程DMA控制器芯片,它的性能如下: (1) 使用單一的+5 V電源、單相

50、時鐘、40條引腳、雙列直插式封裝。時鐘頻率為35 MHz,最高速率可達1.6 MB/s。 (2) 具有四個獨立的通道。可以采用級聯方式擴充用戶所需要的通道,每個通道都具有16位地址寄存器和16位字節計數器。第7章 輸入和輸出技術 (3) 用戶通過編程,可以在四種操作類型和四種傳送方式之中任選一種。 (4) 每個通道都具有獨立的允許/禁止DMA請求的控制。所有通道都具有獨立的自動重置原始狀態和參數的能力。 (5) 有增1和減1自動修改地址的能力。 (6) 具有固定優先權和循環優先權兩種優先權排序的優先權控制邏輯。第7章 輸入和輸出技術 (7) 每個通道都有軟件的DMA請求。還各有一對聯絡信號線(

51、通道請求信號DREQ和響應信號DACK),而且DREQ和DACK信號的有效電平可以通過編程來設定。 (8) 具有終止DMA傳送的外部信號輸入引腳,外部通過此引腳輸入有效低電平的過程終止信號EOP,可以終止正在執行的DMA操作。每個通道在結束DMA傳送后,會產生過程終止信號EOP輸出,可以用它作為中斷請求信號輸出。 8237A的內部寄存器的類型和數量如表7-3所示。 第7章 輸入和輸出技術表表7-4 8237A內部寄存器內部寄存器寄存器名 容量 數量 寄存器名 容量 數量 基地址寄存器 基字節計數器 當前地址寄存器 當前字節計數器 狀態寄存器 16 位 16 位 16 位 16 位 8 位 4

52、4 4 4 1 命令寄存器 暫時寄存器 模式寄存器 屏蔽寄存器 請求寄存器 8 位 8 位 6 位 4 位 4 位 1 1 4 1 1 第7章 輸入和輸出技術 8237A由I/O緩沖器、時序和控制邏輯、優先級編碼器和循環優先級邏輯、命令控制邏輯和內部寄存器組五部分組成,如圖7.11所示。其中圖(a)是8237A內部結構框圖,圖(b)是四通道示意圖。通道部分只畫出了一個通道的情況,即每個通道都有一個基地址寄存器、基字節數寄存器、當前地址寄存器和當前字節數寄存器(16位),每一個通道都有一個6位的模式寄存器以控制不同的工作模式。第7章 輸入和輸出技術圖7.11 8237A結構(a) 內部結構框圖;

53、(b) 四通道示意框圖(a)I/O緩沖器輸 出緩沖器命令控制邏輯I/O緩沖器時序和控制邏輯減1器加1器計數暫存器(16)地址暫存器(16)讀緩沖器基地址寄存器(416)基字節數寄存器(416)讀/寫緩沖器當前地址寄存器(416)當前字節數寄存器(416)16位總線16位總線4寫緩沖器讀緩沖器命令(8)方式(416)數據暫存器(8)狀態寄存器(8)屏蔽(4)請求(4)A0A3A4A7A8A15D0, D12DB7DB0優先級編碼器與循環優先級邏輯DREQ0 DREQ34HLDAHRQDACK0DACK3IOWIORMEMWMEMRADSTBAENCLOCKREADYCSRESET4EOP第7章

54、輸入和輸出技術圖7.7 8237A結構(a) 內部結構框圖;(b) 四通道示意框圖(b)命令寄存器(8)狀態寄存器(8)數據暫存器(8)字計數暫存器(16)地址暫存器(16)時序和控制邏輯方式寄存器(8)基地址寄存器(16)基字節數寄存器(16)優先編碼器與循環優先級邏輯當前地址寄存器(16)當前字節數寄存器(16)I/O緩沖器EOP36RESET1311CSREADYCLOCKAENADSTBMEMRMEMWIORIOW61298341235A3A0A7A 4DB7DB4324037212331VCC20GND7HLDA10HRQ19DREQ0DACK025DREQ118DACK12417D

55、REQ2DACK2141615DREQ3DACK3(同上)(同上)(同上)通道1通道2通道3屏蔽觸發器請求觸發器通道0DB4DB02630第7章 輸入和輸出技術7.3.3 8237的引腳和時序的引腳和時序圖7.12 8237引腳8237/8237-2IORIOWMEMRMEMWNCREADYHLDAADSTBAENHRQCSCLKRESET2DACK3DACK3DREQ2DREQ1DREQ0DREQSS)V(地40393837363534333231302928272625242322217A6A5A4AEOP3A2A1A0A)V 5(VCC0DB1DB2DB3DB4DB7DB6DB5DB0D

56、ACK1DACK1234567891011121314151617181920第7章 輸入和輸出技術 引腳的功能定義如下:引腳的功能定義如下: CLK(Clock):時鐘輸入,用來控制8237內部操作定時和DMA傳送時的數據傳送速率。 CS(Chip Select):片選輸入,低電平有效。在CPU控制總線時,即8237在受控方式下,當CS有效時,選中該8237作為I/O設備,而當CPU向8237寫入編程控制字時,它開啟I/O寫輸入;當CPU從8237讀回狀態字,或當前地址、當前字節計數器內容時,它開啟I/O讀輸入。在DMA控制總線時,自動禁止CS輸入,以防止DMA操作期間該器件選中自己。第7章

57、 輸入和輸出技術 RESET:復位輸入,高電平有效。RESET有效時,會清除命令、狀態、請求和暫存寄存器,并清除字節指示器和置位屏蔽寄存器。復位后,8237處于空閑周期,它的所有控制線都處于高阻狀態,并且禁止所有通道的DMA操作。復位之后必須重新對8237初始化,它才能進入DMA操作。第7章 輸入和輸出技術 READY:準備好輸入信號。當選用的存儲器或I/O設備速度比較慢時,可用這個異步輸入信號使存儲器或I/O讀寫周期插入等待狀態,以延長8237傳送的讀/寫脈沖(IOR,LOW,EMMR和MEMW)。 HRQ(Hold Request):請求占有信號,輸出,高電平有效。在僅有一塊8237的系統

58、中,HRQ通常接到CPU的HOLD引腳,用來向CPU請求對系統總線的控制權。如果通道的相應屏蔽位被清除,也就是說DMA請求未被屏蔽,只要出現DREQ有效信號,8237就會立即發出HRQ有效信號。在HRQ有效之后,至少等待一個時鐘周期后,HLDA才會有效。第7章 輸入和輸出技術 HLDA(Hold Acknowledge):同意讓出總線響應輸入信號,高電平有效。來自CPU的同意讓出總線響應信號,它有效表示CPU已經讓出對總線的控制權,把總線的控制權交給DMAC。 DREQ0DREQ3(DMA Request):DMA請求輸入信號。它們的有效電平可由編程設定。復位時使它們初始化為高電平有效。這4條

59、DMA請求線是外部電路為取得DMA服務,而送到各個通道的請求信號。在固定優先權時,DREQ0的優先權最高,DREQ3的優先權最低。各通道的優先權級別是可以編程設定的,當通道的DREQ有效時,就向8237請求DMA操作。DACK是響應DREQ信號后,進入DMA服務的應答信號,在響應的DACK產生前DREQ必須維持有效。第7章 輸入和輸出技術 DACK0DACK3(DMA Acknowledge):DMA響應輸出,它們的有效電平可由編程設定,復位時使它們初始化為低電平有效。8237用這些信號來通知各自的外部設備已經被授予一個DMA周期了,即利用有效的DACK信號作為I/O接口的選通信號。系統允許多

60、個DREQ同時有效,但在同一時間,只能一個DACK信號有效。 A3A0(Address):地址線的低4位,雙向、三態地址線。CPU控制總線時,它們是輸入信號,用來尋址要讀出或寫入的8237內部寄存器,在DMA的有效周期內,由它們輸出低4位地址。第7章 輸入和輸出技術 A7A4:三態、輸出的地址線。在DMA周期,輸出低字節的高4位地址A7A4。 DB7DB0:雙向、三態的數據總線,連接到系統數據總線上。在I/O讀期間,在編程條件下,輸出被允許。可以將8237內部的地址寄存器、狀態寄存器、暫存寄存器和字節計數器中的內容讀入CPU。當CPU對8237的控制寄存器寫入控制字時,在一個I/O寫周期內,這

溫馨提示

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

評論

0/150

提交評論