关于通讯的一点常识
在计算机设备之间经常会需要进行数据传输,我们会接触到很多的通讯方式,本文大概介绍下关于通讯的一点点概念。
串行、并行通讯
串行通讯按单个数据位进行数据传输,而并行通讯可以同时传输多个位的数据。打个比方,串行通讯更像是单车道的公路,一次只能允许一辆车通过,而并行通讯则是多车道公路,可以实现多辆车同时行驶。很明显了,在传输速率相同时,单位时间内并行通讯可传输的数据量要大于串行通讯。
那么如此看来,串行通讯和并行通讯到底有何优劣势,我们应该如何取舍?
- 通讯距离:串行通讯远于并行通讯
- 抗干扰:串行通讯优于并行通讯
- 成本开销:串行通讯小于并行通讯
- 传输速率:串行通讯低于并行通讯
虽然并行通讯传输速率要高于串行通讯,但在实际项目中还需要考虑其他诸如传输距离、干扰、成本等因素,所以现在其实也越来越多地使用高速的串行差分传输。
全双工、半双工和单工
先来看看这三者的定义。
- 全双工:同一时刻,两个设备可以同时收发数据
- 半双工:两个设备都可以收发数据,但不能同时进行
- 单工:任何时刻都只能进行一个方向的通讯,即一个固定发送,一个固定接收
全双工相当于双向车道,两个方向的车流可以同时出入;半双工类似于乡间小道,只能同时由一辆车通过;单工则是单行道,禁止另一方向的车辆通行。
同步、异步通讯
两者的区别在于同步通讯过程中的收发双方会使用时钟信号进行协调,以同步数据,而异步通讯则不用时钟信号。同步通讯中的收发双方会统一在时钟信号的上升沿或下降沿对数据进行采样,以实现同步。如图8-1所示。
![](https://pic3.zhimg.com/80/v2-a9b8ce6eb0e66dab14dd73e7c8b48dbb_hd.jpg)
图8-1
异步通讯不使用时钟信号进行数据同步,而是直接在数据信号中穿插一些用于同步的信号位,或者把主体数据打包,以数据帧的格式传输数据,如图8-2。在某些通讯中还需双发约定数据的传输速率,以便更好地同步。
![](https://pic2.zhimg.com/80/v2-94d79f797f425f1e9ac7a05c980c1cfa_hd.jpg)
如上图所示,异步通讯除了主体数据,还包含了通讯起始位、停止位和数据校验位,并非全部是有效数据。
同步通讯对数据同步要求严格,其允许的误差要小于异步通讯。
比特率、波特率
- 比特率:每秒钟传输的二进制位数,单位为bps
- 波特率:每秒钟传输的码元个数,单位为Baud
- 码元:在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。 而这个间隔被称为码元长度。值得注意的是当码元的离散状态有大于2个(如M大于2个) 时,此时码元为M进制码元。
如,ASCII码表里有128个字符,即128种离散状态,用128进制码元表示每个字符,其每个字符由
= 7
个二进制比特位表示,即7个二进制码元。如字母A由7个二进制码元表示的ASCII码为0100 0001,那么一次传输的比特位数为码元数的7倍。所以此时单位时间内比特率为波特率的7倍。
其实在很多常见的通讯中,一个码元都表示两种状态,即
= 1
个二进制比特位,此时的波特率和比特率是相等的。