jitter究竟是怎么产生的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jitter究竟是怎么产生的?相关的知识,希望对你有一定的参考价值。

请问高手cd音响中的jitter究竟是怎么产生的?理论上是否可通过增加缓存的方式来解决?

1:什么是jitter
所谓jitter就是一种抖动。具体如何解释呢?让我们来看一个例子。假如你有个女友,你希望她每天晚上下班之后7点来找你,而有的时侯她6:30到,有的时候是7:23,有的时候也许是下一天。这种时间上的不稳定就是jitter。如果你多观察这种时间上的不规律性,你会对jitter有更深一些的理解。
在你观察的这段期间内,女友最早和最晚到来的时间被称为“jitter全振幅”(peak to peak jitter amplitude)。“jitter半振幅”(jitter-amplitude)就是你女友实际来的时间和7点之间的差值。女友来的时间有早有晚,jitter半振幅也有正有负。
通过计算,你可以找出jitter半振幅的平均值,如果你能够计算出你女友最有可能在哪个时间来,你就可以发现女友来的时间是完全无规律的(随机jitter radeom jitter)还是和某些特定事情有关系(关联jitter correlated jitter)。所谓关联jitter就是比如你知道你的女友周四要晚来,因为她要去看她的妈妈。如果你能彻底明白这点,你就已经是一个correlated jitter的专家了。
2:什么是时基抖动(Clock jitter)
在数字音频中,我们要直接和数字信号的发送与传输打交道。声音以二进制编码被储存在光盘或者DAT卡带中,在回放音乐的时候,这些010101的信号被送进DA转换器(Digital-Analog converter)并被还原为模拟波形信号;在录制数字音频的时候,一个参考时钟信号会和音频信息一起被送进AD转换器(Analog-Digital converter),转换器把模拟信号转换为0101的数字信号并且记录下来。
数字信号总是和一个参考时钟信号一起传送并且记录,一些数字音频传输格式如S/PDIF和AES/EBU,它们在一个信号中同时传送数据和时钟。数字音频的时钟信号是一种方波(square-wave),并且在频率以及振幅上被进行了修正,而且它的占空比要达到50%。信号的改变(方波波形的高低变化即电平的高低)记录着时钟信息。
如果信号传输所用的时间不相等,那么就产生了时基抖动,实际上,世界上是没有任何一个不存在时基抖动的电路(就好像你的女友不可能总是以1/1000秒的精确时间到达:)现在,你已经具备了时基抖动基本知识,下面,让我们看一些更深层的。
Joe Adler是这样定义时基抖动的:“对于数字信号在时间上正确位置有重大影响的短时间的改变。”("Short-term variations of the significant instants of a digital signal from their ideal positions in time")在Adler的这篇文章中,他还讲了关于如何测量jitter的技术。
3:什么产生了jitter
需要精确的东西都是越精确越难以做到。在后面的文章中,你将了解到,数字音频需要非常非常高的时钟精确度,因为我们的耳朵对于声音的质量似乎异常敏感。因此,为了得到最精确的结果,我们需要非常精确的测量仪器。通常,数字音频设备的时钟都是由非常精密的晶体振荡器产生的。
正如Mike Story说的:“基于晶振(晶体振荡器以及压控晶体振荡器产生的)产生的时钟具有非常的低的jitter,但是jitter仍然存在。”("Crystal based clocks (XCO′s, VCXO′s) generally have the lowest jitter - but they still have some." )“在设备中还有其他产生远比压控晶体振荡器产生更多jitter的jitter源。”("There are other sources of jitter inside equipment that may contribute substantially more than the VCXO.")这里所说的其他jitter源主要是电源供电部分产生的电压波动,这些波动对于DA转换器是很致命的,它会导致转换点在逻辑上发生时间变化(causing variations in logic level switch points)。
4:CD player里面到底发生了什么
如果电源噪音(电压波动)导致切换点逻辑上的时间抖动,那么播放器(CD,MD,DVD,DSD,DAT)里面到底发生了什么?
一个简单的CD播放器里面有多个马达,驱动电路以及控制电路。为了能够正常读取盘片,机器要做以下工作:首先,主轴马达驱动CD盘片转动并达到预定速度,控制光头位置的定位马达驱动光头定位到预定轨道上,最后,驱动回路控制光头聚焦,光头发射激光并且接收反射信号。每一个马达和回路都会增加电源噪音,这些噪音直接影响DA转换器的内部工作状态。所以,每一个马达和回路都会为数字信号增加另外一种jitter(频率,振幅以及波形上的不同),这些干扰通过不同方式都会影响到声音的质量。
如果你明白了以上原理,我就可以给你解释那些HIFI爱好者以及录音师争论得很激烈的以下问题:
1,为什么不同的CD片镇(就是主轴上面用来固定盘片的铁片)会造成听感上的不同。
2,为什么一些转盘制造厂商使用皮带传动
3,为什么不同的转盘音质不同
4,为什么一些厂商在转盘中使用stray light(???)
5,为什么一些类似“消磁作用”的产品对转盘有效果
6,为什么不同的存储介质音质不同,尽管他们记录的都是0101的数字信号
答案主要是如下几点:
一些CD播放器或者CD转盘价格非常昂贵的原因是他们将整个解码系统源头,即读取设备产生的jitter降低到了最小。为此,它们需要使用非常稳定和干净的电源,多路供电,精确的时钟生成电路以及造价昂贵的机械结构。在后面,我们将在价格因素尽量小的情况下比较jitter的影响。但是,如何确定上面说的这些可以全面的解释jitter到底是什么呢?我们将在“jitter听起来是什么样子”用具体讨论。让我们先关注一下别的。
5:产生jitter的源
jitter可以分为两种:交界面产生的jitter(interface jitter)和采样中产生的jitter(sampling jitter)。交界面产生的jitter可以进一步被划分为传送过程中产生(transmitter jitter)的(比如为了把数字信号输出到转盘外部所产生的)和线材引起(line induced jitter)的。当我们把CD的数字输出和外部的DA转换器连接在一起的时候,不管使用同轴线缆,还是TOSLINK光纤接口,或者SToptical接口,都将在源信号中引入jitter。有趣的是,不同的接口会引入不同类型的jitter(波形,频率,振幅以及相关性上的不同)。具有了以上知识,你已经可以回答以下问题:
1,为什么不同的数字接口(光纤,同轴)音质不同,尽管他们传送的都是相同的信号。
2,为什么线材长度会直接影响音质。
3,为什么不同厂家生产的同样长度的同轴线缆音质不同。
这些都是线材引起的jitter。
6:采样jitter(sampling jitter)
在声音再生的过程中,我们通过许多方法削弱在DA转换器之前产生的jitter,对于这个,我们将在“如何消除jitter”中具体讨论。但是你应当知道,如果在数字信号的录制过程中jitter就已经产生了这怎么办呢?答案很简单,重新录一份:)数字录音过程中产生的时基抖动究竟是怎么一回事呢?答案是正确的采样记录在了时间轴错误的位置上。而在录音之后,这是jitter完全不可以被矫正的。传输过程产生的以及线材引起的jitter对于整套数字录音系统的品质有至关重要的影响。作为数字录音系统的主要器材,AD转换器的时钟发生器会夹杂相当数量的jitter。这些夹杂着jitter的时钟信号通过数字线路,被传送到AD转换器中,而在这个过程中,又会引入线材产生的jitter。这些带有jitter的信号会成为参考时钟信号被送入AD转换器,并且决定信号采样点的位置最终记录下来。AD转换器内部的电路可以削减一部分外部产生的jitter,但是它不能去掉全部。因此对于录音师来说,AD转换器时钟信号中引入越少量的jitter,最终得到的记录质量就越好。Bob Katz在他的文章中这样说:“模拟-数字转换器是整套数字音频电路中最容易受到jitter影响的部分。”("The A to D Converter is one of the most critical digital audio components susceptible to jitter")
对于低成本的设备来说,使用内部的参考时钟的AD转换器可以避免因数字接口以及参考时钟和外部转换器之间产生交界面jitter,但是如果需要在已有的音轨后面添加新的内容,那么就需要同步AD转换器和已经录制的音轨。这种情况下,你就需要一个外部参考时钟。高质量的录音工作室通常使用高精度(通常是可以控制的)的参考时钟来同步AD转换器。如果你有一个好的时钟发生器,它会大大减少传输过程中产生的jitter,但是你仍然要和传输过程中线材引起的jitter做斗争。
参考技术A 产生Jitter的原因主要有:

