天天看點

序列槽通信基礎(二)——傳輸方式(方向)、錯誤校驗、傳輸速率與傳輸距離一、序列槽通信簡介二、串行通信的傳輸方向三、串行通信的錯誤校驗四、傳輸速率與傳輸距離

一、序列槽通信簡介

序列槽通信,顧名思義也就是利用串行接口進行通信。串行接口指序列槽按位(bit)發送和接收位元組。盡管比按位元組(byte)傳輸的并行通信慢,但是序列槽可以在使用一根線發送資料的同時用另一根線接收資料。

序列槽通信中比較重要的參數包括波特率、資料位、停止位及校驗位,通訊雙方需要約定一緻的資料格式才能正常收發資料。串行通訊根據通信雙方的分工和信号傳輸方向可以進一步分為單工、半雙工和全雙工三種。在序列槽通信中,常用的協定包括RS-232、RS-422和RS-485。它們的主要差別在于其各自的電平範圍不相同。

二、串行通信的傳輸方向

資料通信中,資料線上路上的傳送方式(方向)可以分為:單工通信、半雙工通信和全雙工通信三種。

1 單工(Simplex Communication )

單工模式通信使用一根傳輸線,其資料傳輸是單向的,僅能沿一個方向,不能實作反向傳輸,即通信雙方發送端和接收端的身份是固定的。通信雙方中,一方固定為發送端,一方則固定為接收端。

  • 例子:早期的電視,廣播,列印機

2 半雙工(Half Duplex Communication)

半雙工模式通信一般使用一根(或一對)傳輸線,資料可以沿兩個方向傳輸,既可以發送資料又可以接收資料,但不能同時進行發送和接收,同一時刻隻允許單方向傳送。是以又被稱為雙向交替通信。資料傳輸允許資料在兩個方向上傳輸,但是,在任何時刻隻能由其中的一方發送資料,另一方接收資料。

半雙工模式收發兩端都有發送器和接收器,通過收/發開關轉接到通信線上。半雙工通信中每端需有一個收發切換電子開關,若要改變傳輸方向,需由開關進行切換,通過切換來決定資料向哪個方向傳輸。由于要頻繁切換信道方向,會産生時間延遲,故傳輸效率低些,但可以節約傳輸線路。半雙工方式适用于終端與終端之間的會話式通信。

  • 例子:對講機,RS485

3 全雙工(Full Duplex Transmission)

全雙工模式通信指資料由兩根不同的資料線(可能還需要控制線、狀态線、地線)傳送,可以同時進行雙向傳輸。即資料的發送和接收分流,通信雙方都能在同一時刻進行發送和接收操作。從功能角度方面講,全雙工通信相當于兩個單工通信方式的結合,它要求發送裝置和接收裝置都有獨立的接收和發送能力。是以,通信系統的每一端都設定了發送器和接收器,來控制資料同時在兩個方向上傳送。

與半雙工模式相比,全雙工可同時進行資料收發,且無需進行方向的切換,沒有切換操作所産生的時間延遲。 顯然,在其它參數都一樣的情況下,全雙工比半雙工傳輸速度要快,資訊傳輸效率要高。這對那些不能有時間延誤的互動式應用(例如遠端監測和控制系統)十分有利。

  • 例子:手機通話,RS422,RS232

三、串行通信的錯誤校驗

在通信過程中往往要對資料傳送的正确與否進行校驗。校驗是保證準确無誤傳輸資料的關鍵。常用的校驗方法有奇偶校驗、代碼和校驗及循環備援碼校驗。

(1)奇偶校驗

在發送資料時,資料位尾随的1位為奇偶校驗位(1或0)。

(2)常用算法校驗

代碼和校驗是發送方将所發資料塊求和(或各位元組異或),産生一個位元組的校驗字元(校驗和)附加到資料塊末尾。

(3)循環備援校驗

這種校驗是通過某種數學運算實作有效資訊與校驗位之間的循環校驗,常用于對存儲區的完整性、磁盤資訊的傳輸校驗等。

1 奇偶校驗

