|
|
图1:主机和USB设备之间的传输--同步IN和OUT用于音频数据,控制用于设置参数,中断用于状态监视。/ I$ f( g" L/ V- ~1 e; W8 [
8 ~, M# ^" c8 v' i+ c" U+ I$ q* a- x USB音频系统的数据需求取决于通道数、代表每个样本的位数,以及采样率。典型的通道数为2(立体声)、6(5.1声道)或者更高(用于录音室或DJ应用)。尽管传统音频可用16位,典型的采样率为24位,而高质量音频为32位。典型的采样率为44.1、48、96及192kHz,后者为高质量音频所使用。) _7 T) {9 U8 L* \
! C+ u0 \7 h1 J0 @' C1 E2 z 这里假设去设计一个具有96kHz采样率和24位样本的立体声音频扬声器系统,为了简化主机和设备上的数据编组,24位值一般用一个零字节填充,因此,总数据吞吐速率为96,000×2通道×4B=768,000Bps。同步端点以每125μs进行一次传输(或8000次传输/s)的速率工作。用所需的字节速率除以帧速率,可以得到每次同步传输的字节数:768,000/8,000=每次传输96B。' m: S% j: p# X
8 q3 T) y2 ~, f1 w; } O
假若使用例如44,000Hz的CD唱片速率,传输速率经计算为44.1次传输/s。在USB音频中,每次传输总是运送整数个样本;传输在48B和40B(6个和5个立体声样本)之间交替进行,以至于平均速率算出为每次传输44.1B。
) b9 u; L/ {5 B/ E1 r. V1 ]4 v8 ]: l! \/ t+ a7 H- ]$ Y+ O
单次同步传输可运送1024B,最多能够运送256个样本(在24/32位时)。这意味着,单个同步端点在48kHz时能传输42个通道,或者在192kHz时能传输10个通道--假定使用的是高速USB(HighSpeedUSB)--全速USB(FullSpeedUSB)在48kHz时无法运送多于一个立体声IN和OUT对。2 I& I( o) D$ Q* x* V2 B0 S9 ?
* a9 J5 |3 E+ p2 @* e/ @
当发送数字音频时,将会有延迟引入。在高速USB的情况下,延迟为250μs.数据包在每个125μs窗口中传输一次,但是考虑到它可能会在该窗口中的任何时候发送,需要有一个250μs的缓冲器。在该250μs延迟的顶端,操作系统(O/S)驱动程序和编解码器(CODEC)中可能引起额外延迟。注意:全速USB的固有延迟远远更高(为2ms),因为数据在每个1ms窗口中仅发送一次。2 H, ], W4 t+ F+ X& l4 b; @
+ H& I& i* N3 W. D; e) F) ~ 1s在“朋友”之间是什么?+ o4 {+ y2 j! ^. t8 z* U
( @3 a5 v2 F+ X: o, u( I5 K" n
在数字音频中,商定一个共同的时间概念是大问题。上文已经定义了USB帧的传输速率为8,000次/s,并设定了扬声器播放样本的速率为96,000次/s。仅当扬声器和主机约定了1s的长度,这才能够奏效。USB音频提供了3种模式,来确保主机和扬声器共同约定时序:
) U+ A7 U# h0 t2 Q. p4 H7 ]
* Z9 T8 d/ S' W+ A4 c ●在同步模式中,1s的长度由主机设备定义。这就是说,主机以某个速率发送数据,设备必须精确匹配这个速率。2 L" h5 X8 I, A E
( M. ~' |: _9 n- F+ \ ●在异步模式中,这正好相反--设备设置1s的定义,主机必须对设备进行匹配。' H, E" L* e3 k' g
& G* U0 A6 g0 ^) ~2 X. s r ●在自适应模式中,数据流决定时钟。
/ p' W( a8 V" G+ Z& e, y8 u" V& ]3 x# b
/ r$ ^! X; }: Z 自适应模式和同步模式并不理想,因为PC保持时钟稳定的能力非常差,而且经常有其他音频源介入,例如一台外部数字录音机。异步模式使外部时钟源(或是设备内的低抖动时钟)能够用作主时钟。一般两者都依赖于基于晶振的锁相环(PLL),如图2所示。
5 q+ I, i( l! y$ ~0 e+ j* W0 I: B! D, `
|
|