USB的编码方式
2012-09-24 14:51
190 查看
当PC主机对设各发出控制信号时,所有连接的设各都通过根集线器收到同样的信号,但是经过对比所配置的设各地址后,只能有一个设备作出相对应的动作,这跟网络的架构有点类似。因此对一个设各而言,不仅要无误地接收主机端所送来的数据,又要正确地发出响应的信号。因此,在D+与D-的差动数据线上就必须采用一种特别的编号方式再加以传送出去,以解决在USB缆线所产生信号延迟以及误差等问题。
在此,USB采用了NRZI(Non Return to Zero Invert,不归零就反向)的编码方式,无须同步的时钟信号也能产生同步的数据存取。NRZI的编码规则是,当数据位为“1”时不转换,为“0”时再作转换。如图1所示,显示了NRZI编码的范例。位传输的顺序以LSB(最低位)为优先。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370541.gif&size=0)
图1 NRZI编码的范例说明
NRZI编码的数字再生回路的数字逻辑电路如图2所示。其相对应的编号变化如图3所示。这样,接收与传输器两端的机制中,就无须先送出分离的时钟信号,或者在每一个字节中添加起始或结束位(如RS - 232)。如果用户使用示波器来观察这种USB数据,将会发现它不像其他的接口,可以以逻辑准位来读取这些传送或接收的位。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370300.gif&size=0)
图2 USB的NRZI再生回路的数字逻辑电路图
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370890.gif&size=0)
图3 相对A、B、C位置NRZI再生回路的信号关联图
这样的编码方式会遇到一个很严重的问题:若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐地累积而导致“塞车”的状况,使得读取的时序就会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填塞(bits-tuffing)的工作。如图4(a)所示,若原始的串行数据中含有连续6个“1”位,就须执行位填塞的工作。此工作如图4(b)所示,就在其后填塞一个“0”位。但相对地在NRZI编码的过程中,对这连续的6个“1”执行,如图4(c)所示。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370963.gif&size=0)
图4 NRZI译码的过程
因此在发送端进行数据传输之前,须先执行位填塞和NRZi编码的工作。相对的,在接收端进行数据接收之前,就必须先执行NRZI译码,然后再做位反填塞(unbit-tuffing)的工作。这一部分的电路会通过USB芯片中的SIE(串行接口引擎)来实现。
在此,USB采用了NRZI(Non Return to Zero Invert,不归零就反向)的编码方式,无须同步的时钟信号也能产生同步的数据存取。NRZI的编码规则是,当数据位为“1”时不转换,为“0”时再作转换。如图1所示,显示了NRZI编码的范例。位传输的顺序以LSB(最低位)为优先。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370541.gif&size=0)
图1 NRZI编码的范例说明
NRZI编码的数字再生回路的数字逻辑电路如图2所示。其相对应的编号变化如图3所示。这样,接收与传输器两端的机制中,就无须先送出分离的时钟信号,或者在每一个字节中添加起始或结束位(如RS - 232)。如果用户使用示波器来观察这种USB数据,将会发现它不像其他的接口,可以以逻辑准位来读取这些传送或接收的位。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370300.gif&size=0)
图2 USB的NRZI再生回路的数字逻辑电路图
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370890.gif&size=0)
图3 相对A、B、C位置NRZI再生回路的信号关联图
这样的编码方式会遇到一个很严重的问题:若重复相同的“1”信号一直进入时,就会造成数据长时间无法转换,逐渐地累积而导致“塞车”的状况,使得读取的时序就会发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填塞(bits-tuffing)的工作。如图4(a)所示,若原始的串行数据中含有连续6个“1”位,就须执行位填塞的工作。此工作如图4(b)所示,就在其后填塞一个“0”位。但相对地在NRZI编码的过程中,对这连续的6个“1”执行,如图4(c)所示。
![](http://qp.qq.com/cgi-bin/cgi_imgproxy?url=http%3A%2F%2Fwww.dzsc.com%2Fdata%2Fuploadfile%2F2008121515370963.gif&size=0)
图4 NRZI译码的过程
因此在发送端进行数据传输之前,须先执行位填塞和NRZi编码的工作。相对的,在接收端进行数据接收之前,就必须先执行NRZI译码,然后再做位反填塞(unbit-tuffing)的工作。这一部分的电路会通过USB芯片中的SIE(串行接口引擎)来实现。
相关文章推荐
- USB的编码方式——NRZI编码
- USB的编码方式 转帖
- USB的编码方式及时钟同步方式
- USB编码方式
- 对 javaEye上帖子 form表单提交数据编码方式和tomcat接受数据解码方式的思考 的一点理解
- 常见中文编码方式介绍
- 英文操作系统下Eclipse编码方式
- XML 数据的编码方式
- 中文编码为英文方式:
- Web编码方式
- usb多分区自动挂载实现方式1(脚本方式,非完美)
- 修改tomcat默认的编码方式
- 从零开始学android编程之修改编码方式
- 判断一个文本文件的编码方式
- Android 数据传输方式 WIFI 蓝牙 USB
- eclipse操作---改变编码方式(不同页面,project,某个文件,服务器发布目录)
- 编码方式及BOM
- Java编码方式
- eclipse中设置项目的编码方式
- tomcat配置get请求编码方式