奇偶校驗指的是在發送資料時,利用資料中“1”的個數是奇數或偶數作為檢測錯誤的标志。通常在資料位後面設定1位奇偶校驗位(1或0),用它使這組代碼中“1”的個數為奇數或偶數。奇校驗時,資料中“1”的個數與校驗位“1”的個數之和應為奇數;偶校驗時,資料中“1”的個數與校驗位“1”的個數之和應為偶數。接收學符時,接收端對資料位“1”的個數進行校驗,若發現發送端結果與不一緻,則說明傳輸資料過程中出現了錯誤。此時接收端可以向發送端發送請求,要求重新發送一遍資料。

  • 奇校驗:此時奇偶校驗位的作用就是保證所有資料位加奇偶校驗位的所有比特位中值為1的比特位的個數為奇數。

    若資料位中共有奇數個值為1的比特位,則此時奇偶校驗位的值為0。

    若資料位中共有偶數個值為1的比特位,則此時奇偶校驗位的值為1。

  • 偶校驗:此時奇偶校驗位的作用就是保證所有資料位加奇偶校驗位的所有比特位中值為1的比特位的個數為偶數。

    若資料位中一共有奇數個值為1的比特位,則此時奇偶校驗位的值為1。

    若資料位中一共有偶數個值為1的比特位,則此時奇偶校驗位的值為0。

例子:

假設傳輸的資料位為01001100,如果是奇校驗,則奇校驗位為0(確定總共有奇數個1);如果是偶校驗,則偶校驗位為1(要確定總共有偶數個1)。

優缺點:

奇偶校驗的缺點很明顯,首先,它對錯誤的檢測機率大約隻有50%。因為隻有奇數個資料位發生變化能檢測到,如果偶數個資料位發生變化則無能為力了。另外,每傳輸一個位元組都要附加一位校驗位,對傳輸效率有較大影響。是以,在高速資料通訊中很少采用奇偶校驗。奇偶校驗可以發現錯誤,但不能糾正錯誤,也就是說它隻能告訴你出錯了,但不能告訴你怎麼出錯了,一旦發現錯誤,隻能重發。

奇偶校驗優點也很明顯,它很簡單,是以可以用硬體來實作,這樣可以減少軟體的負擔。是以,奇偶校驗也被廣泛的應用着。

2 常用算法校驗

常用算法校驗是指發送端将所發資料塊進行累加和校驗或異或校驗,在資料塊末尾附加一個位元組的校驗字元。接收端接收資料,同時對資料塊(除校驗位元組外)進行不進位求和或位元組異或,将所得的結果與發送端的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。

例子-累加和校驗:

累加和校驗:

要傳輸的資料為:01H、55H、D3H

則進行不進位累加的校驗和位元組為:29H,即01H+55H=56H,56H+D3H=129H,舍去進位1,得29H。

這裡 29H 就是前三個位元組的累加校驗和。接收端收到全部資料後對前三個資料進行同樣的累加計算,如果累加和與最後一個位元組相同的話就認為傳輸的資料沒有錯誤。

異或就是對資料逐一異或計算(異或結果與下一個資料異或)。即接收端将所有位元組(一般是兩個16進制的字元)按位異或後,得到校驗碼後與發送端異或碼的字元進行比較。相等即認為通信無錯誤,不相等則認為通信出錯。

優缺點:

累加和校驗由于實作起來非常簡單,也被廣泛的采用。雖然其檢錯率優于奇偶校驗,但這種校驗方式的檢錯能力也較為一般,例如累加的其中一個位元組多1,另一個位元組少1,累加和不變,将原本是錯誤的通訊資料誤判為正确資料。異或校驗同理。累加和校驗、異或校驗也不能糾正錯誤。

3 循環備援校驗

這種校驗是通過某種數學運算實作有效資訊與校驗位之間的循環校驗,常用于對磁盤資訊的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用于同步通信中。

循環備援碼校驗(Cyclical Redundancy Check, CRC)是利用除法和餘數的原理來做錯誤偵測的。實際應用時,發送裝置計算出CRC值并随資料一同發送給接收端RX,RX對收到的資料重新計算CRC并與收到的CRC值相比較,若兩個CRC值不同,則說明資料通信出現了錯誤,該資料包應該舍棄不用。

在遠距離資料通訊中,為確定高效而無差錯的傳送資料,必須對資料進行校驗控制,而CRC是對一個傳送資料塊進行校驗,是一種非常高效的差錯控制方法。目前,主流的CRC可以分為以下幾個标準:CRC-12碼;CRC-16碼;CRC-CCITT碼;CRC-32碼。

CRC-12碼通常用來傳送6-bit字元串。CRC-16及CRC-CCITT碼則用來傳送8-bit字元,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。CRC-32碼用途有限。

