10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:03 | 显示全部楼层
maxwang71 发表于 2015-5-24 19:47
我 写 这些 没有 别的 意思, 时钟不仅有jitter 问题, 还有 其他的 指标, stm32 pll 能 满足hifi 要求 ...

对于 HIFI 而言,我个人认为,大多数情况下,被过度神话了。

在数字模拟 DAC 转换过程中,时钟的重要性微乎其微,可以忽略不计。

倒是在数字接口之间传输时,需要隔离不同时钟域的影响。

至于说到 ISO DSD 文件解析,我可以说说思路,不能提供源码。因为这些源码并不是开源的,而是借鉴开源程序针对 STM32 全部重写的。

我写这个帖子,只是把我曾经碰到的问题和解决的方法说出来。这里面的问题您可能没有碰到,或者对您不是问题,但是当初这些问题都曾经给我带来非常大的麻烦和困扰。

2

主题

0

好友

36

积分

注册会员 当前离线

Rank: 2

UID
791848
帖子
37
精华
0
经验
36 点
金钱
32 ¥
注册时间
2015-5-10
发表于 2015-5-24 20:06 | 显示全部楼层
这样说太抽像了, 用F4的PLL作时钟源,驱动CS4398, 和独立时钟源的, 做出的东东,SNR和DR,前后至少要差5dB,差10dB很正常. 就是说你这个播放器,做的理想了,SNR和DR值能达到105dB,估计就是极限了,弄不好,最多就100dB左右.

38

主题

1

好友

478

积分

业余侠客 当前离线

Rank: 4

UID
5498
帖子
361
精华
0
经验
478 点
金钱
358 ¥
注册时间
2005-9-8
发表于 2015-5-24 20:09 | 显示全部楼层
jialong0926 发表于 2015-5-24 20:03
对于 HIFI 而言,我个人认为,大多数情况下,被过度神话了。

在数字模拟 DAC 转换过程中,时钟的重要 ...

那 你 是 借鉴 哪个 开源程序呢

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:17 | 显示全部楼层
musich 发表于 2015-5-24 20:06
这样说太抽像了, 用F4的PLL作时钟源,驱动CS4398, 和独立时钟源的, 做出的东东,SNR和DR,前后至少要差5dB,差1 ...

不知是计算结果还是?非常希望能在论坛中学习到专业的知识。

以下摘抄自百度,关于 DAC 中数据处理的过程:

随着第一个WS信号的改变,WSP在SCK信号的下降沿重设计数器。在“1 out of n”译码器对计数器数值进行译码后,第一个串行的数据(MSB)在SCK时钟信号的上升沿被存放进入B1,随着计数器的增长,接下来的数据被依次存放进入B2到Bn中。在下一个WS信号改变的时候,数据根据WSP脉冲的变化被存放进入左(声道)锁存器或者右(声道)锁存器,并且将B2一Bn的数据清除以及计数器重设,如果有冗余的数据则最低位之后的数据将被忽略。注意:译码器和计数器(虚线内的部分)可以被一个n比特移位寄存器所代替。

按照这个处理逻辑,SCK、WS、DATA 完全是数字领域的处理,锁存以后才会进入到 DAC 的数字模拟转换过程。我是根据这个分析理解 DAC 过程不会受到时钟的实质影响的,不知是否合理?

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:18 | 显示全部楼层
maxwang71 发表于 2015-5-24 20:09
那 你 是 借鉴 哪个 开源程序呢

foo_input_sacd

2

主题

0

好友

36

积分

注册会员 当前离线

Rank: 2

UID
791848
帖子
37
精华
0
经验
36 点
金钱
32 ¥
注册时间
2015-5-10
发表于 2015-5-24 20:19 | 显示全部楼层
本帖最后由 musich 于 2015-5-24 20:20 编辑


作为过来人, 上个图, 曾经也疯狂过,   

Show_90a.JPG

2

主题

0

好友

36

积分

注册会员 当前离线

Rank: 2

UID
791848
帖子
37
精华
0
经验
36 点
金钱
32 ¥
注册时间
2015-5-10
发表于 2015-5-24 20:29 | 显示全部楼层
不巧,偶也用了F407,多加了8805作SPDIF接收, 再一个近图.

Show_90b.JPG

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:34 | 显示全部楼层
musich 发表于 2015-5-24 20:29
不巧,偶也用了F407,多加了8805作SPDIF接收, 再一个近图.

哈哈,也是玩家!

WM8805 我也用过,不过是之前做数字转盘输出 SPDIF 的。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:35 | 显示全部楼层
我用的是 VET6,flash 少一半,不过用不完。

139

主题

11

好友

3309

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4980
精华
1
经验
3309 点
金钱
3020 ¥
注册时间
2005-7-26
发表于 2015-5-24 20:35 | 显示全部楼层
jialong0926 发表于 2015-5-24 20:17
不知是计算结果还是?非常希望能在论坛中学习到专业的知识。

