USB是通用串行总线的意思,本质上并不是专门用来传输音频数据的。这里先简单列举USB2.0几个特性:双绞线、带电源、数据速率与传输频率无关、自同步(不需要单独传输时钟)、Token(令牌)轮询特性[1]。双绞线的特性使得USB天生具有抗共模干扰的能力,带供电使得它带的设备可以不需要电源,令牌轮询特性用于“交通管制”。

USB是主从模式的总线,Host控制器决定它下面所有设备一切事务的发送/接收时机。全速下,Host每1ms±500μs生成一个“帧”(frame)。高速下,每125us±0.0625μs生成一个“帧”[2]。一个“帧”以SOF包打头,包含发送给同一个Host控制器下的不同设备的若干个USB数据包。因此同一个控制器下的USB设备带宽共享:


在同一个USB控制器上的全速设备(FullSpeed/FS)、低速设备(LowSpeed/LS)设备之间共享带宽。高速设备(HighSpeed/HS)之间共享带宽,不与全速/低速设备共享,甚至很多南桥会单独设计高速USB2.0控制器。这种共享带宽,在下行中是这样实现的:Host设备发给高速设备 H1的数据包,高速设备H2同样会收到相同的数据包,但是因为接收地址与自身地址不符,H2设备会无视该数据包。同样的,Host发给F1全速设备的数据包,F2全速设备和L1/L2慢速设备也会收到同样的包,但是会将其无视。[3]

上行带宽共享则是由主机控制:除非主机在“帧”中发送了IN包告诉这个设备准许发送数据,否则设备不允许发送数据。这样就避免了冲突产生。

USB有四种传输通道类型(Endpoint):控制(Control)、中断(Interrupt)、批量(Bulk)、同步(Isochronous)。
Control用于USB总线控制等(所有设备都有),Interrupt多用于鼠标键盘的数据传输(其实在USB令牌轮询的特性下这是个伪Interrupt),Bulk多用于U盘数据传输。
前三种类型都有重传,各有特点这里略过。但USB音频类(USB Audio Class,简称UAC)采用的音频数据传输是第四种端口,也就是Isochronous,拥有错误检测机制,但是没有重传。

为何没有重传呢。
一是音频/视频是很讲究“实时性”的,否则会音画不同步,带来的恶果是很蛋疼的。因此音频/视频设备本质上都需要与主机同步,重传会打乱同步。
二是同步(Isochronous)类型因为要求低延迟,不像别的传输类型有握手过程,同一个"传输端口"内数据包是单向移动的(要么入要么出),Host不会给一个OUT方向的同步传输通道发送IN包,没有办法引入重传机制(发生错误时无法通知主机)。[4]
另外还有一点,为了“同步”,每个“帧”中的每个同步(Isochronous)通道只会传送一次数据。

这里有人要问了 用一个IN和一个OUT的Isochronous通道不就可以解决错误处理了?(ASYNC异步下也确实有一对IN和OUT通道,具体作用下文会解释,反正不是用来“错误检测”)

事实上,不可能。Host在一个Frame中轮询各个Endpoint的顺序是不可知的,很可能Host在一个Frame中先轮询了你的IN通道,但此时Host还没给你的OUT通道传送数据。这样就产生了:数据还没发送 怎么能确认数据收到了呢。

但这是否值得担忧呢?USB自身抗干扰特性(双绞线/屏蔽层)使得正常/正确使用的情况下,产生错误的概率非常非常低。真产生错误了,设备因为CRC校验失败,会将错误的USB数据包丢弃,而这会导致USB界面缓冲区欠载,导致短暂静音/爆音