在資料存儲和資料通信領域,CRC無處不在:著名的通信協定X.25的FCS(幀檢錯序列)采用的是CRC/CCITT,ARJ/LHA等壓縮工具軟體采用的是CRC32,磁盤驅動器讀寫采用的日式CRC16,通常用到的圖像存儲格式GIF/TIFF等也是采用CRC作為檢錯手段的。

四、傳輸速率與傳輸距離

資料傳輸速率指通信線上傳輸資訊的速度,有比特率和波特率兩種表示方法。比特率也稱為信号速率,是指機關時間内所傳送的二進制位代碼的有效位數,以每秒多少比特計算,即bit/s;波特率是指調制速率,是脈沖信号經過調制後的傳輸速率,以波特(Baud)為機關,通常用于表示調制器之間傳輸信号的速率。

1 傳輸速率

比特率:每秒傳輸的二進制位數,也稱為信号速率,機關為比特每秒(bit/s,bps)。

波特率:每秒傳輸的碼元符号的個數(碼元傳輸速率),也稱為調制速率,機關是波特(B)。它是對符号傳輸速率的一種度量,它用機關時間内載波調制狀态改變的次數來表示,1波特即指每秒傳輸1個符号。通過不同的調制方法可以在一個符号上負載多個比特資訊。

比特率與波特的關系

即比特率在數值上和波特率有這樣的關系:

I = S ∗ l o g 2 N I=S*{log_2{N}} I=S∗log2​N

其中I為比特率,S為波特率,N為每個符号承載的資訊量(一個脈沖信号所表示的有效狀态),而 l o g 2 N {log_2{N}} log2​N以比特為機關。即波特率與比特率的關系:比特率=波特率*單個調制狀态對應的二進制位數。

一個以X波特傳送信号的線路,其傳送二進制資料的速率不一定是X比特/秒,因為每個碼元符号需要通過幾個比特來表示,是以運送一個符号等于運送了幾個比特。在二進制中脈沖(二電平)隻有兩種狀态0或1,即 n=“2”,也就是說,信号速率與調制速率是一緻的。如果使用多電平脈沖信号傳輸資訊,信号速率與調制速率就不一緻了。例如,若使用0、1、2、3、4、5、6、7共8個電平級,則需要,即3個比特來表示一個信号值,因而這種條件下比特率将是波特率的3倍。(當用二進制位表示一個碼元時與比特率相等)

例如假設資料傳送速率為120符号/秒(symbol/s)(也就是波特率為120Baud),又假設每一個符号為八相調制(單個調制狀态對應3個二進制位),則其傳送的比特率為(120symbol/s) * (3bit/symbol)=360bps。隻有在每個符号隻代表一個比特資訊的情況、或一些簡單的調制方式下,例如基帶二進制信号調制方式等,波特率與比特率才在數值上相等。 具體而言, 兩相調制(單個調制狀态對應1個二進制位)的比特率等于波特率;四相調制(單個調制狀态對應2個二進制位)的比特率為波特率的兩倍;八相調制(單個調制狀态對應3個二進制位)的比特率為波特率的三倍,依次類推。

在串行通信中,單個調制狀态對應的1個二進制位,是以比特率和波特率往往相同。可以用”波特率”來描述資料的傳輸速率,即每秒鐘傳送的二進制位數。它是衡量串行資料速度快慢的重要名額。典型的“波特率”是1200,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600等。有時也用”位周期”來表示傳輸速率,位周期是波特率的倒數。

舉例:RS485/RS232

假設目前“波特率”為9600,指每秒傳送9600個碼元符号,則此RS485/RS232的傳信率計算為 :

I = S ∗ l o g 2 N = 9600 ∗ l o g 2 2 I=S*{log_2{N}}=9600*log_2{2} I=S∗log2​N=9600∗log2​2=9600bit/s

通信線上所傳輸的字元資料(代碼)是逐位傳送的,1個字元由若幹位組成,每一位即是一個碼元。是以每秒鐘所傳輸的字元數(字元速率)和波特率是兩種概念。常有人把RS232的N誤以為是每個“符号”(symbol)所夾帶的資訊量,但實際上每個“位元”(bit)即為一個“符号”(symbol)。

在串行通信中,所說的傳輸速率是指波特率,而不是指字元速率。

如在異步串行通信中,傳輸速率是9600b,而每個字元格式包含10位(1個起始位、1個停止位、0個校驗位、8個資料位),這時每秒鐘傳送的字元數:9600/(1+8+0+1)=960個。

2 傳輸距離與傳輸速率的關系

