ljw100 发表于 2009-2-20 17:23:06

原帖由 骑墙待红杏 于 2009-2-20 17:17 发表 http://bbs.headphoneclub.com/images/common/back.gif
还在公司,先转发篇, 回家再仔细说,你先看看
http://www.eeworld.com.cn/designarticles/eda/200703/9217.html
别客气,随便聊聊而已,我也的下班回家了。

yasker 发表于 2009-2-20 17:33:32

原帖由 骑墙待红杏 于 2009-2-20 17:17 发表 http://bbs.headphoneclub.com/images/common/back.gif
还在公司,先转发篇, 回家再仔细说,你先看看
http://www.eeworld.com.cn/designarticles/eda/200703/9217.html

搜了下这个版本更容易阅读点,还有图,呵呵
http://www.avrw.com/article/art_103_1842.htm

yasker 发表于 2009-2-20 17:49:53

原帖由 ljw100 于 2009-2-20 17:09 发表 http://bbs.headphoneclub.com/images/common/back.gif
谢YESKER提供的信息。

从你提供的信息看,对声卡而言,这是一种两级缓冲机制。由于现在的操作系统都是多任务的,从原理上看,不能确保声卡缓冲区不断流。

以我的技术观点,就要确保放音质量来看,以内存为声卡放音数据的第一级缓冲区,就不是一个合理的工程实现方案。以现在存储器的价格,为何不加大声卡上缓冲区的容量?或许有我还没考虑到的因素吧。

站在一种系统构架的角度来看问题,弄清楚相关数据通路上各个环节的实现情况,有助于我们更清楚地分析、评估问题之所在。否则,极容易把问题弄得一团糟,甚至还会得出推翻基本原理的荒唐结论,这一现象在HIFI圈内并非不常见。

你可继续询问你的同事,声卡上的本地晶振是否与声卡外部时钟信号构成锁相环,如是,则声卡本地晶振将会随外部时钟信号“抖动”。

多任务的确不能保证缓冲区不断流的,但这只是理论上的。现代操作系统在不是很繁重的work load下,很难出现缓冲区断流,现在Linux下的各种scheduler、加入kernel preemption、为desktop提高timer frequency等等,就是为了让desktop过得更好些。作为generic来说,multitask是一定是需要的。而且我觉得,绝大多数情况下,multitask都不会导致buffer underrun,如果能够轻易导致,那么就该给driver报bug了……

