找回密码
 -注册-
楼主: aarwwefdds
打印 上一主题 下一主题

【原创】拒绝YY 从基础讲解USB/UAC运作原理

[复制链接]
41
发表于 2017-4-28 10:41 | 只看该作者 来自 福建福州
aarwwefdds 发表于 2017-4-28 10:35
HUB相对于PC也不是Host啊...

相对于下一级设备就是HOST了呀
回复

使用道具 举报

42
 楼主| 发表于 2017-4-28 10:51 | 只看该作者 来自 上海
本帖最后由 aarwwefdds 于 2017-4-28 10:52 编辑
蓝子风 发表于 2017-4-28 10:41
相对于下一级设备就是HOST了呀

...所有的HUB都是“集线”作用 正常情况下它是透明的 不破坏与主机之间的网络拓扑。最终还是以主机的SOF为时钟标准。HUB或许可以做一些PLL,但是范围不能太大影响正常的时序 否则通讯无法进行

最难理解的部分是高速HUB与全速设备之间的互动 涉及到USB标准中最复杂的事务翻译。好在UAC2是跑在高速下的 不需要考虑这问题
回复

使用道具 举报

43
 楼主| 发表于 2017-4-28 11:02 | 只看该作者 来自 上海
本帖最后由 aarwwefdds 于 2017-4-28 11:05 编辑

影响主从的只有switch,不过我好像没见过“USB switch”。只有以太网有switch和hub,把以太网的hub和switch概念代换一下就懂了。老外用词还是很准确的

hub不破坏主从关系和带宽分配的,HUB需要做一些特殊的事情例如对全速设备的“事务翻译”和对设备的插入等拔出通知Host,还有某些情况下的带宽管理,丢弃掉一些包之类的
回复

使用道具 举报

44
发表于 2017-4-28 11:05 | 只看该作者 来自 福建福州
本帖最后由 蓝子风 于 2017-4-28 11:08 编辑
aarwwefdds 发表于 2017-4-28 10:51
...所有的HUB都是“集线”作用 正常情况下它是透明的 不破坏与主机之间的网络拓扑。最终还是以主机的SOF ...

MTT技术的USB HUB。实际是一个对下一级设备的HOST作用的设备了。

毕竟和主机连接的协议已经和次级设备的连接协议分隔开来了。因为分出来的接口不管是接HIGH-SPEED还是FULL-SPEED或者多个速率的设备,HUB和主机之间的连接都是HIGH-SPEED。虽然算是一种多重转译,但是也可以算是理解成一种重分配。
回复

使用道具 举报

45
 楼主| 发表于 2017-4-28 11:12 | 只看该作者 来自 上海
本帖最后由 aarwwefdds 于 2017-4-28 11:20 编辑
蓝子风 发表于 2017-4-28 11:05
MTT技术的USB HUB。实际是一个对下一级设备的HOST作用的设备了。

毕竟和主机连接的协议已经和次级设备 ...

事务翻译仅影响高速HUB与全速/低速设备之间的互动,不管是单TT还是多TT,都只影响全速/低速设备。

多TT相对于单TT的好处只是不同的全速设备之间的带宽不互相影响。无论是啥TT,都不影响高速设备与高速HUB与Host的互动,而UAC2是高速标准 不受影响,所以我才开始就强调了 好在UAC2是跑在高速下的 不需要管事务翻译那个蛋疼的问题

修订:说的更准确些
回复

使用道具 举报

46
发表于 2017-4-28 11:24 | 只看该作者 来自 福建福州
本帖最后由 蓝子风 于 2017-4-28 11:33 编辑
aarwwefdds 发表于 2017-4-28 11:12
事务翻译仅影响高速HUB与全速/低速设备之间的互动,不管是单TT还是多TT,都只影响全速/低速设备。

多T ...

实际上HUB转译之后,变相的相当于时钟重新分配了。如果能再加上传输损耗补偿就更好了。对于UAC也算是一个大帮助

另外,我没记错的话啊,STT的话,后端一个扩展口接FULL-SPEED设备的话,4个扩展口的连接速率都会统一成FULL-SPEED,共享带宽。
回复

