首页 > 其他分享 >【数字通信】编码

【数字通信】编码

时间:2022-09-23 11:00:25浏览次数:40  
标签:编码 归零 数字通信 传输 信号 NRZI 时钟

  在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU、DSP、MCU甚至是个数字计数器中,数字电路在其中能够处理的信息也只有0和1,而对于任何外界的信息,计算机都能通过两个量来描述,那就是0和1。而对于数字通信来说,想要用0和1来传递你想传达的信息,则必须要通过一种特殊的约定来进行同步,这种约定就是编码
  两台设备要想进行有线通信,最终都是将想要传达的信息转变成一串比特流,进而在传输线上进行传输。常规数字通信为数据线+时钟线的形式,但对于高速信号而言,时钟线和数据线长度的稍稍偏差,就会造成接收端无法满足数据采样的建立时间,故会导致数据出错。而最好的方式就是将时钟信号和数据信号用同一根线来传递,所以出现了一些比较特殊的编码,是的时钟和数据能够融合在一起。下面主要讨论几种常用的编码方式:

1、RZ(Return Zero Code)编码
  RZ编码也称为归零码,归零码的特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的低电平。在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,每传输完一位数据,信号返回到零电平。信号线上会出现 3 种电平:正电平、负电平、零电平:

 

 

  从图上就可以看出来,因为每位传输之后都要归零,所以接受者只要在信号归零后采样即可,这样就不在需要单独的时钟信号。实际上, RZ 编码就是相当于把时钟信号用归零编码在了数据之内。这样的信号也叫做自同步(self-clocking)信号

  但在 RZ 编码中,大部分的数据带宽,都用来传输“归零”而浪费了。假设数据传输时间为t,一个周期时间为T,则这种传输效率η=t/T。

 

2、NRZ(Non Return Zero Code)编码
  NRZ编码为不归零编码,也是我们最常见的一种编码,即正电平表示1,低电平表示0。它与RZ码的区别就是它不用归零,也就是说,一个周期可以全部用来传输数据,这样传输的带宽就可以完全利用。一般常见的带有时钟线的传输协议都是使用NRZ编码或者差分的NRZ编码。因此,使用NRZ编码若想传输高速同步数据,基本上都要带有时钟线,因为本身NRZ编码无法传递时钟信号。但在低速异步传输下可以不存在时钟线,但在通信前,双方设备要约定好通信波特率,例如UART。

  NRZ有单极性不归零码和双极性不归零码。
  单极性不归零码:用恒定的正电压来表示“1”,无电压用来表示“0”。
  双极性不归零码:“1”码和“0”码都有电压,但是“1”码是正电平,“0”码是负电平,正和负的幅度相等,故称为双极性码。


3、NRZI(Non Return Zero Inverted Code)编码
  NRZI编码的全称为反向不归零编码,这种编码方式集成了前两种编码的优点,即既能传输时钟信号,又能尽量不损失系统带宽。对于USB2.0通信的编码方式就是NRZI编码。其实NRZI编码方式非常的简单,即信号电平翻转表示0,信号电平不变表示1。

 

 

  翻转的信号本身可以作为一种通知机制,可以看到,即使把 NRZI 的波形完全翻转,所代表的数据序列还是一样的,对于像 USB 这种通过差分线来传输的信号方便。

同步问题:
NRZ 和 NRZI 都没有自同步特性,但是可以用一些特殊的技巧解决。比如,先发送一个同步头,内容是 0101010 的方波,让接受者通过这个同步头计算出发送者的频率,然后再用这个频率来采样之后的数据信号。

在 USB 中,每个 USB 数据包,最开始都有个同步域(SYNC),这个域固定为 0000 0001,这个域通过 NRZI 编码之后,就是一串方波(复习下前面:NRZI 遇 0 翻转遇 1 不变),接受者可以用这个 SYNC 域来同步之后的数据信号。
此外,因为在 USB 的 NRZI 编码下,逻辑 0 会造成电平翻转,所以接受者在接受数据的同时,根据接收到的翻转信号不断调整同步频率,保证数据传输正确。

注:这样还是会有一个问题,就是虽然接受者可以主动和发送者的频率匹配,但是两者之间总会有误差。假如数据信号是 1000 个逻辑 1,经过 USB 的 NRZI 编码之后,就是很长一段没有变化的电平,在这种情况下,即使接受者的频率和发送者相差千分之一,就会造成把数据采样成 1001 个或者 999 个 1了。