基础讲解USB/UAC运作原理相关推荐

  1. AI行为树的基础运作原理

    欢迎捉虫! 之前我研究了一下基于switch case语句的FSM状态机的使用,后来遇到了很多问题. 比如当角色的行为很多时,代码结构相当混乱(你需要考虑每一种状态之间的联系). 所以,当角色的行为愈 ...

  2. 【技术美术】千人千面如何炼成 技术讲解捏脸系统设计原理

    学习自 http://games.sina.com.cn/o/z/wuxia/2015-10-15/fxivsch3599438-p5.shtml 1. 技术讲解捏脸系统设计原理 天刀脸模型的风格定位 ...

  3. 【WPS-OFFICE-Word】 WPS中样式的运作原理?样式自动更新、自动改变如何处理?样式的管理方法?

    一.WPS中样式的运作原理 文档中的每一个文字或者段落,它的格式取决于两点--样式以及自定义修改. 比如内容A基于样式1,样式1的字体格式是五号宋体.段落格式是1.5倍行距: 我们在样式1的基础上,从 ...

  4. 绘画基础学习之两点透视原理

                                          前言 在上一篇中,我们讲述了透视原理中的一点透视.一点透视只有一个灭点,通过一组斜线来表示空间纵深感.下面我们将要学习的是两 ...

  5. 物流供应链系统运作原理,物流供应链管理系统优化布局

    物流供应链系统管理优化对于物流行业企业而言有重要意义,以前的观点是生产促进产业增值,现在随着消费行为多样性.消费种类多样化,在商品通过物流配送中实现安全.稳定.可控的成功交付.管理过程中,也是属于实现 ...

  6. PHP session的运作原理解析

    今天主要介绍关于PHP session的运作原理解析,内容当中有详细资料跟代码实例相结合,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本文主要介绍了 php语言,其他语言的操作可 ...

  7. RNAseq基础(项目设计,方法原理)

    一.项目设计 测多少数据量? 几个生物学重复? 混池测序是否性价比很高? 参考序列怎么选? 二.分析方法 转录本拼接 比对的两种模式 表达定量 FPKM,RPKM,TPM,TMM 差异表达分析 1. ...

  8. CISP-PTE 基础讲解

    CISP-PTE 基础讲解 前言 渗透基础 owasp top 10 POC和EXP payload,shellcode和webshell CVE编号和CNVD编号 0day漏洞和0day攻击 木马. ...

  9. 大脑是如何记忆的?大脑记忆工作的构成和运作原理

    我们每个人每天都会接收一些信息,同时我们还会忘掉一些东西,但我们很少去了解我们大脑为什么会这样处理?所以我们深入的探究一下大脑记忆是如何工作的?了解一下大脑记忆的构成和运作原理? 我们先看记忆是什么. ...

最新文章

  1. 职中计算机应用教学方法,职中《计算机应用基础》教学心得体会
  2. linux双屏显示不同内容,LINUX下双屏显示问题
  3. C++——可变模板参数
  4. firewalld的防火墙
  5. mips j指令_MIPS处理器 MIPS指令集(上)
  6. 联想u盘linux安装教程,联想笔记本用U盘安装 winXP系统教程
  7. .NET Core 2.0及.NET Standard 2.0
  8. c语言case多语句的取值,Switch Case语句中多个值匹配同一个代码块的写法
  9. Linux内存错误系统重启,linux服务器硬件报错,系统异常重启检测-MCElog
  10. 转:构建高性能ASP.NET站点之二 优化HTTP请求(前端)
  11. 【Java web】Servlet面试题
  12. RabbitVCS无法自动保存密码的BUG
  13. Handler看这一篇就够了
  14. 30年历史回顾,Jeff Dean:我们整理了一份「稀疏专家模型」研究综述
  15. android 实现进度条的画面加载
  16. wpf 直播视频播放器技术实现
  17. redis单点故障问题
  18. pycharm python 依赖管理_怎么解决pycharm license Acti的方法_python
  19. 使用花生壳配置内网穿透
  20. 华为路由器命令手册_用数据说话,华为路由Q2 Pro与网件R7800对比测评

热门文章

  1. Push推送的评估方法
  2. 医学图像数据格式和格式转换
  3. 分享:从ChatGPT给到的数据库故障案例,看开发协同未来趋势
  4. 41岁中兴员工:这可能是我第5次失业_中兴被美国制裁的思考
  5. 杨老师:Visual C++ 中操纵 MS Word 123
  6. 为什么要删module-info.java
  7. linux epoll机制
  8. 哈德教育:疫情后营销遇难,快商通使我们在获客转化上事半功倍
  9. 数理统计之Exi,EX怎么算
  10. 【SymPy】(五)简化