串行通信直接傳送串行資訊位流的最大距離與傳輸速率和傳輸線的電氣特性有關。通信速率和通信距離這兩個方面是互相制約的,降低通信速率,可以提高通信距離。

串行通信中,資料位信号流在信号線上傳輸時,要引起畸變,畸變的大小與以下因素有關:

波特率——信号線的特征(頻帶範圍)

傳輸距離——信号的性質及大小(電平高低,電流大小)

當畸變較大時,接收方出現誤碼。

在規定的誤碼率下,當波特率、信号線、信号的性質及大小一定時,串行通信的傳輸距離就一定。為了加大傳輸距離,必須加數據機。

當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離随傳輸速率的增加而減小。當比特率超過1000 bps時,最大傳輸距離迅速下降,如9600 bps時最大距離下降到隻有76m(約250英尺)。

序列槽通訊的距離

經實測,液晶顯示屏控制 系統的RS232串行口在通訊波特率為28800bit/s時能夠穩定傳輸達300米以上(傳輸媒體為1箱五類線);當通訊距離大于 300米時,選擇RS485通訊接口的液晶顯示屏控制系統,此時隻須在計算機的RS232序列槽端加配一個RS232/485轉換器即可。

115200bps最好的距離在30-50米之間(和線、232晶片有關),再遠就有誤碼啦。15米還是很容易超的。232誰也不敢用300米的。

傳輸電纜長度

由RS-232C标準規定在碼元畸變小于4%的情況下,傳輸電纜長度應為50英尺,其實這個 4%的碼元畸變是很保守的,在實際應用中,約有99%的使用者是按碼元畸變10-20%的範圍工作的,是以實際使用中最大距離會遠超過50英尺。

傳輸距離

由裝置可提供端口的不同,故資料傳輸距離也不同。普通的RS232是常見的裝置端口,其連接配接距離隻有15米左右,如果連線裝置距離相當遠,則無法在使用RS232。采用RS424的裝置,它的連接配接距離可達1000米。但當多個裝置都是遠距離時,給每個裝置拉一條線會相當不友善,于是RS485便成為首選。RS485接口支援多個裝置同時挂在一根導線上,它的總連線距離也可達1000米,而且一路上所有的裝置都可以連接配接其上,相當友善。但它有一個限制:必須是半雙工通信方式,即在同一時刻隻能有一個裝置進行資料發送,而其他裝置隻能接收。要保證這個條件必須依靠軟體。

3、發送/接收時鐘

在串行傳輸過程中,二進制資料序列是以數字信号波形的形式出現的,如何對這些數字波形定時發送出去或接收進來,以及如何對發/收雙方之間的資料傳輸進行同步控制的問題就引出了發送/接收時鐘的應用。

在發送資料時,發送器在發送時鐘(下降沿)作用下将發送移位寄存器的資料按串行移位輸出;在接收資料時,接收器在接收時鐘(上升沿)作用下對來自通信線上串行資料,按位串行移入移位寄存器。可見,發送/接收時鐘是對數字波形的每一位進行移位操作,是以,從這個意義上來講,發送/接收時鐘又可叫做移位始終脈沖。另外,從資料傳輸過程中,收方進行同步檢測的角度來看,接收時鐘成為收方保證正确接收資料的重要工具。為此,接收器采用比波特率更高頻率的時鐘來提高定位采樣的分辨能力和抗幹擾能力。

  

發送/接收時鐘頻率與波特率的關系:發/收時鐘頻率 =n*(發/收波特率 )

4、波特率因子

在波特率指定後,輸入移位寄存器 / 輸出移位寄存器在接收時鐘 / 發送時鐘控制下,按指定的波特率速度進行移位。一般幾個時鐘脈沖移位一次。要求:接收時鐘/ 發送時鐘是波特率的 16 、 32 或 64 倍。波特率因子就是發送/接收 1 個資料( 1 個資料位)所需要的時鐘脈沖個數,其機關是個/位。如波特率因子為 16 ,則16 個時鐘脈沖移位 1 次。 例:波特率 =9600bps ,波特率因子 =32 ,則接收時鐘和發送時鐘頻率 =9600 × 32=297200Hz 。

參考:

【1】https://baike.baidu.com/item/%E6%B3%A2%E7%89%B9%E7%8E%87/2153185?fr=aladdin#reference-[3]-119333-wrap

【2】https://baike.baidu.com/item/%E7%A0%81%E5%85%83/10525003

【3】http://mayer.spaces.eepw.com.cn/articles/article/item/59707

繼續閱讀