什么是USB异步传输?

烧耳朵 2017-01-21 06:08

对于USB音频传输,有一个规范,叫做“标准USB音频规范”。这个规范有什么用处和好处?
它的用处就在于,实现了以USB接口实时传输音频信号。(汗)
它的好处就在于,直接集成在WINDOWS系统内,也就是说,只要符合这个规范的USB音频产品,WINDOWS系统内的集成驱动就能直接支持,而不用厂商另外开发驱动程序。相反,如果某款USB音频产品有自己的驱动程序,那么它就是不支持这个规范的。(但不表示这个产品就不好,自己开发驱动本身是有研发实力的表现。)

在这个标准USB音频规范下,有三种传输模式:同步、自适应,和异步。
同步:标准的同步模式其实很少见,基本不太用到的,这里省略。
自适应:大多数的产品(比如TI PCM270X、PCM290X系列)都是用的自适应传输模式。
异步:这里的异步,才真正是AYRE QB9所大肆宣传的异步USB传输模式。
所以严格来说,所谓“异步USB传输”,有个大前提,就是在标准USB音频规范下而言。

那么自适应传输模式和异步传输模式到底有何区别呢?
这里先要了解一下USB音频处理的大致流程。电脑通过USB接口将音频数据流传递给DAC上的USB接收芯片,USB接收芯片一边接收数据,一边合成时钟信号,然后转化为标准的I2S或者SPDIF信号,再传递给后面的数据接收芯片,再之后的流程与一般的DAC就没有分别了。
而在这个过程中,影响USB音频音质的关键,就是USB接收芯片所合成的时钟信号。

在自适应模式下,USB接收芯片,在合成时钟信号的过程中,会根据USB传输速率的变化,对时钟信号进行实时的调整。也就是说,在这种情况下,USB传输速率的变化,会直接影响到合成的时钟信号。
举个夸张点的例子:比如现在播放一段44.1K的音频,当然就要求USB接收芯片合成一个44.1K的时钟。而这个44.1K的时钟,对应于USB传输的速率,比如,胡乱说一个,是200个数据包每秒。
也就是说,如果要让USB接收芯片稳定的合成44.1K 的时钟,USB传输速率,也必须稳定在200个数据包每秒。
但现在的问题是,USB传输的速度不可能这么稳定,也许这一秒传递了200个数据包,而下一秒,突然增加到了400个。而这个时候,USB接收芯片会怎么做?它会把实际合成的时钟,提高到88.2K。如果再下一秒的USB速率又变为100个数据包每秒,那么相应的合成时钟就变成了22.05K。当然,这是一个极端夸张的例子。
可是为什么USB接收芯片要这么做?很简单。因为如果USB接收芯片只是单纯的合成44.1K的时钟,每秒处理200个数据包,那么一旦真的收到了400个或者100个数据包,缓存就会溢出,或者断流。
所以,在自适应模式下,USB接收芯片所合成的时钟信号,是随USB口的传输速率实时变化的,传输速率是主,时钟信号为从,USB传输速率的变化直接影响到合成的时钟信号。那么可想而知,这个时钟信号的JITTER有多大。从而你也可以理解,为什么有人会说,换质量好的USB线能提高音质。

那么异步传输是怎么工作的呢?说起来更简单,USB接收芯片现在只需要稳定的合成44.1K的时钟,也就是说,现在这个时钟与USB传输速率无关了。
可是如果这样的话,缓存的问题怎么解决?答案是,软件控制。通过一套软件,根据缓存的负载情况,实时的控制USB口的传输速率,从而保证缓存不会溢出或者断流。在这种情况下,时钟信号为主,传输速率为从,时钟信号不受传输速率变化的影响,理论上这时的JITTER源,就只有工作晶振本身的误差了。

这个方案,就是AYRE QB9所大肆宣传的“异步USB传输”模式。它的实现方式,就是通过TAS1020B这块芯片,配合本地的6M晶振,还有关键的控制传输速率的固件,来完成。
而TAS1020B这块芯片,是一块可编程的芯片,并不是说用了这块芯片就一定是异步USB传输。DAC1 USB,DA11用的也是这块芯片,但都只用到了它 的自适应模式,关键还是看固件怎么写。所以从某种程度上来说,现在的DAC设计,比拼的已经不是硬件,而是软件了。

作者whisky_qz

回应

你的回应· · · · · ·

用以下合作网站账号登录

反馈