[音源] 改善jitter的有效方法----I2S FIFO

[复制链接] 查看: 56408|回复: 132

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 17:33 | 显示全部楼层
对,关键是从FIFO提取数据的时候,那个时钟要理想,越接近理想越好。但是又要防止FIFO拉破或者溢出。

我PM了laurel,他的回答是“软件锁相环,跟踪输入的时钟”。然后我这只菜鸟就卡壳了。
别时方觉依依 发表于 2010-10-28 15:11


找DPLL :  开一个FIFO,用输入时钟往里面灌数据,然后DDS生成输出时钟分频后往外面拉数据,如果产生未满则调低DDS的速度,如果产生溢出则调高DDS的速度,FIFO越大,输出时钟的相对稳定性越高。

是我便坚持使用2nd APLL 。但是锁定延时要处理好。有人做过,但是没有注意到芯片的重置,毕竟2nd PLL频率变换需要一定时间,所以就出现了后续设备读取误码的状况。
头像被屏蔽

5

主题

0

好友

375

积分

禁止发言 当前离线

泛泛之辈

UID
122224
帖子
365
精华
0
经验
375 点
金钱
371 ¥
注册时间
2009-8-3
发表于 2010-10-28 18:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 18:38 | 显示全部楼层
laurel弄的那个软DAC就是这么弄的了。等于用软件做个PLL出来了,性能比传统的PLL好很多。
可是必须有很好的DDS器件,要不DDS产生的相位噪声更大。
成本太高了。。
fantaq 发表于 2010-10-28 18:37


性能比传统的PLL好很多?

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 19:23 | 显示全部楼层
81# 卡西利亚斯

哦,难怪他还用到PID控制。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 19:39 | 显示全部楼层
是我便坚持使用2nd APLL 。但是锁定延时要处理好。有人做过,但是没有注意到芯片的重置,毕竟2nd PLL频率变换需要一定时间,所以就出现了后续设备读取误码的状况。卡西利亚斯 发表于 2010-10-28 17:33


你的意思是指当44.1K转到48K这样,两种采样频率变换的时候,需要芯片重置?否则,两个频率转换的过程会非常慢?

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 20:00 | 显示全部楼层
你的意思是指当44.1K转到48K这样,两种采样频率变换的时候,需要芯片重置?否则,两个频率转换的过程会非常慢?
别时方觉依依 发表于 2010-10-28 19:39


具体情况具体分析。不一定都要。

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
 楼主| 发表于 2010-10-28 20:42 | 显示全部楼层
我看了laurel的sDAC大作,和卡西利亚斯在81楼提的DPLL比较相似,通过控制DDS实现FIFO不溢出,最好能把FIFO里的数据量,控制在FIFO半满状态而且波动范围尽量小,这样实现FIFO输出的时钟频率等同于FIFO输入时钟的中心频率。
只是DDS输出的时钟质量暂且不说,控制器输出DDS的控制字到DDS调整到设定的频率有延时,而且SPDIF解码成I2S输入到FIFO的抖动不同,可能都要纳入闭环调节的考虑范围。输入I2S采样率变化,如果针对LRCK调节,可能PID环宽也要变化,不确定的因素太多了。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 23:05 | 显示全部楼层
回楼上:
我觉得问题不大。
SPDIF解码成I2S输入到FIFO的抖动本来就是要消除的。
DDS的时钟质量,我看他做得不错。
至于控制器输出控制字到DDS调整到设定的频率的延时,没有关系。
只要获得FIFO的地址指针,然后和FIFO的1/2地址比较。做PID算法来控制输出频率……
可能我说的太毛了,但是大致意思就是这个。

13

主题

1

好友

1395

积分

认证会员 当前离线

Rank: 4

UID
30337
帖子
1584
精华
0
经验
1395 点
金钱
1371 ¥
注册时间
2007-11-12

认证会员

发表于 2010-10-28 23:51 | 显示全部楼层
其实PID算法来控制DDS的输出频率,并不难。
现在不明白的是:DDS改变频率的那一刻,它的时钟特性是怎样变化的?jitter又有多大?这一刻又有多长?
使用2nd APLL的问题是:很多VXCO的 牵引范围有限,而且只能支持常用的几个固定采样率。

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
 楼主| 发表于 2010-10-29 08:47 | 显示全部楼层
回楼上:
我觉得问题不大。
SPDIF解码成I2S输入到FIFO的抖动本来就是要消除的。
DDS的时钟质量,我看他做得不错。
至于控制器输出控制字到DDS调整到设定的频率的延时,没有关系。
只要获得FIFO的地址指针,然后 ...
别时方觉依依 发表于 2010-10-28 23:05


