作者aztec1234 (调适生活)
看板Headphone
标题Re: [讨论] USB DAC的架构
时间Sat Jun 6 11:27:53 2009
分两个部分讲...
==
严格来说,USB <--> USB之间的Jitter不是问题,
因为USB的NRZI编码方式等同於让Receiver端根据传送过来的资料去调整clock
真正的问题是发生在,
USB怎麽去做Clock Synchronization,
而不是专注在USB传输中的Jitter
(USB传输的Jitter容忍度很高,数百ps就可以通过USB-IF的认证)
USB系统里的Clock有三种,一是Service Clock,用於USB与系统软体间,
一是Frame Clock,每一次的USB传输会用一个Frame把要传输的资料包起来,
Frame Clock可视为每次传输的开头的速率,而非Data Rate
另一是Sampling Clock,这是USB设备端取样的频率
USB的Clock Synchronization有三种方式:
1. Synchronous: 根据Frame Clock去同步,若是Full-speed传输,就是以1kHz为单位
以High-speed传输就是以8kHz
2. Adaptive: 根据资料传送过来的快慢作一些运算得到Clock的速率,例如接受数笔
资料後作平均
3. Asynchronous: 根据资料传送过来的快慢,告知传送端要如何调整资料传送的速度,
这是理论上最佳的同步方案
而很不幸的,第三种对USB硬体设计来说有所难度,尽管目前已有产品出现,
价格仍然偏高
绝大多数的USB Audio产品用的是第二种
所以问题就在,接收端算出来的Clock与发送端的Clock不完全一样,
因而造成类似音响上Jitter的影响,
但是成因跟大家熟知的并不相同
这也是为何不同的USB的传输线不会造成很大差异的原因
==
再来是isochronous mode与bulk mode
Isochronous mode如同前面说的,保证频宽,但是没有Error Correction
不过其实它是会去做Error Detection的
为何不做Error Correction?因为一做下去,接收端与发送端的资料
200%不会同步,而且会有一般人意想不到的延迟
(这样就不是同步传输了)
再来是Data Loss的问题,对Audio或Video来说,
Data Loss可以用内插等方式去解决,这点其实还好
啥?你说内插会失真?
事实上所有的Audio DAC只要是用Delta-Sigma的架构,
第一级输入就是一个内插电路,想避也避不掉
以及USB发生Data Loss的机率---假设你一直不间断去用USB同步传输播放音乐,
平均一个月Loss掉
一个Bit
(有谁会一个月音乐都放不停的吗...)
再来是Bulk Mode
Bulk mode的特点是不保证频宽,但是保证资料正确性
Bulk mode分到的频宽是根据主机的使用状况决定的,
所以直接用bulk mode会碰到一个问题---主机端的歌词都已经跳到下一段了,
设备端还在放副歌XD
发现为何bulk mode的DAC价格比较高的原因吗?
没错,他们不只是要处理bulk mode的运算,
还要想办法解决传送接收端不同步的问题
这也是bulk mode DAC价高却还没办法完善的原因,
Bulk mode本来就不是为了这个用途设计的,硬要使用通常会碰到很多困难点,
在这上面钻牛角尖还不如换一个介面比较快
==
最後是1394会不会有类似的问题,
会,不过1394的频宽大,
所以发生的
机率比较低
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.217.117
1F:推 dickboy:推专业文 看完长知识 谢谢原po (_^_) 06/06 11:31
2F:推 pipi5867:good 终於有人来说明比较核心的部分了XD 06/06 12:23
3F:→ pipi5867:这样看起来..dac1算是用硬干的方法去解决clock问题的感觉 06/06 12:25