USB音频:终极指南
引言
USB,即通用串行总线,已经成为个人电脑中的标准接口超过十年。USB连接普遍存在,便于连接各种外围设备,例如麦克风、扬声器、外置驱动器和网络摄像头。本文将重点介绍USB音频——一种适用于个人电脑、智能手机和平板电脑的数字音频标准,它支持连接音频外设,如扬声器、麦克风和混音器。
USB基础
USB遵循一种协议,其中主机计算机启动对设备(如USB扬声器)的传输。每次传输都针对特定设备及其上的特定端点。传输类型共有四种:批量传输、同步传输、中断传输 和 控制传输。
批量传输 用于在主机和设备之间可靠地传输数据。所有的USB传输都带有CRC(校验和),用于指出是否有错误发生。在批量传输中,数据的接收者必须校验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。
因此,系统中至少有两个独立的时钟,一个是主机驱动频率为每秒8,000次传输的USB时钟,另一个是外部驱动采样率的采样时钟,例如96,000 Hz。
这些时钟的频率会有细微的不同,而且这种差异会随着时间的推移而略有变化。因此,每帧音频样本的平均数量将比预期的速率略多或略少。例如,在我们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 2.0的优势,USB音频类2.0实现了PC与音频设备之间的低延迟传输,确保了高吞吐量和卓越的音质。USB音频类适用于从复杂的混音器到环绕声系统、PC扬声器和麦克风等多种设备。
常见问题解答
问: USB音频中使用了哪些类型的USB传输?
答: USB音频中使用的传输类型包括批量传输、同步传输、中断传输和控制传输。
问: USB音频如何确保主机与外围设备之间的同步?
答: USB音频通过提供同步、异步和自适应三种模式来确保同步,其中异步模式因使用外部时钟源而最为可靠。
问: USB音频系统通常使用多少个时钟?
答: USB音频系统通常至少使用两个时钟:一个USB时钟和一个外部时钟,用于采样率。
问: USB音频设备中的时钟选择器有何作用?
答: USB音频设备中的时钟选择器允许用户选择输入时钟源,用于提供采样率。
问: 为何遵守USB音频类2.0对于无缝集成至操作系统至关重要?
答: 遵守USB音频类2.0标准可以确保设备无缝集成至操作系统,并通过标准操作系统对话框控制音量、采样率等参数。
集成支持
在中国,XMOS的合作伙伴木瓜电子为您的项目提供本地化支持和解决方案评估。如需帮助,请访问 pawpaw.cn 或发送邮件至 sales@pawpaw.cn。
总结来说,USB音频是一种多功能且可靠的数字音频传输标准,提供高保真和低延迟。通过理解USB音频的复杂性,用户可以充分利用其功能,实现无缝的音频体验。