新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 計(jì)算機(jī)接口知識(shí):串行口、并行口、USB接口是如何聯(lián)絡(luò)主機(jī)和外設(shè)的?

計(jì)算機(jī)接口知識(shí):串行口、并行口、USB接口是如何聯(lián)絡(luò)主機(jī)和外設(shè)的?

作者: 時(shí)間:2016-10-16 來(lái)源:網(wǎng)絡(luò) 收藏

本文主要講述了計(jì)算機(jī)接口的基礎(chǔ)知識(shí)。詳細(xì)描述了串行口、并行口如何通過(guò)握手信號(hào)進(jìn)行通信,并介紹了USB的硬件和軟件結(jié)構(gòu)與數(shù)據(jù)傳輸?shù)姆绞健?/p>本文引用地址:http://butianyuan.cn/article/201610/308069.htm

在控制領(lǐng)域,想要對(duì)一個(gè)相對(duì)復(fù)雜的系統(tǒng)進(jìn)行有效控制,要在設(shè)備之間建立一個(gè)相互聯(lián)絡(luò)和溝通的機(jī)制,計(jì)算機(jī)科學(xué)里稱這種聯(lián)絡(luò)機(jī)制為“接口(Interface)”。譬如,當(dāng)我們需要打印一份文件時(shí),首先主機(jī)需要與打印機(jī)之間要建立聯(lián)系,然后才能向打印機(jī)發(fā)送數(shù)據(jù)。那么,這是怎樣一個(gè)過(guò)程呢?

握手信號(hào),聯(lián)系主機(jī)與外設(shè)的紐帶

計(jì)算機(jī)接口的主要功能就是使數(shù)據(jù)通過(guò)接口使之能夠在不同模塊或系統(tǒng)間自由流動(dòng),達(dá)到數(shù)據(jù)共享的目的。在過(guò)去很長(zhǎng)一個(gè)時(shí)期內(nèi),主機(jī)與打印機(jī)之間是通過(guò)并行口連接起來(lái)的,現(xiàn)在針式打印機(jī)仍然使用并行口,激光打印機(jī)和一部分噴墨打印機(jī)已經(jīng)采用USB接口了。先來(lái)看看并行口是怎樣進(jìn)行數(shù)據(jù)交換的。

圖1 并行口連接器

所謂并行口,是指數(shù)據(jù)在多條信號(hào)線上同時(shí)進(jìn)行傳送。標(biāo)準(zhǔn)的并行口為8位,也就是說(shuō)只有8條數(shù)據(jù)線。那么,標(biāo)準(zhǔn)的并行口為何定義了25個(gè)針腳呢?原來(lái),除了8根數(shù)據(jù)線,還有一系列的命令線、狀態(tài)信號(hào)線和接地線(圖1)。其中的命令線由主機(jī)發(fā)往打印機(jī),而狀態(tài)信號(hào)線則由打印機(jī)反饋給主機(jī)。命令線與狀態(tài)線之間往往是成對(duì)出現(xiàn)的——一條命令線對(duì)應(yīng)一條狀態(tài)線,彼此接頭的兩個(gè)信號(hào)則被形象地稱作握手(Handshaking)信號(hào)。

表1 SPP模式下并行口信號(hào)定義

通過(guò)握手信號(hào),主控端可獲得被控端的狀態(tài)信息,從而決定下一步做什么了。譬如,當(dāng)用戶需要打印文件時(shí),會(huì)向打印機(jī)發(fā)出nSELECT命令,如果打印機(jī)電源已經(jīng)打開,則通過(guò)SELECT信號(hào)線傳回“在線”狀態(tài)信號(hào)。接下來(lái),主機(jī)向打印機(jī)傳輸nSTORBE信號(hào),同時(shí)將存放數(shù)據(jù)的發(fā)送到數(shù)據(jù)線上,一旦BUSY信號(hào)為低電平,則執(zhí)行數(shù)據(jù)傳輸。此時(shí),打印機(jī)輸出nACK信號(hào),表示完成了一個(gè)字節(jié)的數(shù)據(jù)傳輸任務(wù),告訴主機(jī)可以開始傳輸下一個(gè)字節(jié)了(圖2)。

