在描述同步通信與異步通信之前,我們先得搞清串行通信的內涵。串行通信是指計算機主機與外設之間,以及主機系統與主機系統之間數據的串行傳輸。使用串口進行數據傳輸時,發送和接收的每一個字符實際上都是一次一位的傳送的,每一位為1或者為0。而同步通信與異步通信則是串行通信的兩種不同方式,分別適合於不同的場合,且各有優缺點。
- 同步通信
同步通信是一種連續串行傳送數據的通信方式,一次通信只傳送一幀信息,由同步字符、數據字符和校驗字符(CRC)組成。其中:
1. 同步字符:位於幀的開頭,用於確認數據字符的開始;
2. 數據字符:在同步字符之后,個數沒有限制,由所需傳輸的數據塊長度來決定;
3. 校驗字符:有1到2個,用於接收端對接收到的字符序列進行正確性的校驗
當接收端確認接收到同步字符后,便在同步時鍾的控制下逐位發送/接收。
下面以IBM的BSC協議進一步進行說明,該協議規定了10個特殊字符(稱為控制字符)作為信息傳輸的標志。
其格式為:
SYN | SOH | 標題 | STX | 數據塊 | ETB/ETX | 塊校驗
SYN:同步字符(Synchronouscharacter),每幀可加1個(單同步)或2個(雙同步)同步字符
SOH:標題開始(Start Of Header)
標題:Header,包含源地址(發送方地址)、目的地址(接收方地址)、路由指示
STX:正文開始(Start of Text)
數據塊:正文(Text),由多個字符組成
ETB:塊傳輸結束(End of TransmissionBlock),標識本數據塊結束
ETX:全文結束(End of Text),全文分為若干塊傳輸
塊校驗:從SOH開始,直到ETB/ETX字段的校驗碼
- 異步通信:
異步通信,是以字符或者字節為單位組成字符幀進行傳輸。字符幀格式中包括空閑位、起始位、資料位、奇偶校驗位、停止位。
以RS232協議規定為例,異步通信一個字符一個字符地傳輸,每個字符一位一位地傳輸,並且傳輸一個字符時,總是以“起始位”開始(低電平,邏輯值0),以“停止位”結束,字符之間沒有固定的時間間隔要求。字符數據本身由5~8位數據位組成,接着字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位。停止位和空閑位都規定為高電平(邏輯值1),這樣就保證起始位開始處一定有一個下跳沿
如圖:
接收端在收到起始信號之后只要在一個字符的傳輸時間內能和發送端保持同步就能正確接收。下一個字符起始位的到來又使同步重新校准,也就是說,異步通信依靠檢測起始位來實現發送端與接收端的時鍾自同步。這樣,只要發送端和接收端協商好字符幀格式和波特率,就可以由各自的時鍾來控制數據的發送和接收。
小結:
同步通信 | 異步通信 | |
傳輸格式 | 面向比特的傳輸,每個信息幀中包含若干個字符 | 面向字符的傳輸,每個字符幀只包含一個字符 |
時鍾 | 要求接受時鍾和發送時鍾同頻同相,通過特定的時鍾線路協調時序 | 不要求接受時鍾和發送時鍾完全同步,對時序要求較低 |
數據流 | 發送端發送連續的比特流 | 發送端發送完一個字節后,可經過任意長的時間間隔再發送下一個字節 |
控制開銷 | 控制字符開銷較小,傳輸效率高 | 字符幀中,假設只有起始位、8個數據位和停止位,整個字符幀中的控制位的開銷就達到了20%,傳輸效率較低 |
同步方式 | 從數據中抽取同步信息 | 通過字符起止的開始位和停止位抓住再同步的機會 |
通信結點 | 點對多點 | 點對單點 |