版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章微機(jī)接口技術(shù)概述
1.1微機(jī)接口技術(shù)的基本概念
1.2接口電路的基本組成
1.3輸入/輸出傳送控制方式習(xí)題與思考題
1.1.1微機(jī)接口及接口技術(shù)
計(jì)算機(jī)系統(tǒng)要解決的一個(gè)重要問題是主機(jī)與外部世界進(jìn)行通信或?qū)崿F(xiàn)數(shù)據(jù)交換,即輸入與輸出的問題。1.1微機(jī)接口技術(shù)的基本概念主機(jī)與外界之間的通信是通過外圍設(shè)備(簡(jiǎn)稱外設(shè))來進(jìn)行的。輸入與輸出設(shè)備是計(jì)算機(jī)系統(tǒng)的重要組成部分。程序、原始數(shù)據(jù)和各種現(xiàn)場(chǎng)采集到的數(shù)據(jù)、信息都要通過輸入設(shè)備輸入至主機(jī),而計(jì)算的結(jié)果或各種控制信號(hào)要輸出給各種輸出設(shè)備,以便顯示、打印和實(shí)現(xiàn)各種控制功能。輸入與輸出的操作過程類似于存儲(chǔ)器的存取操作。原則上CPU可以采用訪問存儲(chǔ)器的方式與外設(shè)交換數(shù)據(jù),但是在實(shí)際操作中,外圍設(shè)備要考慮的問題比訪問存儲(chǔ)器復(fù)雜得多。存儲(chǔ)器通常是在與CPU同步的控制方式下工作的,并且內(nèi)存采用半導(dǎo)體器件,其相應(yīng)的控制比較簡(jiǎn)單,與CPU的匹配和定時(shí)較易實(shí)現(xiàn)。而外設(shè)種類繁多,控制復(fù)雜。CPU與外設(shè)相連時(shí),不能直接用總線相連,而是要通過相應(yīng)的電路來連接。這是因?yàn)镃PU與外設(shè)之間存在很大的差異,不能匹配。這些差異主要體現(xiàn)在以下幾個(gè)方面。
(1)交換數(shù)據(jù)速度不匹配。由于外設(shè)的種類繁多,有電磁式、電子式、機(jī)電式、機(jī)械式等,因而不同外設(shè)交換數(shù)據(jù)的速度有很大差異,比如110位/秒的電傳打字機(jī)與25萬位/秒的磁盤驅(qū)動(dòng)器。這些數(shù)據(jù)的速度變化不依賴于計(jì)算機(jī),它們無法直接與CPU匹配。
(2)信號(hào)類型和電平幅度不匹配。外設(shè)提供的信息種類可能不相同,有模擬量、開關(guān)量和數(shù)字量;提供的信號(hào)電平的高低也相差很大。而CPU處理的信息只能是數(shù)字量。
(3)信息格式不匹配。
外設(shè)產(chǎn)生的信息結(jié)構(gòu)較復(fù)雜,不同外設(shè)之間的信息格式各不相同,如盒式磁帶機(jī)與磁盤機(jī)之間的信息結(jié)構(gòu)和格式有差別,其要求控制的時(shí)序也不同。
(4)時(shí)序不匹配。各種外設(shè)都有自己的時(shí)鐘和控制邏輯,與計(jì)算機(jī)的CPU時(shí)序不一致。
因此輸入與輸出設(shè)備不能直接與CPU的系統(tǒng)總線相連,必須在CPU與外設(shè)之間設(shè)置專門的接口電路來解決這些問題。
由此可見,微機(jī)與各種外設(shè)的信息交換是比較復(fù)雜的,它們之間存在如何連接的問題。一般來說,每種外設(shè)都有其具體的問題,必須用一個(gè)專門的接口來實(shí)現(xiàn)主機(jī)用的信號(hào)與外設(shè)用的信號(hào)之間的匹配或轉(zhuǎn)換,并通過該接口提供相應(yīng)的數(shù)據(jù)格式、適當(dāng)?shù)臅r(shí)序控制和同步協(xié)調(diào),以及進(jìn)行數(shù)據(jù)緩沖、傳送設(shè)備的有關(guān)狀態(tài)信息等。這樣的接口電路通常位于主機(jī)與外設(shè)之間,能夠完成主機(jī)與外設(shè)之間的信息傳送。微機(jī)接口(MicrocomputerInterface)是構(gòu)成微型計(jì)算機(jī)系統(tǒng)最重要的部件之一,是CPU和外設(shè)之間進(jìn)行信息交換的中轉(zhuǎn)站和橋梁。離開微機(jī)接口的微處理器就好像離開電路的晶體管一樣,毫無用處。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,特別是微型計(jì)算機(jī)的發(fā)展與應(yīng)用,需要和主機(jī)接口的外圍設(shè)備越來越多,而且越來越復(fù)雜。接口本身不但是一些邏輯電路的簡(jiǎn)單組合,而且已發(fā)展成為硬件和軟件相結(jié)合的一門綜合技術(shù),稱為“微機(jī)接口技術(shù)”。微機(jī)接口技術(shù)體現(xiàn)了計(jì)算機(jī)的體系結(jié)構(gòu),關(guān)系著計(jì)算機(jī)的推廣和應(yīng)用,已成為開發(fā)應(yīng)用微型計(jì)算機(jī)系統(tǒng)的一門基本技術(shù)。1.1.2接口的功能
接口技術(shù)是用硬件和軟件相結(jié)合的方法來處理主機(jī)與外部世界的通信和數(shù)據(jù)交換,使其達(dá)到最佳匹配,實(shí)現(xiàn)高效、可靠的信息交換的一門技術(shù)。為了達(dá)到這樣的目的,就需要解決主機(jī)與外部世界存在不匹配的矛盾。接口應(yīng)具備如下功能:
1.信息格式轉(zhuǎn)換
外設(shè)產(chǎn)生的信息結(jié)構(gòu)很復(fù)雜,不同設(shè)備有不同的信息格式和種類,它們與CPU的信息格式不兼容,需要在接口中進(jìn)行轉(zhuǎn)換,如正負(fù)邏輯的轉(zhuǎn)換、串行信息與并行信息的變換等。
2.各信息類型和電平的轉(zhuǎn)換
外設(shè)提供不同類型的信息,且信號(hào)電平的高低不同。
接口主要完成將不同的信號(hào)類型(如模擬量、開關(guān)量等)和高低不同的電平轉(zhuǎn)換成CPU能接收的數(shù)字量。
3.緩沖輸入/輸出數(shù)據(jù)
在接口中設(shè)置數(shù)據(jù)寄存器來緩沖輸入/輸出數(shù)據(jù),使高速的主機(jī)與低速的外設(shè)匹配而不致于丟失數(shù)據(jù)。
4.接收和執(zhí)行各種命令
主機(jī)給外設(shè)發(fā)布的各種命令通過接口形成一系列控制信號(hào)來控制外設(shè)。
5.傳送各種狀態(tài)信息
接口為主機(jī)提供外設(shè)當(dāng)前所處狀態(tài)的有關(guān)信息,如數(shù)據(jù)緩沖的“空”或“滿”,設(shè)備是否“準(zhǔn)備好”,以及“忙”或“閑”等有關(guān)狀態(tài)信息。
6.選擇設(shè)備
系統(tǒng)中一般配有多臺(tái)外設(shè),在同一時(shí)間里CPU只能與一臺(tái)外設(shè)交換信息,接口要經(jīng)地址譯碼對(duì)外設(shè)進(jìn)行尋址,以便選擇當(dāng)前需要交換數(shù)據(jù)的設(shè)備與CPU交換信息。
7.對(duì)外設(shè)進(jìn)行中斷管理
當(dāng)外設(shè)與CPU以中斷方式交換信息時(shí),接口能暫存中斷請(qǐng)求,進(jìn)行中斷排隊(duì),提供中斷識(shí)別信息或相應(yīng)的中斷矢量等。
8.可編程功能
在不變動(dòng)硬件電路的情況下,可通過編程來任意設(shè)置與變更接口芯片的工作方式和各種參數(shù),使接口具有靈活性和可擴(kuò)充性。
綜上所述,接口的主要功能是執(zhí)行命令、提供狀態(tài)、管理中斷、協(xié)調(diào)交換和變換信息格式。這些功能并不是所有接口必須具備的功能。根據(jù)系統(tǒng)的不同配置和用途,其接口的功能和工作方式有所不同,應(yīng)視具體系統(tǒng)的要求而定。1.1.3接口的分類
1.按適應(yīng)面劃分
微機(jī)接口從適應(yīng)面角度劃分,可以分為專用接口、通用標(biāo)準(zhǔn)接口和增強(qiáng)功能用的接口三大類。
1)專用接口
專用接口包括用戶交換接口和輔助操作接口兩類。
(1)用戶交換接口。用戶交換接口又稱人機(jī)交互設(shè)備接口。這類接口的主要功能是將用戶指定的數(shù)據(jù)、信息傳送給主機(jī),而將來自主機(jī)的數(shù)據(jù)、信息傳送給輸出設(shè)備。隨著微機(jī)的不斷發(fā)展,人機(jī)接口又可分為常規(guī)人機(jī)接口和智能人機(jī)接口。
常規(guī)人機(jī)接口是以計(jì)算機(jī)為中心的,即輸入/輸出的信息是以二進(jìn)制碼、十六進(jìn)制或ASCII碼形式傳送的。這種形式的信息計(jì)算機(jī)容易接受和便于處理,而人接受和處理就不大方便。屬于這類接口的有鍵盤接口、顯示器接口和打印機(jī)接口等。智能人機(jī)接口是以人為中心的,這類接口以人容易接受和識(shí)別的聲音、圖像和文字形式來傳遞信息。這些信息在智能接口中通過適當(dāng)?shù)奶幚砗娃D(zhuǎn)換,成為計(jì)算機(jī)能接受的二進(jìn)制數(shù)字形式送入機(jī)器。這類接口有多媒體接口中的SCSI接口,以及音頻卡、視頻卡等。
(2)輔助操作接口。輔助操作接口是實(shí)現(xiàn)主機(jī)和外設(shè)之間通信的一些基本處理與控制的接口。屬于這類接口的有磁盤接口(包括軟盤和硬盤),以及總線驅(qū)動(dòng)器、數(shù)據(jù)鎖存器等。輔助操作接口又稱內(nèi)務(wù)操作接口。
2)通用標(biāo)準(zhǔn)接口
通用標(biāo)準(zhǔn)接口是指符合標(biāo)準(zhǔn)化而且通用的接口,可以為多種外設(shè)所使用,例如RS-232C、IEEE-488、模擬接口等。
3)增強(qiáng)功能用的接口
這類接口主要用于增強(qiáng)主機(jī)功能,有中斷控制口、DMA控制口等。
2.按數(shù)據(jù)傳輸方式劃分
按數(shù)據(jù)傳輸方式劃分,微機(jī)接口可以分為并行接口和串行接口。
1)并行接口
并行接口指同時(shí)可傳送多位二進(jìn)制信息的接口電路,用于數(shù)據(jù)并行傳送。由于并行傳送多位信息,因此傳送效率高,適于近距離傳輸。
2)串行接口
串行接口用于串行通信方式中。串行通信方式中數(shù)據(jù)是一位一位進(jìn)行傳輸?shù)?,每一位?shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。因此這種方式傳送的效率低,適于遠(yuǎn)距離傳輸。
1.2.1端口
主機(jī)與外設(shè)之間交換的信息有三種基本類型:數(shù)據(jù)信息、控制信息和狀態(tài)信息。通常我們把計(jì)算機(jī)與外設(shè)之間的這種交換數(shù)據(jù)、狀態(tài)和控制命令的過程稱為通信(Communication)。1.2接口電路的基本組成數(shù)據(jù)可以用8位、16位或32位、64位來表示,數(shù)據(jù)的傳送可以是并行傳送和串行傳送兩種形式。狀態(tài)信息表示外設(shè)當(dāng)前所處的狀態(tài)。控制信息是主機(jī)向外設(shè)發(fā)出的各種控制命令。這三種不同性質(zhì)的信息應(yīng)該分別傳送。但是在大部分微機(jī)中,I/O接口的尋址方式采用獨(dú)立編址方式,即用IN和OUT指令訪問接口電路,這樣數(shù)據(jù)、狀態(tài)和控制信息都將作為一種數(shù)據(jù)進(jìn)行輸入/輸出。為了區(qū)分這三種不同性質(zhì)的信息,在接口中設(shè)置了不同的寄存器來存放這三種不同的信息,并給每個(gè)寄存器一個(gè)地址號(hào)。我們將這些能完成接口任務(wù),可以尋址進(jìn)行讀或?qū)懙募拇嫫鞣Q為端口。在一個(gè)接口電路內(nèi)往往包含有兩個(gè)以上的端口,根據(jù)存放信息性質(zhì)的不同,端口可以分為數(shù)據(jù)口(存放主機(jī)與外設(shè)要交換的數(shù)據(jù))、狀態(tài)口(存放狀態(tài)信息)和控制口(存放各種控制命令)。每個(gè)端口分配一個(gè)地址號(hào),稱為端口地址。1.2.2典型接口電路的組成
典型接口電路的內(nèi)部結(jié)構(gòu)框圖如圖1-1所示。一般的接口電路由兩部分構(gòu)成:第一部分(左邊部分)通過系統(tǒng)總線與CPU相連,第二部分(右邊部分)與外設(shè)相連。
圖1-1典型接口電路的內(nèi)部結(jié)構(gòu)框圖第一部分實(shí)現(xiàn)的功能如下:
(1)
CPU發(fā)出的控制信息和數(shù)據(jù)信息送入數(shù)據(jù)總線緩沖器,在控制邏輯的控制下再送到相應(yīng)的端口,并將外設(shè)送給CPU的數(shù)據(jù)和狀態(tài)信息通過數(shù)據(jù)總線緩沖器提供給CPU。
(2)
CPU發(fā)出的端口地址由AB總線送到地址緩沖器,經(jīng)地址譯碼后產(chǎn)生相應(yīng)端口地址的片選信號(hào)。
(3)控制邏輯及聯(lián)絡(luò)信號(hào)產(chǎn)生主機(jī)與外設(shè)之間通信的聯(lián)絡(luò)信號(hào),以便達(dá)到時(shí)序的配合與同步。由于這一部分與系統(tǒng)總線相連,因此各類接口中這部分的結(jié)構(gòu)非常相似。
第二部分實(shí)現(xiàn)的功能如下:
這部分與外設(shè)相連,其結(jié)構(gòu)與外設(shè)的傳輸要求、數(shù)據(jù)類型和數(shù)據(jù)格式有關(guān)。因此,對(duì)于不同的外設(shè)接口,這部分的結(jié)構(gòu)差異很大。圖1-1所示的三種端口僅僅是接口中主要的端口,是CPU與外設(shè)進(jìn)行信息交換必不可少的部分。對(duì)于不同的接口,其端口的類型和數(shù)量都有差別,要根據(jù)具體接口的功能要求而定。
(1)數(shù)據(jù)端口。數(shù)據(jù)端口包括數(shù)據(jù)輸入和輸出端口。輸入端口是將外設(shè)送來的數(shù)據(jù)暫存,以供CPU讀取。輸出端口是將CPU輸出到外設(shè)的數(shù)據(jù)保存足夠長(zhǎng)的時(shí)間,以滿足輸出設(shè)備的需要。CPU送到數(shù)據(jù)總線上的數(shù)據(jù)一般只能維持?jǐn)?shù)百微秒,對(duì)大多數(shù)外設(shè)來說,這段時(shí)間是不夠長(zhǎng)的。
(2)控制端口。控制端口用于存放CPU發(fā)來的控制命令和其他信息。這些控制命令的內(nèi)容一般包括設(shè)置接口的工作方式,指定相應(yīng)的參數(shù)等。
(3)狀態(tài)端口。狀態(tài)端口用于保存現(xiàn)行狀態(tài)信息,供CPU查詢、判斷使用,以達(dá)到同步和協(xié)調(diào)的目的。1.2.3設(shè)計(jì)接口電路的方法
1.設(shè)計(jì)接口電路的步驟
設(shè)計(jì)接口電路一般按照下列步驟進(jìn)行:
(1)分析設(shè)計(jì)要求;
(2)選擇合適的接口芯片;
(3)硬件設(shè)計(jì);
(4)軟件設(shè)計(jì);
(5)軟/硬件調(diào)試。
在設(shè)計(jì)前一定要充分了解原有微機(jī)系統(tǒng)的特性,特別是微處理器的技術(shù)指標(biāo)和要求,如字長(zhǎng)、尋址方式、指令系統(tǒng)、運(yùn)行速度、時(shí)序關(guān)系、功耗大小、承載外設(shè)的能力等。將要連接的外設(shè)的工作原理、技術(shù)特性、信息格式、電氣特性等方面的技術(shù)資料準(zhǔn)備齊全,并仔細(xì)研究。這些工作是設(shè)計(jì)前必備的條件,只有在此基礎(chǔ)上才能按以上步驟進(jìn)行設(shè)計(jì)。
2.設(shè)計(jì)接口電路的基本方法
在充分掌握所設(shè)計(jì)的系統(tǒng)(包括CPU和外設(shè))的工作原理、技術(shù)指標(biāo)和特性的基礎(chǔ)上,設(shè)計(jì)接口電路要按以下步驟進(jìn)行設(shè)計(jì)。
(1)分析設(shè)計(jì)要求。在設(shè)計(jì)接口時(shí),首先根據(jù)設(shè)計(jì)要求,明確接口要實(shí)現(xiàn)的個(gè)體功能。由于接口電路一側(cè)連接CPU,另一側(cè)連接外設(shè),因此,要分別研究?jī)蓚?cè)的已有條件和需要解決的問題。這種方法就是我們通常所說的兩側(cè)分析法。首先,了解與CPU連接部分的已有條件,包括CPU的類型、數(shù)據(jù)線的寬度、地址線的寬度、控制線的功能、CPU時(shí)序的要求等。這部分設(shè)計(jì)中要解決的問題是在選擇接口芯片時(shí),其數(shù)據(jù)緩沖器、地址緩沖器以及控制邏輯都要滿足已有條件,才能與CPU匹配。
其次,看與外設(shè)連接的基本要求,對(duì)所連外設(shè)的型號(hào)、電氣特性、信息格式、可提供的狀態(tài)信息、傳輸速度等進(jìn)行研究分析,為下一步選擇合適的接口芯片提供可靠的數(shù)據(jù)。
(2)選擇合適的接口芯片。通過對(duì)接口兩側(cè)的分析,找到兩側(cè)信號(hào)在進(jìn)行連接時(shí)存在的差別后,接口要完成的任務(wù)就非常明確和具體了,即明確了哪些信號(hào)要進(jìn)行變換(包括信號(hào)格式、高低電平的轉(zhuǎn)換等),這些信號(hào)之間的邏輯關(guān)系,時(shí)序上如何配合等問題。由此可以確定該接口中需要各類端口的數(shù)目、連接方式、完成的功能以及地址分配等。最后由上述困素來初步選定主要采用的接口芯片。在選用芯片時(shí)要注意兩點(diǎn):一是要盡量采用集成接口芯片(LSI或VLSI芯片),最好選用與CPU同一系統(tǒng)的接口芯片,這樣,使用會(huì)更方便;二是要簡(jiǎn)化電路,進(jìn)行優(yōu)化組合。由于實(shí)現(xiàn)同一接口功能可以采用不同的接口芯片和相應(yīng)的軟件,因此要軟/硬件相結(jié)合,綜合考慮。
3.硬件設(shè)計(jì)
硬件設(shè)計(jì)主要是指合理選用外圍接口芯片和有針對(duì)性地設(shè)計(jì)附加電路。由選定的芯片便可進(jìn)行硬件設(shè)計(jì),完成接口電路功能模塊化總體結(jié)構(gòu)的設(shè)計(jì),畫出具體的硬件電路結(jié)構(gòu)框圖。其具體做法如下:
(1)合理選用外圍接口芯片。由于隨著現(xiàn)代微電子技術(shù)和集成電路的發(fā)展,目前,各種接口電路都已做成集成芯片,由中規(guī)?;虼笠?guī)模集成接口芯片代替了過去的數(shù)字電路,因此,在接口設(shè)計(jì)中,通常不需要繁雜的電路參數(shù)計(jì)算,而需要熟練掌握和深入了解各類芯片的功能、特點(diǎn)、工作原理、使用方法及編程技巧,以便根據(jù)設(shè)計(jì)要求和經(jīng)濟(jì)準(zhǔn)則,合理選擇芯片,把它們與微處理器正確地連接起來,并編寫相應(yīng)的控制程序。采用集成接口芯片的接口體積小,功能完善,可靠性高,易于擴(kuò)充,應(yīng)用極其靈活方便。所以,接口芯片在微機(jī)接口技術(shù)中起著很重要的作用,應(yīng)給予足夠的重視??删幊碳山涌谛酒墙涌谟布O(shè)計(jì)中的首選元器件,應(yīng)盡量采用,并且把它們作為各種接口電路的核心芯片來使用。
(2)有針對(duì)性地設(shè)計(jì)附加電路。外圍接口芯片并非萬能,因此,當(dāng)接口電路中有些功能不能由接口的核心芯片完成時(shí),就需用戶附加某些電路予以擴(kuò)充。如邏輯關(guān)系與電平轉(zhuǎn)換、時(shí)序配合以及驅(qū)動(dòng)能力等方面的功能,可以采用反相器、三極管、緩沖器、與門、或門以及驅(qū)動(dòng)器等芯片,設(shè)計(jì)一些輔助電路加到接口電路中。
(3)根據(jù)選定的芯片,畫出各芯片間的信號(hào)連接(包括數(shù)據(jù)信息、控制信息和狀態(tài)信息的連接)、地址譯碼以及滿足時(shí)序關(guān)系的聯(lián)絡(luò)線等符合設(shè)計(jì)要求的接口邏輯框圖。
4.軟件設(shè)計(jì)
接口的硬件電路只提供了接口工作的基礎(chǔ),要使接口真正發(fā)揮作用就要配備相應(yīng)的控制軟件。軟件設(shè)計(jì)可確定CPU與外設(shè)以什么樣的方式交換信息(是用查詢方式、中斷方式,還是DMA方式),因?yàn)椴捎貌煌膫魉头绞?,其接口的結(jié)構(gòu)和相應(yīng)的編程方法是有差異的。硬件結(jié)構(gòu)確定下來以后,便可進(jìn)行相應(yīng)的軟件設(shè)計(jì)。軟件設(shè)計(jì)一般可按照下面五個(gè)步驟進(jìn)行。
(1)采用匯編語言(或高級(jí)語言)直接對(duì)低層硬件編程。用戶應(yīng)用系統(tǒng)的接口控制程序應(yīng)直接面向接口編程。由于接口程序?qū)τ布哂幸蕾囆裕c一般的管理程序和數(shù)據(jù)處理程序不同,它直接與硬件打交道,因此,設(shè)計(jì)者必須對(duì)相應(yīng)的硬件細(xì)節(jié)十分熟悉。具體地講,就是對(duì)接口芯片和被控對(duì)象的外部特性以及接口芯片的編程命令要徹底弄清楚才能著手編寫程序。編程語言可以用匯編語言,也可以用高級(jí)語言(如C或C++),但從程序的實(shí)時(shí)性與代碼效率以及充分發(fā)揮低層硬件的潛力來看,采用匯編語言更佳。
(2)采用DOS系統(tǒng)功能調(diào)用和BIOS調(diào)用編程。在應(yīng)用程序中,當(dāng)涉及到使用系統(tǒng)資源(如鍵盤、顯示器、打印機(jī)、串行口等)時(shí),可以采用DOS和BIOS調(diào)用,而不需作低層編程。這是因?yàn)閷?duì)于微機(jī)系統(tǒng)中的標(biāo)準(zhǔn)設(shè)備,在DOS系統(tǒng)功能和ROM-BIOS中都有相應(yīng)的功能子程序供用戶調(diào)用。但是,對(duì)于接口設(shè)計(jì)者來說,常常碰到的是一些非標(biāo)準(zhǔn)設(shè)備,所以就需要自己動(dòng)手編制接口控制程序。
(3)明確軟件功能。根據(jù)硬件電路的結(jié)構(gòu)要求,配上相應(yīng)的軟件才能完成接口的功能。軟件在選定的傳送方式下用相應(yīng)的控制程序來實(shí)現(xiàn)CPU和外設(shè)間的通信。對(duì)于不同的傳送方式(如查詢、中斷或DMA方式),其相應(yīng)的控制程序是不一樣的。
(4)確定算法,畫出程序流程圖。軟件編制前,根據(jù)軟件的功能確定好算法,采用模塊化程序設(shè)計(jì)方法,畫出程序流程圖。該流程圖一般由初始化模塊和若干功能模塊組成。
(5)編制程序。在編制程序前要選好編程語言,是采用高級(jí)語言、匯編語言,還是混合語言,這取決于設(shè)計(jì)要求和程序執(zhí)行的速度。采用高級(jí)語言編程速度快,研制時(shí)間短,約為采用匯編語言程序編程所占用時(shí)間的(1/4)~(1/20)。但是高級(jí)語言編制的程序占用的存儲(chǔ)器容量大,比用匯編語言編制的程序所占的存儲(chǔ)器容量多2~10倍。因此,在具體設(shè)計(jì)中要從設(shè)計(jì)功能和經(jīng)濟(jì)性,以及執(zhí)行速度等方面來衡量。一般可以采用混合語言編程的方式(匯編語言與高級(jí)語言混合編程),即在用高級(jí)語言編寫的程序中,插入用等效匯編語言編寫的子程序。一般編寫子程序往往占編寫整個(gè)程序所用時(shí)間的90%,但執(zhí)行時(shí)間往往只占整個(gè)程序執(zhí)行時(shí)間的10%。因此用這種辦法可以提高程序的運(yùn)行速度,降低軟件研制的難度。選定編程語言后,根據(jù)程序流程圖,按模塊功能編制程序,并進(jìn)行軟件調(diào)試。上述四個(gè)步驟完成后,再按照設(shè)計(jì)好的接口硬件電路圖選擇好所需的芯片及器件,按接口圖組裝接口電路,并按設(shè)計(jì)要求進(jìn)行硬件調(diào)試和軟/硬件聯(lián)機(jī)調(diào)試。1.2.4I/O接口的編址方式
每個(gè)接口部件都包含一組寄存器,如圖1-2所示。CPU和外設(shè)進(jìn)行數(shù)據(jù)傳輸時(shí),各類信息在接口中存入不同的寄存器,一般稱這些寄存器為I/O端口,每個(gè)端口有一個(gè)端口地址。
圖1-2外設(shè)通過接口和系統(tǒng)的連接用于對(duì)來自主機(jī)的數(shù)據(jù)或者送往主機(jī)的數(shù)據(jù)起緩沖作用的端口叫數(shù)據(jù)端口。
用來存放外設(shè)或者接口部件本身狀態(tài)的端口,稱為狀態(tài)端口。CPU通過對(duì)狀態(tài)端口的訪問可以檢測(cè)外設(shè)和接口部件當(dāng)前的狀態(tài)。
用來存放CPU發(fā)出的命令,以便控制接口和設(shè)備動(dòng)作的端口叫命令端口。
可以說,計(jì)算機(jī)主機(jī)和外部設(shè)備之間都是通過接口部件的I/O端口來溝通的,所以,CPU必須有和I/O端口打交道的辦法。
在微型計(jì)算機(jī)中,常用以下兩種I/O端口編址方式。
1.I/O端口地址與內(nèi)存單元地址統(tǒng)一編址
這種編址方式又稱為存儲(chǔ)器映射編址方式。在這種編址方式中,將I/O端口地址和內(nèi)存地址統(tǒng)一安排在內(nèi)存的地址空間中,即把內(nèi)存的一部分地址分配給I/O端口,由端口來占用這些地址。用于I/O端口的內(nèi)存地址,存儲(chǔ)器不能再使用。這樣,計(jì)算機(jī)系統(tǒng)的內(nèi)存空間一部分留作端口地址來使用,而剩下的內(nèi)存空間可作內(nèi)存使用。
I/O端口與內(nèi)存統(tǒng)一編址的方式占用了部分內(nèi)存空間,將I/O端口看做是內(nèi)存單元。因此,從原則上講,用于內(nèi)存的指令都可以用于外設(shè),這給使用者提供了極大的方便。但由于I/O端口占用內(nèi)存地址,因此就相對(duì)減少了內(nèi)存的可用范圍。而且,從指令上不易區(qū)分是訪問內(nèi)存的指令還是用于輸入/輸出的指令。這種編址方式在68系列和65系列的微型機(jī)中已得到了廣泛的應(yīng)用。
2.I/O端口與內(nèi)存獨(dú)立編址
在這種編址方式中,內(nèi)存地址空間和I/O端口地址是相對(duì)獨(dú)立的。例如,在8088/8086CPU中,內(nèi)存地址是連續(xù)的1MB,為00000H~FFFFFH,而I/O端口的地址范圍為0000H~FFFFH,它們相互獨(dú)立,互不影響。這是由于CPU在訪問內(nèi)存和外設(shè)時(shí),使用了不同的控制信號(hào)來加以區(qū)分。8086CPU的M/ 信號(hào)為1時(shí),表示地址總線上有一個(gè)內(nèi)存地址;當(dāng)它為0時(shí),表示地址總線上的地址是一個(gè)有效的外設(shè)地址。內(nèi)存與端口獨(dú)立編址各自有自己的尋址空間。用于內(nèi)存和用于I/O端口的指令是不一樣的,很容易辨認(rèn)。但用于I/O端口的指令功能比較弱,一些操作必須由外設(shè)首先輸入到CPU的寄存器后才能進(jìn)行。這種編址方式在Z80系列及Intel80系列微機(jī)中得到了廣泛采用。1.2.5譯碼電路
地址譯碼電路根據(jù)為接口電路分配的地址范圍來對(duì)地址信號(hào)進(jìn)行譯碼,產(chǎn)生接口芯片的片選信號(hào)。除了地址信號(hào),I/O地址譯碼還與一些控制信號(hào)有關(guān),如用 、 來區(qū)分輸入端口、輸出端口,用AEN控制是否為DMA傳送。當(dāng)AEN為高電平時(shí),地址譯碼無效。
1.門組成的譯碼電路
圖1-3(a)所示的是一個(gè)由門電路組成的端口地址譯碼電路的實(shí)例。該電路占有端口地址300H和301H。圖1-3(a)中對(duì)高位地址A9~A1進(jìn)行譯碼,而且由AEN參加譯碼,當(dāng)AEN=0(非DMA操作)時(shí),譯碼器才能輸出有效的 譯碼信號(hào),當(dāng)AEN=1(DMA操作)時(shí),譯碼器被禁止。
圖1-3譯碼電路在圖1-3(a)中,將地址A0的狀態(tài)表示為×,即不論A0=0還是A0=1,只要AEN=0且A9~A1為110000000,均有 =0。因此說這個(gè)譯碼電路占有端口地址300H和301H。
圖1-3(b)所示為一個(gè)含有A、B兩個(gè)端口的接口芯片。當(dāng)其片選端 =0時(shí),若A0=0,則選通端口A;若A0=1,則選通端口B;若 =1,則兩個(gè)端口均不選通。因此稱
為該芯片的片選端,A0為片內(nèi)端口的選擇端。若將圖1-3(a)所示的譯碼輸出端 接至圖1-3(b)所示的 端,即用圖1-3(a)所示的譯碼器的輸出作為圖1-3(b)所示的接口芯片的片選信號(hào),而將最低位地址線A0與接口芯片的端口A0相連,即將低位地址A0作為片內(nèi)選擇,則端口A的地址為300H(1100000000),端口B的地址為301H(1100000001)。
2.可選式譯碼電路
接口適配器上的端口地址可能需要適應(yīng)不同場(chǎng)合而發(fā)生改變。例如,不同的通信口所用的控制卡是通用的,僅僅在地址上有所區(qū)別,通信口1控制卡地址為3F8H~3FFH,通信口2控制卡地址為2F8H~2FFH。并行口控制卡的情況也相似,并行口1控制卡地址為370H~37FH,并行口2控制卡地址為270H~27FH。為此,通信口控制卡或并行口控制卡可以采用可選擇譯碼電路,對(duì)于不同的通信口控制卡,只需改變跳線的連接即可。圖1-4所示是通信口控制卡上的譯碼電路。
圖1-4通信口控制卡上的譯碼電路當(dāng)跳線J10接通時(shí),地址范圍為2F8H~2FFH,與通信口2的譯碼器連接;而當(dāng)跳線J12接通時(shí),地址范圍為3F8H~3FFH。通信口控制卡的電路結(jié)構(gòu)完全一樣,不同編號(hào)的通信口控制卡只需改變跳線連接即可。
3.專用譯碼器
專用譯碼器有多種信號(hào),例如,3-8線譯碼器74LS138、2-4線譯碼器74LS139、74LS155、4-16線譯碼器74LS154等。
74LS138譯碼器的邏輯圖、引腳排列及真值表如圖1-5所示。74LS138有G1、、三個(gè)控制端,只有當(dāng)G1=1、=0、=0時(shí),才允許對(duì)A、B、C輸入的代碼進(jìn)行譯碼,即可以根據(jù)A、B、C三位代碼的狀態(tài)使~這8個(gè)輸出信號(hào)中的一個(gè)成為有效電平。A、B、C代碼與~的對(duì)應(yīng)關(guān)系如圖1-5(c)所示。
圖1-574LS138譯碼器的邏輯圖、引腳排列及真值表
圖1-574LS138譯碼器的邏輯圖、引腳排列及真值表1.2.6簡(jiǎn)單的I/O接口芯片
常用的簡(jiǎn)單輸入/輸出接口芯片主要有緩沖器(Buffer)和鎖存器(Latch)。
1.緩沖器74LS244和74LS245
連接在總線上的緩沖器都具有三態(tài)輸出能力,當(dāng)CPU或I/O接口電路需要輸入/輸出數(shù)據(jù)時(shí),在它的使能控制端EN(或G)作用一個(gè)低電平脈沖,使其內(nèi)部的各緩沖單元接通,即處在輸出0或1的透明狀態(tài),數(shù)據(jù)就會(huì)被送入總線。當(dāng)使能脈沖撤除后,緩沖器處于高阻態(tài)。這時(shí),各緩沖單元就像一個(gè)斷開的開關(guān),相當(dāng)于將它所連接的電路從總線上脫開。74LS244和74LS245就是最常用的數(shù)據(jù)緩沖器。緩沖器除具有緩沖作用外,還能提高總線的驅(qū)動(dòng)能力。
1)
74LS244
74LS244是一種8路數(shù)據(jù)緩沖器,其邏輯功能和引腳如圖1-6所示。
由圖1-6可見,該緩沖器內(nèi)部包含8個(gè)三態(tài)緩沖單元,它們被分為兩組,每組4個(gè)單元,分別由門控信號(hào) 和
控制。當(dāng) =0時(shí),A輸入端1A1~1A4的高電平或低電平將被傳送到Y(jié)輸出端1Y1~1Y4;當(dāng) =0時(shí),2A1~2A4的信號(hào)被傳送到2Y1~2Y4;當(dāng) =1和 =1時(shí),輸出呈高阻態(tài)。圖1-674LS244邏輯功能圖和引腳圖當(dāng)把該緩沖器用于8位數(shù)據(jù)總線時(shí),可將 和 端連在一起,由一個(gè)片選信號(hào)來控制。74LS244常用來構(gòu)成外設(shè)輸入數(shù)據(jù)端口,這時(shí)它的輸入端A與外設(shè)數(shù)據(jù)線相連,而輸出端Y并接在CPU的數(shù)據(jù)總線上。74LS244是一種單向數(shù)據(jù)緩沖器,數(shù)據(jù)只能從A端傳送到Y(jié)端,若要進(jìn)行雙向數(shù)據(jù)傳送,可選用雙向數(shù)據(jù)總線緩沖器74LS245。
2)
74LS245
74LS245的邏輯功能和引腳如圖1-7所示。74LS245內(nèi)部包含8個(gè)雙向三態(tài)緩沖器??刂菩盘?hào)中,除了一個(gè)低電平有效的門控信號(hào)輸入端 之外,還有一個(gè)方向控制端DIR。只有當(dāng) =0時(shí),數(shù)據(jù)才能從A傳送到B或從B傳送到A;當(dāng)DIR為高電平時(shí),數(shù)據(jù)從A端傳向B端,為低電平時(shí),數(shù)據(jù)則從B端流向A端。
圖1-774LS245邏輯功能圖和引腳圖
2.鎖存器74LS373
鎖存器具有暫存數(shù)據(jù)的能力,能在數(shù)據(jù)傳輸過程中將數(shù)據(jù)鎖住,在此后的任何時(shí)刻,在輸出控制信號(hào)的作用下將數(shù)據(jù)傳送出去。
74LS373是一種常用的8D鎖存器,它可以直接掛到總線上,并具有三態(tài)總線驅(qū)動(dòng)能力。圖1-8所示是74LS373的邏輯圖,括號(hào)中的數(shù)字為引腳號(hào),表1-1是其真值表。
圖1-874LS373的邏輯圖
表1-174LS373真值表從圖1-8中可以看出,74LS373由一個(gè)8位寄存器和一個(gè)8位三態(tài)緩沖器構(gòu)成,寄存器的每個(gè)單元?jiǎng)t是一個(gè)具有記憶功能的D觸發(fā)器。它有兩個(gè)控制輸入端,即輸入使能端G和允許輸出端 。當(dāng)G=1時(shí),加在各觸發(fā)器的D輸入端的0或1電平被傳送到它的Q端,且記憶在那里。 端電平與Q端電平相反。此后,若在端加一個(gè)低電平脈沖,則記憶在 端的電平將經(jīng)三態(tài)門再反相后傳送到輸出端O??梢?,如果這兩個(gè)控制脈沖同時(shí)作用,則鎖存器的輸出O將隨輸入D而變,呈透明態(tài)。若將G端的高電平撤除,使之變成低電平, 保持低電平,則輸出端O將是前面鎖存的數(shù)據(jù),這時(shí)D端的任何變化都不影響輸出。如果 端為高電平,則不論G的電平如何,輸出都將呈高阻態(tài),與總線斷開。 、G、D和O信號(hào)之間的關(guān)系如表1-l所示。在應(yīng)用中,可根據(jù)實(shí)際需要設(shè)置74LS373的控制信號(hào)。例如,希望先輸入數(shù)據(jù),在以后適當(dāng)?shù)臅r(shí)刻再輸出,可對(duì)G和 分別進(jìn)行控制;如果只需要使用它的記憶功能,不需要三態(tài)緩沖,可直接把 端接地,僅控制G。
像74LS373這樣具有三態(tài)輸出緩沖功能的鎖存器還有74LS374,它們的內(nèi)部結(jié)構(gòu)幾乎相同,惟一不同的是后者必須用G信號(hào)的上升沿來觸發(fā)。此外,74LS273是不含三態(tài)門的8D鎖存器,相當(dāng)于一個(gè)8位寄存器,可用在那些僅需要鎖存數(shù)據(jù),不需要三態(tài)緩沖的場(chǎng)合。不少中、大規(guī)模集成接口芯片的內(nèi)部,也都具有鎖存器和緩沖器邏輯。鎖存器的用途較廣,既可用來構(gòu)成輸出端口,也能用于輸入端口的設(shè)計(jì)。
隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)系統(tǒng)中輸入/輸出設(shè)備的種類越來越多,速度差異十分懸殊。對(duì)這些設(shè)備的控制也變得越來越復(fù)雜。CPU與外設(shè)之間的數(shù)據(jù)傳輸必須采用多種控制方式,才能滿足各類外設(shè)的要求。在微型計(jì)算機(jī)系統(tǒng)中,可采用的輸入/輸出方式主要有程序控制方式、中斷方式和DMA方式三種。前兩種方式主要由軟件實(shí)現(xiàn),DMA方式主要由硬件實(shí)現(xiàn)。下面對(duì)這幾種數(shù)據(jù)傳送方式作一簡(jiǎn)要介紹。1.3輸入/輸出傳送控制方式1.3.1程序控制方式
程序控制傳送方式是指CPU與外設(shè)之間的數(shù)據(jù)傳送是在程序控制下完成的,它又可以分成無條件傳送和條件傳送兩種方式。
1.無條件傳送方式
無條件傳送方式也稱為同步傳送方式,主要用于對(duì)簡(jiǎn)單外設(shè)進(jìn)行操作,也可用于外設(shè)的定時(shí)是固定的或已知的場(chǎng)合。也就是說,對(duì)于這類外設(shè),在任何時(shí)刻均已準(zhǔn)備好數(shù)據(jù)或處于接收數(shù)據(jù)狀態(tài),或者在某些固定時(shí)刻,它們處在數(shù)據(jù)就緒或準(zhǔn)備接收狀態(tài),因此程序可以不必檢查外設(shè)的狀態(tài),而在需要進(jìn)行輸入或輸出操作時(shí),直接執(zhí)行輸入/輸出指令。當(dāng)
I/O指令執(zhí)行后,數(shù)據(jù)傳送便立即進(jìn)行。這是一種最簡(jiǎn)單的傳送方式,所需要的硬件和軟件都較少。例如,要將幾個(gè)按鍵開關(guān)的狀態(tài)輸入CPU,如圖1-9所示。將這些開關(guān)連接到一個(gè)三態(tài)緩沖器,將緩沖器的輸出端連接到CPU的數(shù)據(jù)總線,就構(gòu)成了一個(gè)最簡(jiǎn)單的輸入端口。當(dāng)開關(guān)斷開時(shí),上拉電阻保證緩沖器的每個(gè)輸入端為高電平,當(dāng)某個(gè)開關(guān)合上時(shí),相應(yīng)的輸入端變?yōu)榈碗娖?,即任何時(shí)刻,開關(guān)總有一個(gè)固定的狀態(tài)(開或關(guān))。當(dāng)需要了解開關(guān)的狀態(tài)時(shí),可隨時(shí)執(zhí)行輸入指令,輸入命令使M/ 、 和選中此端口的片選信號(hào) 同時(shí)變成有效的低電平,它們相與后的低電平開啟緩沖器的三態(tài)門,使各開關(guān)的當(dāng)前狀態(tài)以二進(jìn)制值的形式出現(xiàn)在數(shù)據(jù)總線上,并被讀入CPU,檢查這個(gè)字節(jié)各位的內(nèi)容,便能了解各開關(guān)的當(dāng)前狀態(tài)。在其他時(shí)刻,三態(tài)門呈高阻態(tài),將開關(guān)和數(shù)據(jù)總線隔離。
圖1-9簡(jiǎn)單輸入端口另一個(gè)無條件傳送的典型例子是用程序來控制LED顯示器的點(diǎn)燃和熄滅。LED又稱發(fā)光二極管,當(dāng)它被加上2V左右的正偏電壓時(shí)便發(fā)光,因此能被TTL電平所驅(qū)動(dòng)。常用LED來指示計(jì)算機(jī)或儀器的某些狀態(tài),例如PC機(jī)面板上指示硬盤正在工作的HDD指示燈就是一個(gè)最常見的LED應(yīng)用的例子。
通常用一個(gè)由鎖存器構(gòu)成的輸出端口把LED接到計(jì)算機(jī)的數(shù)據(jù)總線上,并串接一個(gè)限流電阻,如圖1-10所示。一個(gè)8位的輸出端口最多能驅(qū)動(dòng)8個(gè)LED。圖1-10中,各LED的陰極接地,稱為共陰極連接。這樣,當(dāng)需要點(diǎn)燃某個(gè)LED時(shí),只要用輸出指令向此端口輸出一個(gè)字節(jié),該字節(jié)中與點(diǎn)燃的LED相應(yīng)的位是1,其余各位為0。輸出指令使M/ 、 和片選信號(hào) 同時(shí)變低,它們相與后的低電平信號(hào)經(jīng)反相后觸發(fā)鎖存器,將輸出指令送到數(shù)據(jù)總線上的值鎖存在輸出端,使指定的LED發(fā)光。由于鎖存器的作用,此值能一直保存到下一條輸出指令到達(dá)為止,因此,在這段時(shí)間里,LED的狀態(tài)也將保持不變。顯然,在這個(gè)例子中,LED總是處于可用狀態(tài),隨時(shí)都可以向這個(gè)端口輸出數(shù)據(jù),控制各LED的點(diǎn)亮或熄滅。圖1-10簡(jiǎn)單輸出端口此外,有些設(shè)備與CPU之間的信息交換可能不是很頻繁,從而能保證每次用輸出指令輸出數(shù)據(jù)時(shí),I/O接口電路中的數(shù)據(jù)輸出緩沖器總是空的,或者外設(shè)總是處于空閑狀態(tài),而當(dāng)用輸入指令輸入數(shù)據(jù)時(shí),接口電路中的輸入緩沖器內(nèi)總是將數(shù)據(jù)準(zhǔn)備就緒。遇到這類情況時(shí)也可采用無條件傳送方式。不過,這類情況比較少見,電路上也不容易實(shí)現(xiàn)。因此,除了上面討論的簡(jiǎn)單輸入/輸出端口外,通常都采用下面幾種方式傳送數(shù)據(jù)。
2.條件傳送
條件傳送方式也稱為查詢式傳送方式。一般情況下,當(dāng)CPU用輸入/輸出指令與外設(shè)交換數(shù)據(jù)時(shí),很難保證輸入設(shè)備總是準(zhǔn)備好了數(shù)據(jù),或者輸出設(shè)備已經(jīng)處在可以接收數(shù)據(jù)的狀態(tài)。為此,在開始傳送前,必須先確認(rèn)外設(shè)已處于準(zhǔn)備傳送數(shù)據(jù)的狀態(tài),才能進(jìn)行傳送,于是就提出了查詢式傳送方式。采用這種方式傳送數(shù)據(jù)前,CPU要先執(zhí)行一條輸入指令,從外設(shè)的狀態(tài)端口讀取它的當(dāng)前狀態(tài)。如果外設(shè)未準(zhǔn)備好數(shù)據(jù)或處于忙碌狀態(tài),則程序要轉(zhuǎn)回去反復(fù)執(zhí)行讀狀態(tài)指令,不斷檢測(cè)外設(shè)狀態(tài);如果該外設(shè)的輸入數(shù)據(jù)已準(zhǔn)備好,CPU便可執(zhí)行輸入指令,從外設(shè)讀入數(shù)據(jù)。
查詢式輸入方式的接口電路和工作流程分別如圖1-11和圖1-12所示。
圖1-11查詢式輸入方式的接口電路
圖1-12查詢式輸入方式的工作流程圖由圖1-11可見,接口電路包含狀態(tài)端口和輸入數(shù)據(jù)端口兩部分,分別由I/O端口譯碼器的兩個(gè)片選信號(hào)和 信號(hào)控制。狀態(tài)端口由一個(gè)D觸發(fā)器和一個(gè)三態(tài)門(通常是三態(tài)緩沖器中的一路)構(gòu)成。輸入數(shù)據(jù)端口由一個(gè)8位鎖存器和一個(gè)8位緩沖器構(gòu)成,它們可以被分別選通。當(dāng)輸入設(shè)備準(zhǔn)備好數(shù)據(jù)后,就向I/O接口電路發(fā)一個(gè)選通信號(hào)。此信號(hào)有兩個(gè)作用:一方面將外設(shè)的數(shù)據(jù)送入接口的數(shù)據(jù)鎖存器中,另一方面使接口中的D觸發(fā)器的Q端置1。CPU首先執(zhí)行IN指令讀取狀態(tài)端口的信息,這時(shí)M/ 和
信號(hào)均變低。M/ 為低,使I/O譯碼器輸出低電平的狀態(tài)端口片選信號(hào) 。 和 經(jīng)門1相與后輸出低電平,使三態(tài)緩沖器開啟,于是Q端的高電平經(jīng)緩沖器(1位)傳送到數(shù)據(jù)線上的READY(D0)位,并被讀入累加器。程序檢測(cè)到READY位為1后,便執(zhí)行IN指令讀數(shù)據(jù)端口。這時(shí)M/ 和 信號(hào)再次有效,先形成數(shù)據(jù)端口片選信號(hào) , 和 經(jīng)門2輸出低電平。它一方面開啟數(shù)據(jù)緩沖器,將外設(shè)送到鎖存器中的數(shù)據(jù)經(jīng)8位數(shù)據(jù)緩沖器送到數(shù)據(jù)總線上后進(jìn)入累加器,另一方面將D觸發(fā)器清0。一次數(shù)據(jù)傳送完畢,接著就可以開始下一個(gè)數(shù)據(jù)的傳送。當(dāng)規(guī)定數(shù)目的數(shù)據(jù)傳送完畢后,傳送程序結(jié)束,程序?qū)㈤_始處理數(shù)據(jù)或進(jìn)行別的操作。
設(shè)狀態(tài)端口的地址為PORTS,輸入數(shù)據(jù)端口的地址為PORTD,傳送數(shù)據(jù)的總字節(jié)數(shù)為COUNT,則查詢式輸入數(shù)據(jù)的程序段為
MOV BX,0 ;初始化地址指針 BX
MOV CX,COUNT ;字節(jié)數(shù)
READS:
IN AL,PORTS ;讀入狀態(tài)位
TEST AL,01H ;數(shù)據(jù)準(zhǔn)備好否?
JZ READS ;否,循環(huán)檢測(cè)
IN AL,PORTD;已準(zhǔn)備好,讀入 數(shù)據(jù)
MOV [BX],AL ;存到內(nèi)存緩沖區(qū) 中
INC BX ;修改地址指針
LOOP READS ;未傳送完,繼續(xù) 傳送
… ;已傳送完
查詢式輸出方式的接口電路和工作流程分別如圖1-13和圖1-14所示。
與輸入接口類似,輸出接口電路也包含兩個(gè)端口:狀態(tài)端口和數(shù)據(jù)輸出端口。狀態(tài)端口也由一個(gè)D觸發(fā)器和一個(gè)三態(tài)門構(gòu)成,而數(shù)據(jù)輸出端口只含一個(gè)8位數(shù)據(jù)鎖存器。
圖1-13查詢式輸出方式的接口電路
圖1-14查詢式輸出方式的流程圖當(dāng)CPU準(zhǔn)備向外設(shè)輸出數(shù)據(jù)時(shí),它先執(zhí)行IN指令讀取狀態(tài)端口的信息。這時(shí),低電平的M/ 和有效的端口地址信號(hào)使I/O譯碼器的狀態(tài)端口片選信號(hào) 變低, 再和有效的
信號(hào)經(jīng)門1相與后輸出低電平,該低電平使?fàn)顟B(tài)端口的三態(tài)門開啟,從數(shù)據(jù)總線的D1位讀入BUSY狀態(tài)。若BUSY=1,表示外設(shè)處在接收上一個(gè)數(shù)據(jù)的忙碌狀態(tài)。只有當(dāng)BUSY=0時(shí),CPU才能向外設(shè)輸出新的數(shù)據(jù)。當(dāng)CPU檢查到BUSY=0時(shí),便執(zhí)行OUT指令,將數(shù)據(jù)送向數(shù)據(jù)輸出端口。這時(shí)低電平的M/ 使I/O譯碼器的狀態(tài)端口片選信號(hào) 變低, 再和 信號(hào)經(jīng)門2相與后輸出低電平的選通信號(hào),該信號(hào)用來選通數(shù)據(jù)鎖存器,將數(shù)據(jù)送向外設(shè)。同時(shí),選通信號(hào)的后沿還使D觸發(fā)器翻轉(zhuǎn),置Q為高電平,即把狀態(tài)口的BUSY位置為1,表示忙碌。當(dāng)輸出設(shè)備從接口中取走數(shù)據(jù)后,就送回一個(gè)應(yīng)答信號(hào) ,它將D觸發(fā)器清0,即置BUSY=0,允許CPU送出下一個(gè)數(shù)據(jù)。
設(shè)狀態(tài)口的地址為PORTS,輸出數(shù)據(jù)口的地址為PORTD,傳送數(shù)據(jù)的總個(gè)數(shù)為COUNT,則查詢式輸出數(shù)據(jù)的程序段為
MOVCX,COUNT ;傳送的字節(jié)數(shù)
READS:
INAL,PORTS ;讀入狀態(tài)位
TESTAL,02H ;忙否?
JNZREADS ;忙,循環(huán)檢測(cè)
MOVAL,輸出數(shù)據(jù) ;不忙
OUTPORTD,AL ;輸出數(shù)據(jù)
LOOPREADS ;未傳送完,循環(huán)
… ;已送完1.3.2中斷方式
用查詢方式使CPU與外設(shè)交換數(shù)據(jù)時(shí),CPU要不斷讀取狀態(tài)位,檢查輸入設(shè)備是否已準(zhǔn)備好數(shù)據(jù),輸出設(shè)備是否忙碌或輸出緩沖器是否已空。若外設(shè)沒有準(zhǔn)備就緒,則CPU必須反復(fù)查詢,進(jìn)入等待循環(huán)狀態(tài)。由于許多外設(shè)的速度很低,這種等待過程會(huì)占去CPU的絕大部分時(shí)間,因而真正用于傳輸數(shù)據(jù)的時(shí)間很少,CPU的利用率很低。例如,若一個(gè)操作員每秒鐘可從鍵盤輸入5個(gè)字符,平均每個(gè)字符占2×105μs的時(shí)間,實(shí)際上計(jì)算機(jī)只要用10μs就能從鍵盤讀入一個(gè)字符,這樣就有999950μs的時(shí)間花在檢測(cè)鍵盤狀態(tài)和等待上,也就是說,99.99%的時(shí)間因等待而白白浪費(fèi)掉了。如果有多個(gè)設(shè)備工作,還要輪流查詢,而這些設(shè)備的工作速度又往往各不相同,這樣不僅極大地浪費(fèi)了CPU的時(shí)間,還會(huì)因?yàn)槌绦蜻M(jìn)入等待某些慢速外設(shè)數(shù)據(jù)的循環(huán)而造成快速外設(shè)數(shù)據(jù)的大量流失,這在許多系統(tǒng)中是不允許的,尤其不能用于要求實(shí)時(shí)數(shù)據(jù)處理的場(chǎng)合。為了提高CPU的利用率和進(jìn)行實(shí)時(shí)數(shù)據(jù)處理,CPU常采用中斷方式與外設(shè)交換數(shù)據(jù)。采用中斷方式后,CPU平時(shí)可以執(zhí)行主程序,只有當(dāng)輸入設(shè)備將數(shù)據(jù)準(zhǔn)備好時(shí),或者輸出端口的數(shù)據(jù)緩沖器已空時(shí),才向CPU發(fā)中斷請(qǐng)求。CPU響應(yīng)中斷后,暫停執(zhí)行當(dāng)前的程序,轉(zhuǎn)去執(zhí)行管理外設(shè)的中斷服務(wù)程序。在中斷服務(wù)程序中,用輸入或輸出指令在CPU和外設(shè)之間進(jìn)行一次數(shù)據(jù)交換。待輸入或輸出操作完成之后,CPU又回去執(zhí)行原來的程序。
有關(guān)中斷的概念將在第4章中詳細(xì)介紹,這里不再贅述。1.3.3DMA方式
1.DMA方式的提出
利用中斷方式進(jìn)行數(shù)據(jù)傳送可以大大提高CPU的利用率,但在中斷方式下,仍必須通過CPU執(zhí)行程序來完成數(shù)據(jù)傳送。每進(jìn)行一次數(shù)據(jù)傳送,CPU都要執(zhí)行一次中斷服務(wù)程序。這時(shí),CPU都要保護(hù)和恢復(fù)斷點(diǎn),通常還要執(zhí)行一系列保護(hù)和恢復(fù)寄存器的指令,即保護(hù)現(xiàn)場(chǎng),以便完成中斷處理后能正確返回主程序。顯然,這些操作與數(shù)據(jù)傳送沒有直接關(guān)系,但會(huì)花費(fèi)CPU的不少時(shí)間。再者,8086CPU一旦進(jìn)入中斷,指令隊(duì)列就要清除,執(zhí)行部件(EU)要等總線接口部件(BIU)將中斷處理子程序中的指令取到隊(duì)列后才執(zhí)行;恢復(fù)斷點(diǎn)時(shí),指令隊(duì)列也要被清除,執(zhí)行部件也必須等總線接口部件把斷點(diǎn)處的指令裝入后才開始執(zhí)行。所以,在這段時(shí)間內(nèi),執(zhí)行部件和總線接口部件不能并行工作,這也會(huì)造成數(shù)據(jù)傳送效率的降低。當(dāng)CPU與高速I/O設(shè)備交換數(shù)據(jù),或與外設(shè)進(jìn)行成組數(shù)據(jù)交換時(shí),中斷方式仍顯得太慢。例如,當(dāng)磁盤和內(nèi)存成批交換信息時(shí),磁頭的讀/寫速度可超過200000B/s,因此只有在5μs內(nèi)完成一個(gè)字節(jié)的傳送,才能充分發(fā)揮磁盤大容量的性能優(yōu)勢(shì)。如果采用中斷方式進(jìn)行磁盤和內(nèi)存間的成批數(shù)據(jù)傳送,則只能逐字節(jié)進(jìn)行。例如讀盤時(shí),要先把從磁盤讀出的數(shù)據(jù)送入CPU的寄存器,再從寄存器轉(zhuǎn)入內(nèi)存,然后修改地址指針和字節(jié)計(jì)數(shù)器。這些操作均要用指令來實(shí)現(xiàn),顯然不可能在5μs之內(nèi)完成。為了解決這個(gè)問題,可采用一種稱為DMA(DirectMemoryAccess)的傳送方式,也就是直接存儲(chǔ)器存取方式。
DMA方式也要利用系統(tǒng)的數(shù)據(jù)總線、地址總線和控制總線來傳送數(shù)據(jù)。這些總線是由CPU管理的,但當(dāng)外設(shè)需要利用DMA方式進(jìn)行數(shù)據(jù)傳送時(shí),接口電路可以向CPU提出請(qǐng)求,要求CPU讓出對(duì)總線的控制權(quán),用一種稱為DMA控制器的專用硬件接口電路來取代CPU,臨時(shí)接管總線,以控制外設(shè)和存儲(chǔ)器直接進(jìn)行高速的數(shù)據(jù)傳送,而不要CPU進(jìn)行干預(yù)。這種控制器能給出訪問內(nèi)存所需要的地址信息,并能自動(dòng)修改地址指針,也能設(shè)定和修改傳送的字節(jié)數(shù),還能向存儲(chǔ)器和外設(shè)發(fā)出相應(yīng)的讀/寫控制信號(hào)。在DMA傳送結(jié)束后,它能釋放總線,把對(duì)總線的控制權(quán)交還給CPU。可見,用DMA方式傳輸數(shù)據(jù)時(shí),不需要進(jìn)行保護(hù)和恢復(fù)斷點(diǎn)及現(xiàn)場(chǎng)之類的額外操作,一旦進(jìn)入DMA操作,就可直接在硬件的控制下快速完成一批數(shù)據(jù)的交換任務(wù),因此數(shù)據(jù)傳送的速度基本上取決于外設(shè)和存儲(chǔ)器的存取速度。有些DMA控制器,除了可在外設(shè)和內(nèi)存間直接交換數(shù)據(jù)外,還能控制內(nèi)存與內(nèi)存之間的直接數(shù)據(jù)交換,如Intel8237ADMA控制器就能完成這種功能。下面以磁盤和內(nèi)存間數(shù)據(jù)的DMA傳送為例,簡(jiǎn)單介紹一下利用Intel8237ADMA控制器傳送數(shù)據(jù)的大致過程,有關(guān)它的工作原理和使用方法等將在第8章作專門介紹。
2.DMA控制器的連線和操作
DMA控制器經(jīng)常與磁盤驅(qū)動(dòng)器、數(shù)據(jù)流記錄儀、磁帶機(jī)和數(shù)據(jù)采集卡等配合使用,以實(shí)現(xiàn)這些外設(shè)和內(nèi)存間的高速數(shù)據(jù)交換。Intel8237A是一種較常用的DMA控制器,被用在PC/XT和PC/AT機(jī)中,以提高系統(tǒng)存取磁盤驅(qū)動(dòng)器的速度。圖1-15所示是微機(jī)系統(tǒng)中DMA控制器操作框圖。在采用DMA控制器的系統(tǒng)中,CPU與DMA控制器分時(shí)使用地址總線、數(shù)據(jù)總線和控制總線。圖1-15中用3個(gè)開關(guān)來表示這種總線的切換。
圖1-15微機(jī)系統(tǒng)中DMA控制器操作框圖采用DMA方式讀磁盤的過程分為以下幾步:
(1)系統(tǒng)啟動(dòng)時(shí),3個(gè)開關(guān)撥向上端,總線與CPU、存儲(chǔ)器和外設(shè)相連,并由CPU來控制。進(jìn)行一次DMA傳輸前,首先要對(duì)8237A進(jìn)行初始化編程,包括設(shè)定要傳送數(shù)據(jù)的字節(jié)計(jì)數(shù)器初值、指定參與傳送的內(nèi)存塊的起始地址,以及選定DMA通道(8237A內(nèi)部有4個(gè)DMA通道)和所用的傳送方式等。
(2)
CPU向磁盤控制器發(fā)出讀盤命令,由磁盤控制器找到要讀取的數(shù)據(jù)位置,并開始讀出數(shù)據(jù)。
(3)當(dāng)磁盤控制器準(zhǔn)備好了第一個(gè)字節(jié)的數(shù)據(jù)后,就向DMA控制器發(fā)送一個(gè)DMA請(qǐng)求信號(hào)DREQ。如果DMA控制器的輸入通道沒有被屏蔽,DMA控制器就送一個(gè)保持請(qǐng)求信號(hào)HRQ到CPU的HOLD輸入端。CPU從HOLD端收到HRQ信號(hào),完成當(dāng)前的總線操作后,中止當(dāng)前程序的運(yùn)行,將它的總線浮空,并發(fā)回一個(gè)保持響應(yīng)信號(hào)HLDA給DMA控制器,作為收到HRQ信號(hào)的應(yīng)答。DMA控制器收到HLDA信號(hào)后,便發(fā)送一個(gè)控制信號(hào),使3個(gè)總線開關(guān)撥向下方,讓總線和DMA控制器相連,而與CPU脫開。這樣,DMA控制器就接管了總線。
(4)
DMA控制器獲得總線控制權(quán)后,便通過地址總線向存儲(chǔ)器發(fā)送地址信號(hào),指示要被寫入內(nèi)存的第一個(gè)數(shù)據(jù)的地址。隨后,DMA控制器向磁盤控制器發(fā)出DMA確認(rèn)信號(hào)DACK,通知磁盤控制器準(zhǔn)備好要輸出的數(shù)據(jù)字節(jié)。
(5)
DMA控制器使控制總線上的I/O讀信號(hào) 和存儲(chǔ)器寫信號(hào) 有效。 有效使磁盤控制器能從磁盤向數(shù)據(jù)總線輸出數(shù)據(jù)字節(jié); 有效使所尋址的存儲(chǔ)單元能夠接受從數(shù)據(jù)總線上寫入的數(shù)據(jù)。
(6)每完成一個(gè)字節(jié)數(shù)據(jù)的傳送,DMA控制器就自動(dòng)修改內(nèi)部地址寄存器的內(nèi)容,使它指向下一個(gè)字節(jié)的地址,并將統(tǒng)計(jì)總字節(jié)數(shù)的字計(jì)數(shù)器減1,再重復(fù)上述傳送過程。當(dāng)字計(jì)數(shù)器減為0,并由0減為FFFFH時(shí),表示這批數(shù)據(jù)已傳送完畢,DMA過程結(jié)束。
(7)
DMA傳送結(jié)束后,DMA控制器便撤銷它對(duì)CPU發(fā)出的保持信號(hào)HRQ,并釋放總線。圖1-15中的3個(gè)開關(guān)又撥回到上方,使總線與CPU相連,CPU恢復(fù)對(duì)總線的控制權(quán),并從中止處開始繼續(xù)執(zhí)行后續(xù)程序。
CPU在每一個(gè)非鎖定時(shí)鐘周期(Lock為高)結(jié)束后,都要檢測(cè)一下HOLD引腳,看是否有DMA請(qǐng)求信號(hào)。若有DMA請(qǐng)求信號(hào),便暫時(shí)中止正在執(zhí)行的程序,進(jìn)入上述的DMA周期。
1.1什么是接口?為什么要在CPU與外設(shè)之間設(shè)置接口?
1.2微型計(jì)算機(jī)的接口一般應(yīng)具備哪些功能?
1.3計(jì)算機(jī)對(duì)I/O端口編址時(shí)采用哪兩種方法?在8086
/8088CPU中一般采用哪種編址方法?接口技術(shù)在微機(jī)應(yīng)用中起什么作用?
1.4CPU與外設(shè)之間傳送數(shù)據(jù)主要有哪幾種方式?習(xí)題與思考題
1.5說明查詢式輸入和輸出接口電路的工作原理。
1.6簡(jiǎn)述在微機(jī)系統(tǒng)中,DMA控制器從外設(shè)提出請(qǐng)求到外設(shè)直接將數(shù)據(jù)傳送到存儲(chǔ)器的工作過程。
1.7某一個(gè)微機(jī)系統(tǒng)中,有8塊I/O接口芯片,每個(gè)芯片占有8個(gè)端口地址,若起始地址為9000H,8塊芯片的地址連續(xù)分布,用74LS138作譯碼器,試畫出端口譯碼電路,并說明每塊芯片的端口地址范圍。
圖1-16題1.10圖
1.8你認(rèn)為學(xué)習(xí)接口技術(shù)的難點(diǎn)在哪幾個(gè)方面?應(yīng)如何對(duì)付?
1.9在微機(jī)系統(tǒng)中,緩沖器和鎖存器各起什么作用?
1.10在總線結(jié)構(gòu)中,通常用三態(tài)門作為總線開關(guān)。74LS245與8086的連接如圖1-16所示。為了選通輸入方向,8086的各引腳應(yīng)處于何種狀態(tài)?8086在什么時(shí)候能夠使其各引腳處于這樣的狀態(tài)?
1.11圖1-17所示為一個(gè)擴(kuò)展I/O模塊的譯碼電路,其中AEN為系統(tǒng)總線信號(hào),當(dāng)其為高電平時(shí)禁止選通I/O模塊,為低電平時(shí)允許I/O尋址。
(1)已知A15~A10為全0,寫出本模塊的地址范圍。
(2)寫出74LS138的各個(gè)輸出引腳( ~ )所對(duì)應(yīng)的地址范圍。
(3)
OE與START均為控制信號(hào),討論它們?cè)谀膫€(gè)總線周期中會(huì)成為高電平,畫出對(duì)應(yīng)的周期時(shí)序圖中OE、START的波形以及與其有關(guān)的時(shí)序信號(hào)。分別寫出能產(chǎn)生OE、START正脈沖的指令。
圖1-17題1.11圖
1.12請(qǐng)用門電路設(shè)計(jì)并行端口控制卡的譯碼電路,并行端口1地址為370H~37FH,并行端口2地址為270H~27FH。
1.13試根據(jù)圖1-18所示的譯碼電路,列表寫出譯碼器的輸出~的地址范圍。
圖1-18題1.13圖第2章總線接口2.1總線的基本概念
2.2總線的通信協(xié)議
2.3常用系統(tǒng)總線標(biāo)準(zhǔn)
2.4通信總線標(biāo)準(zhǔn)習(xí)題與思考題
2.1.1總線的概念
一般先以各種大規(guī)模集成電路芯片為核心組成插件(如CPU插件、存儲(chǔ)器插件等),再由若干插件組成主機(jī),最后加上所需的外圍設(shè)備就組成了整個(gè)計(jì)算機(jī)系統(tǒng)。而若干個(gè)微型計(jì)算機(jī)系統(tǒng)或微型計(jì)算機(jī)加上其他儀器、儀表或可控制系統(tǒng)等目標(biāo)系統(tǒng),又可組成專用系統(tǒng)。每一系統(tǒng)(或插件)必須能同另外的系統(tǒng)(或插件)進(jìn)行通信,同一插件上的各種芯片也要能夠互相通信,因此,插件與插件之間、系統(tǒng)與系統(tǒng)之間的互連和通信問題就要通過總線來實(shí)現(xiàn)。2.1總線的基本概念總線是若干互連信號(hào)線的集合,是連接計(jì)算機(jī)各部件或計(jì)算機(jī)之間的一條公共信息通道。它是構(gòu)成系統(tǒng)的插件間、插件的片間或系統(tǒng)間的標(biāo)準(zhǔn)信息通路??偩€的性能好壞直接影響計(jì)算機(jī)系統(tǒng)的工作效率、可靠性、可擴(kuò)展性以及可維護(hù)性等多項(xiàng)功能。因此,總線也是眾多計(jì)算機(jī)廠家競(jìng)爭(zhēng)的對(duì)象。采用總線結(jié)構(gòu)有如下優(yōu)點(diǎn):
(1)簡(jiǎn)化軟/硬件的系統(tǒng)設(shè)計(jì)。系統(tǒng)采用總線結(jié)構(gòu),使硬件設(shè)計(jì)者只需按總線的規(guī)范來設(shè)計(jì)各種插件板,而不必考慮其他因素。這樣設(shè)計(jì)出的插件板具有互換性與通用性,便于大批量生產(chǎn)。各廠家可以生產(chǎn)出有自己特色的插件,使產(chǎn)品更有競(jìng)爭(zhēng)力。
插件式的硬件結(jié)構(gòu)帶來了軟件設(shè)計(jì)的模塊化,這有利于節(jié)省軟件調(diào)試所需的時(shí)間,模塊化程序可被多用戶重復(fù)使用。
(2)用總線連接的系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,便于系統(tǒng)擴(kuò)充與更新。系統(tǒng)使用總線結(jié)構(gòu)在擴(kuò)充規(guī)模時(shí),只需往總線上再多插幾塊同類型的插件;在擴(kuò)充功能時(shí),只需插入所需的符合該總線標(biāo)準(zhǔn)的插件即可;在更新系統(tǒng)時(shí),只需更換所要更新的插件即可。
在一個(gè)微機(jī)系統(tǒng)中,CPU雖然很重要,但由于所在的地址、數(shù)據(jù)和控制信號(hào)都要通過總線傳送,因此總線也是非常重要的,可將其視為整個(gè)微機(jī)系統(tǒng)的“中樞神經(jīng)”。此外,總線對(duì)整個(gè)系統(tǒng)的組成和結(jié)構(gòu)都會(huì)產(chǎn)生很大影響,對(duì)系統(tǒng)的可靠性、實(shí)時(shí)性和吞吐量都有決定性影響,因此可以把總線看成是微機(jī)系統(tǒng)的“規(guī)則”或“結(jié)構(gòu)法規(guī)”。2.1.2總線的分類
總線可以從不同角度進(jìn)行分類,按用途可分為數(shù)據(jù)總線、地址總線、控制總線、電源線和地線、備用線;按傳遞方式可分為并行總線與串行總線,并行總線一次能傳送8位、16位、32位和64位,多用于系統(tǒng)內(nèi)部或與主機(jī)距離很近的外設(shè),串行總線一次只能傳送一位信息,用于較遠(yuǎn)距離的信息傳送;按總線連接的對(duì)象不同可以分為芯片總線、片間總線、內(nèi)總線和外總線,如圖2-1所示。圖2-1總線分類圖
1.芯片總線
芯片總線又稱片內(nèi)總線,它是用來連接CPU內(nèi)部各個(gè)邏輯功能單元的公共總線,是芯片內(nèi)各單元電路之間相互交換信息的公共通道。其結(jié)構(gòu)與設(shè)計(jì)由芯片生產(chǎn)廠家來完成。
2.片間總線
片間總線又稱元件級(jí)總線,是指組成一臺(tái)微型計(jì)算機(jī)各芯片(如CPU芯片、存儲(chǔ)器芯片、I/O接口芯片等)間的連接總線。片間總線通常包括地址總線、數(shù)據(jù)總線和控制總線,即所謂的三總線結(jié)構(gòu)。
3.內(nèi)總線
內(nèi)總線又稱系統(tǒng)總線,主要用于連接微型計(jì)算機(jī)系統(tǒng)內(nèi)插件、CPU及其支持電路等。
4.外總線
外總線又稱通信總線,用于微型計(jì)算機(jī)系統(tǒng)之間、微型計(jì)算機(jī)系統(tǒng)與其他電子儀器或設(shè)備之間的通信。這種總線不是微型計(jì)算機(jī)特有的,一般是借用電子工業(yè)或其他領(lǐng)域的總線。
內(nèi)總線和外總線除三總線外,還包括電源線、地線和備用線(為用戶擴(kuò)展功能用)。片內(nèi)總線和片間總線沒有規(guī)定標(biāo)準(zhǔn)。內(nèi)總線和外總線根據(jù)生產(chǎn)和用戶的需要規(guī)定了總線標(biāo)準(zhǔn)。內(nèi)總線的規(guī)格因所選用的微處理器品種而異,故內(nèi)總線的標(biāo)準(zhǔn)較多,如S-100總線、Apple總線、STD總線、MULTIBUS總線等。通信總線是微型計(jì)算機(jī)接口與外設(shè)、微型計(jì)算機(jī)系統(tǒng)間或微型計(jì)算機(jī)系統(tǒng)與其他系統(tǒng)(如儀器測(cè)試系統(tǒng)、控制系統(tǒng)等)間的通信線。由于這種總線不是微型機(jī)系統(tǒng)所特有的,因此往往借助于電子工業(yè)上已有的總線標(biāo)準(zhǔn),其標(biāo)準(zhǔn)較少,如IEEE-488、EIA-RS232C、CAMAC、CENTRONIC等。標(biāo)準(zhǔn)化的內(nèi)總線和通信總線統(tǒng)稱為標(biāo)準(zhǔn)總線。按信息傳送的方法又分為并行標(biāo)準(zhǔn)總線和串行標(biāo)準(zhǔn)總線兩種。內(nèi)總線都是并行總線,總線上信息傳輸率比較高。而通信總線則有并行總線(IEEE-488總線和CAMAC總線)和串行總線(RS-232C、RS-422、RS-423等)兩種。串行總線所需的傳輸線較少,所以計(jì)算機(jī)與通信終端的連接多用串行總線。采用標(biāo)準(zhǔn)總線可以簡(jiǎn)化軟/硬件和系統(tǒng)結(jié)構(gòu),便于系統(tǒng)擴(kuò)展、更新、調(diào)試及維修。本章重點(diǎn)討論后兩類總線。在使用這兩類總線時(shí),用戶和制造廠商都希望總線具有通用性,也就是說,希望不同廠家生產(chǎn)的插件板可以互換,不同系統(tǒng)之間可以互連和通信。因此,只要按統(tǒng)一的總線標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì)或連接即可。這樣,對(duì)于生產(chǎn)廠家來說,只要按總線接口規(guī)范設(shè)計(jì)CPU主板、I/O接口板或存儲(chǔ)器插件板,然后將插件板插入主機(jī)的總線擴(kuò)展槽中,就可構(gòu)成系統(tǒng),很適合于大批量生產(chǎn)、組裝和調(diào)試,也便于更新和擴(kuò)充系統(tǒng)。對(duì)于用戶來說,可根據(jù)自身需要,靈活地選購接口板或存儲(chǔ)器插件,組裝成適合自己應(yīng)用需要的系統(tǒng)或更新原有系統(tǒng)。例如,一般用戶選購計(jì)算機(jī)時(shí)都購置硬盤和軟盤驅(qū)動(dòng)器接口板、打印機(jī)接口板、
VGA彩色顯示器適配卡等;有些需要處理模擬信號(hào)的用戶可再選購A/D、D/A接口板;需要通過電話網(wǎng)來傳送信息的可選購調(diào)制解調(diào)器(Modem)板;當(dāng)需要構(gòu)成一個(gè)多媒體系統(tǒng)時(shí),用戶可選購聲卡、圖像解壓縮卡、CD-ROM驅(qū)動(dòng)器等;必要時(shí)用戶還可根據(jù)總線標(biāo)準(zhǔn)的要求,自行設(shè)計(jì)接口電路板。目前,使用高檔機(jī)的用戶可直接購置一塊多功能卡,上面包含硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、并行打印機(jī)和串行通信口等各種接口電路,這樣就不需要用多塊插件板了。2.1.3總線的主要參數(shù)
1.總線寬度
總線寬度又稱總線位寬,指的是總線能同時(shí)傳送數(shù)據(jù)的位數(shù)。例如16位總線、32位總線指的就是總線具有16位數(shù)據(jù)和32位數(shù)據(jù)傳輸能力。在工作頻率固定的條件下,總線帶寬與總線寬度成正比。
2.總線頻率
總線頻率是總線工作速度的一個(gè)重要參數(shù),工作頻率越高,速度越快。例如總線頻率為33MHz、66MHz、100MHz、133MHz等。
3.總線帶寬
總線帶寬又稱總線的數(shù)據(jù)傳輸率,是指在單位時(shí)間內(nèi)總線上可傳送的數(shù)據(jù)總量,用每秒鐘最大傳送數(shù)據(jù)量來衡量,單位是字節(jié)/秒(B/s)或兆字節(jié)/秒(MB/s)。與總線帶寬密切相關(guān)的兩個(gè)概念是總線寬度和總線的工作頻率??偩€帶寬越寬,傳輸率越高。總線帶寬與總線寬度和總線頻率的關(guān)系為
上式中,總線帶寬的單位為MB/s(總線頻率以MHz為單位)。例如總線頻率為66MHz,32位總線,若每?jī)蓚€(gè)時(shí)鐘周期完成一次總線存取操作,則總線帶寬(數(shù)據(jù)傳輸率)為
即每秒傳輸132MB。結(jié)論:工作頻率越高,總線工作速度越快,即總線帶寬越寬。總線帶寬、總線寬度、總線工作頻率三者之間的關(guān)系就像高速公路上的車流量、車道數(shù)和車速的關(guān)系。車流量取決于車道數(shù)和車速,車道數(shù)越多、車速越快,則車流量越大。同樣,總線帶寬取決于總線寬度和工作頻率,總線寬度越寬,工作頻率越高,則總線帶寬越大。當(dāng)然,單方面提高總線寬度或工作頻率都只能部分提高總線的帶寬,并容易達(dá)到各自的極限。只有兩者配合才能使總線的帶寬得到更大的提升。
由于總線是在微機(jī)內(nèi)和系統(tǒng)間傳送各種信息(包括數(shù)據(jù)、地址和控制信號(hào))的通路,因此,為了準(zhǔn)確地傳送這些信息,必須要有信息傳送的控制信號(hào)來控制信息的同步,包含一些控制信息傳送開始和結(jié)束的信號(hào)。這些信號(hào)稱為握手信號(hào)(又稱應(yīng)答信號(hào))。因此總線通信協(xié)議主要是解決信息傳輸?shù)拈_始與結(jié)束的問題,它以一定方式用握手信號(hào)和電壓的變化來表明數(shù)據(jù)傳送的開始和結(jié)束。2.2總線的通信協(xié)議2.2.1總線的傳輸過程
系統(tǒng)總線最基本的任務(wù)就是傳送數(shù)據(jù),這里的“數(shù)據(jù)”包括程序指令、運(yùn)算處理的數(shù)據(jù)、設(shè)備的控制命令和狀態(tài)字、設(shè)備的輸入與輸出數(shù)據(jù)。系統(tǒng)總線上的數(shù)據(jù)是在主模塊的控制下進(jìn)行的,主模塊有控制總線的能力,例如CPU及DMA模塊。而從模塊則沒有控制總線的能力,但它可對(duì)總線上傳來的地址信號(hào)進(jìn)行地址譯碼,并且接受和執(zhí)行總線主模塊的命令??偩€完成一次數(shù)據(jù)傳輸周期一般分為四個(gè)階段。
(1)申請(qǐng)階段:當(dāng)系統(tǒng)總線上有多個(gè)主模塊時(shí),需要使用總線的主模塊提出申請(qǐng),由總線仲裁機(jī)構(gòu)確定把下一個(gè)傳輸周期的總線使用權(quán)授權(quán)給該模塊。
(2)尋址階段:取得總線使用權(quán)的主模塊通過總線發(fā)出本次打算訪問的從模塊的存儲(chǔ)器地址或I/O端口地址及有關(guān)命令,使參與本次傳輸?shù)膹哪K開始啟動(dòng)。
(3)傳送數(shù)據(jù)階段:主模塊和從模塊之間進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)由源模塊發(fā)出,經(jīng)數(shù)據(jù)總線流入目的模塊。
(4)結(jié)束階段:主從模塊的有關(guān)信息均從系統(tǒng)總線上撤除,讓出總線。2.2.2總線的通信協(xié)議
通??偩€的通信協(xié)議與總線數(shù)據(jù)傳輸?shù)奈帐址绞?、處理機(jī)的信號(hào)及工作特點(diǎn)有關(guān)。通信協(xié)議一般分為四類:同步方式、異步方式、半同步方式和分離方式。
1.同步方式
同步總線所用的控制信號(hào)僅僅是一個(gè)時(shí)鐘振蕩器,利用時(shí)鐘的上升沿和下降沿分別表示一個(gè)總線周期的開始和結(jié)束。該方式使用一個(gè)“系統(tǒng)時(shí)鐘”控制數(shù)據(jù)傳輸?shù)臅r(shí)間標(biāo)準(zhǔn)。主設(shè)備與從設(shè)備進(jìn)行一次傳輸所需的時(shí)間(稱為傳輸周期或總線周期)是固定的,并且總線上所有模塊都在同一時(shí)鐘的控制下步調(diào)一致地工作,從而實(shí)現(xiàn)整個(gè)系統(tǒng)工作的同步。早期的微機(jī)系統(tǒng),如IBM-PC/XT采用的就是同步總線,現(xiàn)代的超級(jí)微機(jī)Pentiumn機(jī)的PCI局部總線也是同步總線。同步總線的主要優(yōu)點(diǎn)是同步握手方式簡(jiǎn)單,全部系統(tǒng)數(shù)據(jù)傳送由單一時(shí)鐘信號(hào)控制,便于電路設(shè)計(jì)。另外,由于主從之間不允許有等待,因此這種方式完成一次傳輸?shù)臅r(shí)間較短,適合高速運(yùn)行的需要。只要總線上的模塊都是高速的,總線頻帶便可以做得很寬。但是,同步總線的缺點(diǎn)也很明顯,主要是不能滿足高速和低速設(shè)備在同一系統(tǒng)中使用。因?yàn)榭偩€上的各種模塊與設(shè)備都按同一時(shí)鐘工作,所以只能按最慢的設(shè)備來確定總線的頻帶或總線周期的長(zhǎng)短,這就使得總線上的一些高速模塊和設(shè)備必須遷就最低速設(shè)備的速度來運(yùn)行,使系統(tǒng)的整個(gè)性能降低。當(dāng)然,也可以將時(shí)鐘頻率設(shè)計(jì)得很高,發(fā)揮高速設(shè)備的快速傳輸性能,但一旦按高速需要設(shè)計(jì)好后,總線上就不能再接低速模塊,適應(yīng)性不好。解決這個(gè)矛盾的方法之一是采用異步總線握手方式。
2.異步方式
對(duì)于具有不同存取時(shí)間的各種設(shè)備,不宜采用同步總線協(xié)議,因?yàn)檫@時(shí)總線要以最低速設(shè)備的速度運(yùn)行。因此,如果對(duì)高速設(shè)備能采用高速操作,而對(duì)低速設(shè)備則只能采用低速操作,這時(shí)就需要采用異步總線。異步方式采用“應(yīng)答式”傳輸,用“請(qǐng)求(REQ,Request)”和“應(yīng)答(ACK,Acknowledge)”
兩根信號(hào)線來協(xié)調(diào)傳輸過程而不依賴于系統(tǒng)時(shí)鐘信號(hào)。這種方式可以根據(jù)模塊的速度自動(dòng)調(diào)整響應(yīng)的時(shí)間,因此,高速模塊可以高速傳輸,低速模塊可以低速傳輸,連接任何類型的外圍設(shè)備都不需要考慮該設(shè)備的速度,從而避免了同步式傳輸?shù)娜秉c(diǎn)。正是由于全互鎖異步傳輸具有良好的適應(yīng)性和高可靠性,因此它得到了廣泛的應(yīng)用,Motorola公司的MC68000/68010/68020微機(jī)系統(tǒng)采用的就是異步總線。由于異步傳輸方式利用REQ和ACK的呼應(yīng)關(guān)系來控制傳輸?shù)倪^程,因此異步方式具有以下特點(diǎn):
(1)應(yīng)答關(guān)系完全互鎖,即REQ和ACK之間有確定的制約關(guān)系。主設(shè)備的請(qǐng)求REQ有效,由從設(shè)備的ACK來響應(yīng);ACK有效,允許主設(shè)備撤銷REQ;只有REQ已撤銷,才能最后撤銷ACK;只有ACK已撤銷,才允許下一傳輸周期的開始。這就保證了數(shù)據(jù)傳輸?shù)目煽窟M(jìn)行。
(2)數(shù)據(jù)傳輸?shù)乃俣炔皇枪潭ú蛔兊模Q于從模塊的速度。因而同一個(gè)系統(tǒng)中可以容納不同速度的模塊,每個(gè)模塊都能以最佳的速度來配合數(shù)據(jù)的傳輸。
異步傳輸?shù)娜秉c(diǎn)是不管從模塊的速度,每完成一次傳輸,主從模塊之間的互鎖控制信號(hào)都要經(jīng)過四個(gè)步驟:請(qǐng)求、響應(yīng)、撤銷請(qǐng)求、撤銷響應(yīng),其傳輸延遲是同步傳輸?shù)膬杀?。因此,異步方式比同步方式慢,總線的頻帶窄,總線的傳輸周期長(zhǎng)。
3.半同步方式
由于異步總線的傳輸延遲嚴(yán)重地限制了最高的頻率寬度,因此,人們結(jié)合同步和異步總線的優(yōu)點(diǎn)設(shè)計(jì)出了混合的總線,即半同步總線。從總體上看,它是一個(gè)同步系統(tǒng),仍用系統(tǒng)時(shí)鐘來定時(shí),利用某一脈沖的前沿或后沿判斷某一信號(hào)的狀態(tài),控制某一信號(hào)的產(chǎn)生或消失,使傳輸操作與時(shí)鐘同步。但是,它又不像同步傳輸那樣傳輸周期固定,對(duì)于慢速的從模塊,其傳輸周期可延長(zhǎng)時(shí)鐘脈沖周期的整數(shù)倍。半同步的方法是增加一條信號(hào)線(Wait或Ready)。當(dāng)Wait信號(hào)線有效(或Ready無效)時(shí),反映選中的從設(shè)備未準(zhǔn)備好數(shù)據(jù)傳輸(寫時(shí)未做好接收數(shù)據(jù)的準(zhǔn)備,讀時(shí)數(shù)據(jù)未放在數(shù)據(jù)線上)。系統(tǒng)用一個(gè)適當(dāng)?shù)臓顟B(tài)時(shí)鐘檢測(cè)Wait信號(hào)線,如果有效,系統(tǒng)自動(dòng)將傳輸周期延長(zhǎng)一個(gè)時(shí)鐘周期,強(qiáng)制主模塊等待。此狀態(tài)時(shí)鐘的下一個(gè)時(shí)鐘繼續(xù)進(jìn)行檢測(cè),直至檢測(cè)到Wait信號(hào)線無效,才不再延長(zhǎng)傳輸周期。這和異步傳輸一樣,其傳輸周期視從設(shè)備的速度而異。允許不同速度的模塊彼此協(xié)調(diào)地一起工作,但Wait信號(hào)不是互鎖的,只是單方向的狀態(tài)傳遞,這是與異步傳輸?shù)牟煌?。半同步傳輸方式?duì)能按規(guī)定時(shí)刻一步一步完成地址、命令和數(shù)據(jù)傳輸?shù)膹哪K,完全按同步方式傳輸,而對(duì)不能按規(guī)定時(shí)刻傳輸?shù)刂?、命令、?shù)據(jù)的慢速設(shè)備,則借助Wait信號(hào)線,強(qiáng)制主模塊延遲等待若干個(gè)時(shí)鐘周期。這種方式適用于系統(tǒng)工作速度不高,且包含了多種速度差異較大的設(shè)備的系統(tǒng)。
綜上所述,這種半同步方式的總線對(duì)快速設(shè)備就像同步方式一樣,只由時(shí)鐘信號(hào)單獨(dú)控制,實(shí)現(xiàn)主從之間的握手;對(duì)慢速設(shè)備,又像異步方式一樣,利用Wait控制信號(hào)來改變總線的傳輸周期。這種混合式總線兼有同步方式的速度和異步方式的可靠性及適應(yīng)性。采用這種總線握手方式的微機(jī)系統(tǒng)有Z80。嚴(yán)格來講,IBM-PC/XT總線是半同步總線。
4.分離方式
前述三種方式中,從主模塊發(fā)出地址和讀/寫命令開始,直到數(shù)據(jù)傳輸結(jié)束的整個(gè)傳輸周期中,系統(tǒng)總線完全由主模塊和從模塊占用。實(shí)際上,在主模塊通過總線向從模塊發(fā)送了地址和命令之后,到從模塊通過數(shù)據(jù)總線向主模塊提供了數(shù)據(jù)之間的時(shí)間間隔,是從模塊執(zhí)行讀/寫命令的時(shí)間。在這段時(shí)間內(nèi),系統(tǒng)總線上并沒有實(shí)質(zhì)性的信息傳輸,是空閑的。為了充分利用這段總線空閑時(shí)間,可將一個(gè)讀周期分解成為兩個(gè)分離的子周期。在第一個(gè)子周期,主模塊發(fā)送地址和命令及有關(guān)信息,經(jīng)總線傳輸,由有關(guān)從模塊接收下來后,立即和總線斷開,以供其他模塊使用。待選中的從模塊準(zhǔn)備好數(shù)據(jù)后,啟動(dòng)第二個(gè)子周期,由該模塊申請(qǐng)總線,獲準(zhǔn)后,將數(shù)據(jù)發(fā)向原要求數(shù)據(jù)的設(shè)備,由該設(shè)備接
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人抵押借款簡(jiǎn)單合同(2024版)
- 二零二五版電子數(shù)碼產(chǎn)品門店承包經(jīng)營(yíng)合同4篇
- 2025年度紡織行業(yè)原材料電商直采服務(wù)合同3篇
- 馬鈴薯購銷2025版:年度種植收購合同2篇
- 二零二五版苗圃場(chǎng)技術(shù)員園藝栽培技術(shù)聘用合同4篇
- 情感溝通解決客戶投訴的關(guān)鍵技巧
- 長(zhǎng)春科技學(xué)院《健“聲”》2023-2024學(xué)年第一學(xué)期期末試卷
- 長(zhǎng)春工程學(xué)院《大學(xué)基礎(chǔ)讀寫4》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版車輛抵押反擔(dān)保車輛租賃擔(dān)保協(xié)議2篇
- 二零二五版房地產(chǎn)開發(fā)與文化藝術(shù)合作協(xié)議3篇
- 2023年版《安寧療護(hù)實(shí)踐指南(試行)》解讀課件
- AQ6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范
- 2024年高考語文備考之??甲骷易髌罚ㄏ拢褐袊F(xiàn)當(dāng)代、外國
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊(cè)詞匯表匯總(帶音標(biāo))
- 新譯林版高中英語必修二全冊(cè)短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測(cè)研究
- 河道保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 品管圈(QCC)案例-縮短接臺(tái)手術(shù)送手術(shù)時(shí)間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級(jí)上冊(cè)譯林版三起含答案
評(píng)論
0/150
提交評(píng)論