首页 > 其他分享 >USB编码方式(NRZI)及时钟同步方式

USB编码方式(NRZI)及时钟同步方式

时间:2024-08-07 15:53:03浏览次数:8  
标签:编码 同步 USB 编码方式 信号 NRZI 时钟

1.概述

在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC、SPI),自同步方式在通讯链路中没有同步信号(PCIE、USB),自同步方式常常适用于高速通讯系统中。

2.USB自同步传输

首先,USB 的数据是串行发送的,就像 UART、I2C、SPI 等等,连续的01 信号只通过一根数据线发送给接受者。但是因为发送者和接收者运行的频率不一样,信号的同步就是个问题,比如,接受者接收到了一个持续一段时间的低电平,无法得知这究竟是代表了 5 个 0 还是 1000 个 0。

一个解决办法,就是在传输数据信号的同时,附加一个时钟信号,用来同步两端的传输,接受者在时钟信号的辅助下对数据信号采样,就可以正确解析出发送的数据了,比如 I2C 就是这样做的,SDA 来传输数据,SCL 来传输同步时钟:

虽然这样解决了问题,但是却需要附加一根时钟信号线来传输时钟。因为USB没有时钟信号,有没有不需要附加的时钟信号,也能保持两端的同步呢?

有的,这就是 RZ 编码(Return-to-zero Code),也叫做归零编码。

3. RZ 编码(Return-to-zero Code)

RZ 编码(Return-to-zero Code),也叫做归零编码。在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,并且,每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现 3 种电平:正电平、负电平、零电平:

这样虽然省了时钟数据线,但是还是有缺点的,因为在 RZ 编码中,大部分的数据带宽,都用来传输“归零”而浪费掉了。

4. NRZ 编码(Non-return-to-zero Code)

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

这样,浪费的带宽又回来了,不过又丧失宝贵的自同步特性了,貌似我们又回到了原点,继续往下看。

5.NRZI 编码(Non-Return-to-Zero Inverted Code)

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

USB 传输的编码就是 NRZI 格式,在 USB 中,电平翻转代表逻辑 0,电平不变代表逻辑1:

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

现在再回到那个同步问题:

的确,NRZ 和 NRZI 都没有自同步特性,但是可以用一些特殊的技巧解决。

比如,先发送一个同步头,内容是 0101010 的方波,让接受者通过这个同步头计算出发送者的频率,然后再用这个频率来采样之后的数据信号,就可以了。

6.USB使用NRZI编码同步原理

在 USB 中,每个 USB 数据包,最开始都有个同步域(SYNC),这个域固定为 0000 0001,这个域通过 NRZI 编码之后,就是一串方波(NRZI 遇 0 翻转,遇 1 不变),接受者可以用这个 SYNC 域来同步之后的数据信号。

此外,因为在 USB 的 NRZI 编码下,逻辑 0 会造成电平翻转,所以接受者在接受数据的同时,根据接收到的翻转信号不断调整同步频率,保证数据传输正确。

但是,这样还是会有一个问题,就是虽然接受者可以主动和发送者的频率匹配,但是两者之间总会有误差。

假如数据信号是 1000 个逻辑 1,经过 USB 的 NRZI 编码之后,就是很长一段没有变化的电平,在这种情况下,即使接受者的频率和发送者相差千分之一,就会造成把数据采样成 1001 个或者 999 个 1了。

7.USB中用Bit-Stuffing来同步时钟信号

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

接受者只要删除 6 个连续 1 之后的 0,就可以恢复原始的数据了。

标签:编码,同步,USB,编码方式,信号,NRZI,时钟
From: https://www.cnblogs.com/linhaostudy/p/18347156

相关文章

  • USB 同步字段中高速同步字段和低速全速同步字段的区别
    USB(UniversalSerialBus)有几种不同的传输模式:低速(Low-Speed)、全速(Full-Speed)、高速(High-Speed)和超级速度(SuperSpeed)。同步字段(SyncField)是USB协议中的一部分,用于同步接收端的时钟,以便正确地接收数据。以下是高速同步字段和低速/全速同步字段的区别:低速和全速同步字段:-传......
  • 教程 | USB-IF USBCV软件工具使用指南
    一.概述CVTest是基于USBCV软件工具的合规性测试,可以验证设备是否符合USB规范和标准。USBCV则是USB-IF提供的一款免费USB装置测试软体,简要做USB2.0及USB3.0装置相关测试。本文将基于NXPLPC5516HID类键盘简要讲解USBCV中公有USB请求测试及HID类测试步......
  • USB基础知识总结
    USB基础知识总结USB基本概念介绍USB(UniversalSerialBus,通用串行总线)是1995年英特尔和微软等公司联合倡导发起的一种新的**PC串行通信协议。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。其最大特点是支持热插拔和即插......
  • 基于深度学习网络的USB摄像头实时视频采集与火焰检测matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 将usb摄像头对准一个播放火焰的显示器,然后进行识别,识别结果如下:    本课题中,使用的USB摄像头为:   2.算法运行软件版本MATLAB2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频) 程序中包......
  • 高性能USB转串口适配器,让USB和串行接口轻松实现双向通信!
    多功能数字接口转发器,让USB和串行接口轻松实现双向通信!高性能USB转串口适配器,助力你的嵌入式程序开发!USB转串口适配器可编程开发板TYPE接口是一种多功能的数字接口物理层协议转发器,可以转换USB接口和串行接口之间的双向通信。它支持多种嵌入式程序开发,并可以自由制定转发透传逻......
  • 强大的USB协议分析工具
    2020年最后一天了,感谢大家一年来对我文章的支持,有你们的支持就是我强大的动力。今天来给大家介绍一个USB协议分析软件LeCroyUSBAdvisor,软件安装包下载连接如下:链接:https://pan.baidu.com/s/12qBCOjuy4i8kr1MHjBrfYQ提取码:2rpx这个软件对于USB协议学习有很大帮助,下面就给大......
  • USB通讯架构及数据模型
    注意:(1)一个usb设备由一个或者多个接口组成;(2)每一个接口为usb设备的一个功能,比如上面的usb设备由两个接口,一个可用于鼠标,一个可用于键盘;(3)每个接口占用usb设备的多个端口资源;(4)windows通过一组管道(pipes)与usb设备的某个接口的端点进行数据交互实现某种功能;(5)usb设备最多具有16个......
  • USB协议基础篇
    初次接触USB的同学,可能会被里面各种名词给搞晕,下面就来梳理一下这些知识,希望能帮助大家理解USB。一,从最常见的名词说起1.1什么是USB这个我就不多解释了,直译就是通用串行总线。再不明白的就百度。1.2USB协议版本USB1.0/1.1(low/fullspeed),传输速率最大为12MbpsUSB2......
  • USB 端点和管道的区别
    在USB体系架构中,经常会混用USB端点和USB管道的概念,包括本人也经常混用。但严格来说它们是两个不同的概念,具体表现在:端点是USB设备端的概念,是真实的特理设备上的概念,其特性是通过端点描述符来描述的。而管道是USB主机端的上软件的概念,其概据USB的设备端点信息建立的数据软件数据......
  • windows xusb21.sys驱动对虚拟手柄个数限制
    由于windows授权限制,云游戏服务器上的windows版本多数为server2019部分游戏用到了手柄,调研后基于https://github.com/nefarius/ViGEmBus来魔改虚拟出84个手柄(一个容器只跑一个游戏,一个游戏独立使用4个手柄,一台云游戏服务器预开21个容器,所以理论至少需要能创建84个手柄)但是实......