现在,不起眼的通用串行总线 (USB) 已成为几乎所有类型消费设备的实际接口,人们越来越关注将其功能应用于音频接口。在本文中,我们将探索一种新出现的 USB 桥接设备类别,它可以处理支持硬件中的音频设备类应用程序所需的许多细节。正如我们将展示的,USB 的充足带宽、易用性和简单的控制结构使其成为交换和控制数字高质量音频流的自然选择。
虽然从消费者的角度来看,USB 音频很简单,但在连接器的另一端却不是那么容易。这在很大程度上是因为 USB 协议栈非常复杂,能够支持许多明显不同类型的应用程序,正式称为 USB 类。这包括音频设备类,它定义了通过 USB 传输音频的强大标准化机制。从 USB 端口提取音频数据以供应用程序的
MCU 分发、存储或进一步处理通常需要牢牢掌握 USB 协议层的细节(要了解有关 USB 协议本身的更多信息,请参阅 TechZone 文章“提示,技巧在嵌入式应用程序中使用 USB - 部分”)。除了协议本身的复杂性之外,其他与音频相关的问题,例如数据流的同步和编程编解码器以及数模
转换器 (DAC) 配置,即使是有经验的嵌入式和音频设计师也可能面临挑战。
为了解决这些问题,Silicon Labs 的 CP2114音频桥等设备支持同步、流管理和其他通常需要大量软件开发工作的任务。在本文中,我们还将探讨 USB 音频桥接器提供新颖的标准音频配置接口以及在低成本、高度集成的单芯片解决方案中同步音频数据流的方法。
通过 USB 流式传输音频所涉及的挑战之一是从主机(源)到设备(接收器)的数据流同步。尽管 USB 初是作为连接键盘、鼠标和打印机的简单接口而开发的,但其协议规范还包括用于“同步传输”的强大同步方案。音频设备类定义采用此方案通过总线可靠地传输音频数据。然而,这种机制的实现并不是一项简单的任务,以前的实现通常是围绕相对强大的嵌入式系统构建的,这些系统包括复杂的数据速率转换器或昂贵的锁相环 (PLL),以支持时钟精度要求。
例如,一个采样率为 48 kHz 的系统,主处理器每毫秒传输一个包含 48 个模拟输出样本的帧。接收器(接收设备)必须缓冲音频输出数据,以便将其发送到 DAC,一个样本。即使主机和设备之间的小时钟不匹配也可能导致溢出或运行不足的情况。USB 规范定义了几种适应主机/设备时钟不匹配的方法。
表 1 列出了控制 USB 源和接收器操作的各种模式。(请记住,对于音频输出操作,主机是源,设备是接收器。对于音频输入操作,设备是源,主机是接收器。)
表 1:USB 音频同步模式。
异步模式传输
当接收设备没有 PLL 硬件与主机时钟同步时,采用异步操作。在这种模式下,几乎可以肯定会出现频率不匹配,导致它处理源发送的音频数据太慢或太快。为了适应这种源/接收器时钟不匹配,接收器向源提供明确的反馈,用于调整其采样率和向接收器发送样本的速率(图 1)。
pYYBAGL1uViAfOnpAAB2CoEss2M395.png
图 1:以主机设备作为源的异步模式操作。
图 2 说明了使用以标称 48 kHz 采样率运行的缓冲系统的异步传输机制。初,对于每毫秒发生的每个 USB 帧开始 (SOF) 操作,主机以 48 个样本开始流式传输数据。如果时钟不匹配导致接收设备的缓冲区接近满或空状态,则设备可以请求主机每次发送更多(49)或更少(47)个样本,以防止缓冲区出现溢出或欠载情况。支持这种信令机制的硬件逻辑在 Silicon Labs 的 CP2114 USB-to-I2S 数字音频桥设备中实现,无需任何额外的软件开发即可支持音频设备类。
图 2:异步模式操作需要来自接收缓冲区的明确反馈,以防止出现下溢或上溢的情况。
同步传输
对于同步操作,源和接收器使用隐式反馈,并且两个设备的时钟都锁定到 USB SOF。接收设备必须与 USB SOF 同步(图 3)。
图 3:同步模式操作使用公共时钟来确保源仅提供接收设备可以处理的尽可能多的数据包。
通过闭环控制可以纠正 USB SOF 和接收设备内部
振荡器之间的任何失配,从而实现简单而稳健的同步模式。此实现如图 4 所示。
图 4:支持基于内部振荡器的同步模式操作的闭环控制方案。
主机每毫秒发送的 USB SOF 用于校准内部振荡器。为了使这种方法正常工作,接收设备的内部振荡器必须通过校准寄存器进行调节,该校准寄存器可以以非常小的步长增加或降低内部振荡器频率。CP2114 数字音频桥的内部振荡器包括一个数控动态微调机制,它具有足够的精度来满足这些要求。CP2114 使开发人员能够在同步模式和异步模式之间进行选择,现在所有流行平台(包括 Windows、Linux、Mac OS 和适用于 Apple iPad 的 iOS)都支持这种模式。
编解码器/DAC 配置接口“非”标准
得益于许多制造商提供的各种编解码器和 DAC 组件,设计人员可以选择能够提供所需性能和功能的设备。然而不幸的是,没有用于配置其设备功能的标准或协议。因此,每个制造商都有自己独特的设备配置程序,这通常会增加开发人员为支持多个编解码器/DAC 平台而必须创建的软件的复杂性。
该问题的一种解决方案是为 USB 桥接器配备“垫片机制”,该机制为主机系统提供标准编解码器/DAC 配置接口。一组标准的寄存器位置允许开发人员配置大多数编解码器和 DAC 中的典型功能,而无需了解更多正在使用的设备的型号。除了简化软件开发之外,此功能还可以轻松评估各种编解码器/DAC 产品,或将现有设计转换为不同的组件。出于这个原因,CP2114 音频桥包括一个标准配置接口机制,支持广泛的编解码器/DAC。
如图 5 所示,CP2114 桥接器件的标准化编程接口解决了所有编解码器和 DAC 中常见的功能,包括 DAC 寄存器大小、音频格式、音量控制和音频时钟比率。此外,该接口还提供了用于自定义编程的开放字段和一个抽象层,以易于理解的格式封装了典型的配置功能。
图 5:CP2114 的框图。
一旦开发人员熟悉了这个接口,在编解码器和 DAC 设备之间切换就变得很简单。表 2 列出了 CP2114 标准音频配置编程接口的一部分。
表 2:CP2114 桥接设备的标准编程接口寻址的功能示例。
该设备的 USB 端口兼作其所有功能的控制/配置接口,包括 DAC/编解码器设置。所有配置值都存储在 EPROM 中,并且可以由主机随时更改,从而允许对编解码器/DAC 的配置值进行动态更新。
结论
主要的设计问题,例如音频数据流的同步和编解码器/DAC 配置,即使是的嵌入式和音频设计师也可能面临挑战。下一代数字音频桥接解决方案(例如 CP2114 器件)通过标准配置接口支持各种编解码器和 DAC,从而限度地降低了这种复杂性,以少的外部组件支持异步和同步操作模式,并且无需外部组件,如
晶体振荡器和 EEPROM。