我們來看下圖:
先看圖 1。
圖 1 中我們看到了左右兩隻晶體管。這兩隻晶體管均接成開關態,也即它們的工作點要麼是截止,要麼是飽和。當截止時,晶體管的輸出是高電平;當飽和時,晶體管的輸出是低電平。
注意,這裏的高電平電壓很接近電源電壓,而低電平則略高於低電壓。為了方便,一般用電平來説明晶體管的輸出,而不用電壓值。
我們看到兩隻晶體管中間的連線很長。這條線又被稱為通信介質。
我們看到,左邊的晶體管輸入為高電平時,右邊的晶體管輸出亦為高電平;左邊的晶體管輸入為低電平時,右邊的晶體管輸出亦為低電平。這就是通信的傳遞過程。
再看圖 2。
圖 2 中,我們看到了處於開關狀態的晶體管符號——反相器。
普通的反相器,若用於通信,則它每秒鐘需要發生 9600 次的飽和截止(0/1)變化,叫做 9600bps。
如果通信介質和接口中有九個針孔,我們把它叫做 DB9 接口,則它被稱為串行通信總線;如果通信介質和接口中有 25 個針孔,我們把它叫做 DB25 接口,也即並行通信總線。
過去,串行總線的通信速率低於並行總線。但現在改進了很多,並行總線反而到很少見到了。
ISO 國際標準化組織對計算機通信建立了一個模型,這個模型被稱為 ISO 的 OSI 模型(字母順序正好反過來,有點通信的味道在裏面)。OSI 模型的第一層叫做物理層,第二層叫做數據鏈路層,第三層叫做網絡層。第一層、第二層和第三層合併被稱為現場總線。
我們來看下圖:
圖中每一層所遵循的規範叫做通信協議。
看下圖:
這張圖中,我們看到了物理層的通信接口,並且看到了高電平和低電平。注意哦,這裏的接口是用差分電路來驅動的,不再是簡單的反相器。
物理層的通信規約是字節。
一個字節是 8 位二進制數,再加上奇偶校驗位和停止位,則一個字節是 10 位二進制數。
8 位二進制數換成十進制數是 256。所以一個字節可以傳送 256 種不同的數值狀態。
物理層的上一層是數據鏈路層。在數據鏈路層裏,把字節編碼組合成為語句,叫做幀。見下圖:
這裏的幀結構是:START 是起始字節,ADDRE 是地址字節,FUNCTION 是功能碼字節,DATA 是數據字節,CRC 是校驗碼字節,END 是停止字節,最少也有 8 個字節。
由於一個字節有 10 位,所以一個幀至少有 8X10=80 個位。
如果某串行通信總線 1 秒鐘可以傳送 9600 個位,則它 1 秒鐘可以傳送 9600/80=120 個幀。
在網絡層,它把幀組織為分組報文:
網絡層再往上,就是高層協議了,這些協議中傳遞的都是報文。
在遊戲中,軟件使用的是高層協議,與現場總線協議完全不同。