使用道具 举报

47
 楼主| 发表于 2017-4-28 11:51 | 只看该作者 来自 上海
本帖最后由 aarwwefdds 于 2017-4-28 11:56 编辑
蓝子风 发表于 2017-4-28 11:24
实际上HUB转译之后,变相的相当于时钟重新分配了。如果能再加上传输损耗补偿就更好了。对于UAC也算是一个 ...

不会的...HUB不转译高速设备的数据包 直接pass下去...

你可以看下TT的USB包是怎么结合进高速链路里的。即使是TT 也是Host告诉HUB可以发送TT的包以后HUB才发送..因此本质上还是Host决定HUB什么时候可以发全速设备的数据。当然因此HUB需要一定的控制和buffer机制 比较复杂

另外...之所以需要TT就是为了避免你说的插一个全速其它都变全速这种情况。

补充:不然还要啥TT,直接插入全速设备的时候HUB声明自己变全速就行了...
回复

使用道具 举报

48
发表于 2017-4-28 12:04 | 只看该作者 来自 法国
蓝子风 发表于 2017-4-28 11:24
实际上HUB转译之后,变相的相当于时钟重新分配了。如果能再加上传输损耗补偿就更好了。对于UAC也算是一个 ...

又看到蓝子风同学打肿脸充胖子,各种自黑
回复

使用道具 举报

49
 楼主| 发表于 2017-4-28 12:09 | 只看该作者 来自 上海
你可以认为多个TT相当于HUB集成了多个全速/低速控制器 单个TT相当于HUB只有一个全速/低速控制器。单TT的话HUB上的全速/低速设备都共享一个12M带宽,多个TT就是不同的口有不同的12M带宽,但上行口还是一样的 高速

这里我要YY下:因为每个全速/低速口怎么传数据需要HUB和Host共同协作,产生的时间抖动不稳定问题“可能”会更严重/复杂

至于HUB上的高速设备...它实际上能看到HUB接收的TT包,所以对于HUB的上的高速设备,HUB上的全速/低速设备只不过是总线上另一个传输事务罢了。HUB不需要为高速设备做事务翻译 完全不需要
回复

使用道具 举报

50
发表于 2017-4-28 13:27 | 只看该作者 来自 中国
这个贴是不是要发到PCHIFI板块去
回复

使用道具 举报

51
 楼主| 发表于 2017-4-28 13:41 | 只看该作者 来自 上海
duben 发表于 2017-4-28 13:27
这个贴是不是要发到PCHIFI板块去

这个属于“HIFI理论”吧,发这里我觉得没啥不对。特别是关乎于所谓的“数字界面”(实际是DDC)的一些运作方式,这些是基础了

如果有空的话我再写写关于真·“数字界面”的事情 什么8XR之类的
回复

使用道具 举报

52
发表于 2017-4-28 14:28 | 只看该作者 来自 福建厦门
aarwwefdds 发表于 2017-4-28 08:43
突然发现你还有个黑历史
http://www.erji.net/forum.php?mod=viewthread&tid=767228&extra=&page=2

谢谢搬运!
回复

使用道具 举报

53
发表于 2017-4-28 17:38 | 只看该作者 来自 福建福州
本帖最后由 蓝子风 于 2017-4-28 17:44 编辑
aarwwefdds 发表于 2017-4-28 12:09
你可以认为多个TT相当于HUB集成了多个全速/低速控制器 单个TT相当于HUB只有一个全速/低速控制器。单TT的话H ...

哦,明白了,3Q呢。这样说来HUB还有肩负一个任务就是分类PC-HUB之间的带宽给下一级设备,STT就是只有提供一个低速或者全速的带宽,而MTT则是为后面每一个设备提供一个低速/全速带宽。这样转换到上行的时候。肯定会有一个数据重新整合的过程。
回复

使用道具 举报

54
发表于 2017-4-28 17:44 | 只看该作者 来自 福建福州
aarwwefdds 发表于 2017-4-28 13:41
这个属于“HIFI理论”吧,发这里我觉得没啥不对。特别是关乎于所谓的“数字界面”(实际是DDC)的一些运 ...

