USB 音频全析:技术核心与多元应用的深度洞察

USB 之基:连接与传输的基石

在科技浪潮汹涌澎湃的时代长河中,USB,这一通用串行总线,宛如一颗璀璨星辰,高悬于个人电脑的浩瀚苍穹已逾十载。其连接之广泛,恰似一张无形大网,轻松将麦克风、扬声器、外置驱动器以及网络摄像头等各类外围设备紧密相连。

而本文将聚焦于 USB 音频 —— 这一在个人电脑、智能手机和平板电脑领域熠熠生辉的数字音频标准,它仿若一座桥梁,巧妙地衔接起扬声器、麦克风与混音器等音频外设,开启了音频传输的崭新篇章。

先探 USB 之根基。USB 遵循特定协议运行,恰似一场精密有序的交响乐演奏,其中主机计算机担当指挥角色,发起对诸如 USB 扬声器之类设备的传输指令。每次传输皆精准指向特定设备及其特定端点,犹如箭之射向靶心。其传输类型林林总总,共有批量传输、同步传输、中断传输以及控制传输四类。

批量传输,仿若一位沉稳可靠的信使,专注于在主机与设备间稳妥地传递数据。所有 USB 传输皆携 CRC(校验和)保驾护航,宛如忠诚卫士,时刻审视是否有误。于批量传输中,数据接收者务必校验 CRC,若其正确无误,传输便获确认,数据亦被视作无差错传输;反之,若 CRC 有误,传输则不予确认并将重试。倘若设备尚未准备就绪接纳数据,可发送否定确认 NAK,NAK 恰似一声令下,促使主机重新尝试传输。批量传输并非时序要求严苛之方式,它恰似灵动舞者,巧妙周旋于时序要求严格的传输方式周边。

同步传输,则似一位时间观念极强的急先锋,用于在主机与设备间实时传输数据。当主机设定同步端点时,会为等时端点分配特定带宽,并周期性地在该端点执行输入或输出传输。譬如,主机可每隔 125 毫秒向设备输出 1K 字节数据。然因带宽固定且有限,一旦传输出现状况,并无时间重传数据。数据虽有正常 CRC,但接收方若检测到错误,却无重发机制。

中断传输,名字虽易引人误解,实则如一位尽职的巡逻员,被主机用于定期轮询设备,探查是否有价值之事发生。例如,主机可轮询音频设备以确认 MUTE 按钮是否被按下,虽其名有 “中断” 二字,实则定期轮询之功能与主机中断殊途同归。

控制传输,与批量传输极为相似,可被确认、被拒绝,且以非实时方式交付,犹如一位幕后调度员,用于正常数据流之外的操作,诸如查询设备功能或端点状态等。关于如何描述设备功能,此非本文探讨范畴,仅知有诸如 “USB 音频类” 或 “USB 大容量存储类” 等预定义类,它们是实现跨平台互操作性的得力助手。所有传输皆以 USB 帧为最小单位进行,高速 USB 帧间隔为 125μs(全速 USB 为 1ms),并由主机发送帧开始(SOF)消息予以标记。同步和中断传输每帧至多传输一次。

USB 音频:数据传输的精妙编排

再观 USB 音频之妙处。USB 音频借助同步传输、中断传输与控制传输来传递音频数据。同步传输宛如音频数据的高速通道,用于传输音频数据;中断传输恰似音频时钟的守望者,用于监控音频时钟可用性;控制传输则如音频设置的调控大师,用于调整音量与采样率等参数。

其数据需求因通道数量、样本比特数以及采样率而异。常见通道数有 2 个(立体声)、6 个(5.1)甚至更多用于工作室和 DJ 的通道。采样大小方面,典型值有 24bits,16bits 常用于传统音频,32bits 则服务于高质量音频。采样率常见 44.1、48、96 和 192kHz,后者常用于高质量音频制作。

假设设计一个采样率为 96kHz、采样大小为 24bits 的立体声扬声器,为简化主机与设备间数据传输,24bits 值常以零字节填充,如此一来,总数据吞吐量便是 96,000 x 2 通道 x 4 字节 = 768,000 字节 / 秒。同步端点运行速度为每 125μs 传输一次 —— 即每秒 8000 次传输。将每秒所需字节率除以每秒传输次数,可得每次同步传输字节数:768,000/8,000 = 每次传输 96 字节。

时钟同步:时间协调的关键密钥

USB 时钟同步亦是关键一环。数字音频领域,恰似在时间迷宫中探寻出路,需在共同时间概念上达成一致。前文提及 USB 帧每秒传输 8000 次,扬声器每秒播放 96000 次样本,唯当扬声器与主机就一秒钟长度达成共识,方能和谐运作。

