版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章微型計算機的輸入/輸出
6.1CPU與外設(shè)通訊的特點
6.2輸入/輸出方式
6.3CPU與外設(shè)通信的接口
6.4可用于輸入/輸出接口的8212芯片
6.5CPU的輸入/輸出
6.6DMA傳送方式與DMA控制器8237A輸入和輸出(Input/Output—I/O)設(shè)備:是計算機系統(tǒng)的重要組成部分;計算機通過它們與外界進行數(shù)據(jù)信息交換。6.1CPU與外設(shè)通訊的特點存儲器與CPU交換信息,它們在數(shù)據(jù)格式,存取速度等方面基本是匹配的,也就是說CPU要從存儲器讀入指令、數(shù)據(jù)或向存儲器寫入新的結(jié)果和數(shù)據(jù),只要一條存儲器訪問指令就可完成,在硬件連接方面是芯片之間的管腳連接。而CPU要與外部設(shè)備通訊至少有兩方面的困難:第一、CPU的運行速度要比外設(shè)的處理速度高很多;第二、一臺打印機不能直接與CPU的管腳連接,一個鍵盤或者其他外設(shè)也是如此。外部設(shè)備不能直接連接在總線上。為什么需要I/O接口(電路)?微機的外部設(shè)備多種多樣工作原理、驅(qū)動方式、信息格式、以及工作速度方面彼此差別很大它們不能與CPU直接相連必須經(jīng)過中間電路再與系統(tǒng)相連這部分電路被稱為I/O接口電路6.1CPU與外設(shè)通訊的特點CPU與外設(shè)通訊具有如下特點:(1)需要有接口作為CPU與外設(shè)通訊的橋梁。(2)需要有數(shù)據(jù)信息傳送之前的“聯(lián)絡”。(3)要傳遞的信息有3方面內(nèi)容:狀態(tài)信息數(shù)據(jù)信息控制信息一般CPU不直接與外設(shè)連接CPUI/O設(shè)備CPU 接口I/O設(shè)備CPU通過接口電路與外設(shè)連接什么是I/O接口(電路)?I/O接口是位于系統(tǒng)與外設(shè)間、用來協(xié)助完成數(shù)據(jù)傳送和控制任務的邏輯電路PC機系統(tǒng)板的可編程接口芯片、I/O總線槽的電路板(適配器)都是接口電路CPU接口電路I/O設(shè)備6.1.1I/O接口的主要功能(用途)⑴對輸入輸出數(shù)據(jù)進行緩沖和鎖存輸出接口有鎖存環(huán)節(jié),輸入接口有緩沖環(huán)節(jié)實際的電路常用:輸出鎖存緩沖環(huán)節(jié),輸入鎖存緩沖環(huán)節(jié)⑵對信號的形式和數(shù)據(jù)的格式進行變換:數(shù)字量、開關(guān)量、脈沖量⑶對I/O端口進行尋址⑷與CPU和I/O設(shè)備進行聯(lián)絡1.接口電路的內(nèi)部結(jié)構(gòu)CPU與外設(shè)主要有數(shù)據(jù)、狀態(tài)和控制信息需要相互交換,于是從應用角度看內(nèi)部:⑴數(shù)據(jù)寄存器保存外設(shè)給CPU和CPU發(fā)往外設(shè)的數(shù)據(jù)⑵狀態(tài)寄存器保存外設(shè)或接口電路的狀態(tài)⑶控制寄存器保存CPU給外設(shè)或接口電路的命令2.接口電路的外部特性主要體現(xiàn)在引腳上,分成兩側(cè)信號面向CPU一側(cè)的信號:用于與CPU連接主要是數(shù)據(jù)、地址和控制信號面向外設(shè)一側(cè)的信號:用于與外設(shè)連接提供的信號五花八門功能定義、時序及有效電平等差異較大3.接口電路芯片的分類
接口電路核心部分往往是一塊或數(shù)塊大規(guī)模集成電路芯片(接口芯片):通用接口芯片支持通用的數(shù)據(jù)輸入輸出和控制的接口芯片面向外設(shè)的專用接口芯片針對某種外設(shè)設(shè)計、與該種外設(shè)接口
面向微機系統(tǒng)的專用接口芯片與CPU和系統(tǒng)配套使用,以增強其總體功能6.1.2I/O端口的尋址方式存儲器的每個單元都分配有一個唯一的物理地址,對存儲器的訪問必須直接或間接地提供被訪問的存儲單元的地址。CPU與外部設(shè)備通訊,必須使每個設(shè)備具有地址。為與存儲單元地址區(qū)分,稱為端口地址,一個外部設(shè)備可能分配一個以上的端口地址,輸入(I)和輸出(O)端口是通過不可編程或可編程的芯片與CPU的有關(guān)管腳連接形成的。產(chǎn)生端口地址的方式與產(chǎn)生存儲單元地址的方式類似。6.1.2I/O端口的尋址方式I/O端口單獨編址I/O地址空間獨立于存儲地址空間如8086/8088I/O端口與存儲器統(tǒng)一編址它們共享一個地址空間如M6800I/O端口單獨編址
(I/O
映像的I/O
尋址)I/O端口地址和存貯器單元地址分開編址,各自有自己的地址,使用不同的指令。優(yōu)點:I/O端口的地址空間獨立控制和地址譯碼電路相對簡單專門的I/O指令(IN或OUT)使程序清晰易讀缺點:I/O指令沒有存儲器指令豐富內(nèi)存空間I/O空間FFFFF0FFFF80x86采用I/O端口獨立編址6.1.3I/O端口地址的形成I/O地址的譯碼方法與存儲器地址的譯碼方法一樣,但有它的特點:常采用部分譯碼方式??梢允侵虚g地址線不連接、也有最低地址線不連接的情況為了給系統(tǒng)一定的選擇余地,有些接口電路利用比較器、開關(guān)或跨接器等進行多組I/O地址的譯碼除采用譯碼器、門電路進行譯碼外,I/O地址譯碼還經(jīng)常采用可編程邏輯器件PLD一、存貯器映像的I/O尋址方式圖6.1(僅需一個譯碼器芯片)二、I/O映像的I/O尋址方式圖6.2(I/O端口地址需要單獨的一個譯碼器芯片)80x86的輸入輸出指令編號
指令功能注釋1INAL,PORTAL←(PORT)字節(jié)輸入(8位)2INAX,PORTAX←(PORT+1,PORT)字輸入(16位)3INEAX,PORTEAX←(PORT+3,PORT+2,PORT+1,PORT)雙字輸入(32位)4OUTPORT,AL(PORT)←AL字節(jié)輸出(8位)5OUTPORT,AX(PORT+1,PORT)←AX字輸出(16位)6OUTPORT,EAX(PORT+3,PORT+2,PORT+1,PORT)←EAX雙字輸出(32位)7INAL,DXAL←(DX)字節(jié)輸入(8位)8INAX,DXAX←(DX+1,DX)字輸入(16位)9INEAX,DXEAX←(DX+3,DX+2,DX+1,DX)雙字輸入(32位)10OUTDX,AL(DX)←AL字節(jié)輸出(8位)11OUTDX,AX(DX+1,DX)←AX字輸出(16位)12OUTDX,EAX(DX+3,DX+2,DX+1,DX)←EAX雙字輸出(32位)
IN——輸入指令,CPU從端口PORT讀入數(shù)據(jù);OUT——輸出指令,CPU向端口PORT輸出數(shù)據(jù);寄存器間接尋址直接尋址80x86的輸入輸出指令例1
指令I(lǐng)NAL,20H
若(20H)=29H,則指令執(zhí)行后,AL=29H。例2
指令OUTDX,EAX
若DX=2000H,EAX=2FAB3147H,則指令執(zhí)行后,地址為2003H、2002H、2001H、2000H的端口的內(nèi)容分別為2FH、ABH、31H和47H。6.2.1程序控制傳送方式操作完全在CPU的控制下完成,由CPU執(zhí)行啟動、控制、停止輸入輸出的程序??梢苑譃閮煞N方式:無條件傳送(同步傳送)查詢傳送(異步傳送)一、無條件傳送(同步傳送)方式
這種方式下,CPU直接與外設(shè)傳送數(shù)據(jù)而不必預先檢查外設(shè)狀態(tài),因為這種外設(shè)的時序是已知的及固定的,然而,適合于這種傳送方式的外設(shè)很少。CPU不查詢外設(shè)的工作狀態(tài),默認外設(shè)始終處于“準備好”或“空閑”狀態(tài),需要時可隨時與之交換數(shù)據(jù)。如:鈕子開關(guān)、發(fā)光二極管等。一、無條件傳送(同步傳送)方式不需要狀態(tài)端口信息:硬件較少程序設(shè)計簡單傳送不能太頻繁,以保證每次傳送時外設(shè)都能處于“準備好”狀態(tài),只能用于一些簡單的外設(shè)。流程二、查詢傳送(異步傳送)方式當慢速的外設(shè)與CPU交換數(shù)據(jù)時,常用這種方式。在這種方式下,CPU與外設(shè)傳送數(shù)據(jù)之前,先檢查外設(shè)狀態(tài),只有在狀態(tài)滿足條件的情況下才可以傳送數(shù)據(jù)。狀態(tài)的檢查是CPU執(zhí)行一段程序完成的。二、查詢傳送(異步傳送)方式傳送前,CPU先讀取并測試外設(shè)的狀態(tài)信息:若外設(shè)已準備就緒,CPU才執(zhí)行輸入指令或輸出指令與外設(shè)交換數(shù)據(jù)信息;若外設(shè)未準備就緒,CPU就繼續(xù)查詢外設(shè)的狀態(tài)信息。對多個外設(shè)的情況,CPU按一定順序依次查詢(輪詢)。先查詢的外設(shè)將優(yōu)先進行數(shù)據(jù)交換查詢傳送的特點是:工作可靠,適用面寬,但傳送效率低流程查詢傳送流程返回6.2.2中斷控制傳送方式在異步查詢方式時,CPU要用大量時間去執(zhí)行狀態(tài)查詢程序,使CPU的效率大大降低。如果不要CPU主動去查詢外設(shè)的狀態(tài),而是讓外設(shè)在準備好之后通知CPU。顯然,CPU在沒接到外設(shè)通知前只管做自己的事情,只有接到通知時才執(zhí)行與外設(shè)的數(shù)據(jù)傳送工作。這樣,可大大提高CPU的利用率,這種方式稱中斷方式。此方式將在第7章重點討論。但對于快速的外設(shè),要不斷請求中斷,CPU同樣也要用大量時間去響應它。6.2.2中斷控制傳送方式CPU在執(zhí)行程序中,被內(nèi)部或外部的事件所打斷,轉(zhuǎn)去執(zhí)行一段預先安排好的中斷服務程序;服務結(jié)束后,又返回原來的斷點,繼續(xù)執(zhí)行原來的程序。程序斷點主程序中斷請求為外設(shè)繼續(xù)執(zhí)行返回斷點傳送流程提供服務中斷服務程序
入口中斷傳送流程返回1.中斷的概念CPU在正常運行程序時,由于內(nèi)、外部事件有中斷請求,CPU暫時中止正在運行的程序,轉(zhuǎn)去執(zhí)行有中斷請求的內(nèi)、外部事件的服務程序,執(zhí)行結(jié)束后又返回到被中止的程序的過程。斷點:響應中斷時的下一條指令的地址。正常程序(斷點)中斷響應中斷返回中斷服務2.中斷源能產(chǎn)生中斷請求的外部設(shè)備(輸入/輸出設(shè)備)、內(nèi)部事件(除0、溢出)及中斷指令。3.中斷過程(1)中斷請求—外設(shè)向CPU發(fā)出中斷請求;(2)中斷判優(yōu)—將外設(shè)進行優(yōu)先級排隊;(3)中斷響應—CPU在條件允許下,響應最高優(yōu)先級別的中斷請求;(4)中斷處理—CPU服務中斷請求,進行中斷服務處理;(5)中斷返回—CPU服務完后,應返回原被中斷的程序,繼續(xù)執(zhí)行。中斷控制傳送方式特點
中斷傳送方式是指當外設(shè)需要與CPU進行信息交換時,由外設(shè)向CPU發(fā)出請求信號,使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行數(shù)據(jù)的輸入/輸出操作,數(shù)據(jù)傳送結(jié)束后,CPU再繼續(xù)執(zhí)行被暫停的程序。
查詢傳送方式是由CPU來查詢外設(shè)的狀態(tài),CPU處于主動地位,而外設(shè)處于被動地位。中斷傳送方式則是由外設(shè)主動向CPU發(fā)出請求,等候CPU處理,在沒有發(fā)出請求時,CPU和外設(shè)都可以獨立進行各自的工作。
6.2.3DMA傳送方式
—直接存貯器存取方式希望克服程序控制傳送的不足外設(shè)→CPU→存儲器外設(shè)←CPU←存儲器直接存儲器存取DMA外設(shè)→存儲器外設(shè)←存儲器CPU釋放總線,由DMA控制器管理總線DMA方式基本思想:在存儲器和外設(shè)之間建立起直接的數(shù)據(jù)傳送通路,即不經(jīng)由CPU,而由專門的DMA控制器實現(xiàn)存儲器和外設(shè)之間的操作。于是,傳送就不必進行保護現(xiàn)場等一系列額外操作,從而減輕了CPU的負擔,因此特別適合于高速度大批量數(shù)據(jù)傳送的場合。但是,這種方式要增設(shè)DMA控制器,硬件電路比前兩種方式更為復雜。6.2.3直接存儲器存取方式—DMA方式(1)由專用接口芯片DMA控制器(稱DMAC)控制傳送過程,(2)當外設(shè)需傳送數(shù)據(jù)時,通過
DMAC向CPU發(fā)出總線請求;(3)CPU發(fā)出總線響應信號后,釋放總線;(4)DMAC接管總線,控制外設(shè)、內(nèi)存之間的直接數(shù)據(jù)傳送。6.2.3直接存儲器存取方式——DMA方式CPUDMAC內(nèi)存外設(shè)總線響應總線請求內(nèi)存外設(shè)HOLDHLDADMA方式DMA系統(tǒng)結(jié)構(gòu)框圖
DMA方式的工作過程(1)I/O經(jīng)DMAC控制器向CPU發(fā)出DMA請求(HOLD=1);(2)CPU收到DMAC的HOLD=1請求信號后,如果允許,則使HLDA=1(總線響應信號)來響應DMAC的請求,并向DMAC的地址寄存器發(fā)送地址信息,向字節(jié)計數(shù)器發(fā)送傳送的字節(jié)數(shù),同時讓出總線;(3)DMAC得到總線控制權(quán)后,完成存貯器到I/O的數(shù)據(jù)傳送(每傳送1字節(jié)數(shù)據(jù),地址指針修改1次,字節(jié)計數(shù)器減1,直至減到0);(4)DMA過程結(jié)束,DMAC向CPU發(fā)出結(jié)束信號HOLD=0,CPU收到此信號后,使HLDA=0,同時收回總線控制權(quán)。DMA傳送流程流程DMA傳送流程返回DMA方式的特點(1)CPU讓出總線,由存貯器(不經(jīng)過CPU)直接向外設(shè)傳送數(shù)據(jù);(2)數(shù)據(jù)傳送用硬件DMAC(DMA控制器8237)實現(xiàn),不需要程序(軟件)。1)DMAC的初始化
DMAC的初始化主要做如下幾方面工作:(1)指定數(shù)據(jù)的傳送方向。即指定外設(shè)對存儲器是做讀操作還是寫操作,這就要對控制/狀態(tài)寄存器中的相應控制位置數(shù)。(2)指定地址寄存器的初值。即給出存儲器中用于DMA傳送的數(shù)據(jù)區(qū)的首地址。(3)指定計數(shù)器的初值。即明確有多少數(shù)據(jù)需要傳送。
3.DMA操作的基本過程2)DMA數(shù)據(jù)傳送按以下步驟進行(以數(shù)據(jù)輸入為例):(1)外圍設(shè)備發(fā)選通脈沖,把輸入數(shù)據(jù)送入緩沖寄存器,并使DMA請求觸發(fā)器置1。(2)DMA請求觸發(fā)器向控制/狀態(tài)端口發(fā)準備就緒信號,同時向DMA控制器發(fā)DMA請求信號。
(3)DMA控制器向CPU發(fā)出總線請求信號(HOLD)。(4)?CPU在完成了現(xiàn)行機器周期后,即響應DMA請求,發(fā)出總線允許信號(HLDA),并由DMA控制器發(fā)出DMA響應信號,使DMA請求觸發(fā)器復位。此時,由DMA控制器接管系統(tǒng)總線。
(5)?DMA控制器發(fā)出存儲器地址,并在數(shù)據(jù)總線上給出數(shù)據(jù),隨后在讀/寫控制信號線上發(fā)出寫的命令。
(6)來自外設(shè)的數(shù)據(jù)被寫入相應存儲單元。
(7)每傳送一個字節(jié),DMA控制器的地址寄存器加1,從而得到下一個地址,字節(jié)計數(shù)器減1。返回(5),傳送下一個數(shù)據(jù)。如此循環(huán),直到計數(shù)器的值為0,數(shù)據(jù)傳送完畢。3)DMA結(jié)束
DMA傳送完畢,由DMAC撤消總線請求信號,從而結(jié)束DMA操作。CPU撤消總線允許信號,恢復對總線的控制。前面介紹的三種傳送方式各有利弊,在實際使用時,要根據(jù)具體情況選擇既能滿足要求,又盡可能簡單的方式。6.2.4I/O處理機方式引入DMA方式之后,數(shù)據(jù)的傳送,尤其是控制數(shù)據(jù)的輸入/輸出,數(shù)據(jù)的傳送速度和響應時間均有很大的提高,特別是DMA控制器分擔了數(shù)據(jù)輸入/輸出過程的部分操作,但是數(shù)據(jù)輸入滯后或輸出之前,有時要對數(shù)據(jù)進行運算和處理。如數(shù)據(jù)的交換、裝配、拆卸和數(shù)碼的校驗等,都要由CPU來完成。為了使CPU完全擺脫管理和控制輸入/輸出設(shè)備的負擔,又提出了I/O處理機的方式。主要由I/O處理機承擔輸入/輸出信息的操作與處理,I/O處理機可以是與主CPU不同的微處理器,有它自己的指令系統(tǒng),可以執(zhí)行程序來實現(xiàn)對數(shù)據(jù)的處理。6.3CPU與外設(shè)通訊的接口1.同步傳送方式與接口2.異步查詢方式與接口3.查詢方式應用舉例6.3.1同步傳送方式與接口這種方式是所有傳送方式中最簡單的一種,所需的硬件和軟件也最少。但是使用的前提是外設(shè)具有固定的和已知的定時。1.同步輸入過程:(1)提供端口地址,以便CPU從指定的外設(shè)中取入數(shù)據(jù)。(2)執(zhí)行IN指令或存儲器讀出指令。(3)地址譯碼器輸出,同時產(chǎn)生M/IO和RD控制信號。(4)數(shù)據(jù)從端口中輸入至CPU寄存器。一、同步輸入方式2.同步輸入硬件接口電路CPU不查詢外設(shè)的工作狀態(tài),默認外設(shè)始終處于“準備好”或“空閑”狀態(tài),需要時可隨時與之交換數(shù)據(jù)。為防止CPU在取外設(shè)數(shù)據(jù)時,數(shù)據(jù)發(fā)生變化,往往在硬件上采用緩沖器或鎖存器,把外設(shè)數(shù)據(jù)保存起來,緩沖器或鎖存器是可編程或不可編程的芯片,根據(jù)它的用途稱它們?yōu)镮/O接口芯片。硬件接口電路必須保證同步輸入過程的正確執(zhí)行。無條件傳送方式:數(shù)據(jù)輸入3.不可編程輸入接口芯片74LS244如圖6.4(a)和6.4(b)所示。無條件傳送:輸入實例MOV DX,160H;DX指向數(shù)據(jù)端口IN AL,DX;從輸入端口讀開關(guān)狀態(tài)74LS244+5V10Kx8G1G2數(shù)據(jù)總線CSRD不可編程輸入接口芯片74LS244二、同步輸出方式1.同步輸出過程(1)提供端口地址,以便CPU將數(shù)據(jù)送到指定的外設(shè)(2)執(zhí)行OUT指令或存儲器寫指令。(3)地址譯碼器輸出,同時產(chǎn)生M/IO和WR信號。(4)CPU將數(shù)據(jù)輸出到端口。2.同步輸出硬件接口電路由于CPU數(shù)據(jù)線上掛接的負載很多,為了將CPU數(shù)據(jù)線上的信息準確傳送,除了正確提供端口地址外,還需將數(shù)據(jù)鎖存或驅(qū)動后提供給外設(shè)。無條件傳送方式:數(shù)據(jù)輸出3.不可編程輸出接口芯片4LS273如圖6.6(a)和6.6(b)所示。無條件傳送:輸出實例MOVDX,160HMOVAL,[BX]OUTDX,AL+5V74LS373300
x8LEOE數(shù)據(jù)總線CSWR不可編程輸出接口芯片74LS273無條件傳送:輸入輸出接口K7K1K0+5VD0~D7A0~A15CPLS06反相驅(qū)動器LS2738D鎖存器LS244三態(tài)緩沖器8000H譯碼+5VLED0LED7……CE-IOW-IOR輸入輸出從輸入端口讀開關(guān)狀態(tài)反相后送輸出端口顯示無條件傳送:輸入輸出接口next: movdx,8000h ;dx指向數(shù)據(jù)端口
inal,dx
;從輸入端口讀開關(guān)狀態(tài)
notal ;反相
outdx,al
;送輸出端口顯示
calldelay ;調(diào)子程序延時
jmpnext ;重復從輸入端口讀開關(guān)狀態(tài)反相后送輸出端口顯示鎖存器:由D觸發(fā)器構(gòu)成通常一個器件包含8個D觸發(fā)器常用芯片:(教材圖6.4、圖6.6)74LS27374LS374(具有三態(tài)輸出的鎖存器)應用例子:發(fā)光二極管接口簡單的輸出接口舉例譯碼器=1=1.........+5VRD0|D7CPQ0Q7...D0~D7A0~A15IOW#74LS273R輸入/輸出接口綜合應用例子根據(jù)開關(guān)狀態(tài)在7段數(shù)碼管上顯示數(shù)字或符號共陽極7段數(shù)碼管結(jié)構(gòu)用74LS273作為輸出接口,把數(shù)據(jù)送到7段數(shù)碼管74LS273的地址假設(shè)為F0H用74LS244作為輸入口,讀入開關(guān)K0~K3的狀態(tài)74LS244的地址假設(shè)為F1H當開關(guān)的狀態(tài)分別為0000~1111時,在7段數(shù)碼管上對應顯示’0’~’F’7段碼表(見下頁)
符號形狀7段碼.gfedcba符號形狀7段碼.gfedcba’0’’8’’1’’9’’2’’A’’3’’B’’4’’C’’5’’D’’6’’E’’7’’F’O1I1O2I2O3I3O4I4#E1
K0~K3+5VGG2AG2BCBA≥174LS244D0Q0|Q1D7Q2Q3Q4CPQ5Q6Q7
abcdefgDP74068個反相器74LS273Rx8≥174LS138D0~D7IOW#IOR#Y0Y1F0H=0000000011110000F1H=0000000011110001&≥1A7~A4A15~A8A3A2A1A0D0D1D2D3譯碼電路相應程序段如下:
……Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX,Seg7 ;取7段碼表基地址
MOV AH,0GO: MOV DX,0F1H ;開關(guān)接口的地址為F1H IN AL,DX ;讀入開關(guān)狀態(tài)
AND AL,0FH ;保留低4位
MOV SI,AX ;作為7段碼表的表內(nèi)位移量
(開關(guān)的狀態(tài)分別為0000~1111)
MOV AL,[BX+SI];取7段碼
MOV DX,0F0H ;7段數(shù)碼管接口的地址為F0H OUT DX,AL JMP GO6.3.2異步查詢傳送方式及其接口查詢傳送的兩個環(huán)節(jié)⑴查詢環(huán)節(jié)尋址狀態(tài)口讀取狀態(tài)寄存器的標志位若不就緒就繼續(xù)查詢,直至就緒⑵傳送環(huán)節(jié)尋址數(shù)據(jù)口是輸入,通過輸入指令從數(shù)據(jù)端口讀入數(shù)據(jù)是輸出,通過輸出指令向數(shù)據(jù)端口輸出數(shù)據(jù)輸入狀態(tài)就緒?數(shù)據(jù)交換YN流程一、查詢輸入接口(157頁)IOR+5V8D鎖存器8位三態(tài)緩沖器譯碼1位三態(tài)緩沖器RQ
A0~A158000H8001HD0~D7D0D輸入設(shè)備IORSTB movdx,8000h ;DX指向狀態(tài)端口status: inal,dx ;讀狀態(tài)端口
testal,01h ;測試標志位D0 jzstatus ;D0=0,未就緒,繼續(xù)查詢
movdx,8001h ;D0=1,就緒,DX數(shù)據(jù)端口 inal,dx ;從數(shù)據(jù)端口輸入數(shù)據(jù)二、異步查詢輸出方式與接口當CPU將數(shù)據(jù)送給外部設(shè)備時,由于CPU執(zhí)行速度很快,外設(shè)能否及時地把數(shù)據(jù)取走?若外設(shè)沒有取走前一個數(shù)據(jù),CPU不能立即再輸出下一個數(shù)據(jù),否則,數(shù)據(jù)就會丟失(覆蓋)。因此,外設(shè)取走一個數(shù)據(jù)就要發(fā)出一個狀態(tài)信息,告訴CPU現(xiàn)在緩沖區(qū)的數(shù)據(jù)取走了,緩沖區(qū)內(nèi)空著,可以再輸出下一個數(shù)據(jù)。二、查詢輸出接口8D鎖存器譯碼1位三態(tài)緩沖器RQ
A0~A158000H8001HD0~D7D7D+5V輸出設(shè)備ACKIOWIOR movdx,8000h ;DX指向狀態(tài)端口status: inal,dx ;讀取狀態(tài)端口的狀態(tài)數(shù)據(jù)
testal,80h ;測試標志位D7 jnzstatus ;D7=1,未就緒,繼續(xù)查詢
movdx,8001h ;D7=0,就緒,DX數(shù)據(jù)端口
moval,buf ;變量buf送AL
outdx,al ;將數(shù)據(jù)輸出給數(shù)據(jù)端口6.3.3查詢方式應用舉例輸出設(shè)備:打印機。接收數(shù)據(jù)線:DB0~DB7:單向、由計算機輸入打印機聯(lián)絡信號STB:輸入,數(shù)據(jù)選通信號BUSY:”忙”信號,由打印機輸出,有效表示打印機正忙于處理上一個數(shù)據(jù)ACK:”應答”信號,打印機輸出信號,有效表示打印機已取走數(shù)據(jù)線上的數(shù)據(jù)ERR:”出錯”信號,當送入打印機的命令格式有錯時,打印機立即打印一行出錯信息例1:CPU用程序查詢方式向打印機傳送BUFF緩沖區(qū)中的100個字符。設(shè)數(shù)據(jù)口的地址為01H,狀態(tài)口的地址為00H,狀態(tài)信息接于D0,當D0=1時指示忙,D0=0時指示閑。硬件電路DB打印機數(shù)據(jù)口RDY01H00H狀態(tài)口D0START循環(huán)準備讀狀態(tài)輸出數(shù)據(jù)準備好
修改循環(huán)LOPYN流程圖PRNT PROC FAR MOV CX,LENGTHBUFF;
MOVSI,OFFSETBUFF;
LOP: IN AL,00H;讀狀態(tài)
TEST AL,01H;測試D0位
JNZ LOP;為1,繼續(xù)測試
MOVAL,[SI];為0,傳送數(shù)據(jù)
OUT 01H,AL;
INC SI;
LOOP LOP;
RET;
PRNT ENDP程序段6.4可用于輸入/輸出接口的8212芯片74LS244和74LS273芯片只能作為輸入接口或輸出接口。INTEL公司的8212芯片,是一個8位的輸入輸出接口(既可用于輸入又可用于輸出),它包括8位鎖存器、三態(tài)輸出緩沖器,控制和選擇邏輯電路和中斷請求邏輯等部分。。輸入/輸出接口芯片8212引腳圖8212芯片內(nèi)部結(jié)構(gòu)圖MD:選擇方式信號MD=1:輸出方式MD=0:輸入方式8212芯片的兩種工作方式6.4.18212芯片用于輸入接口(1)直通式MD=06.4.18212芯片用于輸入接口(2)選通輸入選通信號MD=06.4.28212芯片用于輸出接口MD=16.4.28212芯片作為雙向總線驅(qū)動器將兩片8212組成雙向總線驅(qū)動器。方向控制信號D控制工作:當D=0時,上面一片8212被選中,數(shù)據(jù)直通緩沖器輸出,而下面一片8212的輸出緩沖器處于高阻態(tài),數(shù)據(jù)從A端——B端。當D=1時,下面一片8212被選中,上面一片處于高阻態(tài),數(shù)據(jù)從B端——A端。圖6.166.5CPU的輸入/輸出(8088/8086)8088只能通過輸入輸出指令與外設(shè)進行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設(shè)是端口(Port)地址8086用于尋址外設(shè)端口的地址線為16條,端口最多為216(64K)個,端口號為0000H~FFFFH每個端口用于傳送一個字節(jié)的外設(shè)數(shù)據(jù)I/O端口尋址包括直接尋址和DX寄存器間接尋址I/O尋址方式64K個端口無需分段,設(shè)計有兩種尋址方式直接尋址:僅用地址線A0~A7譯碼產(chǎn)生I/O端口地址,尋址00H~FFH(256個端口),操作數(shù)i8表示端口號間接尋址:用A0~A15地址線譯碼產(chǎn)生I/O端口地址,可尋址全部64K個端口,DX寄存器的值就是端口號大于FFH的端口只能采用間接尋址方式6.5.1CPU的輸入/輸出指令輸入指令I(lǐng)NAL,i8 ;字節(jié)輸入,直接尋址INAL,DX ;字節(jié)輸入,間接尋址INAX,i8 ;字輸入,直接尋址INAX,DX ;字輸入,間接尋址輸出指令OUTi8,AL ;字節(jié)輸出,直接尋址OUTDX,AL ;字節(jié)輸出,間接尋址OUTi8,AX ;字輸出,直接尋址OUTDX,AX ;字輸出,間接尋址演示演示INAL,21H返回OUT43H,AL返回數(shù)據(jù)交換方式輸入輸出一個字節(jié),利用AL寄存器輸入輸出一個字,利用AX寄存器輸入一個字,實際上是從連續(xù)兩個端口輸入兩個字節(jié),分別送AL(對應低地址端口)和AH(對應高地址端口)輸出一個字,實際上是將AL(對應低地址端口)和AH(對應高地址端口)兩個字節(jié)的內(nèi)容輸出給連續(xù)兩個端口IN指令(從20H端口輸入一個字);方法1:字量輸入,直接尋址
inax,20h;方法2:字量輸入,間接尋址
movdx,20h inax,dx;方法3:字節(jié)輸入,直接尋址
inal,21h movah,al
inal,20h;方法4:字節(jié)輸入,間接尋址
movdx,21h
inal,dx movah,al decdx
inal,dxOUT指令(向300H端口輸出一個字節(jié))
唯一的方法:間接尋址,字節(jié)量輸出
moval,bvar ;bvar是字節(jié)變量
movdx,300h
outdx,al6.5.28086CPU的輸入/輸出特點CPU和I/O接口電路之間的數(shù)據(jù)通路是分時多路復用的地址/數(shù)據(jù)總線
8086有兩種工作模式:最小模式、最大模式工作在不同模式時,輸入輸出的控制信號會發(fā)生變化最小模式:輸入輸出信號由CPU直接提供。最大模式:輸入輸出控制信號由CPU的狀態(tài)線S0,S1,S2經(jīng)譯碼產(chǎn)生6.5.380286和80386/486支持I/O端口
直接與內(nèi)存間的數(shù)據(jù)傳送輸入
MOVDX,PORTLESDI,BUFFERININSB(8位傳送)或INSW(16位傳送)輸出
MOVDX,PORTLDSSI,BUFFEROUTOUTSB(8位傳送)
或OUTSW(16位傳送)輸入時,用ES:DI指向RAM中的目標緩沖區(qū)BUFFERIN;輸出時,用DS:SI指向RAM中的目標緩沖區(qū)BUFFEROUT。若在INS或OUTS前加重復前綴REP,則可以實現(xiàn)端口與內(nèi)存之間成批的數(shù)據(jù)傳送6.6DMA傳送方式與DMA控制器8237A直接存儲器存取DMA:外設(shè)→存儲器外設(shè)←存儲器CPU釋放總線,由DMA控制器管理DMA方式必須由DMAC硬件完成,Intel8237A是一種高性能的可編程DMA控制器DMA傳送流程流程6.6.18237A的基本功能和結(jié)構(gòu)一、基本功能(圖6.18)4個獨立的DMA通道;每個通道的DMA請求可分別允許或禁止;每個通道的DMA請求有不同優(yōu)先權(quán);每個通道一次最多傳送64K字節(jié);支持4種傳送方式:
單字方式、數(shù)據(jù)塊方式、請求方式、級連方式允許用輸入信號結(jié)束DMA傳送或重新初始化;可以級連以增加通道數(shù)。8237A的外部引腳
主機接口外設(shè)接口其它電源線VCC、GNDCLK、RESETNC請求線DREQ0~DREQ3響應線DACK0~DACK3過程結(jié)束信號EOP地址線A0~A3、A4~A7數(shù)據(jù)線DB0~DB7復用控制線CS、MEMR、MEMW、IOR、IOW、AEN、READY、HLDA、HRQ、ADSTB二、內(nèi)部結(jié)構(gòu)8237A的結(jié)構(gòu)
有三個基本控制邏輯塊、一個內(nèi)部寄存器組和一個數(shù)據(jù)與地址緩沖器組
時序控制邏輯塊根據(jù)編程規(guī)定的DMAC工作模式,產(chǎn)生DMA請求、DMA傳送及DAM結(jié)束所需的內(nèi)部時序和外部信號。
程序命令控制塊
對CPU編程給定的命令字和模式控制字進行譯碼,確定DMA服務的類型。優(yōu)先權(quán)編碼邏輯
對同時有請求的通道進行優(yōu)先權(quán)編碼,確定哪個通道的優(yōu)先權(quán)最高。(164頁說明)基本控制邏輯塊作為DMAC,8237A是可控制總線的主模塊作為I/O芯片,8237A可被處理器讀寫
運行時注意8237A主---從地址的變化8237A的主從兩面性DB7-DB0:雙向數(shù)據(jù)總線。8237A為從模塊時被處理器編程或讀狀態(tài),DB7-DB0作為數(shù)據(jù)線,傳輸數(shù)據(jù)或命令字。8237A為主模塊時DB7-DB0輸出地址A15-A8,在
MM傳送操作時經(jīng)DB7-DB0,將M數(shù)據(jù)送8237A暫存器。A3-A4:地址線,從模塊時為輸入,處理器尋址8237A;主模塊時輸出低位地址。8237A引線A7-A4:地址線,主模塊時輸出A7-A4。CS:片選,從模塊時處理器用來尋址8237A。IOR,IOW:I/O讀寫控制,雙向。8237A在從模塊時為輸入,在主模塊時為輸出。AEN,ADSTB輸出:8位地址鎖存允許及選通。在主模塊時允許外部鎖存器鎖存8237A的高8位地址。MEMR,MEMW:輸出,存儲器讀寫控制,主模塊時送存儲器。READY:輸入,準備就緒,主模塊時控制總線周期的長度,與慢速設(shè)備同步。RESET:輸入,復位信號,復位時屏蔽寄存器置1,其它寄存器置0。EOP:雙向。輸出時,表明內(nèi)部通道傳送結(jié)束;輸入時,表明外部強迫DMA傳送停止。DREQ0-DREQ3:I/O設(shè)備DMA請求輸入信號。DACK0-DACK3:輸出DMA請求的響應。HRQ:8237A向處理器發(fā)出的總線請求信號。HLDA:處理器發(fā)給8237A的總線請求響應信號。8237A的內(nèi)部寄存器命令寄存器請求寄存器屏蔽寄存器先/后觸發(fā)器數(shù)據(jù)暫存寄存器狀態(tài)寄存器寄存囂通道共用寄存囂X4通道獨立基地址寄存器當前地址寄存器基字節(jié)數(shù)計數(shù)器當前字節(jié)數(shù)計數(shù)器方式寄存器16位,寄存相應通道當前地址寄存器的初始值16位,寄存DMA傳送期間的地址值,每次傳送后,地址值自動改變16位,寄存通道當前字節(jié)數(shù)計數(shù)器的初始值(初始值比實際傳送的字節(jié)數(shù)少1),與當前字節(jié)數(shù)計數(shù)器同時被寫入16位,寄存當前字節(jié)數(shù),每傳送一個字節(jié)后自動減1,當該計數(shù)器的值減到0時,產(chǎn)生計數(shù)結(jié)束信號8位,配合16位的寄存器的寫入/讀出,為0時,進行低字節(jié)操作,然后自動變?yōu)?,再進行高字節(jié)操作8位,暫存從源單元讀出的數(shù)據(jù),再從它寫入到目的單元8237A有四個獨立通道:每個通道有16位地址REG,16位字節(jié)數(shù)計數(shù)器,6位模式REG。四個通道公用控制寄存器,狀態(tài)寄存器,屏蔽寄存器,請求標志寄存器及暫存器?;刂芳拇嫫鳎悍臘MA傳送RAM地址初值。當前地址寄存器:DMA傳送時內(nèi)容變化,可讀?;止?jié)數(shù)寄存器:DMA傳送的總字節(jié)數(shù)。當前字節(jié)數(shù)寄存器:DMA傳送時內(nèi)容變化,可讀。8237A寄存器組成說明6.6.28237A的工作方式
8237A的內(nèi)部操作可分為7個狀態(tài),這7個狀態(tài)可分為四類(167頁)一、空閑狀態(tài)SI二、請求應答狀態(tài)S0三、數(shù)據(jù)傳送狀態(tài)S1~S4四、等待狀態(tài)Sw
8237A有兩個工作周期(168頁)1.空閑周期2.有效周期(工作周期)8237A的工作時序狀態(tài)
SIS0初始態(tài)S1操作態(tài)S2讀出S3寫入Sw延長等待S4判別(傳送狀態(tài))操作周期(非傳送狀態(tài))空閑周期1)單字節(jié)傳輸方式
DMAC每次控制總線后只傳輸一個字節(jié),傳輸完后即釋放總線控制權(quán)。這樣CPU至少可以得到一個總線周期,并進行有關(guān)操作。
2)成組傳輸方式(塊傳輸方式)DMAC每次控制總線后都連續(xù)傳送一組數(shù)據(jù),待所有數(shù)據(jù)全部傳送完后再釋放總線控制權(quán)。顯然,成組傳輸方式的數(shù)據(jù)傳輸率要比單字節(jié)傳輸方式高。但是,成組傳輸期間CPU無法進行任何需要使用系統(tǒng)總線的操作。
8237A處于有效周期時,可在4種方式下工作
3)請求傳輸方式每傳輸完一個字節(jié),DMAC都要檢測I/O接口發(fā)來的DMA請求信號是否有效。若有效,則繼續(xù)進行DMA傳輸;否則就暫停傳輸,將總線控制權(quán)交還給CPU,直至DMA請求信號再次變?yōu)橛行?,再從剛才暫停的那一點繼續(xù)傳輸。
4)級聯(lián)方式利用這種方式可以把多個8237連接在一起,以便擴充系統(tǒng)的DMA通道數(shù)。如上圖6.6.38237A的寄存器組與編程一、8237A的寄存器組1.基地址寄存器用以存放16位地址,只可寫入而不能讀出。2.基字節(jié)數(shù)寄存器用以存放相應通道需要傳送數(shù)據(jù)的字節(jié)數(shù),只可寫入而不能讀出。3.當前地址寄存器存放DMA傳送期間的地址值。每次傳送后自動加l或減l。4.當前字節(jié)數(shù)寄存器存放當前的字節(jié)數(shù)。每傳送一個字節(jié),該寄存器的內(nèi)容減1。5.地址暫存寄存器和字節(jié)數(shù)暫存寄存器這兩個16位的寄存器和CPU不直接發(fā)生關(guān)系,我們也不必對其進行讀/寫操作,因而對如何使用8237沒有影響。6.方式寄存器:每個通道有一個8位的方式寄存器,但是它們占用同一個端口地址,用來存放方式字,依靠方式控制字本身的特征位來區(qū)分寫入不同的通道,用來規(guī)定通道的工作方式
自動預置就是當某一通道按要求將數(shù)據(jù)傳送完后,又能自動預置初始地址和傳送的字節(jié)數(shù),而后重復進行前面已進行過的過程。校驗傳送就是實際并不進行傳送,只產(chǎn)生地址并響應信號,不產(chǎn)生讀寫控制信號,用以校驗8237的功能是否正常。7.命令寄存器:8237的命令寄存器存放編程的命令字
D1=0會把源地址同一個數(shù)據(jù)寫入到整個目的存儲器區(qū)域中。
D3位用于選擇總線周期中寫信號的定時,PC機選擇D3=0。
D5=1使和信號擴展2個時鐘周期提前到來。
8.屏蔽寄存器
(1)單個通道屏蔽字這種屏蔽字每次只能選擇一個通道。其中D0D1的編碼指示所選的通道,D2=l表示禁止該通道接收DREQ請求,當D2=0時允許DREQ請求。(2)四通道屏蔽字這個屏蔽字同時對8237的4個通道的屏蔽字進行操作,故又稱為主屏蔽字。它與單通道屏蔽字占用不同的I/O接口地址,以此加以區(qū)分。9.狀態(tài)寄存器
狀態(tài)寄存器存放各通道的狀態(tài),CPU讀出其內(nèi)容后,可得知8237的工作狀況。主要有:哪個通道計數(shù)已達到計數(shù)終點——對應位為1;哪個通道的DMA請求尚未處理——對應位為1。
10.暫存寄存器用于存儲器到存儲器傳送過程中對數(shù)據(jù)的暫時存放。
11.字節(jié)指針觸發(fā)器這是一個特殊的觸發(fā)器,用于對前述各16位寄存器的尋址。由于前述各16位寄存器的讀或?qū)懕仨毞謨纱芜M行,先低字節(jié)后高字節(jié)。為此,要利用字節(jié)指針觸發(fā)器,當此觸發(fā)器狀態(tài)為0時,進行低字節(jié)操作。一旦低字節(jié)讀/寫操作完成后,字節(jié)指針觸發(fā)器會自動置l,再操作一次又會清零。利用這種機制,就可以進行雙字節(jié)讀寫操作,這樣16位寄存器可以僅占用一個外設(shè)端口地址,高、低字節(jié)共用。二、8237A各寄存器的端口地址8237A4個通道中的寄存器及其它各種寄存器的尋址編碼如下
8237各通道寄存器的尋址通道寄存器操作CSIORIOWA3A2A1A0字節(jié)指針觸發(fā)器D0~D70基和當前地址寫01000000A0~A71A8~A15當前地址讀00100000A0~A71A8~A15基和當前字節(jié)數(shù)寫01000010W0~W71W8~W15當前字節(jié)數(shù)讀00100010W0~W71W8~W158237A其它寄存器的地址(表6.3)CSA3A2A1A0IORIOW功能0100001讀狀態(tài)寄存器0100010寫狀態(tài)寄存器0100101非法0100110寫請求寄存器0101001非法0101010寫單通道屏蔽寄存器0101101非法0101110寫方式寄存器0110001非法0110010字節(jié)指針觸發(fā)器清00110101讀暫存寄存器0110110總清0111001非法0111010清屏蔽寄存器0111101非法0111110寫4通道屏蔽寄存器8237A的編程命令是通過對內(nèi)部寄存器的寫操作來進行的,而狀態(tài)寄存器中的狀態(tài)字和暫存器中的內(nèi)容是通過讀操作來進行的。四.8237A的初始化編程1、編程步驟(1)輸出主清除命令(2)寫入基與現(xiàn)行地址寄存器(3)寫入基與現(xiàn)行字節(jié)數(shù)寄存器(4)寫入方式寄存器(5)寫入屏蔽寄存器(6)寫入命令寄存器(7)寫入請求寄存器(軟件啟動)硬件啟動:用DREQ(外設(shè)請求)地址低字節(jié)總清地址高字節(jié)字數(shù)低字節(jié)字數(shù)高字節(jié)方式字屏蔽字命令字其他通道參數(shù)2.編程舉例
編寫8237A初始化程序
要求:用通道0,由外設(shè)(磁盤)輸入32K字節(jié)的一個數(shù)據(jù)塊,傳送至內(nèi)存8000H開始的區(qū)域(增量傳送),采用塊連續(xù)傳送方式,傳送完不自動初始化,外設(shè)的DREQ和DACK都為高電平有效。假設(shè)高4位地址為5。各控制字如下所示:方式控制字(84H)屏蔽字(00H)命令字(A0H)程序如下:OUT5DH,AL;輸出主清除命令(復位)MOVAL,00HOUT50H,AL
;輸出基和現(xiàn)行地址的低8位MOVAL,80HOUT50H,AL
;輸出基和現(xiàn)行地址的高8位MOVAL,00HOUT51H,ALMOVAL,80HOUT51H,AL
;給基和現(xiàn)行字節(jié)數(shù)賦值MOVAL,84HOUT5BH,AL;輸出方式字 MOVAL,00HOUT5AH,AL
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國發(fā)動機曲軸行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國鉭電容器行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 高效會議管理培訓課件
- 消防水炮知識培訓課件
- 煤氣安全知識培訓課件
- 2024中國采礦、采石設(shè)備制造市場前景及投資研究報告
- 廣西賀州市八步區(qū)2023-2024學年九年級上學期期末化學試題
- 炭疽防控知識培訓課件下載
- 電磁學知識培訓課件
- 市引申蒙氏教學幼兒園工作參考計劃
- 建筑公司員工合規(guī)手冊
- 質(zhì)量保證的基本原則與方法
- 第1講-句子結(jié)構(gòu)
- 鼻腔沖洗護理技術(shù)團體標準解讀
- 《流感科普宣教》課件
- 紅領(lǐng)巾知識伴我成長課件
- 廚邦醬油推廣方案
- 腦血管病的三級預防
- 保險產(chǎn)品創(chuàng)新與市場定位培訓課件
- 2022-2023學年山東省淄博四中高二(上)期末數(shù)學試卷含答案
- 《建筑賦比興》一些筆記和摘錄(上)
評論
0/150
提交評論