1 概述
計(jì)算機(jī)通信是指計(jì)算機(jī)與外界的信息傳輸,既包括計(jì)算機(jī)與計(jì)算機(jī)之間的傳輸,也包括計(jì)算機(jī)與外部設(shè)備,如U盤、打印機(jī)和磁盤等設(shè)備之間的傳輸。在通信領(lǐng)域內(nèi),根據(jù)每次傳送的數(shù)據(jù)位數(shù),計(jì)算機(jī)通信可分為:并行通信和串行通信。
串行通信是指計(jì)算機(jī)主機(jī)與外設(shè)之間以及主機(jī)系統(tǒng)與主機(jī)系統(tǒng)之間數(shù)據(jù)的串行傳送。使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別適用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。
2 通信基礎(chǔ)
2.1 串行通信與并行通信
串行通信是通過一根數(shù)據(jù)線,一個(gè)bit一個(gè)bit地傳輸數(shù)據(jù),且每個(gè)bit表示的值為0或1,信號(hào)線分為RXD(數(shù)據(jù)接收)、TXD(數(shù)據(jù)發(fā)送)兩根如圖 1所示。具有速度慢、信號(hào)線少、成本低的特點(diǎn),適合遠(yuǎn)距離、低速率的數(shù)據(jù)傳輸。常見的串行通信應(yīng)用包括USB、SATA、以太網(wǎng)口、COM(RS232/RS485/RS422)等。
圖 1 串行通信
并行通信是通過數(shù)據(jù)線,一次傳輸和接收多個(gè)bit數(shù)據(jù),如圖 2所示,每個(gè)bit的數(shù)據(jù)都有對(duì)應(yīng)的數(shù)據(jù)線進(jìn)行傳輸,傳輸一次即可完成以個(gè)8個(gè)數(shù)據(jù)bit即一個(gè)Byte(字節(jié))的數(shù)據(jù)以及1個(gè)校驗(yàn)bit數(shù)據(jù),實(shí)際應(yīng)用中,有可能不是8bit數(shù)據(jù),而是更多bit數(shù)據(jù),如32bit、64bit等,但原理都是相同的,計(jì)算機(jī)內(nèi)部的總線結(jié)構(gòu)(PCI總線、PCIe總線、以及以前的并口硬盤、光驅(qū)等)就是典型的并行通信。并行通信具有傳輸效率高、使用信號(hào)線多、成本高、信號(hào)間電容會(huì)引起串?dāng)_,不適合遠(yuǎn)距離傳輸,一般用于外設(shè)與計(jì)算機(jī)終端設(shè)備間近距離、大量和快速的傳輸。
圖 2 并行通信
2.2 串行通信工作方式
計(jì)算機(jī)是以并行的方式來處理數(shù)據(jù)的,通過串行發(fā)送數(shù)據(jù)時(shí)候,先由具有幾位(8/16/32/64位)總線的計(jì)算機(jī)內(nèi)的發(fā)送設(shè)備,將幾位(8/16/32/64位)并行數(shù)據(jù)經(jīng)并——串轉(zhuǎn)換硬件轉(zhuǎn)換成串行方式,再逐位經(jīng)數(shù)據(jù)線到達(dá)接收站的設(shè)備中,并在接收端將數(shù)據(jù)從串行方式重新轉(zhuǎn)換成并行方式,以供接收方使用,如圖 3所示。串行通信時(shí),數(shù)據(jù)的發(fā)送與接收需要時(shí)鐘進(jìn)行控制。
圖 3 計(jì)算機(jī)數(shù)據(jù)傳輸基本原理
根據(jù)串行通信時(shí),收發(fā)雙方的始終是否相同,可以分為:異步通信和同步通信。
2.3 異步通信
如圖 4所示,發(fā)送與接收方各自配置有獨(dú)立的時(shí)鐘進(jìn)行控制,叫異步串行通信。
圖 4 異步串行通信
異步串行通信時(shí),數(shù)據(jù)是以數(shù)據(jù)幀(每個(gè)數(shù)據(jù)幀傳送一個(gè)字符)來進(jìn)行傳輸?shù)模惒酵ㄐ艛?shù)據(jù)幀結(jié)構(gòu)如下圖 5所示。
圖 5 異步通信數(shù)據(jù)幀格式
-
以字符為單位進(jìn)行信息傳送,每次傳輸一個(gè)字符即一個(gè)數(shù)據(jù)幀;
-
每個(gè)字符都是以起始位開始(“0”),以停止位(“1”,停止位為1~2位)結(jié)束;
-
校驗(yàn)位分為奇校驗(yàn)(數(shù)據(jù)位加上這一位后,“1”的個(gè)數(shù)為奇數(shù))與偶校驗(yàn)(數(shù)據(jù)位加上這一位后,“1”的個(gè)數(shù)為偶數(shù)),在通信過程中也可以不使用校驗(yàn)位;
-
字符之間為空閑位,沒有嚴(yán)格的定時(shí)要求,因此,空閑位可以為多位;
案例1:某計(jì)算機(jī)采用異步串行通信方式,數(shù)據(jù)格式為:8位數(shù)據(jù)位,奇校驗(yàn),2位停止位。試畫出傳送字符“A”時(shí)通信線路上的波形。
字符“A”的ASCLL碼為“65H”換成二進(jìn)制位0110 0101,從低位開始傳輸1010 0110。加上1位起始位“0”,后加奇校驗(yàn)位“1”(由于數(shù)據(jù)位“1”的個(gè)數(shù)為4個(gè),偶數(shù)個(gè),傳輸采用奇校驗(yàn),因此需要填“1”,如果采用偶校驗(yàn)則填“0”),再加上2位停止位“11”。整個(gè)數(shù)據(jù)幀為0 1010 0110 1 11,波形如下
圖 6 “A”數(shù)據(jù)幀
異步通信中,在異步通行中有兩個(gè)比較重要的指標(biāo):字符幀格式和波特率。數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設(shè)備逐幀接收。 發(fā)送端和接收端可以由各自的時(shí)鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘源彼此獨(dú)立,互不同步。接收端檢測到傳輸線上發(fā)送過來的低電平邏輯'0'(即字符幀起始位)時(shí),確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當(dāng)接收端收到字符幀中的停止位時(shí),就知道一幀字符已經(jīng)發(fā)送完畢。
2.4 同步通信
如圖 7所示,發(fā)送與接收由同一個(gè)時(shí)鐘控制,叫同步串行通信。
圖 7 同步串行通信
同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式, 一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個(gè)數(shù)據(jù)字符。
它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符(CRC)組成。 其中同步字符位于幀開頭,用于確認(rèn)數(shù)據(jù)字符的開始。數(shù)據(jù)字符在同步字符之后,個(gè)數(shù)沒有限制,由所需傳輸?shù)臄?shù)據(jù)塊長度來決定;校驗(yàn)字符有 1 到 2 個(gè),用于接收端對(duì)接收到的字符序列進(jìn)行正確性的校驗(yàn)。 同步,通信的缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘保持嚴(yán)格的同步。
同步串行通信不使用起始位與停止位來標(biāo)識(shí)字符傳輸?shù)拈_始和結(jié)束,而使用特定的幀頭與幀尾,以固定的時(shí)鐘節(jié)拍來發(fā)送數(shù)據(jù)信號(hào),每個(gè)字符間的時(shí)間間隔是相等的,而且每個(gè)字符中各相鄰位代碼間的時(shí)間間隔也是固定的,每個(gè)字符也可以對(duì)應(yīng)5~8位。同步串行通信現(xiàn)階段主要包括兩類通信種類:
1)面向字符(Character Oriented)的同步通信:
一個(gè)數(shù)據(jù)幀由若干個(gè)字符組成(IBM的BSC協(xié)議);
圖 8 BSC協(xié)議數(shù)據(jù)幀格式
該協(xié)議規(guī)定了10個(gè)特殊字符(稱為控制字符)作為信息傳輸?shù)臉?biāo)志,其格式如圖 8所示:
-
SYN:同步字符(Synchronous character),每幀可加1個(gè)(單同步)或2個(gè)(雙同步)同步字符;
-
SOH:標(biāo)題開始(Start of Header);
-
標(biāo)題:Header,包含源地址(發(fā)送方地址)、目的地址(接收方地址)、路由指示;
-
STX:正文開始(Start of Text);
-
數(shù)據(jù)塊:正文(Text),由多個(gè)字符組成;
-
ETB:塊傳輸結(jié)束(end of transmission block),標(biāo)識(shí)本數(shù)據(jù)塊結(jié)束;
-
ETX:全文結(jié)束(end of text),(全文分為若干塊傳輸);
-
塊校驗(yàn):對(duì)從SOH開始;
-
直到ETB/ETX字段的檢驗(yàn)碼;
2)面向比特(Bit-Oriented)的同步通信:
一個(gè)數(shù)據(jù)幀由任意位bit組成,主要用于二進(jìn)制的傳輸;典型的面向位的同步協(xié)議如國際標(biāo)準(zhǔn)化組織(ISO)的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。
圖 9 SDLC數(shù)據(jù)格式
面向比特時(shí),將數(shù)據(jù)塊看作數(shù)據(jù)流,
-
F場:開始于結(jié)束標(biāo)志;用序列01111110作為開始和結(jié)束標(biāo)志。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時(shí)引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中每出現(xiàn)5個(gè)連續(xù)的“1”就插入一個(gè)附加的“0”;接收方則每檢測到5個(gè)連續(xù)的“1”并且其后有一個(gè)“0”時(shí),就刪除該“0”。
-
A場:地址,規(guī)定接收方可為 8的整倍位。接收方檢查每個(gè)地址字節(jié)第 1位,如果為 '0' ,則后邊跟著另一個(gè)地址字節(jié)。若為 '1' ,則該字節(jié)為最后一個(gè)地址。
-
C場:控制場。指示信息場的類型,8位或16位。若第1字節(jié)的第1位為0,則還有第2個(gè)字節(jié)也是控制場。
-
I場:信息場。要傳送的數(shù)據(jù)
-
FC場:幀校驗(yàn)場。16位循環(huán)冗余校驗(yàn)碼CRC。除F場和自動(dòng)插入的'0'位外,均參加CRC計(jì)算。
2.5 通信模式
串行通信通常是在兩個(gè)站點(diǎn)(點(diǎn)對(duì)點(diǎn))之間進(jìn)行數(shù)據(jù)傳輸,按照數(shù)據(jù)流的傳輸方向課分成三種傳送模式。
單工通信模式
使用一根數(shù)據(jù)線,只允許在一個(gè)方向上傳送數(shù)據(jù),主要表現(xiàn)在一端只發(fā)送,另一段只能接受,如我們的電視機(jī),以及我們的遠(yuǎn)程控制(門禁、智能開關(guān)等)。
圖 10 單工通信
半雙工方式
使用同一根數(shù)據(jù)線,即可發(fā)送數(shù)據(jù)又可接收數(shù)據(jù),但同一時(shí)刻只能進(jìn)行一個(gè)方向的傳送,如圖 11所示。半雙工通信每端需要一個(gè)收/發(fā)切換電子開關(guān),在切換時(shí),也會(huì)產(chǎn)生延遲。如我們的對(duì)講機(jī)、USB、打印機(jī)串口外設(shè)等。
圖 11 半雙工通信
全雙工方式
在兩個(gè)站點(diǎn)之間傳輸數(shù)據(jù)中,數(shù)據(jù)的發(fā)送和接收分別在兩根數(shù)據(jù)線上同時(shí)進(jìn)行,通信雙方都能在同一時(shí)刻進(jìn)行數(shù)據(jù)的發(fā)送和接收操作如圖 12所示。通常在交互式應(yīng)用、遠(yuǎn)程檢測控制場景。如電話通信、上網(wǎng)(登錄某個(gè)網(wǎng)站,進(jìn)行上傳、下載文件)、兩臺(tái)計(jì)算機(jī)通過網(wǎng)線傳送文件電影等。
圖 12 全雙工通信
異步通信和同步通信的比較
-
異步通信簡單,雙方時(shí)鐘可允許一定誤差。同步通信較復(fù)雜,雙方時(shí)鐘的允許誤差較小;
-
異步通信只適用于點(diǎn)←→點(diǎn),同步通信可用于點(diǎn)←→多;
-
通信效率:異步通信低,同步通信高。
2.6 傳輸速率
傳輸速率是指每秒鐘傳送的二進(jìn)制位數(shù),通常稱為波特率(Band Rate)。
即:1波特 = 1bit/s (位/秒)
國際上規(guī)定了標(biāo)準(zhǔn)波特率系列,最常用的標(biāo)準(zhǔn)波特率是:110、300、600、1200、l800、2400、4800、9600、115200、19200波特等。
3 RS232串行接口標(biāo)準(zhǔn)
3.1 RS232串口簡介
RS232串口是美國電子工業(yè)協(xié)會(huì)EIA于1962年發(fā)布,并于1969年修訂的串行接口標(biāo)準(zhǔn),已成為國際上通用的標(biāo)準(zhǔn),標(biāo)準(zhǔn)代號(hào)EIA-RS-232C。RS是英文“推薦標(biāo)準(zhǔn)”的縮寫,232為標(biāo)識(shí)號(hào),C表示修改次數(shù)。該標(biāo)準(zhǔn)定義了DTE(Data Terminal Equipment,數(shù)據(jù)終端設(shè)備)與DCE(Data Communication Equipment,數(shù)據(jù)通信設(shè)備)兩者間按串行傳輸信息的接口的機(jī)械特性、電氣特性、功能特性。標(biāo)準(zhǔn)規(guī)定采用DB25連接器進(jìn)行通信連接,IBM將RS232簡化成DB9連接器,DB9連接器由于使用更簡單,得到更普遍的應(yīng)用。
標(biāo)準(zhǔn)規(guī)定DB25或DB9連接器公頭做為DTE設(shè)備端接口插座DB25或DB9連接器母頭做為DCE設(shè)備端接口插座,如圖 13所示。
圖13 連接器示意圖
3.2 機(jī)械特性
EIA-RS-232C標(biāo)準(zhǔn)對(duì)針連接器的引腳定義做出了規(guī)定,如圖 14所示。
圖 14 針連接器(公頭)引腳定義
3.3 功能特性
RS-232C最初設(shè)計(jì)為計(jì)算機(jī)(稱為數(shù)據(jù)終端設(shè)備DTE--Data Terminal Equipment和數(shù)據(jù)通信設(shè)備DCE--Data Communication Equipment(如MODEM)的連接,如圖 15所示。
圖 15 通過調(diào)制解調(diào)器連接
通過MODEM接入電話網(wǎng)絡(luò),可連接世界上任何接入電話網(wǎng)絡(luò)的主機(jī),該種網(wǎng)絡(luò)連接方法在90年代較為常見,作者在08年在某軍工企業(yè)工作時(shí)候,也曾使用該網(wǎng)絡(luò)連接方法,與軍方某研究所人員進(jìn)行文件傳輸,這種點(diǎn)對(duì)點(diǎn)的撥號(hào)連接,可不經(jīng)過第三方服務(wù)器即可完成文件傳輸,相關(guān)方法步驟如下:
1)通過串口線把臺(tái)式機(jī)上的COM1串口與串口撥號(hào)貓(某寶上搜尋56K撥號(hào)貓應(yīng)能找到);
2)把座機(jī)的電話線拔掉,插到撥號(hào)貓的電話口上,對(duì)端計(jì)算機(jī)也照此連接;
3)線路連接好后,可通過超級(jí)終端軟件進(jìn)行撥號(hào)連接,打開超級(jí)終端,在'待撥電話詳細(xì)資料'中選擇國家代碼為中國(86),輸入朋友的電話號(hào)碼和區(qū)號(hào)(如果同城就直無須國家代碼與區(qū)號(hào));“確定”后彈出一個(gè)'連接'對(duì)話框,這時(shí)不用理它,單擊'取消',這樣'超級(jí)終端'的配置工作就算完成了。當(dāng)然,另一臺(tái)遠(yuǎn)程機(jī)器也必須進(jìn)行同樣的配置,只不過他填的是我的區(qū)號(hào)與電話號(hào)碼。
RS-232C標(biāo)準(zhǔn)規(guī)定的數(shù)據(jù)傳輸速率為每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特 。
現(xiàn)階段,通過電話網(wǎng)絡(luò)進(jìn)行撥號(hào)網(wǎng)絡(luò)連接的應(yīng)用已很少見,工業(yè)引用領(lǐng)域,更多常見的應(yīng)用場景的是近距離(<15m)DTE設(shè)備與DTE設(shè)備直連,如計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備(路由器、交換機(jī)等)管理口連接等。在應(yīng)用時(shí),則需要把收發(fā)信號(hào)進(jìn)行交叉連接,如圖 16所示。
圖 16 DTE設(shè)備與DTE設(shè)備連接
3.4 電氣特性
EIA-RS-232C標(biāo)準(zhǔn)規(guī)定:
邏輯“1”信號(hào),電平在 –3V ~ -15V 之間;
邏輯“0”信號(hào),電平在 +3V ~ +15V 之間;
在實(shí)際應(yīng)用中,常采用±12 V或±15V。RS-232C可承受±25 V的信號(hào)電壓。另外,要注意RS-232C數(shù)據(jù)線TXD和RXD使用負(fù)邏輯,即高電平表示邏輯0,用符號(hào)SPACE(空號(hào))表示;低電平表示邏輯1,用符號(hào)MARK(傳號(hào))表示。其它控制線均為正邏輯,高電平有效,為ON狀態(tài);低電平無效,為OFF狀態(tài)。
在串口電路設(shè)計(jì)時(shí),由于發(fā)送器/接收器芯片使用TTL電平,但RS-232C卻使用上述EIA電平,所以為滿足EIA電氣特性,必須在發(fā)送器/接收器與RS-232C接口之間使用轉(zhuǎn)換器件。如SN75150、 MC1488等芯片完成TTL電平到EIA電平的轉(zhuǎn)換,而SN75154、MCI489等芯片可完成EIA電平到TTL電平的轉(zhuǎn)換。
電平轉(zhuǎn)換器不僅可以由晶體管分立元件構(gòu)成,也可以直接使用集成電路。目前美信的MAX232芯片使用較多,該芯片使用單端+5V電源供電實(shí)現(xiàn)電平轉(zhuǎn)換。