《微機原理與接口技術第08章》由會員分享,可在線閱讀,更多相關《微機原理與接口技術第08章(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,人民郵電出版社,8.1,概 述,8.2 CPU,與外設數(shù)據(jù)傳送的方式,8.3 DMA,控制器,退出,課件,第,8,章 輸入和輸出,8.1,概 述,8.1.1,輸入輸出的尋址方式,CPU,尋址外設可以有兩種方式。,1,存儲器對應輸入輸出方式,在這種方式中,把一個外設端口作為存儲器的一個單元來對待,故每一個外設端口占有存儲器的一個地址。從外部設備輸入一個數(shù)據(jù),作為一次存儲器讀的操作;而向外部設備輸出一個數(shù)據(jù),則作為一次存儲器寫的操作。,這種方式的優(yōu)點是:,(,1,),CPU,對外設的操作可使用全部的存儲器操作指令,
2、故指令多,使用方便。如可以對外設中的數(shù)據(jù)(存于外設的寄存器中)進行算術和邏輯運算,進行循環(huán)或移位等。,(,2,)內(nèi)存和外設的地址分布圖是同一個。,(,3,)不需要專門的輸入輸出指令以及區(qū)分是存儲器還是,I/O,操作的控制信號。,缺點是:,外設占用了內(nèi)存單元,使內(nèi)存容量減小。,2,端口尋址的輸入輸出方式,在這種工作方式中:,CPU,有專門的,I/O,指令,用地址來區(qū)分不同的外設。但要注意實際上是以端口(,Port,)作為地址的單元,因為一個外設不僅有數(shù)據(jù)寄存器還有狀態(tài)寄存器和控制命令寄存器,它們各需要一個端口才能加以區(qū)分,故一個外設往往需要數(shù)個端口地址。,CPU,用地址來選擇外設。,要尋址的外設
3、的端口地址,顯然比內(nèi)存單元的地址要少得多。所以,在用直接尋址方式尋址外設時,它的地址字節(jié),通??傄葘ぶ穬?nèi)存單元的地址少一個字節(jié),因而節(jié)省了指令的存儲空間,縮短了指令的執(zhí)行時間。,8.1.2 CPU,與,I/O,設備之間的接口信息,1,數(shù)據(jù)(,Data,),在微型機中,數(shù)據(jù)通常為,8,位、,16,位或,32,位。它大致可以分為三種基本類型:,(,1,)數(shù)字量,(,2,)模擬量,(,3,)開關量,2,狀態(tài)信息(,Status,),在輸入時,有輸入設備是否準備好(,Ready,)的狀態(tài)信息;在輸出時,有輸出設備是否有空(,Empty,)的狀態(tài)信息,若輸出設備正在輸出,則以忙(,Busy,)指示等等
4、。,3,控制信息(,Control,),控制輸入輸出設備啟動或停止等等。,狀態(tài)信息和控制信息與數(shù)據(jù)是不同性質(zhì)的信息,必須要分別傳送。但在大部分微型機中(,8086,也如此),只有通用的,IN,和,OUT,指令,因此,外設的狀態(tài)也必須作為一種數(shù)據(jù)輸入;而,CPU,的控制命令也必須作為一種數(shù)據(jù)輸出。所以,一個外設往往要幾個端口地址,,CPU,尋址的是端口,而不是籠統(tǒng)的外設。,8.1.3 CPU,的輸入輸出時序,通常,I/O,接口電路的工作速度較慢,往往要插入等待狀態(tài)。,8.1.4 CPU,與接口電路間數(shù)據(jù)傳送的形式,CPU,與外設的信息交換稱為通信(,Communication,)?;镜耐ㄐ欧绞?/p>
5、有兩種:,并行通信,數(shù)據(jù)的各位同時傳送;,串行通信,數(shù)據(jù)一位一位順序傳送。,8.2 CPU,與外設數(shù)據(jù)傳送的方式,8.2.1,查詢傳送方式,CPU,與,I/O,設備的工作往往是異步的,很難保證當,CPU,執(zhí)行輸入操作時,外設已把要輸入的信息準備好了;而當,CPU,執(zhí)行輸出時,外設的寄存器(用于存放,CPU,輸出數(shù)據(jù)的寄存器)一定是空的。所以,通常程序控制的傳送方式在傳送之前,必須要查詢一下外設的狀態(tài),當外設準備就緒了才傳送;若未準備好,則,CPU,等待。,1,查詢式輸入,在輸入時,,CPU,必須了解外設的狀態(tài),看外設是否準備好。,當輸入設備的數(shù)據(jù)已準備好后,發(fā)出一個選通信號,一邊把數(shù)據(jù)送入鎖存
6、器,一邊使,D,觸發(fā)器為“,1”,,給出“準備好”,Ready,的狀態(tài)信號。而數(shù)據(jù)與狀態(tài)必須由不同的端口輸至,CPU,數(shù)據(jù)總線。當,CPU,要由外設輸入信息時,先輸入狀態(tài)信息,檢查數(shù)據(jù)是否已準備好,當數(shù)據(jù)已經(jīng)準備好后,才輸入數(shù)據(jù)。讀入數(shù)據(jù)的指令,使狀態(tài)信息清“,0”,。,這種查詢輸入方式的程序流程圖,如圖,8-11,所示。,2,查詢式輸出,同樣的,在輸出時,CPU,也必須了解外設的狀態(tài),看外設是否有空(即外設不是正處在輸出狀態(tài),或外設的數(shù)據(jù)寄存器是空的,可以接收,CPU,輸出的信息),若有空,則,CPU,執(zhí)行輸出指令,否則就等待。,查詢式輸出的程序流程圖如圖,8-14,所示。,8.2.2,中斷
7、傳送方式,在上述的查詢傳送方式中,,CPU,要不斷地詢問外設,當外設沒有準備好時,,CPU,要等待,不能進行別的操作,這樣就浪費了,CPU,的時間。而且許多外設的速度是較低的,如鍵盤、打印機等等,它們輸入或輸出一個數(shù)據(jù)的速度是很慢的,在這個過程中,,CPU,可以執(zhí)行大量的指令。為了提高,CPU,的效率,可采用中斷的傳送方式:在輸入時,若外設的輸入數(shù)據(jù)已存入寄存器;在輸出時,若外設已把上一個數(shù)據(jù)輸出,輸出寄存器已空,由外設向,CPU,發(fā)出中斷請求,,CPU,就暫停原執(zhí)行的程序(即實現(xiàn)中斷),轉(zhuǎn)去執(zhí)行輸入或輸出操作(中斷服務),待輸入輸出操作完成后即返回,,CPU,再繼續(xù)執(zhí)行原來的程序。這樣就可以
8、大大提高,CPU,的效率,而且允許,CPU,與外設(甚至多個外設)同時工作。,8.2.3,直接數(shù)據(jù)通道傳送(,DMA,),中斷傳送仍是由,CPU,通過程序來傳送,每次要保護斷點,保護現(xiàn)場需用多條指令,每條指令要有取指和執(zhí)行時間。這對于一個高速,I/O,設備,以及成組交換數(shù)據(jù)的情況,例如磁盤與內(nèi)存間的信息交換,就顯得速度太慢了。,所以希望用硬件在外設與內(nèi)存間直接進行數(shù)據(jù)交換(,DMA,),而不通過,CPU,,這樣數(shù)據(jù)傳送的速度的上限就取決于存儲器的工作速度。但是,通常系統(tǒng)的地址和數(shù)據(jù)總線以及一些控制信號線(例如,IO/,、等)是由,CPU,管理的。在,DMA,方式時,就希望,CPU,把這些總線讓
9、出來(即,CPU,連到這些總線上的線處于第三態(tài),高阻狀態(tài)),而由,DMA,控制器接管,控制傳送的字節(jié)數(shù),判斷,DMA,是否結束,以及發(fā)出,DMA,結束等信號。這些都是由硬件實現(xiàn)的。,1,DMA,控制器的基本功能,DMAC,是控制存儲器和外部設備之間直接高速地傳送數(shù)據(jù)的硬件電路,它應能取代,CPU,,用硬件完成圖,8-17,所示的各項功能。具體地說應具有如下功能:,(,1,)能接收外設的請求,向,CPU,發(fā)出,DMA,請求信號。,(,2,)當,CPU,發(fā)出,DMA,響應信號之后,接管對總線的控制,進入,DMA,方式。,(,3,)能尋址存儲器,即能輸出地址信息和修改地址。,(,4,)能向存儲器和外
10、設發(fā)出相應的讀,/,寫控制信號。,(,5,)能控制傳送的字節(jié)數(shù),判斷,DMA,傳送是否結束。,(,6,)在,DMA,傳送結束以后,能結束,DMA,請求信號,釋放總線,使,CPU,恢復正常工作。,2,DMA,傳送方式,各種,DMAC,一般都有兩種基本的,DMA,傳送方式:,(,1,)單字節(jié)方式:每次,DMA,請求只傳送一個字節(jié)數(shù)據(jù),每傳送完一個字節(jié),都撤除,DMA,請求信號,釋放總線。,(,2,)字節(jié)(字符)組方式:每次,DMA,請求連續(xù)傳送一個數(shù)據(jù)塊,待規(guī)定長度的數(shù)據(jù)塊傳送完了以后,才撤除,DMA,請求,釋放總線。,8.3 DMA,控制器,8237,的工作周期,8237,在設計時規(guī)定它有兩種主
11、要的工作周期(或工作狀態(tài)),即空閑周期和有效周期。每一個周期又是由若干個時鐘周期所組成的。,8237,的工作方式,8237,在,DMA,傳送時有四種工作方式。,1,單字節(jié)傳送方式,這種方式一次只傳送一個字節(jié)。數(shù)據(jù)傳送后字節(jié)計數(shù)器減量,地址要相應修改(增量或減量取決于編程)。,HRQ,變?yōu)闊o效,釋放系統(tǒng)總線。若傳送使字節(jié)數(shù)減為,0,,,TC,發(fā)生或者終結,DMA,傳送,或重新初始化。,2,塊傳送方式,在這種傳送方式下,,8237,由,DREQ,啟動后就連續(xù)地傳送數(shù)據(jù),直至字節(jié)數(shù)計數(shù)器減到零產(chǎn)生,TC,(,Terminal Count,),或者由外部輸入有效的信號來終結,DMA,傳送。,3,請求傳
12、送方式,在這種工作方式下,,8237,可以進行連續(xù)的數(shù)據(jù)傳送。當出現(xiàn)以下三種情況之一時停止傳送。,(,1,)字節(jié)數(shù)計數(shù)器減到,0,,發(fā)生,TC,;,(,2,)由外界送來一個有效的 信號;,(,3,)外界的,DREQ,信號變?yōu)闊o效(外設的數(shù)據(jù)已傳送完)。,4,級連方式,這種方式用于通過級連以擴展通道的情況。第二級的,HRQ,和,HLDA,信號連到第一級的,DREQ,和,DACK,上。,在前三種工作方式下,,DMA,傳送有三種類型:,DMA,讀、寫和校驗。,8237,的寄存器組和編程,1,現(xiàn)行地址寄存器,每一個通道有一個,16,位的現(xiàn)行地址寄存器。在這個寄存器中保存著用于,DMA,傳送的地址值,在
13、每次傳送后,這個寄存器的值自動增量或減量。這個寄存器的值可由,CPU,寫入或讀出(分兩次連續(xù)操作)。,2,現(xiàn)行字節(jié)數(shù)寄存器,每個通道有一個,16,位的現(xiàn)行字節(jié)數(shù)寄存器,它保持著要傳送的字節(jié)數(shù),在每次傳送后此寄存器減量。當這個寄存器的值減為零時,,TC,將產(chǎn)生。這個寄存器的值在編程狀態(tài)可由,CPU,讀出和寫入。,3,基地址和基字節(jié)數(shù)寄存器,每一個通道有一對,16,位的基地址和基字節(jié)數(shù)寄存器,它們存放著與現(xiàn)行寄存器相聯(lián)系的初始值。,4,命令寄存器,這是一個,8,位寄存器,用以控制,8237,的工作。命令字的格式如圖,8-24,所示。,5,模式寄存器,每一個通道有一個,6,位的模式寄存器以規(guī)定通道的
14、工作模式,如圖,8-26,所示。,在編程時用最低兩位來選擇寫入哪個通道的模式寄存器。,6,請求寄存器,8237,的每個通道有一條硬件的,DREQ,請求線,當工作在數(shù)據(jù)塊傳送方式時,也可以由軟件發(fā)出,DREQ,請求。所以,在,8237,中有一種請求寄存器,如圖,8-27,所示。,每個通道的軟件請求可以分別設置。軟件請求是非屏蔽的,它們的優(yōu)先權同樣受優(yōu)先權邏輯的控制。,7,屏蔽寄存器,每個通道外設通過,DREQ,線發(fā)出的請求,可以單獨地屏蔽或允許,所以在,8237,中有一個屏蔽寄存器,如圖,8-28,所示。,8,狀態(tài)寄存器,8237,中有一個可由,CPU,讀取的狀態(tài)寄存器,如圖,8-29,所示。,
15、9,臨時寄存器,在存儲器到存儲器的傳送方式下,臨時寄存器保存從源單元讀出的數(shù)據(jù),又由它寫入至目的單元。在傳送完成時,它保留傳送的最后一個字節(jié),此字節(jié)可由,CPU,讀出。,10,軟件命令,8237,在編程狀態(tài)還有兩種軟件命令,軟件命令不需要通過數(shù)據(jù)總線寫入控制字,而由,8237,直接對地址和控制信號進行譯碼。,(,1,)清除高,/,低觸發(fā)器,(,2,)主清除命令,11,8237,的編程步驟,(,1,)輸出主清除命令。,(,2,)寫入基與現(xiàn)行地址寄存器。,(,3,)寫入基與現(xiàn)行字節(jié)數(shù)寄存器。,(,4,)寫入模式寄存器。,(,5,)寫入屏蔽寄存器。,(,6,)寫入命令寄存器。,(,7,)寫入請求寄存器。若有軟件請求,就寫入指定通道,可以開始,DMA,傳送的過程。,若無軟件請求,則在完成了(,1,)(,6,)的編程后,由通道的,DREQ,啟動,DMA,傳送過程。,