USB cable(USB电缆)流的是一个一个的数据包(packet)。
举一个快递的例子:例如快递公司收到一个快件,首先要派件,给收货人打电话,说你有一个快件到了,这个过程就相当于packet都从一个SYNC同步字段开始,SYNC是一个8位长的二进制串,只是用来同步的,它的最后两位标志了SYNC的结束和PID的开始,PID就是packet数据包标记。快件包可以分成几种类型:例如电池、冰箱、空调等,所以在快递前面要加入一个类型,是什么类型的packet,PID的前四位就是区分不同的packet类型。后面的四位是前面四位的反码(用于校验的)。假设快递主管把各种类型的快递分成几类,负责各种类型快递师傅来根据PID来判断是否是自己负责的那种类型的快递。然后快递师傅要根据包裹上写的地址把包裹送过去,相当于PID之后紧跟的是地址字段,这些具体的包裹很明确自己的去向,装在快递师傅的货车里(这个货车相当于USB cable)。快递地址包含两个地址:什么小区或者什么路 + 小区里哪一栋楼多少号或者哪条路多少号,这就相当于7位表示了总线上连接的设备或端口地址 + 4位端点地址。每条USB总线上最多支持128个设备(因为前面的7位)和除了0号端点外最多有15个in端点和15个out端点(前面的4位)。地址后面是帧号(11位),可以这样理解,假设要快递员送的货物分成很多次才可以送完,这个帧号并不是每一个packet都会有,它只在每帧或微帧开始的SOF Token包中发送,对于低速和全速模式来说,一帧就是1ms,对于高速模式是微帧,一个微帧为125ms,你快递不可能每次只送一个包裹吧,所以这里也不可能只能传一个packet。快递员有了这些信息,下面就开始送货了,就是Data字段,它可以有0到1024个字节不等,最后还有CRC校验字段做扫尾。
举一个快递的例子:例如快递公司收到一个快件,首先要派件,给收货人打电话,说你有一个快件到了,这个过程就相当于packet都从一个SYNC同步字段开始,SYNC是一个8位长的二进制串,只是用来同步的,它的最后两位标志了SYNC的结束和PID的开始,PID就是packet数据包标记。快件包可以分成几种类型:例如电池、冰箱、空调等,所以在快递前面要加入一个类型,是什么类型的packet,PID的前四位就是区分不同的packet类型。后面的四位是前面四位的反码(用于校验的)。假设快递主管把各种类型的快递分成几类,负责各种类型快递师傅来根据PID来判断是否是自己负责的那种类型的快递。然后快递师傅要根据包裹上写的地址把包裹送过去,相当于PID之后紧跟的是地址字段,这些具体的包裹很明确自己的去向,装在快递师傅的货车里(这个货车相当于USB cable)。快递地址包含两个地址:什么小区或者什么路 + 小区里哪一栋楼多少号或者哪条路多少号,这就相当于7位表示了总线上连接的设备或端口地址 + 4位端点地址。每条USB总线上最多支持128个设备(因为前面的7位)和除了0号端点外最多有15个in端点和15个out端点(前面的4位)。地址后面是帧号(11位),可以这样理解,假设要快递员送的货物分成很多次才可以送完,这个帧号并不是每一个packet都会有,它只在每帧或微帧开始的SOF Token包中发送,对于低速和全速模式来说,一帧就是1ms,对于高速模式是微帧,一个微帧为125ms,你快递不可能每次只送一个包裹吧,所以这里也不可能只能传一个packet。快递员有了这些信息,下面就开始送货了,就是Data字段,它可以有0到1024个字节不等,最后还有CRC校验字段做扫尾。