USB 音频提供三种模式,力保主机与扬声器在时间上携手共进。同步模式 下,一秒钟长度由主机设备定义,主机以特定速率发送数据,设备需全力匹配。异步模式 则反其道而行之,设备主导一秒钟定义,主机依此调整。自适应模式 中,数据流决定时钟走向。

然自适应与同步模式并非尽善尽美,因个人电脑在维持稳定时钟方面表现欠佳,且常有其他音频源介入,如外部数字卡座。异步模式借助外部时钟源或设备中的低抖动时钟作为主时钟,通常二者皆依赖基于晶体的 PLL。故而系统中至少存在两个独立时钟,一为驱动 USB 传输频率为每秒 8,000 次的 USB 时钟,一为驱动采样率(如 96,000Hz)的采样时钟。

这些时钟频率略有差异,且随时间推移变化微妙。例如在 96,000Hz 采样率情形下,平均样本数可能为 12.001。为确保主机发送数据量精准无误,主机通过中断端点请求当前采样率。每隔数毫秒,上一阶段平均采样率便以 16.16 位定点数形式回报。若最后周期平均数为 12.001 帧,则报告值为 0x000C0041(65536*12.001)。

有此平均速率,主机便可计算何时在传输中额外发送样本;在此例中,每秒 8 次传输将携带一个额外样本。此外,主机可借此值与音频设备同步,使 DVD 播放器等主机应用程序保持视频与音频同步。否则,音频将逐渐超前视频,两小时后,声音便会比画面快一秒钟。

为维持短反馈回路,关键在于避免不必要地缓冲音频数据包与反馈数据包。任何额外缓冲皆会在报告中产生延迟,使流量顺畅维持更为艰难。这意味着底层 USB 协议栈与 USB 音频协议栈应紧密融合,中间不容缓冲。虽在应用处理器上实现颇具挑战,但于具有可预测执行时间的嵌入式处理器上则易如反掌。

总之,在数字音频世界,维持一致时间概念至关重要,USB 音频提供的三种模式 —— 同步、异步和自适应,为确保主机与外围设备同步各显神通,其中异步模式因外部时钟源而更为可靠。

复杂设备:多元时钟的精准抉择

复杂设备如混音器中,可能存在多个设备通过不同接口提供采样率。USB 音频允许设计师部署时钟选择器,以便从多个输入时钟(如 S/PDIF 连接的输入时钟、本地晶振以及 ADAT 连接的输入时钟)中选择输入时钟源用于提供采样率。用户可通过控制传输,选定如 S/PDIF 连接的输入时钟作为输入源。

合规支持:系统融合的顺畅桥梁

合规性与原生支持方面,符合 USB 音频类 2.0 标准,便能实现设备与操作系统的无缝对接,通过标准操作系统对话框轻松掌控音量、采样率等参数。

USB 音频的卓越贡献

综上所述,凭借高速 USB 2.0 的强劲优势,USB 音频类 2.0 成功搭建起 PC 与音频设备间的低延迟传输桥梁,确保高吞吐量与卓越音质。其适用范围广泛,从复杂混音器到环绕声系统、PC 扬声器以及麦克风等多种设备,皆在其服务范畴之内,为音频领域的发展注入了源源不断的活力与可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/888784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文:https://arxiv.org/pdf/2311.14897v3.pdf 项目:https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位,这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器,安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库,但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…

qt QNetworkAccessManager详解

1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类,它允许应用程序发送网络请求并接收响应。该类是网络通信的基石,提供了一种方便的方式来处理常见的网络协议,如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…

21、结构体成员分布

结构体中的成员并不是紧挨着分布的,内存分布遵循字节对齐的原则。 按照成员定义的顺序,遵循字节对齐的原则存储。 字节对齐的原则: 找成员中占据字节数最大的成员,以它为单位进行空间空配 --- 遇到数组看元素的类型 每一个成员距离…

前端基础——CSS

美化文档 HTML内部添加样式 本节我们来学习如何在标签中引入CSS样式。 1 在标签中添加声明 声明的关键字是style后接等号&#xff08;&#xff09;再接引号&#xff08;""&#xff09;&#xff0c;即style"" 具体声明如下&#xff1a; <input typ…

WPS解决Word文件引入excel对象文件无法打开提示“不能启动此对象...”的问题

一、问题现象 接收到了一份 Word文件&#xff0c;里面引入了一个Excel对象文件&#xff0c;双击时候&#xff0c;wps出现卡顿&#xff0c;过一会之后弹出错误提示&#xff1a;不能启动此对象... 二、解决方法 1.点击WPS左上角图标&#xff0c;并打开右上角设置&#xff0c;萱蕚…

在 Linux 系统中,可以使用以下简单快捷的方法来模拟 CPU 负载

