在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
EETOP诚邀模拟IC相关培训讲师 创芯人才网--重磅上线啦!
查看: 3108|回复: 8

[求助] USB2.0协议中的速度限制

[复制链接]
发表于 2020-5-25 17:51:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在网上只找到了一个仁兄和我要问的一样,就直接把他的问题复制过来了。usb2.0协议内有几个图例说明带宽限制,附图是其中之一,这里有两个问题搞不清楚,一个是每次传输的帧带宽(Frame Bandwidth per Transfer),这个百分数是怎样得来的,另外一个是Bytes Remaining指的是什么,又是怎样计算得来的,它们之间有怎样的联系,希望有大牛能帮忙解惑
1590400215(1).png

发表于 2020-5-26 07:10:33 | 显示全部楼层
本帖最后由 kk2009 于 2020-5-26 07:21 编辑

简单解释一下这个表,抛砖引玉吧:
说的是control channel(Endpoint 0)最大的带宽限制。
前提假设:每次transaction是包括setup,data 和 status3个stage,其中data stage里的status是空包(0长度)。假设packet传输过程没有任何bitstuff。下面这个图基本上就表示了endpoint 0 一次transaction的牵涉到的packet(endpoint 0 read的情况,write的情况基本一样)

image.png

下面这个图是token的比特数,基本上一个token就是8bit sync+8bit PID+16bit(addr,endpoint和crc)总共32bit

image.png
下面这个图是一个handshake packet的格式,8bit sync + 8bit PID 总共16bit
image.png
下面这个图是data packet的格式, 8bit sync+8bit PID + payload length+16bit crc,共32bit+payload

image.png

根据第一个图我们可以算出完成一次control endpoint transaction的overhead:
sync,每一个packet发都有一个8bit的sync,总共需要9次传输,所以是9个byte的sync
PID:因为需要传输9次,所以是9个byte 的PID
ADDr+Endpoint+CRC5: 有3个token的packet需要发,所以3*16bit=6byte
CRC16:3个data packet需要发,所以3*16bit=6bytes
setup stage里data packet是8byte的payload,需要8bytes

7Byte的interpacket delay包括(这个我不是很确定):
EOP:每个packet的EOP是3bit,总共9个packet, 27bit
还有one bus turnaround, 1 delay between packets, and 2 hub setup times)


所以overhead总共就是45bytes。

所以第三行的payload是1(指的是data stage里DAT0里带的payload)
一个full speed micro frame的时间是1ms,总共的bandwidth就是12kbit/ms,还要减去一个SOF占用的bandwith(8bit sync + 8bit PID+ 16bit(frame no+crc5)=32)
overhead 是45byte,payload是1byte,总共是46byte = 368bit,占用bandwidth 368/(12K-32)=3%。
所以一个micro frame,可以发起32个这样的transaction。将占用3*32=96%的bandwidth。最后剩余的byte数: (12k-32-368*32)/8=23byte。


因为按照协议,FS的data stage里的DTA token的payload 长度最大就是64byte,所以算了一个从1byte到64byte的。





 楼主| 发表于 2020-5-26 14:01:52 | 显示全部楼层


kk2009 发表于 2020-5-26 07:10
简单解释一下这个表,抛砖引玉吧:
说的是control channel(Endpoint 0)最大的带宽限制。
前提假设:每次t ...


谢谢大佬解答!
发表于 2020-6-11 11:11:49 | 显示全部楼层
good
3q~
发表于 2023-8-22 17:47:14 | 显示全部楼层
为什么是9次传输?9个SYNC和9个PID?
发表于 2023-8-22 17:53:37 | 显示全部楼层


kk2009 发表于 2020-5-26 07:10
简单解释一下这个表,抛砖引玉吧:
说的是control channel(Endpoint 0)最大的带宽限制。
前提假设:每次t ...


大神,为啥是9个SYNC和9个PID啊?
发表于 2023-8-23 09:00:57 | 显示全部楼层


dqwuf2008 发表于 2023-8-22 17:53
大神,为啥是9个SYNC和9个PID啊?


上面的图,你去数标识了不同颜色的块就知道了,总共9块。

control enpoint 0一次transaction分3个phase:setup,data和status,每个phase里,又分3次交互。所以一共9次交互。

setup stage:
1,host(SETUP)->device
2,host(DATA0)->device
3,device(ACK)->host
data stage:
4,host(IN)->device
5,device(DATA0)->host
6,host(ACK)->device
status stage:
7,host(OUT)->device
8,host(DATA1)->device
9,device(ACK)->host
发表于 2023-8-24 10:16:19 | 显示全部楼层


kk2009 发表于 2023-8-23 09:00
上面的图,你去数标识了不同颜色的块就知道了,总共9块。

control enpoint 0一次transaction分3个phase ...


学习到了,谢谢
发表于 2024-8-6 10:24:16 | 显示全部楼层
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-10-31 11:34 , Processed in 0.023258 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表