HerculesVR
发表于 2010-11-24 19:54
1: 针对时钟IO优化的FPGA或者CPLD都合适音频时钟处理,但是通常对于时钟IO做优化的FPGA都是特种FPGA,这些FPGA大多很昂贵或者太简单以至于没发做音频算法。CPLD 或者 PLD适合很好的选择,当然仅限部分对时钟IO优化很好的型号,其性能跟74几乎无差异,。
2:FIFO+DDS方案有各有个巨大的隐患。假设DDS频率是固定的,此时其生成的fs 介于44069和44121之间(时钟肯定不会是理想完美的),这时候输入的I2S信号的LRCK介于44047和44065之间,这个FIFO迟早会拉破。OK, 大家都想到一个聪明的办法就是让DDS的频率跟着FIFO状态调整速度,如果这样的话··这根本就是变相的ASRC,只不过是一个不升不降的ASRC,还不如用一个AD1986解决。
3:不计成本和技术制约,只看性能,精心设计的2nd PLL 是解决时钟问题的佳。其性能根据开发者的水平和地球上的零件制约,但是成本方面可以做到各种方案最低的或是最高的,技术难度根据开发者的要求也简繁都有,既有合适DIY把玩的简单设计,也有音频分析仪级别的复杂设计。
3:当大家狂热追求这个LRCK(fs、Word Clock)稳定的同时,我觉得大家应该关注一下S/PDIF本身,别忘了时钟是从S/PDIF里面解码出来的,S/PDIF 本身作为串行数据本身也会抖动,这个抖动会影响到后面的解码部分,所以应该先把S/PDIF 传输带来的劣化抑制,再考虑后面的问题。 当然,实际上民用没啥大问题,毕竟消费级应用只有不到3米的传输距离,但是如果你精益求精就要考虑了。
一句话解决---我们的目的是不改变I2S信号里面的LRCK的采样点数,而是让其进行重新排列,由过去的不稳定排列变成整齐的排列,但是如果后面的fs跟这个fs不一样,那终究还是SRC。如果采样点变了时间没变,还是SRC,只不过叫SSRC,哈哈。
嘎嘎··· 扯淡完毕···
kiol
发表于 2014-12-5 12:57
搜到了这个帖子,不知道还有人关心不?
老外也搞两个类似的东西,而且还有测试数据,性能很惊人
http://www.diyaudio.com/wiki/Ians_I2S_FIFO_Project
https://hifiduino.wordpress.com/2012/08/21/ians-fifo-reclocker-and-buffalo-iii-dac/
卡西利亚斯
发表于 2014-12-6 13:35
本帖最后由 卡西利亚斯 于 2014-12-6 15:45 编辑
居然还有人顶这个贴。
首先IANS的I2S FIFO就是一个缓冲器,然后配一个可编程XO(SI570)。
和jdog的区别不大,其中关键是通过巨大的缓存的记数值,然后经过数字滤波完成积分运算,得到一个稳定数,最后修正频率得到一个稳定的时钟。
而传统PLL则是依靠低通滤波器来完成积分运算,得到一个稳定电压,最后修正频率得到一个稳定的时钟。
APLL比起DPLL虽然有诸多不便,但是他唯一的优势是时钟信号是直接输出的,所以比起依靠小数分频的DPLL,
他的时钟频率变化更线形,质量也要高(前提是VCO,VCXO要够给力,别拿2块5的VCXO来比)
数字滤波可以使用各类算法,比如平均化,或者低通等等。
其最后的效果,主要看运算出来的稳定度,当然加大时间长度(缓存量)相当于做了一个很大的低通(或高通)。
然后锁定后的时钟性能相当棒。
他们的区别就是一个是数字一个是模拟,做法基本以上,当然也有通过高速计数器抓频率替代缓存的方法:
计算每个UI的脉冲数,然后经过数字滤波,得到一个稳定数,然后修正得到一个稳定的时钟。
而模拟锁像环则因为各种因素:运放噪音,比较器死区,VCO性能等问题,或多或少的影响效果。
但是突发状况时候,模拟锁向环能线形变化,而数字锁向环则有跳变。
混合型PLL是依靠缓冲和数字滤波输出一个数值,给PCM56U转成电压,然后给VCXO,这样就可以弥补各种缺点。
这个方案主要是DCS这个娱乐公司在做,他们的另一个逗比方案是N阶M比特DAC,当然如果他们买现成的芯片就不好调声了。
比起先数字后模拟,TI的CDCE913方案是先模拟后数字的,后面会讲起。
这样就把抖动滤除了。
关于数据同步,这个主要是针对R2R等老芯片,因为他们的LE,BCK都会直接影响正常使用。
所以很早WADIA他们提出,数据同步时候只需要4个样本的就可以满足极限情况的使用。
至于为什么是4个样本,是因为他们有4个DAC芯片,呵呵。
而TI也提出过带PLL PCM1702DAC,用的是富士通神货,而现在没了,但是TI出了个CDCE913来替代,效果很不错。
论坛定音鼓的CD机上带有,我听过,一个字,好。
CDCE913是可编辑VCXO,相当于SI571,有兴趣的朋友可以去TI找找。那里有一整套方案。
kiol
发表于 2014-12-6 22:01
卡西利亚斯 发表于 2014-12-6 13:35 static/image/common/back.gif
居然还有人顶这个贴。
首先IANS的I2S FIFO就是一个缓冲器,然后配一个可编程XO(SI570)。
老大,你说的太专业了,偶看不懂。
请问,1,I2S FIFO缓存是不是能有效降低jitter提升音质?
2,如果是这样,为啥dac芯片不直接集成一个缓存,然后直接利用外部时钟做重整呢?这样岂不是只要DAC接一个好时钟就可以了,转盘啥的都无所谓了
卡西利亚斯
发表于 2014-12-6 22:36
kiol 发表于 2014-12-6 22:01 static/image/common/back.gif
老大,你说的太专业了,偶看不懂。
请问,1,I2S FIFO缓存是不是能有效降低jitter提升音质?
2,如果是 ...
I2S FIFO 就是CACHE 是中转数据的。
光这个就有用的话,DAC自己带了不就完了,这个连你都知道,厂家不可能不知道。
IANS的I2S FIFO中的FIFO 除了做CACHE,更重要的是拿来做检测,用来做调节VCXO的。
zhp25
发表于 2014-12-7 00:03
同步是不是可以不用fifo了。异步太多复杂,做好代价不小。
卡西利亚斯
发表于 2014-12-7 00:36
zhp25 发表于 2014-12-7 00:03 static/image/common/back.gif
同步是不是可以不用fifo了。异步太多复杂,做好代价不小。
:$ 在这里 FIFO更多的是检测器,有DF的芯片里面都是并行处理的,只要MCK就够了。
至于纯DAC,就要考虑LE和BCK的问题。
newyang1
发表于 2014-12-7 08:48
虽然看不懂,也学习了
yuming916
发表于 2016-2-17 18:43
问一个外行问题,数字转盘和同价位cd机相比,哪个jitter大一些?
xtal
发表于 2016-4-13 16:24
卡西利亚斯 发表于 2014-12-6 13:35
居然还有人顶这个贴。
首先IANS的I2S FIFO就是一个缓冲器,然后配一个可编程XO(SI570)。
关于数据同步,这个主要是针对R2R等老芯片,因为他们的LE,BCK都会直接影响正常使用。
所以很早WADIA他们提出,数据同步时候只需要4个样本的就可以满足极限情况的使用。
至于为什么是4个样本,是因为他们有4个DAC芯片,呵呵。
------------------------------------
你好,数据同步似乎只有自己用74来搭建?
xtal
发表于 2016-4-13 16:43
本帖最后由 xtal 于 2016-4-13 16:46 编辑
这大致是我的那个框图
xtal
发表于 2016-4-13 16:52
CLOCKIC是精密时钟源,输出抖动极小。
DF芯片,就是类似DF1706那样的东西。DAC是PCM1702
显然DF芯片和DAC接收到的时钟信号是同频率的。
但是DATA/LE和时钟信号有很大的可能不同步了。
你前面说过用一些逻辑电路可以解决这个问题。如何解决?
我的理解是锁存一下就好了。但是如果时钟边沿和DATA/LE的边沿很接近,可能会出现亚稳态。
用双触发器来锁存,只能说解决了亚稳态,但是还是有可能出现误码。
如何简单方便的解决这个问题,请赐教。
卡西利亚斯
发表于 2016-4-13 17:58
xtal 发表于 2016-4-13 16:52
CLOCKIC是精密时钟源,输出抖动极小。
DF芯片,就是类似DF1706那样的东西。DAC是PCM1702
显然DF芯片和DAC ...
直入DAC都不会有误码,加上D触反而有的话,应该认为是照猫画虎,连画蛇添足都算不上。
DAC和DF芯片的硬件结构里也有串并转换的,串行数据在里面处理实质是并行的,
而转换时钟是由XTI(MCKI)分频得到。
比如PCM56的转换时钟是由BCK控制的,而生成BCK的是DF1700的XTI。
LE只是用来使能的,真正确定时机的还是BCK,而DATA就算新手也知道如何避免误码。
讲了一堆,其实就是用PLL从WS/WC 倍频生成MCK,然后丢给DF,DAC ,关键部分就LATCH一下。
xtal
发表于 2016-4-13 22:28
卡西利亚斯 发表于 2016-4-13 17:58
直入DAC都不会有误码,加上D触反而有的话,应该认为是照猫画虎,连画蛇添足都算不上。
DAC和DF芯片的硬 ...
PCM1702的输出是BCK触发的,和LE无关。
丢给DF没问题。问题是DF输出的数据和LE这两个东西和BCK不同步了。
这个BCK肯定要直接供给DAC芯片的。
xtal
发表于 2016-4-13 23:05
似乎干脆来一片小容量的FIFO芯片更合适。。。。。
lter15
发表于 2016-4-13 23:42
关键还是把时钟做好,光有FIFO有鸟用
xtal
发表于 2016-4-14 08:40
lter15 发表于 2016-4-13 23:42
关键还是把时钟做好,光有FIFO有鸟用
我那个时钟是抖动小于1PS的。。。。。。
lter15
发表于 2016-4-14 20:46
xtal 发表于 2016-4-14 08:40
我那个时钟是抖动小于1PS的。。。。。。
你的是晶振还是PLL出来的时钟?
bbs365
发表于 2016-4-14 22:23
才发现有这么高深的一个帖子,学习了!
卡西利亚斯
发表于 2016-4-16 12:02
xtal 发表于 2016-4-13 22:28
PCM1702的输出是BCK触发的,和LE无关。
丢给DF没问题。问题是DF输出的数据和LE这两个东西和BCK不同步了 ...
LE本来就不要完全同步的,DATA不出错就得。