在 Linux 系统中&#xff0c;可以使用以下简单快捷的方法来模拟 CPU 负载&#xff1a; 1. 使用 stress 工具 stress 是一个专门用于压力测试的工具&#xff0c;可以模拟 CPU、内存、I/O 等负载。 安装 stress&#xff1a; # Debian/Ubuntu 系统 sudo apt-get install stres…

spring下的beanutils.copyProperties实现深拷贝

spring下的beanutils.copyProperties方法是深拷贝还是浅拷贝&#xff1f;可以实现深拷贝吗&#xff1f; 答案&#xff1a;浅拷贝。 一、浅拷贝深拷贝的理解 简单说拷贝就是将一个类中的属性拷贝到另一个中&#xff0c;对于BeanUtils.copyProperties来说&#xff0c;你必须保…

【SpringBoot项目拆分】

背景&#xff1a;两个项目都使用相同了的底层方法&#xff0c;每次变更都需要修改两个项目&#xff0c;所以就考虑是否可以抽出来一个单独的项目来维护这些底层方法。 在网上找了很多发现都是新建module的&#xff0c;这种方法适合一个项目内部优化结构&#xff0c;不适合两个…

3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch

这篇看下RACH-less LTM cell switch。 相比于RACH-based LTM,RACH-less LTM在进行LTM cell switch之前就要先知道target cell的TA信息,进而才能进行RACH-less过程,这里一般可以通过UE自行测量或者通过RA过程获取,而这里的RA一般是通过PDCCH order过程触发。根据38.300中的描…

Ansible 运维工具

安装 apt install ansible /etc/ansible/hosts , 指定密码或密钥访问分组机器 [k8s_masters] master0.c0.k8s.sb[k8s_nodes] node0.c0.k8s.sb node1.c0.k8s.sb[k8s:children] k8s_masters k8s_nodes[k8s_masters:vars] ansible_ssh_usersbadmin ansible_ssh_pass"***&q…

C++的Find算法用法,

在 C 中&#xff0c;可以使用 std::map 统计值出现次数为 2 的键。具体步骤如下&#xff1a; 遍历 std::map&#xff0c;找出所有值为 2 的键。使用条件语句检查每个值&#xff0c;符合条件时记录对应键。 #include <iostream> #include <map> #include <vect…

《鸟哥的Linux私房菜基础篇》---4 Linux档案的压缩与打包

目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip&#xff08;.tar.gz&#xff09; (或 .tgz) 3、tar bzip2&#xff08;.tar.bz2&#xff09; 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…

基于springboot的音乐网站的设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 音乐网站 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了音乐网站的开发全过程。通过分析音乐网站管理的不足&#xff0c;创建了一个计…

【软考速通笔记】系统架构设计师⑲——专业英语

文章目录 一、前言二、常用名词三、架构风格四、非功能需求五、应用架构六、软件架构重用 一、前言 笔记目录大纲请查阅&#xff1a;【软考速通笔记】系统架构设计师——导读 二、常用名词 名词翻译architecture架构system系统design设计requirements需求components组件constr…

三菱JET伺服CC-Link IE现场网络Basic链接软元件(RYn/RXn)(RWwn/RWrn)

链接软元件(RYn/RXn) 要点 在循环通信中对主站发送给伺服放大器的请求(RYn及RWwn)设定了范围外的值时&#xff0c;将无法反映设定内容。 循环通信的请求报文与响应报文的收发数据被换读为伺服放大器的对象数据(RYn、RXn)。 响应报文的设定值可进行变更。变更初始设定值时&…

WPF中的VisualState(视觉状态)

以前在设置控件样式或自定义控件时&#xff0c;都是使用触发器来进行样式更改。触发器可以在属性值发生更改时启动操作。 像这样&#xff1a; <Style TargetType"ListBoxItem"><Setter Property"Opacity" Value"0.5" /><Setter …

ARINC 标准全解析:航空电子领域多系列标准的核心内容、应用与重要意义

ARINC标准概述 ARINC标准是航空电子领域一系列重要的标准规范&#xff0c;由航空电子工程委员会&#xff08;AEEC&#xff09;编制&#xff0c;众多航空公司等参与支持。这些标准涵盖了从飞机设备安装、数据传输到航空电子设备功能等众多方面&#xff0c;确保航空电子系统的兼…

用golang简单做一个内网穿透小工具!

一个个人需求&#xff0c;需要简单的穿透一下 家里的电脑&#xff0c;也不需要多稳定&#xff0c;也没有并发。然后 通过http可以访问到内网的 一个网站&#xff0c; 因为服务端 是linux 系统 &#xff0c;内网是 windows10服务器 所以 就采用 用golang这个语言来实现&#xff…