现代USB音频系统设计挑战的应对
摘要: 问题的本质是,最后的输出设备传送音频到扬声器,耳机或线路输出插座,这需要一个“主时钟”来调整音频转换速度。这个主时钟需要有两个独立的属性:1)它一定是音频采样率的整数倍,这要非常精确(这样当时序错误时,你就不需要舍弃或复制音频样本);2)它的抖动(或者可以说是相位噪声)必须足够低,这样数模转换过程就不会受到影响。这里的挑战是我们要同时满足这两个要求。
USB音频是绝大多数设备中普遍使用的接口,除非是最古老的个人电脑硬件和操作系统。以其鲁棒性连接和数据传输速率,人们可能会认为,在这种接口上传输高质量的音频是很简单的。然而,今天成功的基于USB的音频产品无不是做了大量的芯片和系统方面的工作,需要解决时钟恢复等棘手难题。
问题的本质是,最后的输出设备传送音频到扬声器,耳机或线路输出插座,这需要一个“主时钟”来调整音频转换速度。这个主时钟需要有两个独立的属性:1)它一定是音频采样率的整数倍,这要非常精确(这样当时序错误时,你就不需要舍弃或复制音频样本);2)它的抖动(或者可以说是相位噪声)必须足够低,这样数模转换过程就不会受到影响。这里的挑战是我们要同时满足这两个要求。
困难的一部分来自于这样一个事实:通过USB线的数据流的接收端不知道确切的采样率。事实上,它只能推断理论采样率。更重要的是,这些来自USB线的数据并没有任何形式的时钟。这对比其他大多数串行接口来说是明显的不足,其它串行接口或者有一个发送时钟,或者是构建数据,这样当运行时,总可以从连接上找到一个时钟。
能从USB接口得到的唯一的时钟信息就是,每毫秒特定类型的数据包会发出起始桢,这一个事件可以由接收硬件检测到。根据已知方法,从传输端的系统时钟可以推导出这一毫秒值,原音频采样速率也是同样的(我们后面会简要地讨论一个例外)。
一个简单的解决方法可能是,我们可以把1 kHz时钟放到一个基于PLL的乘法器,根据需要来倍频,以建立音频主时钟,所有的子时钟都基于此。然而,在处理CD音频的系统里,采样频率是44.1kHz,典型的传统音频数模转换器需要的主时钟是256倍,或者11.2896MHz。事实是,在一个单PLL上将输入频率倍频这么大倍数性能肯定不会很好。这正击中了乘法器的要害:环路带宽,参考激励拒绝,和压控振荡器的抖动。更重要的是,在这个案例里,我们需要用不是整数的数来乘1kHz,要完成这个任务就更难了。
层叠式两种相当复杂的乘法器环路会导致要工作在有相位噪声和伪拒绝的情况下。然而,这种方法往往会导致电源消耗很大,这需要高端芯片,还要巧妙的模拟设计。或者这样,宁愿相应变慢来改变时钟频率需求。USB音频链接的名义采样率可能在线路之间迅速改变,要等待将近一秒来稳定,会导致性能不可靠。这种方式最初应用在固定频率的演播室的数字音频连接,在那里成本和尺寸都不重要。
在过去的几年里,有各种不同的创建需要的音频主时钟方式,不再需要受PLL倍频问题的困扰,他们已经集成到了很多专用的芯片组,例如USB音箱、耳机、外部声卡。这些器件做他们所需要的,而不需要在“如果又怎样”能力上花费额外的芯片面积或引脚数。这当然可以使成本下降,这样每个人都很高兴。
但是,如果你的下一代USB接口需求不能在特殊功能芯片上得到满足,你该怎么做?移动设备(如媒体播放器和最新的写字板)都是建立在新平台上的并运行新操作系统的,这就需要越来越规范的USB标准来作为广泛的附件和新增功能的有线连接选择。这些系统中有一些已经整合了USB音频芯片,但不能满足需求,这给器件提供基础功能造成了“打击”。USB音频就是这些小的移动设备要求的越来越多地的功能之一。
从一个移动设备上以数字形式提取音频有几大好处。模拟音频接口不再受到系统声音质量因素的限制。这使得音频系统或播放器配件制造商可以通过他们自己的电路设计使声音性能达到更高的水平。同样重要的是,数字音频链接改进了到TDMA接口的阻抗(丛移动设备蜂窝调制解调器耦合到系统中音频回放部分模拟电路的阻抗)。
市场上有许多集成USB外设的微控制器,但没有一个设计了具有必要的时钟生成和恢复电路,而这些是用来传输高质量音频数据的(这是当前的需求)。有时这个问题是可以解决的,可以使用外部“时钟重启”芯片或更复杂的音频转换器(集成了PLL或采样率转换器),这样来弥补主时钟精度和质量的差距。然而,这使系统回到这些问题的困扰:费用高,高功耗,元件数目多,或者所有这些都有。此外,音频的“降频技术”使得很长的内存缓冲区不能在任何一个系统里使用,视频图像(甚至是幻灯片)须要为音频调整时间。
USB时钟恢复
最近这个问题的解决方法已经大大简化了,这是通过使用很实用的混合信号器件解决的,它在一颗器件里集成了单片机,可编程数字逻辑、可配置模拟电路。一个典型的例子就是赛普拉斯新的PSoC3系列(可编程片上系统)。
当系统“时钟冲击”发生时,基于微处理器的可编程设计可以很快就会适应,因为新代码和新电路板可以很快跟着变化,这远比更新芯片块多了。然而,有时候有的应用需要专用的外设或处理器支持,可能目前还没有集成这些微处理器。最初解决这个新问题的方案就终结了,因为只是部分组合微处理器和FPGA,PLD或者专用的固定功能芯片(经常只是利用一半)来实现一些专用且必需的功能。结果线路板变大了和BOM便多了,这可能危及这个新市场。
高度可编程片上系统架构提供了一个可供选择的途径。使用这样的器件,只需花费很少的芯片设计努力——往往没有一个具体应用的清晰画面场景——就可以在数字和模拟两方面都创建一个更可配置的,更灵活的结构。数字的灵活性来自于包含的模块(通用数字模块,或UDB),可以独立于主处理器核实现复杂的组合和有序的逻辑功能。还包括了专用协处理器可以用于频繁产生的通用信号处理的任务,例如滤波功能。在模拟方面,由于具备丰富的开关网络和片上资源,可以提高常用的运算放大器和比较器性能,可以提供一系列模拟模块,没有做不到,只有想不到。灵活的多域时钟树更使得其无所不能。
这些通用性器件不能总是符合专用单一功能器件所要求的成本。然而,一旦需要做一些不同的功能,比起那些没有灵活性的拼凑的方案来说,可编程器件通常会提供最具竞争力的BOM成本。产品快速设计-甚至是重新设计 –这都可以保证,在过去的几年里,可编程片上系统已经对电子产品设计做出了重要的贡献。
可编程片上系统已经被实践证明了,它具备所有的要素要求,能够支持完整的现代消费类音频设备所需的USB数字音频能力。可编程数字逻辑,通用时钟能力可以提供一种无需外围器件的方法来生成所需的音频主时钟并快速同步,准确地匹配到USB桢结构。这个解决方案的核心是USB音频时钟恢复过程,其使用的基本配置见图1框图:
图1:USB音频时钟恢复结构实例
可编程片上系统灵活的USB接口可以允许允许几个音频和控制协议端点功能相结合。可编程数字逻辑模块矩阵实现了一个频率合成系统,可以从一个稳定的晶体时钟源推导出任何标准的音频采样率主时钟。通常模式下,时钟锁定来接收USB 时基(使用起始桢标记脉冲时间)。系统时钟PLL通过灵活的时钟路由结构融入到了这个合成器。整个系统完全遵循源采样率并为系统的音频转换器提供一个高品质的音频主时钟,其抖动的级别可以和现代品质的音频系统要求相称。
音频数据是典型的缓存到一个或多个标准I2S接口(带有所需数目通道)的时钟输出,这又是可编程数字块可以完成的。这个接口可以连接到一个标准的音频数模转换器,处理器或数字放大器 。其他定制接口也可以由这些模块实现,例如,S / PDIF传输。整个过程可以双向操作,从ADC来的数据可以通过USB端口传输回去。
一些USB音频模式需要本地时钟能够“slip”来应对即将到来的时钟,例如,中继一个远端同步音频流的源。可编程片上系统架构可以运行在一种自适应模式,可以修整本地时钟来提供所需的“slip”。
固定功能的微控制器就不能满足这种时钟生成过程里苛刻的性能要求。他们不灵活的时钟生成系统不能调整到完全正确和低抖动,而且他们通常依靠原来的“添加/丢弃样本”的方法。这在电话上可能是可行的,但对于高质量的音频来说是完全不可接受的。与此同时,专用USB音频接口设备(是BOIM里除了控制处理器之外的必要的另一个器件)不能同时管理苛刻的双向控制协议的传输,这种传输方式为最新的媒体播放器提供了创造性的新功能。
可编程片上系统在性价比上也是很不错的。例如,可以由赛普拉斯的PSoC系列带来附加价值, 其具备嵌入音频滤波器引擎(数字滤波模块DFB)。DFB可以对恢复的USB音频进行后处理,例如,相应均衡和交叉过滤。它有足够的性能来实现额外的数字处理器件,在一堆立体声的每个频道可以实现至少十个双二阶滤波器,可以提供很好地控制频率响应。
用途广泛的高度可配置方案必然能帮助设计者减少逻辑电路和模拟设计等琐事。LCD驱动可以直接降低成本,电容感应按钮可以确保设计既美观又时髦。如图2所示的一个例子:一个器件就可以构成新一代移动设备音频附件或消费类音频产品的核心,它具备了全数字音频和数据交换的所有好处。可编程器件的灵活性意味着所需的功能和接口可以集成在一个混合并匹配的基础上。
图2:使用PSoC3的高端消费类音频设备框图
固定功能器件以后可能会赶上可编程片上系统。但采用建立在高度可配置的片上系统体系结构来设计的话,开发人员可以保持至少领先一步,并且能够很容易应对下一次“我们该怎么做?”的冲击到来。
暂无评论