快捷搜索: 王者荣耀 脱发

RZ、NRZ、NRZ1、曼彻斯特编码

1、RZ(Return Zero Code)编码 也称为归零码,特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的低电平。 RZ编码又分为两种:

单极性归零码 低电平表示0,正电平表示1,如下图:

红色的线表示数据,只占据一部分的周期,剩下周期部分为归零段 双极性归零码 高电平表示1,负电平表示0

RZ编码特点:能够同时传递时钟信号和数据信号,但由于归零,需要占用一部分的带宽

2、NRZ(Non Return Zero Code)编码

也称不归零编码,即正电平表示1,低电平表示0。它与RZ码的区别就是它不用归零,也就是说,一个周期可以全部用来传输数据,这样传输的带宽就可以完全利用

使用NRZ编码若想传输高速同步数据,基本上都要带有时钟线,因为本身NRZ编码无法传递时钟信号。但在低速异步传输下可以不存在时钟线,但在通信前,双方设备要约定好通信波特率,例如UART

一般常见的带有时钟线的传输协议都是使用NRZ编码或者差分的NRZ编码

示意图

3、NRZI(Non Return Zero Inverted Code)编码

反向不归零编码,集成了前两种编码的优点,即既能传输时钟信号,又能尽量不损失系统带宽

编码方式:当电平状态发生变化时,表示的数据为0,信号电平不变表示1 (开始)

USB2.0通信的编码方式就是NRZI编码

波形示意图:(表示00100010)

特点:

1)在传输的数据中,很少出现全1的状态,故接收端可以根据发送端的电平变化确定采样时钟频率

2)如出现数据为全1的状态,也就是说信号线一直保持一个状态,这个时候时钟信号就无法传输,接收端就无法同步时钟信号,这该如何解决呢? 解决方式:

在一定数量的1之后强行插入一个0,就是说若信号线状态一直持续一段时间不变的话,发送端强行改变信号线的状态,接收端则只需要将这个变化忽略掉就可以了 USB2.0的协议中规定为传输7个1则在数据中插入一个0 举例发送数据1111 1111 ,如下图:

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

4、曼彻斯特编码

利用信号的跳变方向来决定数据的。在位中间,信号由高向低跳变表示数据0,信号由低向高跳变表示数据1 波形示意图:(数据1001 1010)

经验分享 程序员 微信小程序 职场和发展