版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6.1輸入/輸出接口6.1.1接口的基本概念外圍設(shè)備多種多樣,其輸入/輸出信息的形式和工作速度各不相同。輸入/輸出信息有數(shù)字信號(hào)、狀態(tài)信號(hào)和控制信號(hào)。輸入/輸出信息速度的差別也很大,按鍵輸入時(shí),每個(gè)字符輸入時(shí)間以秒為數(shù)量級(jí),打印機(jī)為300字符/s,而磁盤輸入可達(dá)到250000bit/s的二進(jìn)制信息,如何把輸入/輸出信息的形式或工作速度不同的外圍設(shè)備與高速的CPU連接起來,就是計(jì)算機(jī)輸入/輸出接口所要研究的問題。微處理器與I/O設(shè)備之間實(shí)現(xiàn)數(shù)據(jù)傳輸遠(yuǎn)不如與存儲(chǔ)器那么簡單。因?yàn)榇鎯?chǔ)器由半導(dǎo)體電路芯片組成,而且系統(tǒng)選用的存儲(chǔ)器芯片的訪問周期通常與時(shí)鐘周期是同一個(gè)數(shù)量級(jí),且存儲(chǔ)器本身又提供數(shù)據(jù)緩沖的能力,所以微處理器一般只需兩個(gè)時(shí)鐘周期左右的時(shí)間便能在總線上存取數(shù)據(jù)。而I/O設(shè)備品種繁多,幾乎無例外地都離不開機(jī)電傳動(dòng)裝置,微處理器在與I/O設(shè)備進(jìn)行數(shù)據(jù)交換時(shí),必須通過接口電路來連接,其主要原因有以下幾方面。
1.速度的不匹配
I/O設(shè)備的工作速度比微處理器慢得多,而且因設(shè)備種類不同,其速度差異較大。有每秒能傳輸幾兆位的硬盤驅(qū)動(dòng)器,也有每秒僅能傳輸100多個(gè)字符的串行打印機(jī)。
2.時(shí)序的不匹配
一般來講,I/O設(shè)備上的信息處理都有自身的定時(shí)控制電路,以自己的速率傳輸數(shù)據(jù),無法與處理機(jī)的時(shí)序取得同步。
3.信息格式不匹配
在不同的I/O設(shè)備上,存儲(chǔ)和處理信息的格式不同,有并行和串行之分,也有二進(jìn)制位或ASCII編碼或BCD編碼之分。若在磁盤上存儲(chǔ)信息,還要按不同的磁道記錄格式將選定的編碼信息進(jìn)行存取。這些信息格式都比微處理器與存儲(chǔ)器間的數(shù)據(jù)交換格式復(fù)雜得多。
4.信息類型與電平的不匹配
不同I/O設(shè)備處理的信號(hào)類型不同,它們或是數(shù)字信號(hào),或是連續(xù)電流,或是其他模擬量,而且信號(hào)電平的幅值不一。
任何外圍設(shè)備都是通過各自的接口連接到微機(jī)系統(tǒng)總線上的,不同類型的外設(shè),應(yīng)設(shè)置相應(yīng)的接口電路連到系統(tǒng)總線上,以完成不同的功能。
所謂接口,就是指兩臺(tái)計(jì)算機(jī)之間、計(jì)算機(jī)與外圍設(shè)備之間、計(jì)算機(jī)內(nèi)各部件之間起連接作用的邏輯電路,是CPU與外界進(jìn)行信息交換的中轉(zhuǎn)站。由于計(jì)算機(jī)內(nèi)各部件之間接口問題與使用者關(guān)系不大,所以一般討論接口,就是指CPU與外圍設(shè)備間的輸入/輸出接口。
輸入/輸出接口技術(shù)是信息傳送的控制技術(shù),是一種采用軟、硬件結(jié)合的方法,實(shí)現(xiàn)CPU與外設(shè)之間協(xié)調(diào)與匹配,實(shí)現(xiàn)二者之間高效、可靠的信息傳遞的一門技術(shù)。6.1.2接口的功能
從解決CPU與外圍設(shè)備之間的矛盾來看,接口電路的功能就是對(duì)信息傳送的硬件控制,具體應(yīng)有以下6種功能。
1.鎖存功能
CPU向外設(shè)輸出的信息(包括數(shù)據(jù)、控制及狀態(tài)信息)僅在寫周期(WR為低電平時(shí))呈現(xiàn)在數(shù)據(jù)總線上,這樣短的時(shí)間用于向低速外圍設(shè)備傳送是不可能的,因此,要在接口電路中設(shè)置數(shù)據(jù)鎖存器,將CPU輸出的信息先放在鎖存器中鎖存,再由外設(shè)進(jìn)行處理,以解決雙方的速度匹配問題。
2.緩沖隔離功能
CPU與外設(shè)的信息交換是通過CPU的數(shù)據(jù)總線完成的,系統(tǒng)不允許外設(shè)長期占用數(shù)據(jù)總線,而僅允許被選中的設(shè)備在讀周期(或?qū)懼芷?占用數(shù)據(jù)總線。通過接口電路,就可以實(shí)現(xiàn)外圍設(shè)備信息在CPU允許期內(nèi)傳遞到CPU數(shù)據(jù)總線上,其他時(shí)間對(duì)CPU總線呈高阻狀態(tài),這樣,設(shè)備之間可互不干擾。一般在接口電路中設(shè)置輸入三態(tài)緩沖器滿足上述要求。
3.轉(zhuǎn)換功能
通過接口電路,可以實(shí)現(xiàn)模擬量與數(shù)字量之間的轉(zhuǎn)換。若外設(shè)電平幅度不符合CPU要求,則通過接口電路進(jìn)行電平匹配,也可以實(shí)現(xiàn)串行數(shù)據(jù)與并行數(shù)據(jù)的轉(zhuǎn)換。
4.聯(lián)絡(luò)功能
通過接口電路,可使CPU與外圍設(shè)備通信前事先聯(lián)絡(luò),當(dāng)收發(fā)雙方都處于“就緒狀態(tài)”再通信,可以避免通信錯(cuò)誤,提高效率。
5.對(duì)外圍設(shè)備編址(譯碼)功能
一臺(tái)微機(jī)系統(tǒng)往往要連接多臺(tái)外圍設(shè)備,而外圍設(shè)備是通過接口電路掛到系統(tǒng)總線上的,只有通過接口電路對(duì)不同的外圍設(shè)備分配不同的地址,CPU才能與指定的外圍設(shè)備交換信息。
6.中斷管理功能
當(dāng)多臺(tái)外圍設(shè)備以中斷方式進(jìn)行通信時(shí),由于CPU往往只有極少中斷申請(qǐng)輸入端,需要通過接口電路實(shí)現(xiàn)對(duì)中斷申請(qǐng)輸入端的擴(kuò)展,對(duì)不同外圍設(shè)備的中斷申請(qǐng)進(jìn)行區(qū)分,以及對(duì)中斷申請(qǐng)排隊(duì)和對(duì)中斷申請(qǐng)信號(hào)進(jìn)行屏蔽。6.1.3接口信息
計(jì)算機(jī)I/O接口電路與外圍設(shè)備間交換的信號(hào),通常有數(shù)據(jù)信息、狀態(tài)信息和控制信息3種類型。
1.?dāng)?shù)據(jù)信息
CPU和外圍設(shè)備交換的基本信息就是數(shù)據(jù),數(shù)據(jù)通常為8位或16位。數(shù)據(jù)信息大致分為以下3種類型。
(1)數(shù)字量。數(shù)字量是指由鍵盤、磁盤、掃描儀等輸入設(shè)備讀入的信息,或者主機(jī)發(fā)送給打印機(jī)、磁盤、顯示器、繪圖儀等輸出設(shè)備的信息,它們是二進(jìn)制形式的數(shù)據(jù)或是以ASCII碼表示的數(shù)據(jù)及字符,通常為8位。
(2)模擬量。如果一個(gè)微型機(jī)系統(tǒng)用于工業(yè)控制,那么,多數(shù)情況下的輸入信息就是現(xiàn)場的連續(xù)變化的物理量,如溫度、濕度、位移、壓力、流量等,這些物理量一般通過傳感器先變成電壓或電流,再經(jīng)過放大。這樣的電壓和電流仍然是連續(xù)變化的模擬量,而CPU無法直接接收和處理模擬量,要經(jīng)過模數(shù)(A/D)轉(zhuǎn)換器,變成數(shù)字量,才能送入計(jì)算機(jī)。反過來,若工業(yè)現(xiàn)場需要的是模擬量信號(hào),則計(jì)算機(jī)輸出的數(shù)字量也要經(jīng)過數(shù)/模(D/A)轉(zhuǎn)換,變成模擬量。
(3)開關(guān)量。開關(guān)量可表示兩個(gè)狀態(tài),如開關(guān)的閉合和斷開、電機(jī)的運(yùn)轉(zhuǎn)和停止、閥門的打開和關(guān)閉等,這樣的量只要用一位二進(jìn)制數(shù)表示就可以了。
以上數(shù)據(jù)信息一般是由外設(shè)通過接口芯片輸入給系統(tǒng)的。在輸入過程中,數(shù)據(jù)信息由外設(shè)經(jīng)過外設(shè)和接口之間的數(shù)據(jù)線進(jìn)入接口,再經(jīng)過系統(tǒng)的數(shù)據(jù)總線送給CPU。在輸出過程中,數(shù)據(jù)信息從CPU經(jīng)過數(shù)據(jù)總線進(jìn)入接口,再通過接口和外設(shè)之間的數(shù)據(jù)線送到外設(shè)。
2.狀態(tài)信息
狀態(tài)信息反映了當(dāng)前外設(shè)所處的工作狀態(tài),是外設(shè)通過接口送往CPU的。對(duì)于輸入設(shè)備,用準(zhǔn)備好(READY)信號(hào)來表明待輸入的數(shù)據(jù)是否準(zhǔn)備就緒;對(duì)于輸出設(shè)備,用忙(BUSY)信號(hào)表示輸出設(shè)備是否處于空閑狀態(tài),如為空閑狀態(tài),則可接收CPU送來的信息,否則CPU要等待。
3.控制信息
控制信息是CPU通過接口傳送給外設(shè)的,CPU通過發(fā)送控制信息,控制外設(shè)的工作。如外設(shè)的啟動(dòng)信號(hào)和停止信號(hào)就是常見的控制信息。實(shí)際上,控制信息往往隨著外設(shè)的具體工作原理不同而含義不同。從含義上來說,數(shù)據(jù)信息、狀態(tài)信息、控制信息各不相同,應(yīng)該分別傳送。但在微型計(jì)算機(jī)系統(tǒng)中,CPU通過接口和外設(shè)交換信息時(shí),只有輸入指令(IN)和輸出指令(OUT),所以,狀態(tài)信息、控制信息也被廣義地看成是數(shù)據(jù)信息,即狀態(tài)信息作為一種輸入數(shù)據(jù),而控制信息作為一種輸出數(shù)據(jù),這樣,狀態(tài)信息和控制信息也通過數(shù)據(jù)總線來傳送。但在接口中,這三種信息進(jìn)入不同的寄存器。具體地說,CPU送往外設(shè)的數(shù)據(jù)或者外設(shè)送往CPU的數(shù)據(jù)先放在接口的數(shù)據(jù)緩沖器中,從外設(shè)送往CPU的狀態(tài)信息放在接口的狀態(tài)寄存器中,而CPU送往外設(shè)的控制信息要送到接口的控制寄存器中。6.1.4I/O接口的結(jié)構(gòu)
在設(shè)計(jì)接口電路時(shí),I/O接口電路與外圍設(shè)備間交換的信息可以進(jìn)一步進(jìn)行劃分,分為CPU與接口之間的信息以及接口與外設(shè)之間的信息兩部分。
1.CPU與接口之間的信息
CPU對(duì)接口的操作主要包括CPU對(duì)端口的初始化、發(fā)送命令(如讀/寫命令)、選通端口等。所以,CPU與接口之間的主要信息有數(shù)據(jù)信息、地址信息和控制信息。
2.接口與外設(shè)之間的信息
接口對(duì)外設(shè)的操作主要是與外設(shè)的數(shù)據(jù)傳送、讀取外設(shè)的狀態(tài)以及對(duì)外設(shè)的啟動(dòng)、停止等控制。所以,接口與外設(shè)之間的信息是數(shù)據(jù)信息、狀態(tài)信息和控制信息。I/O接口的典型結(jié)構(gòu)如圖6-1所示,其中既有數(shù)據(jù)端口,又有狀態(tài)端口及控制端口。每個(gè)I/O端口對(duì)應(yīng)一個(gè)I/O地址。從硬件上看,端口可以理解為寄存器或緩沖器,CPU可以用I/O指令對(duì)其進(jìn)行訪問。接口電路占有三個(gè)I/O地址(也稱端口地址),分別對(duì)應(yīng)數(shù)據(jù)端口、狀態(tài)端口和控制端口。數(shù)據(jù)端口可以是雙向的,而狀態(tài)端口只有輸入操作,控制端口只有輸出操作,有時(shí)后兩個(gè)端口合用一個(gè)端口地址。用I/O讀(RD)或?qū)?WR)信號(hào)與地址信號(hào)組合后分別選擇訪問。圖6-1I/O接口的典型結(jié)構(gòu)
CPU與不同外設(shè)交換信息時(shí)使用端口的情況不一定相同,可以使用多個(gè)數(shù)據(jù)端口、控制端口或狀態(tài)端口,也可以在外設(shè)的狀態(tài)信息和控制信息位數(shù)較少時(shí),將不同的外設(shè)的狀態(tài)或控制信息歸并到一起,而共同使用一個(gè)端口。6.1.5端口及編址方式
1.端口
所謂端口,是指I/O接口(包括芯片和控制卡)中供CPU直接存取訪問的那些寄存器或某些硬件特定電路。一個(gè)I/O接口總要包括若干個(gè)端口,除常見的數(shù)據(jù)端口、命令端口和狀態(tài)端口外,還有特殊用途的端口,如方式控制端口、操作結(jié)果端口和地址索引端口等。端口的多少及相應(yīng)的功能完全取決于與I/O接口所關(guān)聯(lián)的I/O設(shè)備。但需要指出的是,一個(gè)端口可設(shè)定為只讀(一般為狀態(tài)和結(jié)果信息)、讀寫(一般為數(shù)據(jù)或命令信息)或只寫(讀出無意義,如方式控制、命令參數(shù)信息)。這些屬性是在設(shè)計(jì)I/O接口功能時(shí)決定的,用戶不能改變。
2.端口編址方式
既然端口可被微處理器訪問,如同存儲(chǔ)單元,那么每個(gè)端口也存在著編址的方式問題。在當(dāng)今流行的各類微機(jī)中,對(duì)I/O接口的端口編址有兩種辦法,即端口統(tǒng)一編址和端口獨(dú)立編址。用Motorola公司的微處理器,如6800、68000系列構(gòu)成的微型機(jī)采用前一種方法;而用Zilog和Intel公司的微處理器,如Z-80、Z-800、8086/8088、80286、80386、80486、Pentium等系列構(gòu)成的微型機(jī)都采用后一種方法。
1)端口統(tǒng)一編址
端口統(tǒng)一編址的出發(fā)點(diǎn)是把每一個(gè)端口視為一個(gè)存儲(chǔ)器單元,并賦以相應(yīng)的存儲(chǔ)器地址。微處理器訪問端口,如同訪問存儲(chǔ)器(只是地址不同),所有訪問存儲(chǔ)器指令同樣適合于I/O端口。
由于端口地址被映像到存儲(chǔ)空間,作為存儲(chǔ)空間的一小部分,因此,這種統(tǒng)一編址也稱為“存儲(chǔ)器映像編址”。
端口和存儲(chǔ)單元統(tǒng)一編址的最大優(yōu)點(diǎn)是無需專門的I/O指令,因而簡化了指令系統(tǒng),并可通過功能強(qiáng)的訪問指令直接對(duì)I/O數(shù)據(jù)進(jìn)行算術(shù)或邏輯運(yùn)算。當(dāng)然,端口統(tǒng)一編址也有不足之處,除了要占用原本就有限的一部分存儲(chǔ)空間外,最主要的是因訪問內(nèi)存指令一般都需要三、四個(gè)字節(jié),使原來極簡單的I/O數(shù)據(jù)傳輸時(shí)間加長了。
2)端口獨(dú)立編址
端口獨(dú)立編址的出發(fā)點(diǎn)是把所有I/O接口看做一個(gè)獨(dú)立于存儲(chǔ)空間的I/O空間。在這個(gè)I/O空間內(nèi),每個(gè)端口都被分配一個(gè)地址與之對(duì)應(yīng)。
顯然,要訪問獨(dú)立于存儲(chǔ)空間的端口,必須用專門的I/O指令。為加快I/O數(shù)據(jù)的傳輸速度,設(shè)計(jì)的這種I/O指令均為單字節(jié)或多字節(jié)(指令直接帶端口地址)。不過,這種I/O指令僅作數(shù)據(jù)傳送而無算術(shù)或邏輯運(yùn)算功能。6.1.6簡單的I/O接口圖6-2三態(tài)門電路
不同的I/O設(shè)備,所需采用的I/O接口電路復(fù)雜程度可能相差甚遠(yuǎn),但分解到最基本的功能,接口中應(yīng)用最多的是三態(tài)緩沖器和數(shù)據(jù)鎖存器。
1.三態(tài)緩沖器
所謂三態(tài),是指電路輸出端具有三種穩(wěn)態(tài),即1態(tài)(高電平狀態(tài)),0態(tài)(低電平狀態(tài))和第三態(tài)(高阻態(tài)或稱浮空態(tài))。三態(tài)門電路的邏輯符號(hào)如圖6-2所示。圖6-2三態(tài)門電路在微機(jī)系統(tǒng)中,每個(gè)輸入設(shè)備都需通過數(shù)據(jù)總線向CPU傳送數(shù)據(jù),若不經(jīng)過三態(tài)環(huán)節(jié)進(jìn)行緩沖隔離而直接和數(shù)據(jù)總線相連,就會(huì)造成總線上數(shù)據(jù)的混亂。因而必須經(jīng)過緩沖隔離,當(dāng)CPU選通時(shí),才允許某個(gè)選定的輸入設(shè)備將數(shù)據(jù)送到系統(tǒng)總線,其他的輸入設(shè)備此時(shí)與數(shù)據(jù)總線隔離。
74LS244是一種常用的三態(tài)緩沖器,其引腳及內(nèi)部結(jié)構(gòu)如圖6-3所示。從圖6-3中不難看出,該芯片由8個(gè)三態(tài)門構(gòu)成。74LS244有兩個(gè)控制端和。每個(gè)控制端各控制4個(gè)三態(tài)門。當(dāng)某一控制端有效(低電子)時(shí),相應(yīng)的4個(gè)三態(tài)門導(dǎo)通,否則,相應(yīng)的三態(tài)門呈現(xiàn)高阻狀態(tài)(斷開)。實(shí)際使用中,通常是將兩個(gè)控制端并聯(lián),這樣就可用一個(gè)控制信號(hào)來使8個(gè)三態(tài)門同時(shí)導(dǎo)通或同時(shí)斷開。圖6-374LS244引腳及內(nèi)部結(jié)構(gòu)
74LS244的邏輯真值表如表6-1所示。圖6-4三態(tài)緩沖器構(gòu)成輸入接口
2.?dāng)?shù)據(jù)鎖存器
數(shù)據(jù)總線是CPU和外部交換數(shù)據(jù)的公用通道,當(dāng)CPU把數(shù)據(jù)送給輸出設(shè)備時(shí),只有執(zhí)行總線周期的部分階段總線會(huì)送出有效數(shù)據(jù),因而必須利用數(shù)據(jù)鎖存器及時(shí)把數(shù)據(jù)鎖存起來,以便較慢的外設(shè)有足夠的時(shí)間進(jìn)行處理,使得CPU和總線能夠脫身去做其他的工作。
74LS373和Intel8282都是常用的8位數(shù)據(jù)鎖存器。常用鎖存器還有74LS273,其引腳及內(nèi)部結(jié)構(gòu)如圖6-5所示,它內(nèi)部包含8個(gè)D觸發(fā)器。74LS273共有8個(gè)數(shù)據(jù)輸入端(1D~8D)和8個(gè)數(shù)據(jù)輸出端(1Q~8Q)。清除端低電平有效。時(shí)鐘為脈沖輸入端,在每個(gè)脈沖的上升沿將輸入端D的狀態(tài)鎖存在Q輸出端,并將此狀態(tài)保持到下一個(gè)時(shí)鐘脈沖的上升沿。74LS273常用來作為并行輸出接口。圖6-574LS273引腳及其結(jié)構(gòu)
74LS273的邏輯真值表如表6-2所示。利用74LS273構(gòu)成簡單的輸出接口,如圖6-6所示。圖6-6數(shù)據(jù)鎖存器構(gòu)成輸出接口
3.簡單接口舉例
圖6-7是以上接口舉例的綜合,可以通過以下程序控制,實(shí)現(xiàn)發(fā)光二極管顯示開關(guān)的開合狀況。該例中輸入接口和輸出接口使用相同的口地址,不會(huì)出現(xiàn)矛盾,讀者可以自行分析。圖6-7簡單輸入和輸出接口舉例程序如下:
NEXT: MOV DX,PORT_IN
IN AL,DX
;通過輸入接口讀入開關(guān)狀態(tài)
NOT AL
OUT DX,AL
;通過輸出接口控制發(fā)光二極管顯示
CALL DELAY
JMP NEXT6.2CPU與外設(shè)之間的數(shù)據(jù)傳輸方式在微機(jī)控制外設(shè)工作期間,最基本的操作是數(shù)據(jù)傳輸。但是各種外設(shè)的工作速度相差很大。有些外設(shè)工作速度相當(dāng)高,如磁盤機(jī)的傳輸速度達(dá)到0.2~6?Mb/s。而有些外設(shè)卻由于機(jī)械和其他因素所致速度相當(dāng)?shù)?,如鍵盤是人工輸入數(shù)據(jù)的,通常速度為幾十毫秒輸入1Byte。這樣,CPU與外設(shè)之間如何控制或者確保數(shù)據(jù)傳輸過程的高效進(jìn)行,是個(gè)很重要的問題。通常微機(jī)系統(tǒng)與外設(shè)之間數(shù)據(jù)傳輸?shù)目刂品绞接腥N:
(1)程序控制的輸入和輸出;
(2)中斷控制的輸入和輸出;
(3)直接存儲(chǔ)器存取(DMA)。以上三種數(shù)據(jù)傳送方式各有優(yōu)缺點(diǎn)。在實(shí)際使用時(shí),可根據(jù)具體情況,選擇既能滿足要求,又盡可能簡單的傳送方式。讀者通過以下的分析就能體會(huì)到這些。6.2.1程序控制的輸入和輸出
程序控制的輸入和輸出方式是指在程序中安排相應(yīng)的I/O指令來控制輸入和輸出,完成和外設(shè)之間信息交換的傳送方式。在這種方式中何時(shí)進(jìn)行數(shù)據(jù)的傳送是預(yù)先知道的,所以可以根據(jù)需要把有關(guān)的I/O指令插入到程序中相應(yīng)位置。
根據(jù)外設(shè)的不同性質(zhì),這種傳送方式又可分為無條件傳送及查詢傳送兩種。
1.無條件傳送
無條件傳送方式主要用于外部控制過程的各種動(dòng)作時(shí)間是固定的而且是已知的情況,針對(duì)的是一些簡單的、隨時(shí)“準(zhǔn)備好”的外設(shè)。比如數(shù)碼管,只要CPU將數(shù)據(jù)的顯示代碼傳送給它,就可立即顯示相應(yīng)數(shù)據(jù);又如乒乓開關(guān)的狀態(tài),只要CPU需要,可隨時(shí)讀取其狀態(tài)。在這些情況下,CPU不查詢外設(shè)的工作狀態(tài),而默認(rèn)外設(shè)始終處于準(zhǔn)備好或空閑狀態(tài)。在CPU認(rèn)為需要時(shí),隨時(shí)與外設(shè)交換數(shù)據(jù),這種傳送方式就是無條件傳送方式。圖6-8所示電路就是采用無條件傳送方式工作的I/O接口電路。圖6-8無條件傳送(a)無條件傳送的輸入方式(b)無條件傳送的輸出方式
2.查詢傳送
查詢傳送方式,是為了保證CPU與外設(shè)能正確而及時(shí)傳輸數(shù)據(jù)的一種方式,即在外設(shè)的狀態(tài)條件許可的前提下,CPU與外設(shè)進(jìn)行數(shù)據(jù)傳輸。使用條件傳輸方式時(shí),CPU通過執(zhí)行程序不斷讀取并測試外設(shè)的狀態(tài),如果外設(shè)處于“準(zhǔn)備好”狀態(tài)(輸入設(shè)備)或者“空閑”狀態(tài)(輸出設(shè)備),則CPU執(zhí)行輸入指令或輸出指令與外設(shè)交換信息。為此,接口電路中除了有數(shù)據(jù)端口之外,還必須有狀態(tài)端口。對(duì)于條件傳輸來說,一個(gè)條件傳輸數(shù)據(jù)的過程一般由三個(gè)環(huán)節(jié)組成:
(1)?CPU從接口中讀取狀態(tài)字;
(2)?CPU檢測狀態(tài)字的相應(yīng)位是否滿足“就緒”條件,如果不滿足,則轉(zhuǎn)到(1),再讀取狀態(tài);
(3)如狀態(tài)位表明外設(shè)已處于“就緒”狀態(tài),則傳輸數(shù)據(jù)。
在查詢方式中,CPU首先對(duì)外設(shè)的狀態(tài)進(jìn)行查詢,只有在外設(shè)處于就緒狀態(tài)時(shí),才與外設(shè)進(jìn)行數(shù)據(jù)交換,否則,一直處于查詢等待狀態(tài)。所謂外設(shè)處于就緒狀態(tài),對(duì)出入場合是指外設(shè)已準(zhǔn)備好送往CPU的數(shù)據(jù);對(duì)輸出場合是指外設(shè)已做好接收新數(shù)據(jù)的準(zhǔn)備。因而在查詢方式中,CPU除了須通過數(shù)據(jù)端口與外設(shè)交換數(shù)據(jù)外,還需要通過狀態(tài)端口讀取狀態(tài)信息,從而了解外設(shè)的工作狀態(tài)。通常,這兩個(gè)I/O端口分別有自己的端口地址。
1)查詢式輸入
圖6-9所示是一種采用查詢式輸入的接口電路,其中有一個(gè)數(shù)據(jù)輸入端口用以讀取外設(shè)的數(shù)據(jù)信息,還有一個(gè)狀態(tài)輸入端口用以讀取外設(shè)的狀態(tài)信息。假設(shè)數(shù)據(jù)端口的口地址用符號(hào)DATAS表示,狀態(tài)端口的口地址用符號(hào)STATUS表示。
在工作時(shí),當(dāng)輸入裝置將數(shù)據(jù)準(zhǔn)備好后,發(fā)出一個(gè)選通信號(hào),此信號(hào)一邊將數(shù)據(jù)送入數(shù)據(jù)鎖存器,一邊使D觸發(fā)器置“1”,發(fā)出“準(zhǔn)備好(READY)”的狀態(tài)信號(hào)。當(dāng)CPU讀取數(shù)據(jù)時(shí),首先查詢狀態(tài)端口的READY信號(hào)(執(zhí)行指令I(lǐng)NAL,STATUS),當(dāng)READY有效時(shí)(假設(shè)“1”為有效),才通過數(shù)據(jù)端口讀取數(shù)據(jù)(執(zhí)行指令I(lǐng)NAL,DATA)。同時(shí),清狀態(tài)端口信息為“0”,表示前面的數(shù)據(jù)已被取走,已無準(zhǔn)備好的數(shù)據(jù)可取。圖6-9查詢式輸入接口電路采用查詢式輸入,其工作流程如圖6-10所示。圖6-10查詢式輸入流程圖結(jié)合圖6-9具體輸入接口電路,編寫查詢式輸入程序如下:
IN_TEST: IN AL,STATUS;讀入狀態(tài)信息
TEST AL,80H ;檢查READY是否為l
JZ IN_TEST ;條件不滿足,繼續(xù)查詢
IN AL,DATAS ;條件滿足,讀入數(shù)據(jù)
通常,外設(shè)的數(shù)據(jù)可能是8位、12位或16位,而狀態(tài)信息相對(duì)較少(如1位或2位),如圖6-11所示。故CPU與某一外設(shè)交換數(shù)據(jù)時(shí)一般須占用數(shù)據(jù)端口1至2個(gè),而不同外設(shè)的狀態(tài)信息可以合用同一個(gè)狀態(tài)端口(分別使用狀態(tài)端口的不同的位來反映各自的狀態(tài)信息)。圖6-11查詢式輸入時(shí)的數(shù)據(jù)和狀態(tài)信息
2)查詢式輸出
同理,查詢式輸出時(shí)也是首先查詢狀態(tài)端口(執(zhí)行指令I(lǐng)NAL,STATUS),了解外設(shè)的工作狀態(tài),在其為“空閑”時(shí)則通過數(shù)據(jù)端口輸出數(shù)據(jù)(執(zhí)行指令OUTDATAS,AL),否則就繼續(xù)查詢。圖6-12所示是一種采用查詢式輸出的接口電路,其中有一個(gè)數(shù)據(jù)輸出端口,一個(gè)狀態(tài)輸入端口。圖6-12查詢式輸出接口電路在工作時(shí),CPU首先通過狀態(tài)端口查詢BUSY是否為“0”(假設(shè)“0”表示空閑),空閑則CPU通過數(shù)據(jù)端口輸出數(shù)據(jù),否則就一直查詢BUSY的狀態(tài)。CPU查詢BUSY為“0”后,即可發(fā)出數(shù)據(jù)至輸出裝置,同時(shí)置D觸發(fā)器輸出BUSY為“1”。在輸出裝置輸出數(shù)據(jù)以前,BUSY一直為“1”,以阻止CPU發(fā)出新的數(shù)據(jù);當(dāng)輸出裝置輸出數(shù)據(jù)后,發(fā)出一個(gè)信號(hào),使D觸發(fā)器置“0”,表示再次進(jìn)入空閑狀態(tài)。
采用查詢式輸出,一般工作流程如方框圖6-13所示。圖6-13查詢式輸出流程圖結(jié)合圖6-12具體輸出接口電路,編寫查詢式輸出程序如下:
MOV BX,OFFSETSTORE
OUT-TEST: IN AL,STATUS;讀入狀態(tài)信息
AND AL,80H;檢查BUSY位
JNZ OUT-TEST;BUSY則等待
MOV AL,[BX]
;空閑,則從緩沖區(qū)STORE中取數(shù)據(jù)
OUT DATAS,AL ;輸出數(shù)據(jù)
INC BX由上述可知,利用查詢方式進(jìn)行數(shù)據(jù)的輸入/輸出時(shí),在整個(gè)查詢過程中CPU都不能再做別的事,這就大大降低了CPU的效率。而且,在實(shí)時(shí)控制系統(tǒng)中,若采用查詢方式工作,有時(shí)會(huì)由于一個(gè)外設(shè)的I/O未處理完畢,就不能處理下一個(gè)外設(shè),從而可能延誤和其他外設(shè)的數(shù)據(jù)傳送,影響系統(tǒng)數(shù)據(jù)處理的實(shí)時(shí)性,甚至還會(huì)由于某外設(shè)出現(xiàn)故障而一直無法就緒,從而導(dǎo)致查詢無限循環(huán)(為避免陷入這種循環(huán),實(shí)際程序中常加入超時(shí)判斷等措施)。因此,查詢式傳送只適用于CPU負(fù)擔(dān)不重,要求服務(wù)的外設(shè)對(duì)象不多且任務(wù)相對(duì)簡單的場合。
為了提高CPU的效率以及使系統(tǒng)具有更好的實(shí)時(shí)性能,通常采用中斷傳送方式。6.2.2中斷控制的輸入和輸出
所謂中斷,指CPU運(yùn)行程序期間,遇到某些特殊情況(被內(nèi)部或外部事件所打斷),暫時(shí)中止原先程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行一段特定的處理程序,這一過程就叫做中斷(Interrupt)。這段特定的處理程序也叫中斷服務(wù)程序。
為了使CPU能有效地管理多個(gè)外設(shè),提高CPU的工作效率,并使系統(tǒng)具有實(shí)時(shí)性,可以賦予系統(tǒng)中的外設(shè)某種主動(dòng)申請(qǐng)、配合CPU工作的“權(quán)利”。賦予外設(shè)這樣一種“主動(dòng)權(quán)”之后,CPU可以不必反復(fù)查詢?cè)撛O(shè)備狀態(tài),而是正常地處理系統(tǒng)任務(wù),僅當(dāng)外設(shè)有“請(qǐng)求”時(shí)才去“服務(wù)”一下。CPU與外設(shè)處于這種“并行工作”狀態(tài),提高了CPU的工作效率。這就是中斷方式的數(shù)據(jù)傳輸。在中斷傳輸方式下,當(dāng)輸入設(shè)備將數(shù)據(jù)準(zhǔn)備好或者輸出設(shè)備可以接收數(shù)據(jù)時(shí),便可以向CPU發(fā)出中斷請(qǐng)求,使CPU暫時(shí)停止執(zhí)行當(dāng)前程序,而去執(zhí)行一個(gè)數(shù)據(jù)輸入/輸出的中斷服務(wù)子程序,與外設(shè)進(jìn)行數(shù)據(jù)傳輸操作,中斷子程序執(zhí)行完后,CPU又轉(zhuǎn)回繼續(xù)執(zhí)行原來的程序。中斷方式的數(shù)據(jù)傳輸仍在程序的控制下執(zhí)行,所以也稱為程序中斷方式,適應(yīng)于中、慢速外部設(shè)備的數(shù)據(jù)傳輸。
中斷控制的輸入/輸出方式,也稱中斷傳送方式,是指在外設(shè)就緒時(shí),主動(dòng)向CPU發(fā)出中斷請(qǐng)求,從而使CPU去執(zhí)行相應(yīng)的中斷服務(wù)程序,完成和外設(shè)間的數(shù)據(jù)傳送。
圖6-14所示是采用中斷方式輸入數(shù)據(jù)的一種接口電路。圖6-14中斷傳送方式的接口電路當(dāng)輸入裝置輸入一個(gè)數(shù)據(jù)時(shí),就發(fā)出選通信號(hào),該信號(hào)一邊把數(shù)據(jù)存入數(shù)據(jù)鎖存器,一邊又使D觸發(fā)器置“1”,發(fā)出中斷請(qǐng)求。若中斷是開放的,則CPU接收了中斷請(qǐng)求信號(hào)后,就在現(xiàn)行指令執(zhí)行完后,暫停正在執(zhí)行的程序,發(fā)出中斷響應(yīng)信號(hào),由外設(shè)將一個(gè)中斷類型碼放到數(shù)據(jù)總線上,CPU依據(jù)該中斷類型碼轉(zhuǎn)入中斷服務(wù)程序,通過數(shù)據(jù)端口讀取數(shù)據(jù),同時(shí)清除中斷請(qǐng)求標(biāo)志。當(dāng)中斷處理完畢后,CPU返回被中斷的程序繼續(xù)執(zhí)行。和查詢方式數(shù)據(jù)傳送相比,中斷傳送方式提高了CPU的工作效率,系統(tǒng)具有更好的實(shí)時(shí)。
但由于中斷請(qǐng)求出現(xiàn)的時(shí)刻具有隨機(jī)性,因而何時(shí)執(zhí)行中斷服務(wù)程序事先無法預(yù)知,相比之下,采用中斷方式傳送數(shù)據(jù)時(shí)程序設(shè)計(jì)應(yīng)更為完善、周密,否則程序執(zhí)行出現(xiàn)問題時(shí)會(huì)覺得難以捉摸,這點(diǎn)應(yīng)引起初學(xué)者的足夠重視。6.2.3直接存儲(chǔ)器存取(DMA)方式
對(duì)程序控制的數(shù)據(jù)輸入/輸出方式,當(dāng)主機(jī)與外設(shè)交換一批數(shù)據(jù)時(shí),每交換一個(gè)數(shù)據(jù)都要經(jīng)過CPU轉(zhuǎn)一下。例如,主機(jī)讀入外設(shè)數(shù)據(jù)時(shí),先將外設(shè)數(shù)據(jù)讀入到CPU中寄存器,然后再將CPU中寄存器的數(shù)據(jù)存到存儲(chǔ)器中,接著還需修改存儲(chǔ)器的地址以便讀入下一個(gè)數(shù)據(jù)時(shí)存放。對(duì)于查詢方式則還要不停地查詢外設(shè)的狀態(tài)READY,看外設(shè)是否準(zhǔn)備好數(shù)據(jù),如未準(zhǔn)備好數(shù)據(jù)還要等待。對(duì)程序控制的輸入/輸出方式,主機(jī)與外設(shè)交換數(shù)據(jù)的速度較慢。對(duì)程序中斷的輸入/輸出方式,當(dāng)需要主機(jī)與外設(shè)交換數(shù)據(jù)時(shí),外設(shè)通過可屏蔽中斷請(qǐng)求引腳INTR向CPU發(fā)觸發(fā)信號(hào),CPU在執(zhí)行中斷處理子程序時(shí),因中斷處理子程序中要用到某些寄存器因此就需要改變這些寄存器的值,這樣可能會(huì)影響正常程序的執(zhí)行,所以在執(zhí)行CPU與外設(shè)交換數(shù)據(jù)的子程序時(shí)要先將這些寄存器的內(nèi)容存入堆棧,然后再進(jìn)行數(shù)據(jù)的輸入或輸出,等數(shù)據(jù)輸入或輸出完成后,再將存入堆棧的寄存器內(nèi)容恢復(fù)。每進(jìn)行一次數(shù)據(jù)的輸入或輸出都要保護(hù)和恢復(fù)用到的寄存器的內(nèi)容,大大降低了數(shù)據(jù)傳輸?shù)男?。直接存?chǔ)器存取方式(DirectMemoryAccess),根據(jù)英文字頭又稱DMA方式。這種方式適用于存儲(chǔ)器與高速外設(shè)間的批量數(shù)據(jù)傳送,例如磁盤與內(nèi)存之間的信息交換。在外設(shè)與內(nèi)存之間直接進(jìn)行數(shù)據(jù)交換(DMA),而不通過CPU執(zhí)行指令進(jìn)行,這樣數(shù)據(jù)傳送的速度上限就取決于存儲(chǔ)器的工作速度。對(duì)PC/XT來說,完成一次高速傳送只需1.05/μs(5T)。
(3)能輸出地址信息和修改地址;
(4)能向存儲(chǔ)器和外設(shè)發(fā)出相應(yīng)的讀/寫控制信號(hào);
(5)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水處理廠及配套管網(wǎng)建設(shè)項(xiàng)目經(jīng)濟(jì)效益和社會(huì)效益分析報(bào)告
- 鋼結(jié)構(gòu)環(huán)境影響評(píng)估方法
- 市政管道施工質(zhì)量控制體系建設(shè)
- 管道連接技術(shù)培訓(xùn)與實(shí)施方案
- 2025年勞務(wù)外包用工管理培訓(xùn)試題及答案
- 京東游戲美術(shù)面試題及答案解析
- 老年癡呆的飲食調(diào)理
- 2025年傳染病防治培訓(xùn)測試試題及答案
- cctv中國詩詞大會(huì)題庫及答案
- 質(zhì)量管理師ISO體系面試題含答案
- (國鐵)機(jī)車檢查保養(yǎng)員(機(jī)車整備工)職業(yè)技能考試題庫
- 腫瘤放射腫瘤學(xué)
- 灌腸術(shù)護(hù)理課件
- GB/T 10785-2025開頂金屬罐及金屬蓋規(guī)格系列
- 2025屆上海市高考英語考綱詞匯表
- 2025-2030年中國高壓電機(jī)修理行業(yè)前景調(diào)研與投資戰(zhàn)略決策報(bào)告
- 密碼法培訓(xùn)知識(shí)講座課件
- 教科版(2017)科學(xué)五年下冊(cè)《蚯蚓的選擇》說課(附反思、板書)課件
- 貴州省黔東南苗族侗族自治州2024-2025學(xué)年高二上學(xué)期1月期末文化水平測試英語試題(含答案無聽力音頻無聽力原文)
- 《冷凍機(jī)培訓(xùn)資料》課件
- 教育部《中小學(xué)德育工作指南》-德育工作指南
評(píng)論
0/150
提交評(píng)論