选用USB接口来保证高品质音频传输到外部设备是一种常用办法。由于运用者只需求把设备刺进到预装了驱动程序的通用接口即可,因而其关于音频运用极富吸引力。虽然有这些优势,运用USB音频类时仍然需求对体系规划进行正确的挑选,以保证传送音频流时不会产生过错或愈加糟糕的频率失配。这篇文章《挑选USB音频MCU须当心:来自测试台的可怕故事》给出了几个风趣的毛病事例。
USB音频体系是一个串行桥接体系,,它将来自USB总线的数据包转换成音频(I2S)总线数据包。这条总线一般衔接一个编解码器或下流音频处理器(图1)。I2S 总线的扎手之处在于,其需求精准的时钟信号,才干完成高品质音频。
图一:根据USB的音频体系将来自USB总线的数据包转换到I2S总线,后者一般衔接编解码器或下流音频处理器
举例来说,典型的音频采样率是48 k个样本/秒。大多数商用编解码器IC需求一个频率为音频采样率整数倍(一般是128或256倍)的纯洁时钟。这迫使编解码器的时钟频率到达恐惧的12.288 MHz,而这个频率难以从标准的晶振震动时钟源中取得。更为杂乱的是,支撑44.1 k个样本/秒等多个采样率需求为每一个采样率选用相同高品质的时钟。这意味着体系或许装备多个晶振振荡器,或选用十分灵敏的时钟计划。
可以运用贴片(SMD)振荡器,但这些一般功耗较大的器材需求高达20 mA的功率,因而不适合电池供电型设备。也可以运用锁相环(PLL)完成灵敏的时钟计划。例如,赛普拉斯的PSoC 4-L系列芯片内置PLL和高度可装备的通用数字模块(UDB),可让开发人员规划出灵敏的时钟计划。
Clocking Woes—the I2S Bus
时钟悲惨剧—I2S总线
图二:编解码器和主芯片之间一条典型的I2S总线衔接
I2S是用于在两个芯片之间传送音频的标准接口。该协议类似于一个串行外设接口(SPI),仅仅增加了几个额定的信号。可是,音频数据的性质使得为I2S总线计时比幻想的要困难。图2显现了编解码器和主芯片之间典型的I2S总线衔接。
I2S总线包含(图3):
• Bit clock:用于从Data In和Data Out线路读取数据的时钟。
• Word select:也被称为Left-Right Clock。该信号用于区别左右信道。
• Data out: 主芯片输出的串行数据流。
• Data in:来自编解码器的串行数据流。
图三:I2S总线的首要构件包含bit clock、word select、data in和data out
此外,大多数编解码器还需求一个主时钟(MCLK),用于为编解码器的内部逻辑计时。
音频数据有两种典型的分辨率:16位和24位。假如咱们考虑一个立体声数据流,一个采样周期中的总数据流为32或48位。这个周期一般是48/44.1/32 kHz。大多数编解码器在一个word-select周期中最多支撑32位,但分辨率或许仍为24位,由于要用0填充到最后。
这将每个采样周期的总数据增至64位。假如咱们考虑48-kHz的24位立体声,咱们所需的位时钟将为48 × 64 × 2,即6.144 MHz。
编解码器对主时钟的要求取决于所用的编解码器的品牌和类型。现代编解码器支撑多个时钟形式,但每个形式都是采样频率(fS).的整数倍。主时钟的值一般为fS的128/256/512倍。因而,48-kHz采样频率的时钟值为 6.144/12.288/24.576 MHz。
USB音频同步
同步来自于I2S 接口的流入/流出数据包是完成USB音频需求战胜的一个基础性的问题。USB类别标准界说了几种不同的完成办法:
• 同步形式:在同步形式中,从设备的音频时钟将与USB帧开始同步(每1 ms)。这简化了体系的缓冲器办理工作,愈加便于坚持一个共同的数据流。
• 异步形式:在异步形式中,音频电路的从设备运转一个彻底独立于USB时钟的时钟。运用一个经过USB接口的反应途径来坚持数据速率之间的同步。
同步端点形式
在同步端点形式中,所生成的音频时钟与每1ms进入一次的USB帧开始(SOF)包同步(图4)。实质而言,咱们从USB康复时钟,并用它运转编解码器主时钟和I2S模块。同步形式极大简化了缓冲器办理,由于收支的数据包根据同一个时钟。
图四:在同步端点形式中,音频时钟与USB帧开始同步
生成用于支撑标准采样率的部分时钟频率仍然扎手,触及一些数学问题。一种办法是运用前馈和反应混合架构。所需的fS的整数倍由一个高品质的PLL生成。可以运用 1-3 MHz之间的一个参阅时钟频率,然后乘以一个可装备的有理分数,以此生成纯洁的输出时钟。
PLL的参阅时钟由一个快速前馈一级生成。该级核算出本地晶振震动源生成所需参阅时钟所必需除以的分数因子,然后私自运转这个除法运算。运算由一个双模前置分频器履行,其除法操控输入由一个△Σ调制器驱动,后者承受一个代表分数分频的输入。
一个噪声整形环路供给一个两级输出,后者代表一个数字的分数部分,咱们需求将本地时钟频率除以该数字以获取所需参阅频率。有关怎么康复USB时钟的具体解说,请参阅:USB音频体系中可编程时钟的生成和同步。
异步形式
图五:在异步形式中,一个独立的时钟源供给主时钟
在异步形式中,主时钟由一个独立的本地时钟源供给(图5)。该形式可完成研制时刻和生产成本所能完成的时钟纯洁度。体系具有两个独立的时钟域。PSoC系列可在芯片内创立独立的时钟域,并且可以灵敏地保证UDB与CPU和体系时钟彻底异步。
咱们还遇到了多个音频速率的支撑问题。挑选适宜的晶振和内置PLL,咱们有或许创立一个可完成常用音频频率的频率集。这个奇特的数字便是17.2032 MHz(见下表)。
运用PLL异步形式可供给一个没有确定和同步问题的低颤动时钟,但该形式给体系的缓冲器办理增加了杂乱性。这是由于本地晶振振荡器不一定被确定到主机以为的48 kHz。细小的频率失配将终究导致上溢/下溢,然后导致音频污染。
为了处理这个问题,USB类别标准供给一个反应端点,它可用于调理主机数据速率,以匹配输入数据包和I2S输出数据流之间的数据速率。体系核算I2S宣布的数据包数量,将其与USB SOF进行比照,然后调理反应端点的值,以匹配均匀数据流。简而言之,主机缩小或扩展数据样本数量,以便让一段时刻内的均匀速率匹配音频采样率。CY8CKIT-046套件中演示了异步形式USB音频。