USB 对这个问题的解决办法,就是强制插0,也就是传说中的 bit-stuffing,如果要传输的数据中有 7 个连续的 1,发送前就会在第 6 个 1 后面强制插入一个 0,让发送的信号强制出现翻转,从而强制接受者进行频率调整。接受者只要删除 6 个连续 1 之后的 0,就可以恢复原始的数据了。

 

4、曼彻斯特编码
  曼彻斯特编码方式和NRZI编码十分相似,只不过它是利用信号的跳变方向来决定数据的。在位中间,信号由高向低跳变表示数据0,信号由低向高跳变表示数据1。
曼彻斯特编码方式也如前面所说,虽然传输了时钟信号,但也损失了一部分的带宽,主要表现在相邻相同数据上。但对于高速数据来说,这种编码方式无疑是这几种编码方式中最优的,相比NRZI编码,曼彻斯特编码不存在长时间信号状态不变导致的时钟信号丢失的情况,所以在这种编码方式在以太网通信中是十分常用的。

 

5、PAM4
  随着带宽需求的不断增加,我们需要想尽办法增加单位时间内传输的逻辑信息。四电平脉冲幅度调制(PAM4,4-Level Pulse Amplitude Modulation),严格意义上来说是一种调制技术,采用4个不同的信号电平来进行信号传输。
  PAM4 调制方式采用一定的规则将二进制中的逻辑信号“0”和“1”转换为逻辑信号“0”,“1”,“2”和“3”,用四个不同的电平来进行信号传输。
PAM4 信号的每个符号周期包含了两个比特的逻辑信息,比如用逻辑信号“0”来代表逻辑信号“00”,“1”代表“01”,“2”代表“10”,“3”代表“11”。
这样一来,单个符号周期表示的逻辑信息,从NRZ的1bit,变成了2bit,翻了一倍。

 

 

  但PAM4容易造成很高的误码率,且对噪声也更加敏感。

标签:编码,归零,数字通信,传输,信号,NRZI,时钟
From: https://www.cnblogs.com/Ivan0506/p/16721953.html

相关文章

  • js校验手机号、邮政编码、email、url的数据合法性
    //校验手机号/固话functioncheckPhone(mobile){mobile=mobile+'';vartel=/^0\d{2,3}-?\d{7,8}$/;varphone=/^(((13[0-9]{1})|(15[0-9]{1})|(......
  • 字符编码
    字符编码一、字符编码字符编码(英语:Characterencoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机......
  • JAVA字符串转Unicode编码
    importjava.util.ArrayList;publicclassHello{publicstaticvoidmain(String[]args){Strings="我爱JAVA";System.out.println(s2uni......
  • java如何获取一个文本文件的编码(格式)信息呢?
    转自:http://www.java265.com/JavaJingYan/202110/16350332691561.html 文本文件是我们在windows平台下常用的一种文件格式,这种格式会随着操作系统的语言不同,而出现其......
  • 【前端】HTML编码效提升:快速生成HTML标签
    目录1.生成多级标签2.生成同级标签3.生成注释4.生成多个相同标签5.生成带class标签6生成带id标签.7.生成带内容标签18.生成带内容标签29.生成带属性标签GIF演示:快速生成HT......
  • url参数+,&,=,/等转义编码【转】
    问题描述在使用postman发送请求时,url出现了有+,空格,/,?,%,#,&,=等特殊符号,可能在转义之后导致服务器端无法获得正确的参数值。解决办法将这些字符转化成服务器可以识别的字符......
  • 编码在路上
    编码在路上编码是一种令人难以置信的在路上工作的方式。你选择你的时间,没有必要亲自到任何地方。这些都是很大的好处,但有时也很棘手。在移动中会遇到某些挑战。这些挑战包......
  • 字符编码笔记:ASCII,Unicode 和 UTF-8
    一、ASCII码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说......
  • 编码规范:不要用参数控制代码逻辑
    用参数控制代码逻辑可能是最经典的错误编码习惯,我在公司的项目代码中见到过好几次类似编码,包括我本人在职业生涯初期也编写过类似的代码。什么叫参数控制代码逻辑?我们可能......
  • 哈夫曼编码HuffmanCoding原理详解
    哈夫曼编码(\(Huffman\)\(Coding\))原理详解一、哈夫曼编码简介哈夫曼编码,又称为霍夫曼编码(\(Huffman\)\(Coding\))是一种可变长编码(\(VLC\),\(variable\)\(length\)......