在控制領(lǐng)域,想要對(duì)一個(gè)相對(duì)復(fù)雜的系統(tǒng)進(jìn)行有效控制,要在設(shè)備之間建立一個(gè)相互聯(lián)絡(luò)和溝通的機(jī)制,計(jì)算機(jī)科學(xué)里稱(chēng)這種聯(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ù)交換的。
[page]
采用同步通信建立聯(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)和鍵盤(pán)使用PS/2接口中,就沒(méi)有握手信號(hào)。鍵盤(pán)和鼠標(biāo)也需要跟主機(jī)之間進(jìn)行數(shù)據(jù)傳輸,沒(méi)有握手信號(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接口沒(méi)有握手信號(hào),但是有時(shí)鐘信號(hào),兩者的差別就在這里。
通信接口中是否使用時(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),這才開(kāi)始接收字符;當(dāng)檢測(cè)到停止位時(shí),便停止接收。使用該方式進(jìn)行通信時(shí),發(fā)送器與接收器不需要相同的時(shí)鐘,所以稱(chēng)之為異步通信。
而在同步通信方式中,傳輸信息的每一位都必須在收發(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è)備的制造商名稱(chēng)和型號(hào)等信息,都是通過(guò)SMBus總線收集的。
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è)備之間交換信息。
[page]
USB接口是怎樣進(jìn)行通信的呢?
USB接口中既沒(méi)有握手信號(hào),也沒(méi)有時(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接口中既沒(méi)有握手信號(hào),也沒(méi)有時(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)包含三類(lèi)硬件設(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)的連接。
從邏輯結(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è)管道。管道有兩種類(lèi)型:流管道和消息管道。其中有一個(gè)最重要的消息管道是“缺省控制管道”,這個(gè)管道在設(shè)備一加電的時(shí)候就存在了,它提供設(shè)備的配置和狀態(tài)等信息。主機(jī)與設(shè)備之間的聯(lián)絡(luò)就是通過(guò)消息管道實(shí)現(xiàn)的。
管道建立起來(lái)之后,數(shù)據(jù)的傳輸控制則由USB接口驅(qū)動(dòng)程序負(fù)責(zé)完成了。在這里,主機(jī)占有絕對(duì)主導(dǎo)權(quán),設(shè)備只能是“聽(tīng)命令行事”。設(shè)備發(fā)生事件時(shí)通過(guò)消息管道報(bào)告給主機(jī),主機(jī)伺機(jī)向設(shè)備發(fā)送命令,開(kāi)通流管道,發(fā)送或接收數(shù)據(jù)包。主機(jī)與設(shè)備之間以數(shù)據(jù)數(shù)據(jù)包的形式進(jìn)行傳送,顯然這與網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)姆绞较嗤且环N異步數(shù)據(jù)傳輸模式。
相關(guān)閱讀:
完美應(yīng)對(duì)!關(guān)于視音頻接口的EMI/EMC
超可靠防雷電路,RS-485接口暴露也不怕
熟練掌握它:USB接口數(shù)模轉(zhuǎn)換電路設(shè)計(jì)