5.1.3 同步通訊和非同步通訊
一、同步通訊和非同步通訊
序列通訊可以分為兩種型別,一種叫同步通訊,另一種叫非同步通訊。
同步通訊方式,是把許多字元組成一個資訊組,這樣,字元可以一個接一個地傳輸,但是,在每組資訊(通常稱為資訊幀)的開始要加上同步字元,在沒有資訊要傳輸時,要填上空字元,因為同步傳輸不允許有間隙。同步方式下,傳送方除了傳送資料,還要傳輸同步時鐘訊號,資訊傳輸的雙方用同一個時鐘訊號確定傳輸過程中每1位的位置。見右圖5.2所示。
圖5.2 同步通訊示意圖
在非同步通訊方式中,兩個資料字元之間的傳輸間隔是任意的,所以,每個資料字元的前後都要用一些數位來作為分隔位。
從圖5.2中可以看到,按標準的非同步通訊資料格式(叫做非同步通訊幀格式),1個字元在傳輸時,除了傳輸實際資料字元資訊外,還要傳輸幾個外加數位。具體說,在1個字元開始傳輸前,輸出線必須在邏輯上處於“1”狀態,這稱為標識態。傳輸一開始,輸出線由標識態變為“0”狀態,從而作為起始位。起始位後面為5~8個資訊位,資訊位由低往高排列,即先傳字元的低位,後傳字元的高位。資訊位後面為校驗位,校驗位可以按奇校驗設定,也可以按偶校驗設定,或不設校驗位。最後是邏輯的“1”作為停止位,停止位可為1位、1.5位或者2位。如果傳輸完1個字元以後,立即傳輸下一個字元,那麼,後一個字元的起始位便緊挨著前一個字元的停止位了,否則,輸出線又會進入標識態。在非同步通訊方式中,傳送和接收的雙方必須約定相同的幀格式,否則會造成傳輸錯誤。在非同步通訊方式中,傳送方只傳送資料幀,不傳輸時鐘,傳送和接收雙方必須約定相同的傳輸率。當然雙方實際工作速率不可能絕對相等,但是隻要誤差不超過一定的限度,就不會造成傳輸出錯。圖5.3是非同步通訊時的標準資料格式。
圖5.3 非同步通訊示意圖
比較起來,在傳輸率相同時,同步通訊方式下的資訊有效率要比非同步方式下的高,因為同步方式下的非資料資訊比例比較小。
二、傳輸率
所謂傳輸率就是指每秒傳輸多少位,傳輸率也常叫波特率。在計算機中,每秒傳輸多少位和波特率的含義是完全一致的,但是,在最初的定義上,每秒傳輸多少位和波特率是不同的,前者是指每秒鐘傳輸的數位是多少,而波特率是指每秒鐘傳輸的離散訊號的數目。所謂離散訊號,就是指不均勻的、不連續的也不相關的訊號。在計算機裡,只允許高電平和低電平兩種離散訊號,它們分別表示l和0,於是,造成了波特率與每秒傳輸數位這兩者的吻合。但在其他一些場合,就未必如此。比如,採用脈衝調製時,可以允許取4種相位,而每種相位代表2個數位,這種情況下,按每秒傳輸多少位(bps)計算的傳輸率便是波特率的兩倍。
國際上規定了一個標準波特率系列,標準波特率也是最常用的波特率,標準波特率系列為110、300、600、1200、1800、2400、4800、9600、19200......。
大多數介面的波特率可以通過程式設計來指定。
作為例子,我們可以考慮這樣一個非同步傳輸過程:設每個字元對應1個起始位、7個資料位、1個奇/偶校驗位和1個停止位,如果波特率為1200,那麼,每秒鐘能傳輸的最大字元數為1200/10=120個。
作為比較,我們再來看一個同步傳輸的例子。假如也用1200的波特率工作,每個字元為7位,用4個同步字元作為資訊幀頭部,但不用奇/偶校驗,那麼,傳輸100個字元所用的時間為7×(100+4)/1200=0.6067,這就是說,每秒鐘能傳輸的字元數可達到100/0.6067=165個。
三、非同步通訊的差錯型別
非同步通訊過程中,可能發生通訊錯,一般有3種錯誤:
1、幀格式錯:在應該接收到停止位的時候,接收到邏輯的“0”,便產生幀格式錯誤。
2、奇偶錯:接收到的奇偶校驗位錯。
3、覆蓋錯:通訊介面接收到資料並存放到資料輸入暫存器中,但是CPU沒有及時來取,後面新接收的資料覆蓋了前面收到的資料,叫做覆蓋錯。
發生幀格式錯和奇偶錯的原因可能為下面幾種:
◆ 傳送和接收雙方採用了不同的傳輸率,或雖然雙方約定了相同的傳輸率,但傳輸率不可能絕對相等。在通訊的速率比較高的情況下,如果雙方的傳輸率誤差達到一定的程度,也會造成通訊出錯;
◆ 通訊雙方採用了不相同的幀格式;
◆ 干擾。
同步通訊和非同步通訊
相關文章
- RabbitMQ 入門(一)同步通訊和非同步通訊MQ非同步
- IO通訊模型(二)同步非阻塞模式NIO(NonBlocking IO)模型模式BloC
- ZYNQ有兩個CPU?(三)——SGI非同步通訊非同步
- 關於應用整合:同步與非同步通訊模式之間的比較非同步模式
- 執行緒間的同步與通訊(2)——wait, notify, notifyAll執行緒AI
- android 非同步通訊機制Handler的分析與運用Android非同步
- vue 元件通訊總結 (非vuex和Event Bus)Vue元件
- 深入探討微服務架構中的同步通訊機制微服務架構
- 簡單區分WiFi通訊和WLAN通訊WiFi
- 如何在PR中同步音訊和視訊音訊
- 作業系統知識回顧(3)--程式的同步與通訊作業系統
- ♻️同步和非同步;並行和併發;阻塞和非阻塞非同步並行
- 程序間的通訊(訊號通訊)
- QSocket和QDataStream通訊AST
- 同步非同步,阻塞非阻塞非同步
- 非同步、同步、阻塞、非阻塞非同步
- 分散式入門(一)- 通訊原語和通訊庫分散式
- Mac音訊和視訊同步工具:Red Giant PluralEyesMac音訊
- Java併發技術05:傳統執行緒同步通訊技術Java執行緒
- vue 自定義元件 v-model雙向繫結、 父子元件同步通訊Vue元件
- 【React】元件通訊 - 跨層通訊React元件
- 如何基於Django中的WebSockets和非同步檢視來實現實時通訊功能DjangoWeb非同步
- 網路-淺談批次通訊和自主通訊的區別
- 同步、非同步,阻塞、非阻塞理解非同步
- 同步、非同步、阻塞與非阻塞非同步
- 同步非同步 與 阻塞非阻塞非同步
- 理解阻塞、非阻塞、同步、非同步非同步
- Rocket MQ 的三種訊息傳送(同步、非同步、單向)和訊息訂閱MQ非同步
- 如何讓主控制域與NTP時間同步伺服器通訊起來伺服器
- JAVA通訊(二)——實現客戶機和伺服器通訊Java伺服器
- FFmpeg音視訊同步
- 3.Vue非父子元件之間的通訊Vue元件
- 程序通訊--訊號
- 程序通訊-訊號
- 在Go和Python之間通過ActiveMQ通訊GoPythonMQ
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- Binder通訊機制與IPC通訊.md
- 網路通訊2:TCP通訊實現TCP