这个问题一直困扰了我非常之久,关于比特率和波特率,网上和课本上众说纷纭,今天我来谈谈我对它们的理解
请告诉我如下波形的比特率是多少? (4s内传输完成)
1bit/s?
不对!
为什么不对
因为这里没有说明具体的协议是什么,你没有办法脱离协议告诉我这里有几个比特,如果我这里高电平代表1,低电平代表0,那么在这种情况下就是4个比特位,即1 0 0 1,比特率=1bit/s
但如果我告诉你这是曼彻斯特编码呢?如果这里是曼彻斯特编码,这段波形就会被解读成1 0 两位比特 比特率就是0.5bit/s
请注意,有比特率的前提是,必须有确定的协议
那我问你,不告诉你协议,这里的波特率是多少?(前提是最短周期1s内没有其它可能的符号形状)
你是可以在不知道具体协议的情况下给出我波特率的,即为1 Baud/s
我们先来看看比特的定义
其中I是比特,P是事件发生的概率,比如说如果这个信号只有0和1两种可能,那么这件事情就是fifty-fifty
50%的概率发生
带入公式我们可以算出
我们再来看看之前那个图
当我告诉你这是曼彻斯特编码方式,最小的一种情况的最短周期是2s,所以此时2s内的上升/下降波形具有50%的概率蕴含了事件的真正状态是0还是1,所以1bit是信息量,这里只有两个信息量,所以比特率是2bit/4s=0.5bit/s
如果我没有告诉你具体的编码协议方式,你压根不知道信息传输的最小单元是什么,也不知道这个波形出现的概率,从本质上就没有比特率一说
通俗易懂的说法是,波特率是在信道内传输的真实物理信号的最小单元的传输速率
最小单元就是所谓的符号也被叫做码元,它取决于周期最小的,能被区分出来的物理实体信号
问,下面波形传输了几个波特?
在这里能被区分出来的最小物理实体的时间是1s,因为0-1s和1-2s的波形所占用的时间小于2-4s的波形
即:找到一段实际传输电压高低不变的波形,保证它的时间最小,那它就是一个符号的基本单元!
这里显然是4个符号,前提是这是一次传输中全部的波形,不然必须考虑协议,因为有可能有电压(即形状)不同的波形没有展示出来
以下是4s传输的曼彻斯特编码的波形
我们根据协议转换成真实的数据1 0 那么这时候的
这种依照协议的方法和用公式计算没什么本质上的不同,因为公式也得依赖协议去计算信息出现的概率
我们找到维持时间最短的一段电平不变的波形,0-1s或者是3-4s,记录下这个维持最短的时间,就是我们要找的一个符号的持续时间,即为1s
这时候经过了4s就传输了4个符号,
此时,
这也是曼彻斯特编码的特点
为了让大家理解更透彻,我们再重新分析这个4s传输完成的波形
首先我得告诉你它的编码方式,此编码有4种可能出现的波形,本次传输波形有一种并未出现过波形或者说电压不属于1v 2v 3v而是5v
我列一个映射表格如下
二进制编码 | 真实电压高低(v) |
---|---|
00 | 1 |
01 | 2 |
10 | 3 |
11 | 5 |
然后我们看随便1s内出现其中一种电压的概率是1/4, 当这个电压真的出现的时候代表了1/4概率的信息量,代入公式计算这个信息量是多少bit
所以在这里,4s内传输了8个bit,
接下来到波特率,我们找到一段电平不变,且维持时间最短的波形,记录下它的时间,在这里就是0-1s 和1-2s的波形的时间小于2-4s波形的时间,
所以
0-1s是一个符号
1-2s是一个符号,
2-3s是一个符号,
3-4s是一个符号,也就是物理信号上能区分出来的最小分度时间的信号
这里的符号的最小分度时间是:1s
所以,这里4s传输了4个符号,
此时
请记住,波特率于协议具体内容无关,比特率与协议具体内容有关,比特率只表示传输信息的有效信息量,波特率才是实际传输过程种的最小符号单位
为什么串口通讯协议里要设置波特率而不是比特率?
没看过RS232的同学可以结合这篇文章和什么是 RS232 串口通讯一起看,理解更加透彻 !
我们来回顾一下RS232的数据结构
起始位 | 数据位1 | ... | 数据位8 | 停止位 | 停止位 | 空闲位(不限) |
---|---|---|---|---|---|---|
0 | 1/0 | 1/0 | 1/0 | 1 | 1 | 1 |
那我问问你,下面一个RS232数据有几个比特?
起始位 | 数据位1 | ... | 数据位8 | 停止位 |
---|---|---|---|---|
0 | 1 | 0 | 1 | 1 |
你不会告诉我有10个比特吧?
我认为是8个,为什么?
我说过比特是对信息的概率的一种信息度量, 所以呢?这里的起始位和停止位永远都是0和1,根本不能提供任何数据层面上的有效信息,它们没有概率是其它的情况,即永远是0或者永远是1,所以这里不能被算进去
但这里传输了几个符号?10个波特,所以规定波特率(1s内传输的符号个数)来进行传输接收的速率匹配是非常自然且合理的想法,在这里我并不会认同比特率=波特率的说法,因为从比特的定义出发,这就是不合理的说法
关于比特率和波特率到底怎么计算真的困扰了我非常之久,今天总算是从比较原始的角度出发去推导如何计算比特率和波特率,真的有非常多的文章,解释的都不清楚,至少很少有文章拿曼彻斯特编码和普通的4元编码来做对比的,而且对于比特波特的本质也丝毫不提。
本文有很多地方不那么严谨,主要是考虑到大家理解的难度上,当真正理解了再去追求严谨性,否则严谨反而会阻碍理解(不了解为什么要这样做)
作者:bigonion
邮箱:bigonion@bigonion.cn
NameSpace: 大聪花的家
Origin: 大聪花的博客
Powered by markdown 在线
声明:未经本人同意,禁止转载、搬运、抄袭!