李小川希比的个人空间 https://bbs.21ic.com/?1270694 [收藏] [复制] [RSS]

日志

转 NRZI编码

已有 413 次阅读2017-11-27 17:31 |个人分类:电小二的征程之STM32|系统分类:兴趣爱好| USB, NRZI

转载自:http://blog.163.com/wind_0328/blog/static/6751207120100382441584/

NRZI(Non Return to Zero Invert,不归零就反向)的编码方式,无须同步的时钟信号也能产生同步的数据存取。NRZI的编码规则是,当数据位为“1”时不转换,为“0”时再作转换。如图1所示,显示了NRZI编码的范例。位传输的顺序以LSB(最低位)为优先。

转 NRZI编码 - will - wind_0328的博客

  图1 NRZI编码的范例说明

  NRZI编码的数字再生回路的数字逻辑电路如图2所示。其相对应的编号变化如图3所示。这样,接收与传输器两端的机制中,就无须先送出分离的时钟信号,或者在每一个字节中添加起始或结束位(如RS - 232)。如果用户使用示波器来观察这种USB数据,将会发现它不像其他的接口,可以以逻辑准位来读取这些传送或接收的位。

转 NRZI编码 - will - wind_0328的博客

  图2 USB的NRZI再生回路的数字逻辑电路图

转 NRZI编码 - will - wind_0328的博客

  图3 相对A、B、C位置NRZI再生回路的信号关联图

  这样的编码方式会遇到一个很严重的问题:若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐地累积而导致“塞车”的状况,使得读取的时序就会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填塞(bits-tuffing)的工作。如图4(a)所示,若原始的串行数据中含有连续6个“1”位,就须执行位填塞的工作。此工作如图4(b)所示,就在其后填塞一个“0”位。但相对地在NRZI编码的过程中,对这连续的6个“1”执行,如图4(c)所示。

转 NRZI编码 - will - wind_0328的博客

  图4 NRZI译码的过程

  因此在发送端进行数据传输之前,须先执行位填塞和NRZi编码的工作。相对的,在接收端进行数据接收之前,就必须先执行NRZI译码,然后再做位反填塞(unbit-tuffing)的工作。这一部分的电路会通过USB芯片中的SIE(串行接口引擎)来实现。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)