NRZ、NRZI编码

2023-11-15

RZ 编码(Return-to-zero Code): 归零编码

在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,每传输完一位数据,信号返回到零电平。

信号线上会出现 3 种电平正电平负电平零电平

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

在 RZ 编码中,大部分的数据带宽,都用来传输“归零”而浪费

去掉这个归零步骤,NRZ 编码(Non-return-to-zero Code)就出现了,和 RZ 的区别就是 NRZ 是不需要归零的:

如图所示,浪费的带宽又回来了,不过又丧失了自同步特性。

 NRZI:

NRZI 编码(Non-Return-to-Zero Inverted Code)和 NRZ 的区别就是 NRZI 用信号的翻转代表一个逻辑,信号保持不变代表另外一个逻辑。

USB 传输的编码就是 NRZI 格式,在 USB 中,电平翻转代表逻辑 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,就可以恢复原始的数据了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NRZ、NRZI编码 的相关文章

随机推荐

  • 整流十二 -有效值、平均值、瞬时值、幅值的关系以及相关方法

    电网电流有效值计算方法 这里只描述电压的求解 电流与电压求解方式一样 单相正弦波 I Imsin wt 有效值 Irms交变电流的有效值是根据电流的热效应来定义的 让一个交流电流和一个直流电流分别通过阻值相同的电阻 如果在相同时间内产生的热
  • C++多线程的6种创建方法

    配合B站视频看添加链接描述 1 并发 进程 线程概念 在这里插入图片描述 2 创建线程 普通函数方法创建线程 包含头文件 调用thread类创建一个线程对象 include
  • 12个ggplot2扩展包帮你实现更强大的可视化

    ggplot2 Extension 转自 生信宝典 Bio Data 不一样的生信学习平台 ggplot2自从2007年推出以来 成为世界范围内下载最频繁 使用最广泛的R包之一 许多人包括ggplot2的创建人Hadley Wickham将
  • 单片机菜单

    单片机菜单结构设计 单片机 STM32F030F4 48MHz 开发环境 keil stm32cubemx 显示屏 LCD12864 一 准备工作 1 按键功能正常 本例用了3个按键 上按键 切换菜单里面的项目 中按键 执行菜单里面的项目
  • 与 CrackMapExec 结合攻击

    文章作者 Micropoor 原文链接 https micropoor blogspot com CrackMapExec弥补了MSF4下auxiliary scanner模块下的Command执行方式 但MSF5已解决该问题 在MSF4下
  • try-with-resource有什么作用,为了解决什么问题?

    Java中try with resources是一种方便且安全的资源管理方式 它可以在程序结束时自动关闭打开的资源 比如文件 网络连接等等 这个特性首次引入Java 7中 它为Java开发者提供了极大的便利 有效避免了因资源未关闭而导致的内
  • hive安装与配置详解

    1 hive下载地址http mirror bit edu cn apache hive 2 上传至software目录下 3 解压至指定目录 4 重命名hive 5 修改环境变量 6 让环境生效 7 查看hive版本 8 修改hive s
  • SCCM部署前的IIS、WSUS等准备

    SCCM部署前的IIS WSUS等准备 IIS是SCCM中非常重要的部署条件 SCCM部署中的很多环节都需要IIS的支持 因此 完成Active Directory的准备工作后 我们就开始IIS的准备工作 IIS的部署并不复杂 只需要安装一
  • sessionStorage 移动端兼容问题

    开发移动端项目 需要前端页面存储一些用户数据是一个常见的功能 sessionStorage和localStorage就是常用的选择 最近移动端项目用到sessionStorage时遇到一些问题 如 vivo手机自带浏览器 问题如下 A ht
  • 转载--网站数据统计分析中的日志收集原理及其实现

    http my oschina net leejun2005 blog 292709 转载于 https www cnblogs com benchan2015 p 4897378 html
  • Mysql(12)——聚集索引和非聚集索引

    MyISAM的索引树相关 主键索引树 这一部分我们之前在MyISAM的存储结构中也有所提及 我们也知道MyISAM使用B 树作为索引结构 叶节点的data域存放的是数据记录的地址 因为MyISAM存储引擎的数据和索引是分开存放的 分别是 M
  • redhat6.5 yum register 问题

    安装apache时 出现如下错误 configure error in usr local src httpd 2 2 24 srclib apr configure error no acceptable C compiler found
  • 【云原生之kubernetes实战】在k8s环境下部署Teleport堡垒机系统

    云原生之kubernetes实战 在k8s环境下部署Teleport堡垒机系统 一 Teleport介绍 1 Teleport介绍 2 本次实践说明 二 检查本地k8s环境 1 检查工作节点状态 2 检查系统pod状态 三 使用docker
  • java.sql.SQLException: No suitable driver found for 三种可能情况

    url user password 错了 没有导入 mysql connection jar包 数据库驱动没导入 你可能需要这个 Class forName com mysql cj jdbc Driver 数据库驱动问题
  • Quartus II not support the EP2C5F256I8 device,如何解决

    我自己前些天在运行项目时也发生了这个错误 事实上 我很困惑 因为我之前已经破解完成了 为什么有出现这个问题 报错提示 Error 102290 current license file does not support the EP2C5F
  • python量化交易招聘深圳_招聘兼职量化交易系统( python web版)

    需求描述 支持任务调度 分布式部署的 股票 期货 期权 港美股 数字货币 数据 回测 模拟 交易 可视化 多账户 纯本地量化解决方案 整个系统交易抽象为 用户信息管理 基础数据信息支持 策略管理 风控管理 交易执行模块 系统管理 回测系统七
  • Leetcode 142. 环形链表 II

    给定一个链表 返回链表开始入环的第一个节点 如果链表无环 则返回 null 为了表示给定链表中的环 我们使用整数 pos 来表示链表尾连接到链表中的位置 索引从 0 开始 如果 pos 是 1 则在该链表中没有环 说明 不允许修改给定的链表
  • 在Mac上使用GVM Tool安装Groovy、Grails环境

    一 下载gvmtool curl s get gvmtool net bash 命令运行后提示最后几句如下 Please open a new terminal or run the following in the existing on
  • Java-手动抛出异常

    Java 手动抛出异常 1 概念 关于异常对象的产生 系统自动生成的异常对象 手动生成一个异常对象 并抛出 throw 2 code举例 package p8exception p9 public class StudentTest pub
  • NRZ、NRZI编码

    RZ 编码 Return to zero Code 归零编码 在 RZ 编码中 正电平代表逻辑 1 负电平代表逻辑 0 每传输完一位数据 信号返回到零电平 信号线上会出现 3 种电平 正电平 负电平 零电平 从图上就可以看出来 因为每位传输