1). 光盘制作过程中信息坑的制作有偏差

在母盘制作时,如有激光噪声(激光功率的高频变化)或者显影液浓度、显影时间有变化,则信息坑的长度和宽度会有变化,凹坑壁的陡峭程度也有不同。另外激光束相对于光盘的扫描速度的不稳定、刻录机电信号处理设备中参数设置的漂移都会造成凹坑长度的变化。电铸过程一般不会对抖晃产生影响。在盘片复制阶段,注塑机的牌号、PC料的型号、模温、射胶速度、冷却时间、锁模力、压模(Stamper)背面光洁度都对复制盘片的坑形质量有重要关系。极长的节目使最外圈信息轨道接近盘片外缘,这个区域的收缩最厉害,不均匀的排气隙产生的收缩导致不均匀的凹坑形状变化。快速注塑周期无疑也是使复制凹坑畸变的重要原因。一般来说,CD凹坑的宽度和深度的偏差对抖晃的影响较小,凹坑长度变化是影响抖晃的关键。而DVD的轨道间距(来自相邻轨的干扰)和高频信号(I14/I14H)则对DC Jitter的影响较大。另外坑壁的陡度越陡,读出信号的跃变就越清晰,对改善抖晃有利。然而坑壁越陡,复制盘片脱模就越难,金属压模上与盘片凹坑相对应的凸台边缘会在脱模时犁起复制凹坑边缘的PC料,破坏凹坑边缘,造成盘片外观“云彩”斑纹。

