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

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

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
 楼主| 发表于 2010-10-28 09:02 | 显示全部楼层
对于一个64x44100HZ的BCK来说,一个周期约354ns,要让WS和BCK,DATA之间相差超过这个时间,即使是B方案不可能读取出正确的数据。假如只慢半个BCK周期,看似的确有问题。其实读值的时候是用BCK的,那么一次锁存过 ...
卡西利亚斯 发表于 2010-10-28 04:02


呵呵,分析得很透彻。

http://bbs.hifidiy.net/viewthrea ... 7%C0%FB%D1%C7%CB%B9
“一个垃圾的终结,代表着又要制造新的垃圾.............”,别耍赖

9

主题

1

好友

447

积分
     

业余侠客 当前离线

Rank: 4

UID
40702
帖子
1477
精华
0
经验
447 点
金钱
477 ¥
注册时间
2008-4-17
发表于 2010-10-28 09:15 | 显示全部楼层
这个帖子有意思,呵呵学习下

49

主题

3

好友

1444

积分

贵宾 当前离线

Rank: 3Rank: 3

UID
2043
帖子
1242
精华
4
经验
1444 点
金钱
1150 ¥
注册时间
2004-11-5

论坛贵宾 DIY大赛获奖

发表于 2010-10-28 09:25 | 显示全部楼层
问题是要加多大,你真认为用FPGA+大SRAM有对同频率信号有效果?我认为最多64bit就够了。
卡西利亚斯 发表于 2010-10-28 06:23

如果按抖动是500ppm算,传输64bit 抖动可能产生的抖动误差 大约会是0.032bit宽度,那么至少需要1bit宽度来缓冲时延以消除抖动(异步FIFO),那么传输64bit FIFO至少需要64+1=65bit;

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 10:17 | 显示全部楼层
突然想起以前的DISCMAN有防抖功能。
原理是2倍速读,存到SDRAM中。再播放。

卡西利亚斯 ?这个原理可否借鉴,对音质是否有提高?

当然了,最大 的问题就是一个数据来的是2倍速,而同轴还是一倍速。
别时方觉依依 发表于 2010-10-28 08:27



DISCMAN和车机是为了防抖,读碟时候先把正确的数据丢到RAM里,DMA读取RAM到DAC。再此过程中,需要光头以高速读取数据并校验正确性,所以才有用手拍都不停顿的DISCMAN。
这个抖动和我们说的抖动不一样呢。

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 10:19 | 显示全部楼层
呵呵,分析得很透彻。

http://bbs.hifidiy.net/viewthrea ... 7%C0%FB%D1%C7%CB%B9
“一个垃圾的终结,代表着又要制造新的垃圾.............”,别耍赖
jdog 发表于 2010-10-28 09:02


.................这也给你抓到,我承认了,我做的那台和CDM9根本不能比.................
不过那时候还没现在那么牛,现在有水平去分析它了,但是又没心情去做了.............

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 10:28 | 显示全部楼层
如果按抖动是500ppm算,传输64bit 抖动可能产生的抖动误差 大约会是0.032bit宽度,那么至少需要1bit宽度来缓冲时延以消除抖动(异步FIFO),那么传输64bit FIFO至少需要64+1=65bit;
cdream 发表于 2010-10-28 09:25


我算的是同步信号的处理,当然异步就要用另外的方法考虑。
500ppm 相对 44100HZ偏差来说都有22HZ的偏差了。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 11:52 | 显示全部楼层
DISCMAN和车机是为了防抖,读碟时候先把正确的数据丢到RAM里,DMA读取RAM到DAC。再此过程中,需要光头以高速读取数据并校验正确性,所以才有用手拍都不停顿的DISCMAN。
这个抖动和我们说的抖动不一样呢。
卡西利亚斯 发表于 2010-10-28 10:17


我知道。
你没有理解我的 意思。
我的意思是:当 从RAM中数据读取出来再到DAC中这个过程中的时钟是全靠晶振。如果在这个过程中,时钟的JITTER越小,是不是音质就越好。

如果这个成立,
那我就可以磨带防抖功能的DISCMAN:
1、将晶振换高精度,低JITTER的。
2、将IIS信号(MCLK、LRCK、BITCLK、DATA)拉出来给自己做的DAC。
3、播放的时候打开防抖功能。
这样到DAC的时钟就达到最小JITTER。
唯一指望的就是在生成MCLK,LRCK等的电路是高性能的。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 12:01 | 显示全部楼层
卡,至于你做的WAV播放器:就是上面一位仁兄挖出来的
问题还是在时钟的JITTER。
我也做过WAV播放器,http://bbs.hifidiy.net/viewthread.php?tid=347115
我昨天简单观察了下我做的那个给出来的LRCK。我没有测量相噪的仪器,只用示波器简单看了下。我那个IC给出的抖动是很大的。
我问了下我们的IC设计人员,IC的LRCK是由内部软件PLL出来的。
我没有仔细看你的播放器的原理。但是我觉得,只要是MCU类来处理时钟,都是很悲惨的。

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 12:17 | 显示全部楼层
卡,至于你做的WAV播放器:就是上面一位仁兄挖出来的
问题还是在时钟的JITTER。
我也做过WAV播放器,http://bbs.hifidiy.net/viewthread.php?tid=347115
我昨天简单观察了下我做的那个给出来的LRCK。我没有测量相 ...
别时方觉依依 发表于 2010-10-28 12:01


