關於通訊的一點常識
在計算機設備之間經常會需要進行數據傳輸,我們會接觸到很多的通訊方式,本文大概介紹下關於通訊的一點點概念。
串列、並行通訊
串列通訊按單個數據位進行數據傳輸,而並行通訊可以同時傳輸多個位的數據。打個比方,串列通訊更像是單車道的公路,一次只能允許一輛車通過,而並行通訊則是多車道公路,可以實現多輛車同時行駛。很明顯了,在傳輸速率相同時,單位時間內並行通訊可傳輸的數據量要大於串列通訊。
那麼如此看來,串列通訊和並行通訊到底有何優劣勢,我們應該如何取捨?
- 通訊距離:串列通訊遠於並行通訊
- 抗干擾:串列通訊優於並行通訊
- 成本開銷:串列通訊小於並行通訊
- 傳輸速率:串列通訊低於並行通訊
雖然並行通訊傳輸速率要高於串列通訊,但在實際項目中還需要考慮其他諸如傳輸距離、干擾、成本等因素,所以現在其實也越來越多地使用高速的串列差分傳輸。
全雙工、半雙工和單工
先來看看這三者的定義。
- 全雙工:同一時刻,兩個設備可以同時收發數據
- 半雙工:兩個設備都可以收發數據,但不能同時進行
- 單工:任何時刻都只能進行一個方向的通訊,即一個固定發送,一個固定接收
全雙工相當於雙向車道,兩個方向的車流可以同時出入;半雙工類似於鄉間小道,只能同時由一輛車通過;單工則是單行道,禁止另一方向的車輛通行。
同步、非同步通訊
兩者的區別在於同步通訊過程中的收發雙方會使用時鐘信號進行協調,以同步數據,而非同步通訊則不用時鐘信號。
同步通訊中的收發雙方會統一在時鐘信號的上升沿或下降沿對數據進行採樣,以實現同步。如圖8-1所示。
圖8-1
非同步通訊不使用時鐘信號進行數據同步,而是直接在數據信號中穿插一些用於同步的信號位,或者把主體數據打包,以數據幀的格式傳輸數據,如圖8-2。在某些通訊中還需雙發約定數據的傳輸速率,以便更好地同步。
圖8-2
如上圖所示,非同步通訊除了主體數據,還包含了通訊起始位、停止位和數據校驗位,並非全部是有效數據。
同步通訊對數據同步要求嚴格,其允許的誤差要小於非同步通訊。
比特率、波特率
- 比特率:每秒鐘傳輸的二進位位數,單位為bps
- 波特率:每秒鐘傳輸的碼元個數,單位為Baud
- 碼元:在數字通信中常常用時間間隔相同的符號來表示一個二進位數字,這樣的時間間隔內的信號稱為(二進位)碼元。 而這個間隔被稱為碼元長度。值得注意的是當碼元的離散狀態有大於2個(如M大於2個) 時,此時碼元為M進位碼元。
如,ASCII碼錶里有128個字元,即128種離散狀態,用128進位碼元表示每個字元,其每個字元由
= 7
個二進位比特位表示,即7個二進位碼元。如字母A由7個二進位碼元表示的ASCII碼為0100 0001,那麼一次傳輸的比特位數為碼元數的7倍。所以此時單位時間內比特率為波特率的7倍。
其實在很多常見的通訊中,一個碼元都表示兩種狀態,即
= 1
個二進位比特位,此時的波特率和比特率是相等的。
---------------------------------------------------------------------------------
文章首發於知乎專欄 - stm32,轉載請私信,並註明原文出處。
推薦閱讀:
※西方發達國家流量費到底在什麼水平?
※賣木漿起家,還造過子彈,這個曾經的手機霸主,到底還有多少秘密?
※了解可見光通信有哪些好的paper值得一看?
※英國每秒傳輸 125GB 的「5G 網路」是什麼?