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