找回密码
 -注册-

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

查看数: 32380 | 评论数: 75 | 收藏 25
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-4-23 19:58

正文摘要:

本帖最后由 aarwwefdds 于 2017-4-23 21:20 编辑 USB是通用串行总线的意思,本质上并不是专门用来传输音频数据的。这里先简单列举USB2.0几个特性:双绞线、带电源、数据速率与传输频率无关、自同步(不需要单独传 ...

回复

514PRO 来自 陕西 发表于 2023-1-22 13:25
挖个帖。
大佬我想问问很多玩OSU这种对延迟比较敏感游戏的玩家常常说独立解码器会有声画不同步的情况,他们反而推荐使用板载声卡。
请问属实吗?(我自己没这方面感受),是什么原因造成的?
专业尸体 来自 山东济南 发表于 2018-12-17 10:22
ppqppqpp 发表于 2018-12-14 21:18
20年经验老师傅,专业维修菊花

菊花很健康,暂无维修需求
ppqppqpp 来自 浙江衢州 发表于 2018-12-14 21:18
专业尸体 发表于 2018-12-14 17:02
楼主你好,本人小白刚接触一点usb音频,我enable了playback interface之后,给isochronous endpoint按照max ...

20年经验老师傅,专业维修菊花
专业尸体 来自 山东济南 发表于 2018-12-14 17:02
楼主你好,本人小白刚接触一点usb音频,我enable了playback interface之后,给isochronous endpoint按照maxpacketsize和interval发送pcm数据,从耳机那边只能听到嗡嗡的杂音,请问这是问什么呀?
wangzx998 来自 山东 发表于 2017-10-22 21:29
天将明 发表于 2017-10-22 03:25
虽然我没有看懂,但我怎么觉得这个意思是USB现在是个100马力的发动机,难题就在如何基于它做出好车。

  正是这个意思,通用性上USB无可匹敌
  协议和技术上可以挖掘的东西还有很多,而且支持的格式也多
天将明 来自 北美地区 发表于 2017-10-22 03:25
wangzx998 发表于 2017-10-21 00:03
usb这个东西通用程度太高,不止音频传输,设备输入输出慢慢都做成USB了
  可能没资格评论这个技术文( ...

虽然我没有看懂,但我怎么觉得这个意思是USB现在是个100马力的发动机,难题就在如何基于它做出好车。
蓝子风 来自 福建福州 发表于 2017-10-21 21:23
rgwan 发表于 2017-10-21 15:54
公开了,欢迎去我的GitHub。最近缺钱,打算做一个套件回血。到时候板子我能免费送一波,器件就没法送了。 ...

你的GitHub???恕我孤陋寡闻,查了下,不是软件项目的托管平台吗?给个访问方式呀~~~有空可以捧捧场的说呢。

期待早日能成功吧~~~因为每年这么多身怀“高大上”作品的人被淹没在茫茫人海中。祝阁下能脱颖而出吧。

=================================================================================

理论上人耳虽然听不出来20K以上的正弦波,但是不代表人耳听不出20K以上信号对20K以内信号的影响。所以个人是认同高采样是会带来可闻的听感改善。同样高BIT带来的动态和细节上的提升应该更容易让人感觉到提高。这就是我在B站那个视频里坚持的理论,只是表达方式上可能被人带歪了。
rgwan 来自 四川成都 发表于 2017-10-21 15:54
本帖最后由 rgwan 于 2017-10-21 15:58 编辑
蓝子风 发表于 2017-10-20 23:01
B站上的那个呀,如果纯粹正弦波可以没问题,但是问题是音频信号中不止正弦波。你的很多信号理论也基本是 ...

公开了,欢迎去我的GitHub。最近缺钱,打算做一个套件回血。到时候板子我能免费送一波,器件就没法送了。

另外的,20k的非正弦波当然会被切除高频谐波变为正弦波,毕竟数字采样只能够表示带限信号。不过……首先你得能分辨的出20k以上谐波的存在……
wangzx998 来自 山东 发表于 2017-10-21 00:03
wangzx998 发表于 2017-10-20 23:58
技术文好评,虽然难以看懂
  个人见解,HIFI烧油,也是PC攒机烧友
  相对于笔记本,尽量不要USB直连,O ...

  usb这个东西通用程度太高,不止音频传输,设备输入输出慢慢都做成USB了
  可能没资格评论这个技术文(因为这些东西真的不懂啊)
  但是这是趋势,USB相当于一台1000马力的八缸发动机了,怎么基于这个心脏做出好车,匹配好变速箱已经不是发动机的问题了
wangzx998 来自 山东 发表于 2017-10-20 23:58
  技术文好评,虽然难以看懂
  个人见解,HIFI烧油,也是PC攒机烧友
  相对于笔记本,尽量不要USB直连,OEM的板子用料什么的不会太好。
  攒机里对于声卡就不必多说了,ROG的板子声卡也不会太好
  至于USB,现在都是3.0,3.1的时代了,稍微超频好点的板子用料,元器件都不会太差。
  发射端完全就不是瓶颈,看你收不收得到了,而且USB还可以绕过板载声卡(我的板载都是关闭的不用)
  USB是趋势,以后PCHIFI会占大多数,界面无可匹敌,通用性无敌~
  手上是华擎X370太极,买根乐机宝得的线刚开始有刺啦声,现在完全没有,听的美滋滋~
蓝子风 来自 福建福州 发表于 2017-10-20 23:01
本帖最后由 蓝子风 于 2017-10-20 23:14 编辑
rgwan 发表于 2017-10-18 23:14
求仔细读文档,看不懂就看实现……别上来就言之凿凿

上次在B站闲逛还看到你和其他人争论频率分辨 ...

B站上的那个呀,如果纯粹正弦波可以没问题,但是问题是音频信号中不止正弦波。你的很多信号理论也基本是根据这样的,比如22.05K信号只有2个采样的波形,你怎么分辨是正弦波还是三角波或者方波?所以其实越接近采样表达的极限,会有一定的问题。因为很多差不多比较高频的非线性波形,包含的谐波成分已经远超过这个频段了。所以就造成了损失。而很多这样的波形变化,是人耳可以分辨出来的。这也是为什么虽然人耳只能听到20-20K的音频信号,但是高采样高比特在声音上会比CD标准的16BIT/44.1K要出色。

有些时候是有认知错误,是真的错了,自然需要改正。我也有过不少的认知错误,比如早期的时候对于异步模式的理解错误。

当然了,你是专业者,或者你可以直接按照自己的元件用FPGA什么的搭一个你所谓的信号理论出来的USB DAC???
rgwan 来自 四川成都 发表于 2017-10-18 23:14
蓝子风 发表于 2017-4-28 09:45
按照USB规范,是BULK

求仔细读文档,看不懂就看实现……别上来就言之凿凿

上次在B站闲逛还看到你和其他人争论频率分辨率是和采样率有关还是跟分析窗口有关……本来很想发给你一本奥本海姆的信号与系统,可惜没绑手机发不出去233333333

rgwan 来自 四川成都 发表于 2017-10-18 22:54
本帖最后由 rgwan 于 2017-10-18 23:17 编辑
TokuRin 发表于 2017-9-23 21:42
我可能大背景没描述!

我是在Linux下,在应用层,去实现uac2.0协议(绕过了底层uac驱动),和外接音频解 ...

在应用层(user-space)上,实时性是比较难保证的,你可能遇到的是丢帧和长度调整不到位的问题(跟随声卡要求)。建议你还是用内核驱动,但是独占ALSA接口。

rgwan 来自 四川成都 发表于 2017-10-18 22:52
本帖最后由 rgwan 于 2017-10-18 22:58 编辑
aarwwefdds 发表于 2017-4-23 21:53
其实buffer也没那么精贵,现在的设备挂个几兆RAM轻而易举的事情,也不增加多少成本

主要是现在有两种 ...

其实这个东西还得看芯片。对通用单片机/FPGA之类的没APLL电路的芯片来说。做异步反而简单。如果系统有可以lock住SOF的PLL,那就是做同步简单了。

我个人还是比较喜欢做异步,因为好控制,对现在我手上的平台来说,实现比较简单(虽然对PC上需要实时应用的软件不友好),也比较好控制。近期打算公开一个STM32F205+CPLD UAC1、UAC2的实现,有空可以去我GitHub逛逛。

aarwwefdds 来自 上海 发表于 2017-9-24 22:04
TokuRin 发表于 2017-9-23 21:42
我可能大背景没描述!

我是在Linux下,在应用层,去实现uac2.0协议(绕过了底层uac驱动),和外接音频解 ...

我觉得你应该考虑是扩声道,位深可能不是问题
TokuRin 来自 中国 发表于 2017-9-23 21:42
我可能大背景没描述!

我是在Linux下,在应用层,去实现uac2.0协议(绕过了底层uac驱动),和外接音频解码器通信。
现在已经能够完全识别设备,并进行控制传输。
在播放音频时,即同步传输(iso)时,播放效果很乱(音频失真还有杂音)。

外接音频解码器:32bit,4声道。(设备信息中读取的)
音源:16bit,2声道。

按照你的讲解,我应该要把音源数据转换成32bit、4声道,再传给外设就OK?
aarwwefdds 来自 上海 发表于 2017-9-23 19:34
TokuRin 发表于 2017-9-23 17:57
多谢回复!!!
所以,是通过主机端软件修改音频数据,达到主机端和外设端相互匹配bit参数的(外设的bit ...

descriptor这玩意你改不了

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

外设是4声道,音源是2声道的话。看你自己怎么弄,你可以把2声道直接输出到FL和FR(这个映射你可以自己在驱动面板设置或者驱动也有默认映射信息)。或者扩展成4声道输出给设备。一般情况下这些是主机端软件完成
TokuRin 来自 中国 发表于 2017-9-23 17:57
aarwwefdds 发表于 2017-9-23 04:16
最好的办法就是直接塞0了。方便处理

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

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

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

yanagi_yui 来自 广东 发表于 2017-9-23 07:15
好帖战马。换一条线就能有提升?

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

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

GMT+8, 2024-11-22 05:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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