2). 光盘驱动器对抖晃的影响

光盘中的信号的恢复归根到底是要用光盘驱动器(播放机)去读出的,光盘驱动器激光系统的准直、光学头的分辨率(聚焦光斑的形状、尺寸),驱动器转速的稳定性,驱动器电路特性(均衡器、限幅器、锁相环)的优劣等都会对读出信号的抖晃产生影响
参考技术B 理论上来说可以通过reclock消除Jitter,
问题是缓存本身的输出Jitter也不是很小,特别是大容量的。其次由于缓存的输入输出时钟并不是完全独立的(否则时间一长缓存就要满或者空了),又造成了Jitter的转移。

Jitter主要影响声音的高频,盗版盘的空气感不好之类的问题就是Jitter造成的,也是转盘->解码器的连线会影响音质的根本原因。

在一般的中档系统中都不太考虑Jitter,但是达到一定的水平之后,Jitter就上升为最重要的因素之一,和电源一样,都是数字音频系统的老大难问题了。

刨根究底字符编码之十二——UTF-8究竟是怎么编码的

UTF-8究竟是怎么编码的

 

1.

UTF-8编码是Unicode字符集的一种编码方式(CEF),其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节,当然,也可以更长。

为什么要变长呢?这可以理解为按需分配,比如一个字节足以容纳所有的ASCII字符,那何必补一堆0用更多的字节来存储呢?

实际上变长编码有其优势也有其劣势,优势是节省空间、自动纠错性能好、利于传输、扩展性强,劣势是不利于程序内部处理,比如正则表达式检索;而UTF-32这样等长码元序列(即等宽码元序列)的编码方式就比较适合程序处理,当然,缺点是比较耗费存储空间。

 

2.

那UTF-8究竟是怎么编码的呢?也就是说其编码算法是什么?

UTF-8编码最短的为一个字节、最长的目前为四个字节,从首字节就可以判断一个UTF-8编码有几个字节:

  • 如果首字节以0开头,肯定是单字节编码(即单个单字节码元);
  • 如果首字节以110开头,肯定是双字节编码(即由两个单字节码元所组成的双码元序列);
  • 如果首字节以1110开头,肯定是三字节编码(即由三个单字节码元所组成的三码元序列),以此类推。

另外,UTF-8编码中,除了单字节编码外,由多个单字节码元所组成的多字节编码其首字节以外的后续字节均以10开头(以区别于单字节编码以及多字节编码的首字节)。

0、110、1110以及10相当于UTF-8编码中各个字节的前缀,因此称之为前缀码。其中,前缀码110、1110及10中的0,是前缀码中的终结标志。

UTF-8编码中的前缀码起到了很好的区分和标识的作用——当解码程序读取到一个字节的首位为0,表示这是一个单字节编码的ASCII字符;当读取到一个字节的首位为1,表示这是一个非ASCII字符的多字节编码字符中的某个字节(可能是首字节,也可能是后续字节),接下来若继续读取到一个1,则确定为首字节,再继续读取直到遇见终结标志0为止,读取了几个1,就表示该字符为几个字节的编码;当读取到一个字节的首位为1,紧接着读取到一个终结标志0,则该字节显然是非ASCII字符的后续字节(即非首字节)。

