|||
NRZI(Non Return to Zero Invert,不归零就反向)的编码方式,无须同步的时钟信号也能产生同步的数据存取。NRZI的编码规则是,当数据位为“1”时不转换,为“0”时再作转换。如图1所示,显示了NRZI编码的范例。位传输的顺序以LSB(最低位)为优先。
图1 NRZI编码的范例说明
NRZI编码的数字再生回路的数字逻辑电路如图2所示。其相对应的编号变化如图3所示。这样,接收与传输器两端的机制中,就无须先送出分离的时钟信号,或者在每一个字节中添加起始或结束位(如RS - 232)。如果用户使用示波器来观察这种USB数据,将会发现它不像其他的接口,可以以逻辑准位来读取这些传送或接收的位。
图2 USB的NRZI再生回路的数字逻辑电路图
图3 相对A、B、C位置NRZI再生回路的信号关联图
这样的编码方式会遇到一个很严重的问题:若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐地累积而导致“塞车”的状况,使得读取的时序就会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填塞(bits-tuffing)的工作。如图4(a)所示,若原始的串行数据中含有连续6个“1”位,就须执行位填塞的工作。此工作如图4(b)所示,就在其后填塞一个“0”位。但相对地在NRZI编码的过程中,对这连续的6个“1”执行,如图4(c)所示。
图4 NRZI译码的过程
因此在发送端进行数据传输之前,须先执行位填塞和NRZi编码的工作。相对的,在接收端进行数据接收之前,就必须先执行NRZI译码,然后再做位反填塞(unbit-tuffing)的工作。这一部分的电路会通过USB芯片中的SIE(串行接口引擎)来实现。