期待科普
回复

使用道具 举报

55
 楼主| 发表于 2017-4-28 19:05 | 只看该作者 来自 上海
蓝子风 发表于 2017-4-28 17:38
哦,明白了,3Q呢。这样说来HUB还有肩负一个任务就是分类PC-HUB之间的带宽给下一级设备,STT就是只有提供 ...

有的 HUB也确实需要一定的带宽管理。不过主要的分配任务还是在PC,也就是Host上。Host会给出什么时候应该做分割传输的信号,然后这时候HUB再把低速/全速设备的数据往上报。当然实际的流程更复杂,期间涉及多个buffer的管理和控制,是USB2.0里最复杂的逻辑了

它的逻辑方式可以参考一下这个
http://read.pudn.com/downloads129/ebook/551313/USB_2.0.pdf

然后USB3...这货就直接不要什么TT了 物理上向下兼容...
回复

使用道具 举报

56
发表于 2017-9-22 15:48 | 只看该作者 来自 中国
楼主,咨询个问题!!!
音频文件本身采样精度是16bit,外置音频解码器(乐之邦的一个设备)是32bit(bBitResolution)。
那么通过usb的iso方式传输数据时,一个样本应该是传多大?

我的理解:
1,一个样本传16bit?但是好像没有方法设定外置解码器的bBitResolution值。
2,一个样本传32bit?我需要在host的软件端,把音频文件的一个样本从16bit扩展成32bit,在传给外设??

其实就是问在主机端,外设的bBitResolution是可以更改的么?
还是需要在usb传输之前,通过软件把不同采样精度的音频,全部转换为符合外设要求的采样精度,然后传输?

本人刚开始接触UAC,问的问题比较低级,望解答一下,谢谢!
或者指明一下uac文档的那个章节可以找到,看了3天没找到。。。
回复

使用道具 举报

57
 楼主| 发表于 2017-9-23 04:16 | 只看该作者 来自 上海
TokuRin 发表于 2017-9-22 15:48
楼主,咨询个问题!!!
音频文件本身采样精度是16bit,外置音频解码器(乐之邦的一个设备)是32bit(bBit ...

最好的办法就是直接塞0了。方便处理

而且在某些情况下,例如在播放过程中应用了DSP,你可以很方便的从塞0直接转变为32位输出,保留更多的信息给解码器
回复

使用道具 举报

58
发表于 2017-9-23 07:15 来自手机 | 只看该作者 来自 广东
好帖战马。换一条线就能有提升?
回复

使用道具 举报

59
发表于 2017-9-23 17:57 | 只看该作者 来自 中国
aarwwefdds 发表于 2017-9-23 04:16
最好的办法就是直接塞0了。方便处理

而且在某些情况下,例如在播放过程中应用了DSP,你可以很方便的从 ...

多谢回复!!!
所以,是通过主机端软件修改音频数据,达到主机端和外设端相互匹配bit参数的(外设的bit值是恒定的)。而不是通过向外设发送控制请求,修改外设参数。
这样理解?

在问一下,主机和外设的通道数需要匹配么?
例如,主机端拿到的音频数据是2声道,外设如果是4声道,那这个转换,需要那边来做?

回复

使用道具 举报

60
 楼主| 发表于 2017-9-23 19:34 | 只看该作者 来自 上海
TokuRin 发表于 2017-9-23 17:57
多谢回复!!!
所以,是通过主机端软件修改音频数据,达到主机端和外设端相互匹配bit参数的(外设的bit ...

descriptor这玩意你改不了

然后是,(排除掉软件混音设备和SRC)在主机端处理过程中其实都是32位的。最后再根据需要裁切或者塞0。这个过程对音质无损

外设是4声道,音源是2声道的话。看你自己怎么弄,你可以把2声道直接输出到FL和FR(这个映射你可以自己在驱动面板设置或者驱动也有默认映射信息)。或者扩展成4声道输出给设备。一般情况下这些是主机端软件完成
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-11-24 20:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表