在这个视频中,我们要学习编码和调制技术,首先我们会介绍编码、解码、调制、解调的概念。以及会介绍五种常用的编码方式,还有四种常用的调制方式。
首先来认识什么叫编码、解码、调制和解调。通过之前的学习,我们知道信源会通过信道给信宿发送信号。信号是数据的载体。对于计算机网络来说,所谓的数据通常就是二进制的数据。信号有两种类型,一种叫数字信号,值是离散的,一种叫模拟信号,值是连续的。接下来我们要在这个通信系统当中补充两个部件,一个是变换器,一个是反变换器。前者会把二进制数据转换为信号,有可能是数字信号,也有可能是模拟信号,而后者会把这个信道上的信号转换成二进制数据,然后交给信宿,如果我们把二进制数据转换成数字信号,这个过程就叫做编码。反过来把数字信号转换回二进制数据,这个过程就叫解码。相应的二进制数据和模拟信号的相互转换,我们可以把它称为调制和解调。所以我们这儿说的变换器和反变换器有可能是一个负责编码,一个负责解码。此时,我们可以把变换器称为编码器,而反变换器称为解码器。大家比较熟悉的有线网络适配器,也就是有线网卡,它就具备编码器和解码器的作用。当然,除了编码和解码的作用之外,这个网络适配器还具备其他更复杂的功能,这儿先暂且不展开。总之在你的电脑上,网线接口背后的这块芯片,它可以把计算机内部的二进制数据编码为数字信号,然后把数字信号发送到网线上。另外,它也可以把网线上传递过来的数字信号解码为二进制数据,然后把二进制数据交给你的主机进行处理。这是我们比较熟悉的东西。
我们也有比较熟悉的调制器和解调器,也就是我们民间所称的光猫。光猫可以把二进制数据调制成光信号,然后在光纤上传输。另外它也可以把光信号解调成二进制数据,然后交给你家的路由器或者主机进行处理。调制解调器的英文叫 modem,由于它的发音比较像猫,所以在民间我们把光信号的调制解调器称为光猫。在这儿我们学习了编码解码调制和解调的概念,接下来我们会学习
几种常用的编码技术和调制技术。
首先来看编码技术,也就是如何把二进制数据转换成数字信号。我们需要掌握不归零编码,归零编码,反向非归零编码,曼彻斯特编码和差分曼彻斯特编码。
在这个图当中虚线的这样一小格,你可以把它理解为是一个信号周期。我们需要把111100101编码成数字信号。首先看最简单的不归零编码:不归零编码的英文缩写叫 nrz。它的特点是低0高1中不变,低零高一的意思就是用低电平表示二进制的零,用高电平表示二进制的1,而在一个信号周期的中间,这个信号并不会发生改变。不归零编码也是最简单,也是我们最熟悉的一种编码方式。
接下来看第二种归零编码,英文缩写是 rz。它的特点是低零高1中归零,低0高1的意思就是用一个低电平表示二进制的0,用高电平表示,二进制的1。中归零的意思就是每一个信号周期的中间,无论这个信号,它本身是高电平还是低电平。反正在一个信号周期的中间,我们都让这个信号的值归零。归零信号的作用是让数据的发送方和数据的接收方作为时钟来使用。时钟信号的作用就是让数据的发送方和接收方保持相同的节奏。比如我们可以规定,每个信号周期等于一毫秒的时间,但是如果没有时钟信号的话,那么发送方和接收方的这个所谓的一毫秒可能会有误差,而这种误差不断累积,就有可能导致二进制比特识别错误。对于不归零编码来说,它并没有隐含这种时钟信号,所以数据的接收方接收到这些电瓶信号的时候,它有可能会分不清信号和信号之间的边界在。接下来,我尝试着把这些信号念出来,大家听一下能不能分清楚信号和信号之间的边界。先来念不归零编码。假设现在你是数据的接收方,我是数据的发送方,那我给你发送的信号就是高~高~低~高~低~高~,能分辨清楚,我刚开始念了几个高吗?不可以对吧?那如果采用的是归零编码,我给你的信号可能就是这样的,高的高的高的高的低的低的低的高的低的高的。你可以看到每一次归零的这个信号,就有点类似于我给了你一个节奏,你可以知道在一个节奏之后就是另一个信号周期。
这样的话,作为信号的接收方,你可以很清晰的判断出比特和比特之间的边界在哪儿,所以归零编码在每一个周期中间让信号回到零,这个是有作用的。如果发送方和接收方之间就是要采用不归零编码来传输数据的话,发送方和接收方之间除了数据线之外,还需要专门增加一组时钟线用来发送刚才所说的节奏信号,这是不归零和归零两种编码。
接下来看反向非归零编码,它的特点把它总结为这样一句话叫做跳0不跳1,看起点中不变。大家可以检查一下自己的王道书,就是反向非归零编码的第一个信号周期前面这个线段是不是缺失的,我们需要补一段线,才可以让这个反向非归零编码完整。现在来理解“跳零不跳一看起点”这句话,首先看起点的意思就是说我要看每一个信号周期的起点位置信号有没有发生跳变?
像第一个周期的起点,这个位置信号没有发生跳变,信号不跳意味着它是二进制的1,接下来在第二个信号周期的起点位置,信号也没有跳变,所以它对应的也是二进制的1,第三个周期起点也没变,二进制1,第四个周期起点还没变,同样对应二进制1好,接下来来到第五个周期的起点,在这个位置我们看到信号发生了跳变,跳0不跳1,意思就是信号发生跳变的时候它对应二进制的0,同样的来到第六个周期的起点,在这个位置,信号也发生了跳变,跳0不跳1,这个位置对应的就是二进制0,再往后第七个周期的起点这个信号没有跳变,它对应1,第八个周期起点发生了跳变,对应二进制0,第九个周期在周期的起点没有发生跳变,它对应二进制1,所以这一段反向非归零编码的信号。它表示的二进制串就是111100101。中不变这句话和刚才不规定编码是一个意思,就是在信号周期的中间不会发生信号的改变,那不归零编码NRZ,归零编码RZ和反向非归零编码NRZI,这些英文缩写是有可能在考试中出现的。为了方便大家记忆,我们不妨把NRZI这几个字母展开N对应的是Non,R对应的是Return,Z 对应的是 Zero,所以RZ编码意思就是Return to Zero 归零编码。而NRZ对应的就是 Non Return to Zero 不归零编码。最后一个 I 字母指的是 Inverted 就是反转、反向的意思。了解这个英文全称有助于记忆这几个缩写。
接下来我们看曼彻斯特编码,曼彻斯特编码的特点,总结为跳0反跳1看中间,然后中必变。首先曼彻斯特编码我们需要关注每一个信号周期的中间。我们可以用两种标准去解释曼彻斯的编码,比如说如果信号上跳,那么表示0,下跳表示1。比如在这张图里就是上跳0,下跳1这样的规则。看一下每个信号周期的中间位置,第一个周期的中间发生了下跳,下跳对应二进制1,第二个周期下对应1,下对应1,下对应1,第五个周期中间的位置发生了上跳,对应二进制0,第六个周期上跳对应0,第七个周期下跳对应1,第八个周期上跳对应0,第九个周期下跳对应1,所以曼彻斯特编码的特点是每个信号的中间一定会发生跳变。通常来说,上跳对应的是0,下跳对应的是1,不过曼彻斯特编码还有另一种标准,就是逆过来下跳0上跳1。
我们对这两种标准做一个解释,这张图是从维基百科找到的,GE托马斯这个人发明了曼彻斯特编码。没记错的话,应该是一九四九年这哥们儿第一次提出曼彻斯的编码的时候,他就是按照下跳为0,上跳为1这样的标准去规定各个信号的值的。比如说1010这几个值,下跳表示1,上跳表示0,下跳表示1,上跳表示0。但是后来更常用的一个标准是(这里没听清)这个国际组织提出的。在这个标准中,规定上跳为0,下跳为1。所以同样是11010这几个比特,上跳对应1,下跳对应00,上跳对应1,下跳对应0。在408考研中,通常是默认上跳为0,下跳为1,但是不排除以后有可能出现下跳0,上跳1的情况,这个大家可能要注意一下。回到前面的内容。
还差最后一种编码,叫做差分曼彻斯特。大家需要在王道书第一个信号周期的前面这儿补一小段线。差分曼彻斯特的规则是跳0不跳1,看起点。也就是要关注每个信号周期的起点位置,第一个周期的起点,这儿信号没有发生跳变,所以它对应的是二进制1,在第二个信号周期的起点位置,信号也没有发生跳变,它对应的是二进制1,第三个周期的起点也没变,对应1,第四个周期的起点同样对应1,接下来到第五个信号周期,起点位置发生了信号的跳变,所以它对应二进制0,接下来第
六个周期的起点,信号同样发生了跳变,它对应二进制的0,后面的就不再赘述。总之我们需要关注每个信号周期的起点。如果发生信号跳变,就是0,如果没有跳变,就是1。你会发现差分曼彻斯特编码和反向非归零编码都是要看周期的起点,并且都是跳0不跳1的规则,但二者的区别在于反向非归零编码的信号中间是一定不会发生改变的,而差分曼彻斯特编码的信号中间一定会发生跳变。反向非归零编码,它的第一个周期起点位置没有跳变,对应二进制1,差分曼彻斯特同样的起点位置没有跳变,对应二进制1,但是到第一个周期的中间位置,反向非归零编码它的这个信号是一直保持高电平不变的,但是差分曼彻斯特在中间这个位置,它会发生一次跳变,如果原先是低电平,它会跳成高电平,而如果原先是高电平,那么在信号中间位置,它一定会跳回低电平。在每一个信号中间发生一次信号跳变有两个好处,第一个好处类似于归零编码,就是我们可以把这个跳变的信号作为时钟节拍来使用,也就可以让发送方和接收方通过这个信号的跳变这个节奏,去完成这个信号同步。这是第一个作用。作为时钟信号第二个作用,这样的编码设计可以让信号的抗干扰能力更强,也就是受环境噪声的影响会更弱。
我们结合刚才的学习来总结一下各种编码的特点。
主要关注每种编码的自同步能力、是否浪费带宽和抗干扰能力。首先自同步能力,刚才解释过,就是信号的发送方和接收方能否根据这个信号本身完成节奏同步,而无需额外的时钟信号。不归零编码是没有自同步能力的,归零编码有自同步能力,反向非归零编码,它本身没有自同步能力,但是在有的通信系统中,可以采用八+1 位冗余位的这种方式去实现自同步。我们说非归零编码当中,如果出现二进制的0,那么信号一定会跳变,这种跳变的信号可以作为时钟同步的节奏来使用,所以如果我们每传输八个有效比特,我们就增加一个二进制0。那么就意味着每传八个比特,在第九个周期的时候,这个信号肯定会跳变一次,归零编码相当于每一个节拍我都打一次节奏,一打二打三打四打,而反向非归零编码的这种节拍,类似于每八个动作,我打一个节奏对吧?有点像一二三四五六七八打一二三四五六七八打。这种方案的时钟信号,肯定没有非归零编码这么准确,但是它依然可以支持自同步。接下来,曼彻斯特编码和差分曼彻斯特编码,这两种编码的特点是每个信号周期的中间位置一定会发生信号跳变,所以这种规律的信号跳变本身就可以作为时钟信号去使用,因此曼彻斯特和差分曼彻斯特都是有自同步能力的。
接下来第二个方面,我们需要关注每种编码是否需要浪费一定的带宽,首先不规零编码它的这些信号完全都是携带数据的。所以它没有浪费任何一点带宽,而归零编码在每一个信号周期内都会让信号发生一次跳变,所以事实上,它会浪费一半的带宽。我们知道信道的带宽是有限的,也就是说一条信道它可以通过的信号频率范围也是有限的。我们可以这样简单的理解,对于不归零编码来说,一个比特的信号,只会有一个电瓶,所以一个比特,它只消耗一个赫兹的带宽。而不归零编码的一个比特会对应两个电平,也就是说这个信号值发生了两次震动,因此归零编码的每一个比特,需要
消耗两赫兹。当然这么说,不太严谨啊,但是大概是这么个意思,总之归零编码增加了这种额外的同步信号之后,它注定是要浪费一部分带宽的,这就意味着同一个信道,如果采用不归零编码,它的数据传输速率肯定要比归零编码更高。
对于反向非归零编码来说,它的每一个比特也只会对应一种电平信号,所以你也可以认为每一个比特只消耗一赫兹的带宽,但是反向非归零编码,需要每八比特增加一个冗余位用来实现自同步,所以这一个冗余位也会浪费一点带宽,但是浪费的没有归零编码这么多。
最后,曼彻斯特编码和差分曼彻斯特编码,它们也是需要浪费带宽的,每个信号周期的中间以及边缘位置都有可能发生跳变,所以你也可以简单的认为,曼彻斯特和差分曼彻斯特,每个比特需要消耗两赫兹的带宽。那再强调,我们这儿说一个比特消耗两赫兹,一个比特消耗一赫兹,这种说法是不严谨的。只是为了让大家方便理解,方便记忆,所以用这样的角度去进行解释,反正核心的逻辑
就是如果传输一个比特的时候,这个中间信号需要发生变化,那么它对带宽的浪费肯定也
会更高。
最后我们还需要关注各种编码的抗干扰能力,前三种不归零、归零、还有反向非归零编码的抗干扰能力都是弱的。而曼彻斯特和差分曼彻斯特的抗干扰能力是强的。抗干扰能力也和这种编码的特性有关系,这儿就不再展开。大家记住这个结论就可以。
接下来看两个例题。
首先看2015年的 34 题,给了八个比特,同时给了两个波形,让我们判断这两种编码分别是什么编码?根据A、B、C、D这几个选项,第一个编码,我们需要判断的是它到底是NRZ还是NRZI。NRZ对应的是不归零编码, NRZI对应的是反向不归零编码,不归零编码的特点是低0高1,中不变。好来看一下0110这几个比特,第一个是低电平,第二个是高电平,第三个是高电平,第四个是低电平,第五个是低电平,第六个是高电平,可以看到这个电频的高低和0101刚好是能够对应上的。所以第一个编码肯定是NRZ,也就是不归零编码。如果第一个编码是反向非归零编码的话,
我们看第二个信号周期的这个起点,位置它。它发生了跳变对吧?那反向非归零跳变对应的是0。所以第二个周期发生跳变,就意味着,在这个波形当中,它的第二个比特应该是二进制的0。但是题目给我们的原始比特流,第二个比特是1而不是0,所以反向非归零编码肯定可以排除。那我们就排除了 c 和 d 两个选项,接下来第二个编码要判断它到底是曼彻斯特还是差分曼彻斯特。这两种编码的特点都是中间一定会发生改变,但是曼彻斯特编码的中间位置跳变的方向一定能够和0101能够对上。所以以后如果需要判断一个波形,它到底是曼彻斯特还是查分曼彻斯特,那么我们可以首先关注每一个信号的中间位置,它的跳变方向和二进制是否能够一一对应,如果能对上,那么就是曼彻斯特,否则就是差分曼彻斯特,对于这个编码2来说,我们看第一个信号周期,它是向上跳的,第二信号周期是下跳,第三个是下跳,那把每个周期的中间跳变的方向给它标出来,上下下上上下下下,刚好可以和01100111,能够对应上。所以第二个编码肯定就是曼彻斯特。同时,它采用的是上0下1的这种规则。因此这个题目选择A选项。
再看第二个题目,2021年的 34 题,它考察差分曼彻斯特。给了我们这个波形,问我们这段波形对应的二进制串等于多少?那差分曼彻斯特的特点是跳0不跳1,看起点。第一个信号周期的起点位置不跳对应二进制1,第二个周期的起点发生了跳变对应0。第三个周期不跳对应1,第四个周期不跳对应1,第五个周期不跳对应1。第六个周期有跳变,对应零第七个周期跳变,对应0,第八个周期不跳对应1。所以这个差分曼彻斯特就应该是10111001,也就是A选项。现在我们可以把这个题目改造一下,我可以给你这样的一个二进制串,然后给你这个波形,让你判断这个波形到底是差分曼彻斯特还是曼彻斯特?如果改成这样的题目,我们首先可以关注每一个波形的中间位置它的跳变方向是什么?能不能和这个二进制串一一对应。第一个周期的中间是下跳,第二个周期下跳,第三个上跳,第四个下跳,第五个上,第六个上,第七个上,第八个下。根据曼彻斯特编码的规则,这样的跳变方向,如果按照上零下一去解释的话,那它对应的就应该是11010001。如果按下0上1去解释,那么它对应的是00101110,也就是题目的B选项和C选项。所以差分曼彻斯特和曼彻斯特由于它们的这个信号中间都会发生跳变,所以乍一看二者的波形可能会难以分辨。但是只要我们去关注每个信号周期中间的跳变方向是否能和二进制一一对应,那么我们就可以轻松的判断出它到底是曼彻斯特还是差分曼彻斯特。