圖2 并行口數(shù)據(jù)傳輸時(shí)序圖

如果在打印過(guò)程中紙張用完,打印機(jī)發(fā)出缺紙信號(hào),主機(jī)收到這個(gè)信號(hào)后,會(huì)在顯示屏上顯示出對(duì)應(yīng)的信息,以通知用戶放入紙張。有了這樣一個(gè)機(jī)制,機(jī)器之間便可以自動(dòng)地進(jìn)行各種工作。

采用同步通信建立聯(lián)系主機(jī)與外設(shè)的紐帶

握手信號(hào)的另一用途是對(duì)被控設(shè)備進(jìn)行故障診斷。譬如電腦在啟動(dòng)過(guò)程中會(huì)向打印機(jī)發(fā)出控制命令nINT讓打印機(jī)復(fù)位,如果應(yīng)答信號(hào)nERROR為高電平,則說(shuō)明打印機(jī)功能正常,否則意味著打印機(jī)出錯(cuò)了。

握手信號(hào)是聯(lián)系主機(jī)與外設(shè)的紐帶,通過(guò)握手信號(hào)你來(lái)我往的過(guò)程,主機(jī)便可獲得外設(shè)必要信息,從而為數(shù)據(jù)傳輸做好準(zhǔn)備。與并行口一樣,標(biāo)準(zhǔn)串行口RS-232C也提供了握手信號(hào)。

握手信號(hào)是聯(lián)系主機(jī)與外設(shè)的紐帶,主機(jī)通過(guò)握手信號(hào)獲得外設(shè)必要信息,為數(shù)據(jù)傳輸做好準(zhǔn)備。那么,握手信號(hào)是不是在所有的計(jì)算機(jī)接口中都是必須的呢?回答是否定的。在鼠標(biāo)和鍵盤使用PS/2接口中,就沒有握手信號(hào)。鍵盤和鼠標(biāo)也需要跟主機(jī)之間進(jìn)行數(shù)據(jù)傳輸,沒有握手信號(hào),這些設(shè)備又是怎樣與主機(jī)建立聯(lián)系的呢?

我們先考察一下PS/2鼠標(biāo)端口(圖3)。PS/2端口用作鼠標(biāo)接口時(shí),只用6個(gè)插針中的4個(gè),Pin1用于傳送數(shù)據(jù),Pin3接地,Pin4向鼠標(biāo)供電,Pin5為鼠標(biāo)提供時(shí)鐘信號(hào)。與串行口、并行口相比,PS/2接口沒有握手信號(hào),但是有時(shí)鐘信號(hào),兩者的差別就在這里。

圖3 PS/2鼠標(biāo)接口

難道說(shuō),時(shí)鐘信號(hào)能夠代替握手信號(hào)的一些功能嗎?也不可以這么說(shuō)。合理的解釋是,這是兩種完全不同的通信方式。并行口和串行口使用的通信方式稱作“異步通信”,而PS/2接口則使用“同步通信”。

通信接口中是否使用時(shí)鐘信號(hào)是區(qū)別同步通信還是異步通信的標(biāo)志,同步通信的雙方使用同一個(gè)時(shí)鐘,而異步通信中無(wú)須這么做。盡管如此,無(wú)論同步通信還是異步通信,通信雙方都必須相互協(xié)調(diào),以一定的約定(協(xié)議)保持雙方同步,否則就會(huì)造成數(shù)據(jù)的錯(cuò)誤與混亂。

