本帖最后由 dragonball 于 2010-8-2 10:14 编辑 / y% ]6 H: r1 H3 d: L9 k" ?% _
. @/ m9 T" q9 d# S转这篇文章的目的是想消除一直以来的数字信号尤其是数字音频信号没有品质优劣的误解。) T* o+ E1 \9 [) }* h: s% |
( a7 {% X% v; ]. y4 C9 j& k2 A
什么是jitter?' l K, U! `% A% [" H8 |
(转自http://blog.163.com/yangqinghua_ ... 187200921111410403/)8 o) f8 K ]% Z1 n2 `2 |
' K+ Z& p( h- O
数字音频的基本原理就是把连续的模拟信号在离散的时间点上进行采样(Sampling),进而形成数字化的信息。时间是信号数字化的最重要的因素之一,采样和重放的时间准确度在很大程度上决定了模拟-数字转换(ADC)以及数字-模拟转换(DAC)的质量。
- W& e' R( N7 k7 S. r : \. n, p% R: I: i
什么是jitter? 时间准确度可以分为两类:长期准确度和短期准确度。长期准确度是指时钟频率偏离绝对值的多少,一般用ppm(百万分之多少)来表示。石英晶体振荡器可以很容易地达到几十ppm到1个ppm以下的准确度。长期准确度对声音不会造成可闻的影响。短期准确度也就是抖动(jitter),它是一种时钟相位瞬态的变化,如图所示: , @' c* B1 C: Y' ?
, | V9 f0 H6 g! R3 w
& }, b ^2 f4 B) ?
9 g3 D3 ?4 X# X! D) y) E8 M6 w2 ?
Jitter的测量一般使用真实时钟信号抖动的时间来衡量,一般用到的单位是ps(10的负12次方秒)或ns(10的负9次方秒)。测试的指标还可以详细分为周期抖动(Period jitter)和绝对抖动(Absolute jitter)。 # B) p+ T6 z" \& d; f3 ^9 j
8 `; e- H7 b3 \' l
Jitter的影响 3 ^6 s. c0 l* M
2 p5 {8 N+ }. d. J# \: R) T
Jitter制造出数字音频信号的失真。一个简单的固定频率正弦波jitter(频率是Fj)会在一个正弦波音频信号(频率是Fa)中加入两个失真信号,其频率分别是Fa-Fj和 Fa+Fj。下图描述了一个10khz的音频信号在一个1khz jitter的作用下,生成了9khz和11khz的失真(边带)信号。
+ W. h4 o8 G' W0 R$ s; N
" K6 g r& v- r' [( \& [4 L如果这个jitter信号的频谱从1khz到4khz平均分布,那么就会造成一个更宽频谱的失真信号:
; X9 U9 E1 R4 h8 q2 Y3 t$ M2 W6 q6 ^6 P; n) M! ^+ y% x& J
6 ]/ @/ p4 J) w: P; ?- X b% g+ F/ l% A" P& a l7 t
上述的单频和广谱jitter是与音乐信号无关的。如果jitter与音乐信号相关,就会制造出很多的高次谐波失真。下图描述了一个2khz的信号,jitter被信号的MSB调制所带来的高次谐波失真。
5 H1 i% V, ^ I' K6 q
% u+ K8 z5 I- q
/ e9 ?7 O0 M: w
% }/ s0 E/ H7 G" mJitter的频谱是一个非常复杂的问题。同样大小的jitter,如果频谱是不同的,则会对声音带来不一样的影响,但是关于这个话题,能找到的资料不是很多。
. X* ?( B. u) Q: }: Q) S0 dJitter的大小
2 @) F* ~3 w: i( D, f* C 3 T' Q. S) x: X, T; }0 t
究竟多少Jitter才是我们能接受的呢?在上述的单频jitter模型中,jitter造成的失真大小为:
0 L6 \0 A" O% a/ r. j! c % r( E/ L1 o+ H* m
Rj=20log((3.1416*J*Fa)/2) 8 T6 Z# t8 t& p7 t; Z, E2 j( f7 E, H
& {; _: G* ?3 g/ [4 I# ]9 q其中J是jitter的大小,单位是秒,Fa是音频信号的频率,计算出的Rj就是失真信号的分贝(db)。可以看出,音频信号的频率越高,jitter越大,则失真就越大,这就是jitter总会首先影响高频音质的原因。 ! Q3 O" b) N; _- ~1 g
例如一个20khz的音频信号,在1000ps的单频jitter作用下,失真的大小为:
3 D6 p: N8 H- ]; }5 h, N8 l3 |Rj=20log((3.1416*J*Fa)/2)= 20log((3.1416*1000*10-12*20000)/2)= -90db. 0 A8 f6 a6 y; R" B
% E) z$ Z! Y- B2 P, J, y# t* b) n请注意,这只是一个理想的单频jitter,如果是广谱的随机jitter或者与信号相关的jitter,失真还要更严重。
: |' b% M# B" q5 K" k' nCD使用16bits/44.1k的PCM数字音频格式,1个LSB的分辨率是-96db,如果要求在20khz的时候jitter造成的失真不大于一个LSB,那么jitter造成的失真不能高于-96db,单频的jitter不能大于500ps。 $ d @) F: v$ i% d; F
& A, w) m3 O+ h2 G. g( [如果是一个24bits的PCM数字音频格式,1个LSB的分辨率是-144db,如果要求在20khz的时候jitter造成的失真不大于一个LSB,那么jitter造成的失真不能高于-144db,单频的jitter不能大于1ps,如果把要求放宽到21bits的分辨率,jitter造成的失真不能高于-126db,要求jitter也不能大于7.9ps。这可以说是一个非常高的要求。
& u& b- v S! E# g
4 e- d- \( u1 b- f2 L至于人耳能对多少ps的jitter有感知,是一个没有准确答案的问题。我想这应该与不同的人,不同的音乐内容,以及不同的jitter频谱都有关系吧。 1 l; ?8 B8 l) a0 |' Q
- b* W3 O- V+ w( C- V" h! cJitter的产生
: E: e; m: h! j' ]' H8 W" w f; ^) [5 J% q
Jitter的产生原因比较多,大概可以分为4类。
$ O) r+ |! h( n" N$ n; k第一类,时钟振荡器本身的有jitter。这是石英晶体振荡器所固有的。在石英晶体振荡器技术领域,一般不使用多少个ps的jitter作为其参数,而是使用相位噪声(phase noise)曲线作为表示方法。相位噪声描述了振荡器产生的偏离主振荡频率的杂散频率能量。相位噪声可以与jitter之间有一定的换算关系,基本上可以认为它们两者是等同的。请注意,很多场合提到“某个晶振是多少ppm的”,这个多少ppm只是表征晶振的长期稳定性,与jitter或相位噪声无关。但所幸的是,一般来说长期稳定性好的晶振,短期稳定性也会很好,所以通常情况下,ppm数小的晶振,jitter很可能也会比较小。 , s# }& X) W; j/ V; k
不同种类的石英晶体振荡器差别很大,这与振荡器所用的晶体质量,振荡电路等有很大关系。通常的锁相环PLL电路里用到的压控振荡器VCXO,jitter值大约在数十ps,温度补偿晶振TCXO,jitter可以达到几个ps,恒温晶振OCXO是最理想的频率源,其jitter甚至可以达到1ps以下。TCXO和OCXO虽然jitter很小,但是振荡频率基本不可调整(或者调整范围极小),不能直接用于PLL电路。OCXO的jitter虽然很小,但是价格非常昂贵,尤其是最好的“SC切”晶体。一般等级的OCXO要数百到上千元左右,国际知名的C-MAC,Vextron等品牌高级的OCXO就更是贵到难以接受。据我所知,目前只有专业领域的Antelope OCX 时钟发生器使用了OCXO。 下图是一个几种振荡器的比较,其中jitter的数值是简单估算出来的,不是实测结果。
: A/ Y" e/ D: s3 K# s
第二类jitter是传输中产生的jitter。SPDIF或者AES-EBU这种数码音频格式没有使用单独的时钟通道来传递时钟信号,而是使用了自同步的双相位标志编码(biphase - mark - code )。时钟信号混在数据信号中传递,接受者(解码器)必须从数据中恢复出时钟。由于在传输过程中,不同的数据的延迟有所不同,就造成了相当大的jitter。解码器如果直接使用接收芯片从数据中恢复出的时钟虽然可以,但是达不到很好的效果。所以有必要进行精确的时钟恢复(clock recovery)。 6 x' Q7 Z5 m6 n/ R5 d
R8 c8 i; k5 z& N, [% y第三类jitter是电路中的其它因素导致的jitter。例如射频/电磁干扰,震动,电源干扰等等。例如,如果数据接收处理和时钟部分的电源退耦不良,音频的数据内容就可能会干扰时钟,形成前文所述的“与音乐信号相关的jitter”。所以音频设备的屏蔽,布线,电源等方面是非常重要的。时钟电路的电源必须高度稳定,噪音很小,速度快,尽量不与其它器件混用,才能生成jitter尽可能小的时钟信号。
/ T- L- V8 J' H l$ c9 y/ y 7 J7 b v" z' r$ [ @* _
第四类jitter,就是介质读取过程中发生的jitter,主要由CD转盘或硬盘读取数据的不稳定性造成。这类jitter也可以视作是一种传输jitter,可以通过时钟恢复进行消除。 |