马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
在读USB协议中的同步字段
USB协议中的原文是这样说道,所有的包都从同步(SYNC)字段开始的,同步字段是产生最大的边缘转换密度(Edge TransitionDensity)的编码序列。同步字段作为空闲状态出现在总线上,后面跟着以NRZI编码的二进制串“KJKJKJKK”。通过被定义为8位长的二进制串,输入电路以本地时钟对齐输入数据。同步字段是用于同步的机制,在以后图表当中将不被表示(参照节7.1.10)。同步字段里的最后的2位是同步字段结束的记号,并且标志了包标识符(PID,Packet Identifer)的开始。
他提到了NRZI编码,首先我们学习一下像 UART、I2C、SPI 、USB 这样的串行总线式怎么传输数据的,通信时连续的 0、1 信号只通过一根数据线发送给接受者。但是因为发送者和接收者运行的频率不一样,信号的同步就是个问题,比如,接受者接收到了一个持续一段时间的低电平,无法得知这究竟是代表了 5 个 0 还是 1000 个 0。一个解决办法,就是在传输数据信号的同时,附加一个时钟信号线,用来同步两端的传输,接受者在时钟信号的辅助下对数据信号采样,就可以正确解析出发送的数据了,比如 I2C 就是这样做的,SDA 来传输数据,SCL 来传输同步时钟:
虽然这样解决了问题,但是却需要附加一根时钟信号线来传输时钟。有没有不需要附加的时钟信号,也能保持两端的同步呢?有的,这就是 RZ 编码(Return-to-zero Code),即归零编码。在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,并且,每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现 3 种电平:正电平、负电平、零电平:
从图上就可以看出来,因为每位传输之后都要归零,所以接受者只要在信号归零后采样即可,这样就不在需要单独的时钟信号。实际上, RZ编码就是相当于把时钟信号用归零编码在了数据之内。这样的信号也叫做自同步(self-clocking)信号。这样虽然省了时钟数据线,但是还是有缺点的,因为在 RZ 编码中,大部分的数据带宽,都用来传输“归零”而浪费掉了。那么,我们去掉这个归零步骤,NRZ 编码(Non-return-to-zero Code)就出现了,和 RZ 的区别就是 NRZ 是不需要归零的:
由于字数限制,请看下一篇
|