用内存作buffer,我觉得挺自然的……内存速度远远大于硬盘速度,让声卡直接从硬盘上读取?硬盘速度跟不上,那才会出现麻烦吧……换句话说,要是内存速度都不够,硬盘怎么可能够呢……
而且,如果buffer underrun,导致的应该是跳音,而不是jitter,因为在buffer这一级,还没有牵扯入任何时间观念。根据pig2man提供的一个资料(http://techtrain.microchip.com/w ... AudioDac_101807.pdf),声卡由于buffer underrun,输出的是0电平,这个应该比jitter好分辨多了。

另外,我这个部门是做软件的,不是搞IC的……声卡晶振那个问题我们不知道……不过我应该可以查到,但这个不是我关心的重点……

其实我只是觉得,PC HiFi声音的问题,是从声卡开始的。之前环节,都是没有问题的。

[ 本帖最后由 yasker 于 2009-2-20 17:52 编辑 ]

yasker 发表于 2009-2-20 18:15:59

没有问题说的绝对了一点,应该说是没有硬件层面上的问题的……

dark132 发表于 2009-2-20 18:39:55

PC HiFi声音的问题,是从声卡开始的。之前环节,都是没有问题的?先来个资源98%占用,你再用播放器试试?

dark132 发表于 2009-2-20 18:44:09

我曾经碰到过网卡和声卡放在临近插口,导致声卡被干扰,底噪大于正常情况的问题,硬件上的非HIFI考虑的设计,问题还是不少的

小白 发表于 2009-2-20 18:52:21

我不懂电脑工作时微观层面的机制,但我相信传统纯CD机之所以音质比PC-FI要好,原始数据流以恒定的方式读出,肯定是一个重要原因. 在CD转盘的工作方式里,碟片上的数字音频信号是以非常平稳的方式读出的,然后传输到DAC去译成模拟信号,而在PC工作模式下,最初的数字音频信号读取是不稳定的,受很多机内电磁辐射干扰的,也就是说输出的数字音频是乱七八糟,速度极不恒定,处于不稳定状态的,这样到了DA的环节,即使预先进入了缓存,这种前期的"混乱不稳定状况"仍是延续下来的,导致DA之后的模拟信号劣化.

再次重复,缓存是无法解决jitter问题的,如果可以,世界早就完美了. 虽然缓存可以把之前的jitter减轻一些,但它能起到作用也就是"减轻"而已. PC环境下不稳定的,混乱的,充斥着jitter的读取方式,造成了之后的环节再怎么弄,也无法把混乱整理为完美!

ljw100 发表于 2009-2-20 19:07:56

原帖由 yasker 于 2009-2-20 17:49 发表 http://bbs.headphoneclub.com/images/common/back.gif


多任务的确不能保证缓冲区不断流的,但这只是理论上的。现代操作系统在不是很繁重的work load下,很难出现缓冲区断流,现在Linux下的各种scheduler、加入kernel preemption、为desktop提高timer frequency等等, ...
按我所知道的常识,我也知道只有在极重载的情况下才会导致缓冲区断流。断流和JITTER自然也是两回事,因为两者的起因不同,导致的结果也不同。

其实从系统结构的角度看,我更关心的声卡上缓冲区的大小,为何不使用足够大的缓冲区?有技术上的我还没考虑到的困难吗?我不知道。在我看来,对那些HIFI金耳朵而言,不能一次性缓冲整张CD碟片的声卡,都不够“发烧”,呵呵。

从MVW提供的数据看,就放音速率来说,即使是从硬盘上加载声卡缓冲区也不会有问题。

就JITTER来说,如果JITTER晃动在时间上的幅度远小于脉冲宽度,合理安排时序电路的时钟脉冲,就能隔离前面的JITTER。但用缓冲区方式更省事。

先扯这些吧,社区宽带近来堵塞严重,过一会可能就上不了了。

yasker 发表于 2009-2-20 19:33:59

原帖由 dark132 于 2009-2-20 18:39 发表 http://bbs.headphoneclub.com/images/common/back.gif
PC HiFi声音的问题,是从声卡开始的。之前环节,都是没有问题的?先来个资源98%占用,你再用播放器试试?

我当然不是指这种情况……
我指的是,之前的情况,暂时还没有找到软件无法克服的。CPU占有率过高,是可以克服的吧……

yasker 发表于 2009-2-20 19:36:22

原帖由 dark132 于 2009-2-20 18:44 发表 http://bbs.headphoneclub.com/images/common/back.gif
我曾经碰到过网卡和声卡放在临近插口,导致声卡被干扰,底噪大于正常情况的问题,硬件上的非HIFI考虑的设计,问题还是不少的

完全同意,硬件上需要改进的的确还很多……
下一步想看看usb-audio的spec,现在的基本想法是,让PC能够尽量好的把数字信号输出到DAC。USB在外部,受的影响比机箱里小,也许有改进的余地。

(O,我说的没有硬件上的问题,似乎还不够准确——也许是没有硬件逻辑上的问题,呵呵)

[ 本帖最后由 yasker 于 2009-2-20 20:19 编辑 ]

ljw100 发表于 2009-2-20 19:37:16

原帖由 yasker 于 2009-2-20 16:34 发表 http://bbs.headphoneclub.com/images/common/back.gif


和同事聊来一下,就Linux下的Intel HDA而言,数据填充过程是这样的:

由此,我认为,声卡的晶振成为PC系统的第一个jitter源。声卡之前,没有jitter的存在,因为时间无关。software在
在脉冲电路中,JITTER是一定会存在的,这是由振荡信号源不可能百分之百稳定所造成的。但JITTER对声音的影响,只有透过了D/A界面从而改变了模拟信号波形从而影响了声音。从这个意义上讲,如果前面的JITTER未晃到生成模拟波形的低通滤波器前,就不会对声音产生影响,就可以无视。呵呵。

就JITTER来说,我更关心不同类型晶振JITTER的时间幅度,人耳对JITTER影响有明显感觉时JITTER晃动的数据。只有在弄明白了这些基础数据后,我们才能评估器材控制JITTER的水平,而不是凭着“胆量”和“勇气”来说话。据网上转载业界写手测评文章,目前最NB的DCS旗舰仅使用“压控温补晶振”,而未使用恒温晶振或压控恒温晶振,这可是卖几十万的音源啊。

[ 本帖最后由 ljw100 于 2009-2-20 19:42 编辑 ]

yasker 发表于 2009-2-20 19:45:00

原帖由 ljw100 于 2009-2-20 19:07 发表 http://bbs.headphoneclub.com/images/common/back.gif

其实从系统结构的角度看,我更关心的声卡上缓冲区的大小,为何不使用足够大的缓冲区?有技术上的我还没考虑到的困难吗?我不知道。在我看来,对那些HIFI金耳朵而言,不能一次性缓冲整张CD碟片的声卡,都不够“发烧”,呵呵。

从MVW提供的数据看,就放音速率来说,即使是从硬盘上加载声卡缓冲区也不会有问题。

就JITTER来说,如果JITTER晃动在时间上的幅度远小于脉冲宽度,合理安排时序电路的时钟脉冲,就能隔离前面的JITTER。但用缓冲区方式更省事。


首先,从放音速率来看,是没有问题,但是问题是硬盘比内存慢,而且硬盘是块读取设备,且硬盘的上层是文件系统的封装,除了操作系统,没人能直接操作硬盘,要不声卡得要得到文件系统的知识,然后在声卡上重写一个操作系统来操作硬盘?
其次,是从binary数据的角度而言,应该是没有这个需要。内存是很容易操作的,而且把硬盘里的东西读到内存,也不会涉及到声音质量问题——每个bit都是完全相同的。而且,只要不出现断流,放在任何地方都是一样的。因为这一切都和系统写buffer的速度无关,只是要求buffer不能被读完而已。对声卡看来,只要没有断流,它读的一直是连续的完整的bit perfect的数据,所以是没有关系的。

最后那段,IC方面的东西,我不怎么懂。我一直就没从原理上弄清jitter是怎么消除的,还请多多指教,呵呵。

小白 发表于 2009-2-20 19:51:54

老刘,我认真地提一个问题供思考:

同样用缓存+精确时钟的方案(我们都知道这个方案可以减轻前面的jitter),你认为,前面的数据jitter很大,和前面的数据质量非常高,jitter很小,经过同样的缓存+精确时钟的处理后,出来的效果是否完全相同? 是否前面数据质量高,jitter低的那种情况,最终效果还是要好?

yasker 发表于 2009-2-20 19:58:28

原帖由 ljw100 于 2009-2-20 19:37 发表 http://bbs.headphoneclub.com/images/common/back.gif

在脉冲电路中,JITTER是一定会存在的,这是由振荡信号源不可能百分之百稳定所造成的。但JITTER对声音的影响,只有透过了D/A界面从而改变了模拟信号波形从而影响了声音。从这个意义上讲,如果前面的JITTER未晃到生成 ...

就如何测量jitter而言,我是看到了一篇文章的(也许您早就看到了,呵呵)
http://jitter.de/english/soundfr.html
在 http://www.cndiyclub.com/c_read.php?tid=11782 里有一个翻译版本。
继续推荐一下,jitter.de的文章不错,虽然最终是为了卖他们的减小jitter的产品……

ljw100 发表于 2009-2-20 20:01:43

原帖由 yasker 于 2009-2-20 19:45 发表 http://bbs.headphoneclub.com/images/common/back.gif


首先,从放音速率来看,是没有问题,但是问题是硬盘比内存慢,而且硬盘是块读取设备,且硬盘的上层是文件系统的封装,除了操作系统,没人能直接操作硬盘,要不声卡得要得到文件系统的知识,然后在声卡上重写一个 ...
你上面所说是正确的。我前面说DMA,是就着MVW那个贴子中别人提及的话头而来,说DMA可以访问声卡的缓冲区,我也有些困惑。但若从原理将,这也是可以做得到的,如果设计者愿意这样做的话。

在数字电路中,可以用时钟脉冲来控制输入(输入信号自然也是脉冲信号),只有在本级门电路的时钟脉冲到达后,输入信号才能进入本级门电路;若将系统分级,不同的级用不同的时钟信号(它们的频率都一样),就可以对前面的JITTER进行隔离。但这样做很蠢。就原理来说,这也可以看做是“缓冲”,只是这“缓冲”的时间长度略小于一个脉冲的宽度。这样说可以理解了吧。呵呵
页: 1 [2] 3 4
查看完整版本: 请教骑墙待红杏

耳机俱乐部微信
耳机俱乐部微信