你看到的是很老的了。最后做的一板,是用CPLD做分频和切换44.1/48KHZ的了,原理看LZ的图。
DSPIC33设置DCI为从模式,用IO和CPLD交互切换44.1/48/88.2/96所需要的WS,BCK,然后再由CS8420输出。
写完那贴调试出来的声音是不错,但是UI和红外弄不好,所以就丢垃圾堆了。试问操作那么麻烦,还不如用电脑呢。

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 12:19 | 显示全部楼层
我知道。
你没有理解我的 意思。
我的意思是:当 从RAM中数据读取出来再到DAC中这个过程中的时钟是全靠晶振。如果在这个过程中,时钟的JITTER越小,是不是音质就越好。

如果这个成立,
那我就可以磨带防抖 ...
别时方觉依依 发表于 2010-10-28 11:52


应该如此,既然时钟都没问题,剩下就是模拟电路的问题了。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 12:36 | 显示全部楼层
应该如此,既然时钟都没问题,剩下就是模拟电路的问题了。

赶紧入带防抖DISCMAN。然后自己取IIS信号,加DAC。这个帖子被JS看见,DISCMAN的价格要抄上来了。

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 12:37 | 显示全部楼层
赶紧入带防抖DISCMAN。然后自己取IIS信号,加DAC。这个帖子被JS看见,DISCMAN的价格要抄上来了。
别时方觉依依 发表于 2010-10-28 12:36


{:3_83:}  JS会告诉你,摇头的更好。

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
 楼主| 发表于 2010-10-28 13:26 | 显示全部楼层
71# 别时方觉依依



早期的DISCMAN由于受内部动态存储器容量限制,一般电子防震会有损压缩存储,然后回放,这样音质是会打折的,所以厂家建议在不需要开启电子防震的场合使用,最好关闭电子防震功能.
近期的DISCMAN就不清楚了,毕竟大容量存储器已经很便宜.

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 13:40 | 显示全部楼层
71# 别时方觉依依
早期的DISCMAN由于受内部动态存储器容量限制,一般电子防震会有损压缩存储,然后回放,这样音质是会打折的,所以厂家建议在不需要开启电子防震的场合使用,最好关闭电子防震功能.
近期的DISC ...
jdog 发表于 2010-10-28 13:26


买的时候那手拍,专买不停顿的...................

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 14:05 | 显示全部楼层
难道问题解决了?转盘无关性出来了?那摇头不摇头有什么关系呢?

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
 楼主| 发表于 2010-10-28 14:18 | 显示全部楼层
难道问题解决了?转盘无关性出来了?那摇头不摇头有什么关系呢?
别时方觉依依 发表于 2010-10-28 14:05


你敢说"转盘无关性",JS跟你急.
目前需要解决的应该是I2S FIFO输出端锁存不能使用CPLD自带的,应使用外部74系列低抖动锁存器,然后锁存信号直接来自TCXO,这样抖动基本全部由TCXO的性能决定了.
头像被屏蔽

5

主题

0

好友

375

积分

禁止发言 当前离线

泛泛之辈

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

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 14:58 | 显示全部楼层
呶,带电子防抖功能的DISCMAN中转盘来的数据都到RAM中存下来了。只要不误码,转盘抖动大点有什么关系啊???
然后RAM吐数据的时序以及DAC时钟就由TCXO决定了,整个系统的的:抖动基本全部由TCXO的性能决定了.”

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2010-10-28 15:11 | 显示全部楼层
目前需要解决的应该是I2S FIFO输出端锁存不能使用CPLD自带的,应使用外部74系列低抖动锁存器,然后锁存信号直接来自TCXO,这样抖动基本全部由TCXO的性能决定了.
jdog 发表于 2010-10-28 14:18

对,关键是从FIFO提取数据的时候,那个时钟要理想,越接近理想越好。但是又要防止FIFO拉破或者溢出。

我PM了laurel,他的回答是“软件锁相环,跟踪输入的时钟”。然后我这只菜鸟就卡壳了。

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2010-10-28 17:25 | 显示全部楼层
你敢说"转盘无关性",JS跟你急.
目前需要解决的应该是I2S FIFO输出端锁存不能使用CPLD自带的,应使用外部74系列低抖动锁存器,然后锁存信号直接来自TCXO,这样抖动基本全部由TCXO的性能决定了.
jdog 发表于 2010-10-28 14:18


开始我说CPLD端口抖动大,都说我瞎扯,现在又要用74。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部