我们来看下图:
先看图 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 个帧。
在网络层,它把帧组织为分组报文:
网络层再往上,就是高层协议了,这些协议中传递的都是报文。
在游戏中,软件使用的是高层协议,与现场总线协议完全不同。