以下摘抄自百度,关于 DAC 中数据处理的 ...

我又跳出来反对了,楼主别烦啊
根据你的描述,可以说针对送入DAC的SCK信号和DATA信号对jitter不敏感,但WS信号呢?
设想一下,上一分钟WS信号是-400ps,下一分钟是+400ps,会发生什么有趣的事情呢?

2

主题

0

好友

36

积分

注册会员 当前离线

Rank: 2

UID
791848
帖子
37
精华
0
经验
36 点
金钱
32 ¥
注册时间
2015-5-10
发表于 2015-5-24 20:36 | 显示全部楼层
jialong0926 发表于 2015-5-24 20:17
不知是计算结果还是?非常希望能在论坛中学习到专业的知识。

以下摘抄自百度,关于 DAC 中数据处理的 ...

随着第一个WS信号的改变, 这就一句就够了, 可以说明所有问题了.
当一个WS改变,输出DAC值时,也就是采样值吧,  在下个WS来时,将输出另个DAC值,
假如这两个WS输出的时间差,是1/1000秒,那么输出的噪声是1k, 这样直接了吧,
WS的时间差,来自PLL/VCO的抖动误差,当然1k只是举个例子,

2

主题

0

好友

36

积分

注册会员 当前离线

Rank: 2

UID
791848
帖子
37
精华
0
经验
36 点
金钱
32 ¥
注册时间
2015-5-10
发表于 2015-5-24 20:41 | 显示全部楼层
一会就挣到10分, 哈哈, 开心逛街去了....

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:42 | 显示全部楼层
haluo 发表于 2015-5-24 20:35
我又跳出来反对了,楼主别烦啊
根据你的描述,可以说针对送入DAC的SCK信号和DATA信号对jitter不敏 ...

-400ps 到 +400ps,之间差了 800ps。

WS 信号,按比较高的 192K FS 算,周期是 5208333 ps,800 ps 相当于使得 WS 延迟了 万分之一。

首先,万分之一不会导致 bit 级别的误差。

其次,800 ps 的延迟相当于 一亿分之一 秒的锁存延迟,这个时间无法由 DAC 在模拟信号中体现。

这个是我的计算和分析过程,不知是否有问题?

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-24 20:47 | 显示全部楼层
musich 发表于 2015-5-24 20:36
随着第一个WS信号的改变, 这就一句就够了, 可以说明所有问题了.
当一个WS改变,输出DAC值时,也就是采样值 ...

这个我已经计算过了,800 ps 的延迟会导致低于 一亿分之一 秒的误差,实际是 1GHz,别说是人耳朵,就是模拟器件也望尘莫及;别说是模拟器件,就是大多数数字器件也是望尘莫及的。

这是我的计算结果,不知是否正确?
头像被屏蔽

16

主题

4

好友

777

积分

禁止发言 当前离线

UID
17546
帖子
658
精华
0
经验
777 点
金钱
645 ¥
注册时间
2007-1-16
发表于 2015-5-24 23:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

16

主题

4

好友

777

积分

禁止发言 当前离线

UID
17546
帖子
658
精华
0
经验
777 点
金钱
645 ¥
注册时间
2007-1-16
发表于 2015-5-24 23:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-25 00:06 来自手机端 | 显示全部楼层
jinggx 发表于 2015-5-24 23:35
800ps只是举个例子来说明问题,实际上STM32F407的抖动要是有明确数据,再计算一下,可能就不一样了。

800ps就是手册上写的明确数据

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-25 00:07 来自手机端 | 显示全部楼层
jinggx 发表于 2015-5-24 23:41
bug是在slave模式下会失步。所以slave用不了,如果想用外部的IIS时钟,其时钟输入的引脚又和SD卡IO复用了 ...

不知哪里提到限制只能16bit?
头像被屏蔽

16

主题

4

好友

777

积分

禁止发言 当前离线

UID
17546
帖子
658
精华
0
经验
777 点
金钱
645 ¥
注册时间
2007-1-16
发表于 2015-5-25 00:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

139

主题

11

好友

3309

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4980
精华
1
经验
3309 点
金钱
3020 ¥
注册时间
2005-7-26
发表于 2015-5-25 01:18 | 显示全部楼层
jialong0926 发表于 2015-5-24 20:42
-400ps 到 +400ps,之间差了 800ps。

WS 信号,按比较高的 192K FS 算,周期是 5208333 ps,800 ps 相 ...

你的计算没有问题,但这句
“其次,800 ps 的延迟相当于 一亿分之一 秒的锁存延迟,这个时间无法由 DAC 在模拟信号中体现。”
真心错了,肯定的告诉你,可以体现出来。用一张业余级别的EMU-1212去测频谱,就可以测出来。
就别提专业级别的AP测试仪了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版| ( 鄂ICP备2025138941号-3 ICP证:鄂B2-20130019 公安局网监备:420100007348 邮箱:1343292467@qq.com )

GMT+8, 2025-11-6 04:58 , Processed in 0.185011 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部