笨笨阿林原创文章,转载请注明出处)

 

3.

所以,1~4字节的UTF-8编码看起来分别是这样的:

                            

单字节可编码的Unicode码点值范围十六进制为0x0000 ~ 0x007F,十进制为0 ~ 127;

双字节可编码的Unicode码点值范围十六进制为0x0080 ~ 0x07FF,十进制为128 ~ 2047;

三字节可编码的Unicode码点值范围十六进制为0x0800 ~ 0xFFFF,十进制为2048 ~ 65535;

四字节可编码的Unicode码点值范围十六进制为0x10000 ~ 0x1FFFFF,十进制为65536 ~ 2097151(目前Unicode字符集码点编号的最大值为0x10FFFF,实际尚未编号到0x1FFFFF;这说明作为变长字节数的UTF-8编码其未来扩展性非常强,即便目前的四字节编码也还有大量编码空间未被使用,更不论还可扩展为五字节、六字节……)。

笨笨阿林原创文章,转载请注明出处)

 

4.

上述Unicode码点值范围中十进制值127、2047、65535、2097151这几个临界值是怎么来的呢?

因为UTF-8编码中的每个字节中都含有起到区分和标识之用的前缀码0、110、1110以及10之一,所以1~4个字节的UTF-8编码其实际有效位数分别为8-1=7位(2^7-1=127)、16-5=11位(2^11-1=2047)、24-8=16位(2^16-1=65535)、32-11=21位(2^21-1=2097151),如下表所示:

 

注:上图中的Unicode range即Unicode码点值范围(也就是Unicode码点编号范围),Hex为16进制,Binary为二进制;Encoded bytes即UTF-8编码中各字节的编码方式(即编码算法),其中,x代表Unicode二进制码点值的单字节低字节中的低7位或8位、y代表两字节码点值的高字节中的3位或8位以及三字节码点值的中字节中的8位、z代表三字节码点值的高字节中的5位。

因此,UTF-8编码的算法简单地用一句话来概括就是:首先确定UTF-8编码中各个字节的前缀码;之后再将UTF-8编码中各个字节除了前缀码所占用之外的位,依次分配给Unicode字符码点值二进制中各个位的值,换言之,就是用Unicode字符码点值二进制中各个位的值,依次填充UTF-8编码中的各个字节除了前缀码所占用之外的位。

 

5.

由于ASCII字符的UTF-8编码使用单字节,而且和ASCII编码一模一样,这样所有原先使用ASCII编码的文档就可以直接解码了,无需进行任何转换,实现了完全兼容。考虑到计算机世界中英文文档的数量之多,这一点意义重大。

而对于其他非ASCII字符,则使用2~4个字节的编码来表示。其中,首字节中前置的1的个数代表该字符编码的字节数(110代表两个字节、1110代表三个字节,以此类推),非首字节之外的剩余字节的高2位始终是10,这样就不会与ASCII字符编码以及非ASCII字符的首字节编码相冲突。

例如,假设某个字符的首字节是1110yyyy,前置有三个1,说明该字符编码总共有三个字节,必须和后面两个以10开头的字节结合才能正确解码该字符。

 

6.

由此可知,UTF-8编码设计得非常精巧,虽说不上完美无缺,但若与后文将要介绍的UTF-16、UTF-32以及前文介绍过的那些ANSI编码相比较,对于其精巧设计将体会得更为深切透彻。因此,UTF-8越来越得到全球一致认可,大有一统字符编码之势

笨笨阿林原创文章,转载请注明出处)

(未完待续)

 

本系列文章上一篇为:刨根究底字符编码之十一——UTF-8编码方式与字节序标记 

预告:本系列文章下一篇将重点介绍UTF-16编码,敬请关注!】

 

以上是关于jitter究竟是怎么产生的?的主要内容,如果未能解决你的问题,请参考以下文章

操作系统的内存究竟是怎么一回事?

Bellman 贝尔曼方程究竟是什么

五分钟学Java:可变参数究竟是怎么一回事?

OpenCV中的saturate操作(饱和操作)究竟是怎么回事

狂赚310亿美元!安卓系统的钱究竟是怎么来的

CDN加速究竟是怎么加速的 其工作原理是怎样的