在異步通信方式中,收發(fā)雙方取得同步的辦法是采用在字符格式中設(shè)置起始位和停止位。在一個(gè)有效字符正式發(fā)送前,先發(fā)送一個(gè)起始位,而在字符結(jié)束時(shí)再發(fā)送一個(gè)停止位。接收器不斷地檢測(cè)或監(jiān)視線路上信號(hào)的變化,當(dāng)檢測(cè)到有起始位時(shí),便知道緊隨其后的是有效字符位的到來(lái),這才開始接收字符;當(dāng)檢測(cè)到停止位時(shí),便停止接收。使用該方式進(jìn)行通信時(shí),發(fā)送器與接收器不需要相同的時(shí)鐘,所以稱之為異步通信。

而在同步通信方式中,傳輸信息的每一位都必須在收發(fā)兩端嚴(yán)格保持同步,即所謂的“位同步”。因此,在同步通信中,收發(fā)兩端需要同一個(gè)時(shí)鐘源作為同步信號(hào)。

進(jìn)行同步傳送時(shí),發(fā)送端須先發(fā)送一個(gè)同步字符去通知接收端串行數(shù)據(jù)的第一位何時(shí)到達(dá),接著便以連續(xù)的形式發(fā)送信息,傳輸效率較高。而異步通信每傳送一個(gè)字符要增加大約20%的附加信息位,傳輸效率較低。

同步通信除了具有通信效率高的優(yōu)點(diǎn)之外,接口電路的結(jié)構(gòu)也比較簡(jiǎn)單,而且更加易于管理。正因?yàn)槿绱?,同步通信的?yīng)用也十分廣泛。SMBus(System Management Bus,系統(tǒng)管理總線)就是一種同步通信接口,它只有兩根信號(hào)線:一根雙向數(shù)據(jù)線和一根時(shí)鐘信號(hào)線。Windows中顯示的各種設(shè)備的制造商名稱和型號(hào)等信息,都是通過(guò)SMBus總線收集的。

圖4 基于SMBus的CPU溫度監(jiān)控電路

SMBus的數(shù)據(jù)傳輸率為100kbps,雖然速度較慢,卻以其結(jié)構(gòu)簡(jiǎn)潔造價(jià)低廉的特點(diǎn),成為業(yè)界普遍歡迎的接口標(biāo)準(zhǔn)。主板監(jiān)控系統(tǒng)中傳送各種傳感器的測(cè)量結(jié)果,以及BIOS向監(jiān)控芯片發(fā)送命令,都是利用SMBus實(shí)現(xiàn)的。PCI插槽上也給SMBus預(yù)留了兩個(gè)引腳(A40為SMBus 時(shí)鐘線,A41為SMBus 數(shù)據(jù)線),以便于PCI接口卡與主板設(shè)備之間交換信息。

USB接口是怎樣進(jìn)行通信的呢?

USB接口中既沒有握手信號(hào),也沒有時(shí)鐘信號(hào),它是怎樣進(jìn)行通信的呢?

我們已經(jīng)知道,傳統(tǒng)的串行口、并行口通過(guò)握手信號(hào)進(jìn)行通信,這些接口通常通過(guò)握手信號(hào)來(lái)聯(lián)絡(luò)主機(jī)和外設(shè)。我們也已經(jīng)知道,通信雙方可以同步或異步兩種方式進(jìn)行通信,兩者最大的區(qū)別是,同步通信接口中有時(shí)鐘信號(hào)線。

USB接口應(yīng)用很廣??墒?,USB接口中既沒有握手信號(hào),也沒有時(shí)鐘信號(hào),它是怎樣在主機(jī)與外設(shè)之間建立聯(lián)系的呢?又是如何交換數(shù)據(jù)的呢?為了深入理解USB接口的通信過(guò)程,先介紹USB的硬件和軟件結(jié)構(gòu)。

