作者aztec1234 (调适生活)
看板Headphone
标题Re: [讨论] USB DAC的架构
时间Sat Jun 6 16:04:24 2009
看到K兄的推文再来分享一下好了
小弟以前硕士论文作PLL的,CDR算是PLL的一种应用
CDR的全名叫Clock/Data Recovery,这是一种通称,
根据不同的系统,它的电路会有很多差异
USB制定的三种Clock Synchronize模式就是在针对isochronous mode,
做Clock/Data Recovery的方式
对於Synchronous Mode来说,因为是根据Frame Clock,
所以对於48 kHz取样频率很容易做(因为是Frame Clock的整数倍)
但是44.1 kHz就比较不容易做出来
(大约要先送出5次44 kHz再送1次45 kHz,平均起来才会是44.1 kHz)
这种机制因而渐渐没有产品使用,只出现在早期的产品
而对於Adaptive或Asynchronous Mode来说,因为是根据接收到的资料做调整,
所以取样频率为多少对这两种模式来说就较没影响
这样的Clock/Data Recovery只存在於USB isochronous mode上,
实际上USB本身也有存在另一种CDR,不过不是用在Audio上
是在Hub里,
有点类似电脑网路的作法,利用Elasticity buffer (弹性缓冲器)
来达到接收端不会受到Jitter的影响导致Buffer Overflow/Underflow
而这个Elasticity Buffer的大小必须根据Jitter来决定,
USB的Clock Jitter容忍范围约为+/- 500 ppm (一般很少用"秒",都是用ppm)
这样代表的是误差的容许范围在+/- 12-Bit,
所以USB的Elasticity Buffer必需要有24-Bit的大小
方法简述如下:
1. 先把24-Bit的Elasticity Buffer填满一半
2. 传送开始的同时,也会一个Bit一个Bit去填Elasticity Buffer
3. 如果接收端的Clock比传送端快,那麽填Elasticity buffer的速度会快於资料进来,
如果接收端的Clock比传送端慢,那麽填Elasticity buffer的速度会慢於资料进来
4. 当发生上述的第一种情形时,比较不会有太大的问题,顶多就是资料比较晚收到,
若是第二种情形,由於一开始Elasticity Buffer已经填了一半,所以资料依旧在,
只要在12个Bit Cycle里取样到就不会Loss
这是USB Hub的Data Recovery作法,
不过大家应该有发现到一件事,它需要时间
所以在同步传输里用这个根本是找死XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.217.117
2F:推 pipi5867:这样看起来..不管哪种clock sync,以发烧角度来看 06/06 16:23
3F:→ pipi5867:似乎都满不理想的,变成那颗usb接收晶片很重要 06/06 16:24
4F:→ aztec1234:其实像SPDIF的clock-sync方式也有它的问题点 06/06 16:46
5F:→ aztec1234:没有一种是像发烧友所希望的,所以不需太在意这件事 06/06 16:47
6F:→ aztec1234:太过在意到最後就很像是在听器材而非听音乐 06/06 16:48
7F:推 louis0407:其实单纯就usb传输 我比较在意的是线路杂讯乱窜的问题 06/06 17:25
8F:→ louis0407:jitter部分在usb/1394已经没有在spd/if时那麽决定性了 06/06 17:29
9F:→ louis0407:稍微认真做的usb音讯装置都不会从接收晶片那边拉时脉吧 06/06 17:30
10F:→ louis0407:所以usb输出的jitter的影响是比较闲接的 06/06 17:31
11F:→ louis0407:不过如果真的要从架构上改良 I2S+大buffer应该很彻底了 06/06 17:32
12F:→ aztec1234:Yes, 如果还从USB拉时脉,只是自己增加更多问题而已 06/06 17:32
13F:→ louis0407:只是这样会变成要处理buffer ram跟clock的同步问题 06/06 17:33
14F:→ louis0407:我是觉得jitter这东西是非得处理不可的 目前的calculato 06/06 17:33
15F:→ louis0407:是建构在2bit上....扯太远 总之音讯要在电脑上处理就 06/06 17:36
16F:→ louis0407:得过数位化-sampling 而为了要把这些数位化後的资讯还原 06/06 17:37
17F:→ louis0407:又一定需要Time info 所以处理到最後还是非得面对 06/06 17:38
18F:→ louis0407:因此针对数位系统 与其考虑如何避开jitter 不如考虑 06/06 17:39
19F:→ aztec1234:其实也不是只有像2-bit Gray Code那样,在LVDS上有用到 06/06 17:39
20F:→ aztec1234:8b/10b encoding,不过那是属於Video的应用 06/06 17:39
21F:→ louis0407:把jitter问题放到哪个process会比较好处理 06/06 17:40
22F:→ aztec1234:也许是自己是做IC的,在看过或做过这些ADC或DAC後 06/06 17:41
23F:→ louis0407:其实有一个问题很有趣 数位本质就是离散 而现实世界存在 06/06 17:41
24F:→ aztec1234:了解了ADC/DAC本身就有的缺陷,所以会认为再多的处理 06/06 17:41
25F:→ aztec1234:也没办法完全弥补ADC/DAC的天生缺点 06/06 17:42
26F:→ louis0407:的却是连续(不考虑量子等级的微观啦...那样看的话 世界 06/06 17:42
27F:→ louis0407:确实也是离散的) 但我们却用离散方式去模拟连续 再用 06/06 17:43
28F:→ aztec1234:Yes, 所以discrete-to-continous或是反过来,都一定会有 06/06 17:43
29F:→ aztec1234:Quantization Error/Noise存在...这个是怎样也避不掉的 06/06 17:43
30F:→ louis0407:连续性质的元件模拟离散性质的电路来演算这些真正纯离散 06/06 17:44
31F:→ louis0407:的演算法 这样去看就会发现有问题存在是很正常的 06/06 17:44
32F:→ aztec1234:这也没办法,世界上没有真正ideal的Switch存在 06/06 17:45
33F:推 pipi5867:不过玩音响,不就是尽量追求极限吗..XD 06/06 17:46
34F:→ aztec1234:这也造成了数位电路的极限 06/06 17:46
35F:→ louis0407:所以4bit 8bit 16bit的演算法即使有办法在电路上实做 06/06 17:46
36F:→ aztec1234:要真正的极限大概是弄个真空音响室...保证跟理论相同XD 06/06 17:46
37F:→ louis0407:也就是能在开/关以外找出其他更稳定的状态 确实可以提高 06/06 17:46
38F:→ louis0407:演算效率 但是离散与连续本质的矛盾始终存在....除非 06/06 17:47
39F:→ pipi5867:还是要"人"来听啦 这本来就玩给自己爽的=w= 06/06 17:47
40F:→ aztec1234:这个就会牵涉到半导体制程啦...开/关确实是半导体中 06/06 17:48
41F:→ louis0407:量子等级精确度的数位化真的能够实现.......真的这样的 06/06 17:48
42F:→ aztec1234:最稳定的state,这也是二进位为何延用至今 06/06 17:48
43F:→ louis0407:话....理论上可以用演算法重现完整的世界...理论上 06/06 17:49
44F:→ louis0407:是啊 多bit计算系统喊很久了 生化/量子/光都有理论 06/06 17:50
45F:→ louis0407:跟实做(实验性的做) 但是最後稳定实用的还是on/off 06/06 17:50
46F:→ pipi5867:那些都还很远啦 几十年後再说的东西了 06/06 17:50
47F:→ louis0407:几十年不够吧 别的不说 只要能在on/off以外多找一个状态 06/06 17:52
48F:→ louis0407:计算效率直接平方... 06/06 17:52
49F:→ aztec1234:真的做出来,唯一笃定的是MOS就没有用处了XD 06/06 17:53
50F:推 louis0407:让他也具有多bit性质就ok了吧...我觉得数位电路的基础理 06/06 17:55
51F:→ louis0407:论不会变动太多...但是元件/制程会彻底革新 06/06 17:56
52F:→ louis0407:...........彻底离题了 06/06 17:56
53F:→ aztec1234:No,MOS还有多Bit性质就不是MOS了 06/07 09:53
54F:→ aztec1234:另外,数位电路的理论绝对不是小改,而是大翻新 06/07 09:53
55F:→ aztec1234:因为数位电路全部都是基於二进位去实现的 06/07 09:53
56F:→ aztec1234:离题过远...再讲下去我看我会讲MOS的电气特性XD 06/07 09:54
57F:推 louis0407:我讲的是更基础的理论 2bit-xbit在演算法上的转换 06/07 10:44
58F:→ louis0407:早就有理论了吧 那些量子/生化/光电脑都是多bit架构的 06/07 10:45
59F:→ louis0407:实践/挑战者 基础理论是没有问题的....硬体实做就..... 06/07 10:46
60F:→ louis0407:而且我猜初期还是会有类似MOS功能的新元件去取代MOS 06/07 10:48
61F:→ louis0407:只是他一定得具有多bit的性质......纯嘴炮XD 06/07 10:48
62F:→ aztec1234:但是研究者独缺做EE的人...因为做电路跟理论是两回事 06/07 11:11
63F:→ aztec1234:对我们EE的人来说,理论就类似电子电路方面的内容 06/07 11:13
64F:→ aztec1234:一旦理论无法拓展到电路层面,演算法就没有意义... 06/07 11:14
65F:→ aztec1234:可以说是EE的人太笨,也可以说是EE的人太现实 06/07 11:15
66F:→ aztec1234:另外我说的电路理论大改指的是"电路设计"的方式 06/07 11:15
67F:→ aztec1234:而非演算法的实现... 06/07 11:16
68F:推 louis0407:同意 现在就是这麽回事 纯数位的理论可以无限衍生 06/07 17:31
69F:→ louis0407:但是最後还是要落实到电路...或是说元件 06/07 17:31