前期可以用DSP或者ARM搭个实验平台来实验,利用内部sram或sdram建一个软FIFO,可控性也比较强。DSP或者ARM 的输出端I2S接口工作在从模式,dds输出通过分频获得BCK和LRCK,然后往外面拖数据。
其他的和laurel就大同小异了。
头像被屏蔽

5

主题

0

好友

375

积分

禁止发言 当前离线

泛泛之辈

UID
122224
帖子
365
精华
0
经验
375 点
金钱
371 ¥
注册时间
2009-8-3
发表于 2010-10-29 10:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

96

主题

12

好友

3704

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
1077
帖子
3314
精华
6
经验
3704 点
金钱
2484 ¥
注册时间
2004-7-24

社区贡献

发表于 2010-11-1 19:49 | 显示全部楼层
提到我了我就说一下:
首先,调整频率不一定需要FIFO,如果是锁相环,暂态过程后相位是相同步的。
其次,如果是锁频环,那么可以把FIFO空满也考虑进去。
最后,调整速度还是看算法。SDAC最早的FPGA版本从跟踪到锁定要1分钟以上,最新的版本这个过程在1秒钟内完成。

96

主题

12

好友

3704

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
1077
帖子
3314
精华
6
经验
3704 点
金钱
2484 ¥
注册时间
2004-7-24

社区贡献

发表于 2010-11-1 19:52 | 显示全部楼层
其实PID算法来控制DDS的输出频率,并不难。
现在不明白的是:DDS改变频率的那一刻,它的时钟特性是怎样变化的?jitter又有多大?这一刻又有多长?
使用2nd APLL的问题是:很多VXCO的 牵引范围有限,而且只能支持常 ...
chenxiuping15 发表于 2010-10-28 23:51

先要搞清楚jitter的概念,这里的jitter一般指随机抖动,对于随机过程是无法用“一刻”的概念的,对于随机的过程,只能用统计量。
所以jitter是个统计量,如果调整非确定性,则在频谱上不会有明显的功率积累。
VCXO你说的不错,牵引范围有限,而且任何晶振都会因为温度和老化改变自己的频率。如果解决这个问题,FPGA鉴相+VCXO效果应该更好。

0

主题

0

好友

182

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
82535
帖子
254
精华
0
经验
182 点
金钱
182 ¥
注册时间
2009-2-22
发表于 2010-11-4 19:37 | 显示全部楼层
用CPLD来干这活,值的一试!

0

主题

0

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
240327
帖子
369
精华
0
经验
263 点
金钱
261 ¥
注册时间
2010-9-14
发表于 2010-11-5 17:47 | 显示全部楼层
高技术深度学习中。。。。。。。。。

1

主题

0

好友

86

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
237187
帖子
207
精华
0
经验
86 点
金钱
136 ¥
注册时间
2010-9-5
发表于 2010-11-5 20:18 | 显示全部楼层
理论是对的

8

主题

0

好友

356

积分
     

业余侠客 当前离线

Rank: 4

UID
8969
帖子
452
精华
0
经验
356 点
金钱
268 ¥
注册时间
2006-4-27
发表于 2010-11-6 10:57 | 显示全部楼层
觉得讨论太过理论化,而现实中存在的影响因素很多,比如电源对jitter的影响,况且jitter不单指晃动还包含恒定的误差。过多的争论意义不大,有本事还是拿出有说服力的实验装置来证明,拿它发出的靓声来证明!

13

主题

0

好友

340

积分

业余侠客 当前离线

克莱天下第一

Rank: 4

UID
200093
帖子
413
精华
0
经验
340 点
金钱
358 ¥
注册时间
2010-5-11
发表于 2010-11-6 11:30 | 显示全部楼层
觉得讨论太过理论化,而现实中存在的影响因素很多,比如电源对jitter的影响,况且jitter不单指晃动还包含恒定的误差。过多的争论意义不大,有本事还是拿出有说服力的实验装置来证明,拿它发出的靓声来证明!
阿杜 发表于 2010-11-6 10:57


他们讲大道理的没有一个做的出好声音的,看了就知道。

0

主题

0

好友

2

积分

注册会员 当前离线

Rank: 2

UID
241904
帖子
2
精华
0
经验
2 点
金钱
2 ¥
注册时间
2010-9-19
发表于 2010-11-21 18:14 | 显示全部楼层
占位学习

39

主题

0

好友

1071

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
6252
帖子
1056
精华
0
经验
1071 点
金钱
565 ¥
注册时间
2005-11-9
发表于 2010-11-24 18:01 | 显示全部楼层
CD DSP的数据进去FIFO,之后哪个钟去触发把FIFO的数据取出来给DAC或者I2S转换模块?
FIFO是用再二个时钟不同步的系统里面吧,水池一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部