從物理結(jié)構(gòu)上,USB系統(tǒng)是一個(gè)星形結(jié)構(gòu)。USB系統(tǒng)包含三類硬件設(shè)備: USB主機(jī)(USB HOST)、 USB設(shè)備(USB DEVICE)和USB集線器(USB HUB)。USB總線上的物理連接是一個(gè)分層的星形拓?fù)?,處于每個(gè)星形拓?fù)渲醒氲氖荋UB集線器,在主機(jī)與HUB之間,HUB與HUB之間,HUB與設(shè)備之間都是點(diǎn)對(duì)點(diǎn)的連接。

圖5 USB拓?fù)浣Y(jié)構(gòu)

USB HOST對(duì)USB系統(tǒng)進(jìn)行管理、每毫秒產(chǎn)生一幀數(shù)據(jù)、發(fā)送配置請(qǐng)求對(duì)USB設(shè)備進(jìn)行配置、管理和恢復(fù)總線上的錯(cuò)誤。 USB HUB用于設(shè)備擴(kuò)展連接,所有USB DEVICE都連接在USB HUB的端口上。USB DEVICE接收USB總線上的所有數(shù)據(jù)包,通過(guò)數(shù)據(jù)包的地址域來(lái)判斷是不是發(fā)給自己的數(shù)據(jù)包:若地址不符,則簡(jiǎn)單地丟棄該數(shù)據(jù)包;若地址相符,則通過(guò)響應(yīng)USB HOST的數(shù)據(jù)包與USB HOST進(jìn)行數(shù)據(jù)傳輸。

從邏輯結(jié)構(gòu)上看,每個(gè)USB邏輯設(shè)備都直接與USB HOST進(jìn)行數(shù)據(jù)傳輸。與傳統(tǒng)接口以硬件手段實(shí)現(xiàn)握手的方法不同,USB接口使用“軟握手”方法。

USB的軟握手機(jī)制是透過(guò)三個(gè)層次的驅(qū)動(dòng)程序?qū)崿F(xiàn)的,在這中間起到關(guān)鍵作用的是設(shè)備驅(qū)動(dòng)程序,該程序在主機(jī)與設(shè)備之間建立起至少一個(gè)管道。管道有兩種類型:流管道和消息管道。其中有一個(gè)最重要的消息管道是“缺省控制管道”,這個(gè)管道在設(shè)備一加電的時(shí)候就存在了,它提供設(shè)備的配置和狀態(tài)等信息。主機(jī)與設(shè)備之間的聯(lián)絡(luò)就是通過(guò)消息管道實(shí)現(xiàn)的。

圖6 USB軟件結(jié)構(gòu)

協(xié)議棧驅(qū)動(dòng)程序的主要作用是將設(shè)備與相應(yīng)的設(shè)備驅(qū)動(dòng)程序連接起來(lái)。因?yàn)閁SB支持的設(shè)備很多,而每個(gè)具體的設(shè)備都有自己對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序。對(duì)于某一具體設(shè)備來(lái)說(shuō),使用哪個(gè)驅(qū)動(dòng)來(lái)管理,就要由協(xié)議棧驅(qū)動(dòng)程序通過(guò)讀取設(shè)備描述符進(jìn)行挑選。選擇好驅(qū)動(dòng)程序之后,協(xié)議棧驅(qū)動(dòng)程序還要給USB設(shè)備分配地址。

管道建立起來(lái)之后,數(shù)據(jù)的傳輸控制則由USB接口驅(qū)動(dòng)程序負(fù)責(zé)完成了。在這里,主機(jī)占有絕對(duì)主導(dǎo)權(quán),設(shè)備只能是“聽命令行事”。設(shè)備發(fā)生事件時(shí)通過(guò)消息管道報(bào)告給主機(jī),主機(jī)伺機(jī)向設(shè)備發(fā)送命令,開通流管道,發(fā)送或接收數(shù)據(jù)包。主機(jī)與設(shè)備之間以數(shù)據(jù)數(shù)據(jù)包的形式進(jìn)行傳送,顯然這與網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)姆绞较嗤?,是一種異步數(shù)據(jù)傳輸模式。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