49

主题

3

好友

1444

积分

贵宾 当前离线

Rank: 3Rank: 3

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

论坛贵宾 DIY大赛获奖

发表于 2015-5-20 12:34 | 显示全部楼层
haluo 发表于 2015-5-20 12:31
“至于说到晶振 20ppm 抖动、F407 的 400 ps 抖动(记得是这个量级),这个就完全不是数字抖动的问题了, ...

同意,微小的量变累积会引起巨大的质变

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 12:51 来自手机端 | 显示全部楼层
cdream 发表于 2015-5-20 12:34
同意,微小的量变累积会引起巨大的质变

我的理解是,不同时钟体系的数字接口之间会存在这个累积问题。因为累积到一定时候就可能会产生bit级别的错位。
但任何主从结构的通信协议中,不存在累积错位,只存在时间的少许滞后或超前。因为时钟完全由主设备提供,没有同步和错位问题。

我的理解可能也不准确,多谢探讨
头像被屏蔽

4

主题

4

好友

356

积分
     

禁止发言 当前离线

UID
96502
帖子
284
精华
0
经验
356 点
金钱
278 ¥
注册时间
2009-4-14
发表于 2015-5-20 14:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

49

主题

3

好友

1444

积分

贵宾 当前离线

Rank: 3Rank: 3

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

论坛贵宾 DIY大赛获奖

发表于 2015-5-20 14:35 | 显示全部楼层
jialong0926 发表于 2015-5-20 12:51
我的理解是,不同时钟体系的数字接口之间会存在这个累积问题。因为累积到一定时候就可能会产生bit级别的 ...

每个数据都这样抖一下,就浑身发抖

139

主题

11

好友

3306

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4977
精华
1
经验
3306 点
金钱
3017 ¥
注册时间
2005-7-26
发表于 2015-5-20 14:43 | 显示全部楼层
jialong0926 发表于 2015-5-20 12:51
我的理解是,不同时钟体系的数字接口之间会存在这个累积问题。因为累积到一定时候就可能会产生bit级别的 ...

“jitter只存在于多时钟情况下不同时钟数字系统之间在时间上的不匹配“这个结论,我认为是不正确的,单时钟系统也存在jitter问题。
同步和错位,指的是”能不能接收到准确的数据“,以最终接收到数据准不准确为最终目标。
而音频解码的关键在于要在”准确的时间接收到准确的数据“,就是不光要数据准,数据送到的时间要更准
这个”准确的时间“到底有多“准”就是用jitter来衡量的。
我说这些的原因是想让你知道,jitter很重要,你的处理方式,并没有避开这个问题。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 14:48 | 显示全部楼层
整体结构之后,该说说主控了。

主控采用 STM32F407,连接以下部件:

1、晶振,由一个 11.0592MHz 晶振提供时钟。单晶振可支持不同采样率完美匹配的说明之前已经提到过了。

2、数据来源:TF卡,直接采用 STM32F407 的 SDIO 接口连接。关于 TF 卡如何与 F407 连接,只需要注意几个上拉电阻就可以了。STM32F407 的 SDIO 可以采用 4 bit 模式与 TF 卡通信,我自己实测的速度 > 5Mbytes/s。这个速度足够任何格式、任何采样率和采用宽度的 2 声道文件播放了。

3、CS4398,这个 DAC 接线也比较简单,I2S 和 DSD 共用 4398 的几个管脚,F407 采用软控方式,实时切换不同采样率、不同音乐格式的 4398 寄存器参数。另外,4398 需要的 MCLK 信号由 F407 的 I2S 功能使能 MCLK 实现。

4、交互,由 STM32F030 和 F407 通过 SPI 协同实现。歌曲信息、播放进度等由 F407 采用主模式实时传送过 F030,同时 F030 通过从模式把按键、遥控器控制信号实时回传给 F407,实现切歌、静音、暂停、音量控制等功能。由于 SPI 是双工的,因此 F407 和 F030 之间的信息是同时双向传送的。

5、字库维护,由 F407 接收 F030 的指令,从 TF 卡的文件中读出字库,写到 W25Q32 FLASH 中。这个功能是为了防止字库被意外地擦除而设置的。

6、固件升级,F407 的固件采用 TF 卡自动升级的方式,每次加电时,F407 的 bootloader 发现有需要升级的固件文件,就自动进行主控 MPU 的固件升级。
F407.jpg

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 14:52 | 显示全部楼层
rabbitgg 发表于 2015-5-20 14:34
高手啊!完成度非常高了!还支持这么多的格式,特别是dsf、dsd-iso,好多商品机都没这支持格式多。

请教 ...

DSD 只是借助 STM32 的 I2S 管脚,实际上 STM32F4 并不支持 DSD 数字信号输出,是通过模拟转换方式实现的。

只是在实现的时候需要非常好地控制 MCLK、DSD-CK、DSD-A、DSD-B 几个信号之间的同步。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 15:04 | 显示全部楼层
haluo 发表于 2015-5-20 14:43
“jitter只存在于多时钟情况下不同时钟数字系统之间在时间上的不匹配“这个结论,我认为是不正确的,单时 ...

非常认同你的说法:同步和错位,指的是”能不能接收到准确的数据“,以最终接收到数据准不准确为最终目标。

在我的DIY播放器系统里面,最重要的就是 I2S 信号、DSD 信号是否准确地传输给了 CS4398,包括几个信号 MCLK、BCLK、WS、DATA之间的同步。在音频范畴,最大 50 M的频率,相对于 400 ps 的抖动,大致会引发一个时钟产生 100万分之一 bit 的错位,从这个方面来看,感觉 CS4398 不会有特别大的变化。

之所以说这个抖动不会累积,是因为 MCLK、BCLK、WS、DATA 之间的同步完全是由 F407 实现的,这4组信号之间不会产生错位。
而 CS4398 的数据手册中甚至提到:MCLK 与 其他信号之间不需在相位上有严格要求,只需要在同步方面严格一致就可以了。

F407 对于确保 MCLK、BCLK、WS、DATA 之间的同步,一定是没有问题的,否则意法半导体可能都不好意思推出 I2S 接口产品了。

拙见,不一定准确,一起探讨交流。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 15:45 | 显示全部楼层
DAC CS4398

之所以选这个芯片,也没有什么特别的原因,就是看其他玩家的评价尚可,而且最主要是价格便宜(某宝价不到10元)。

最初其实并没有考虑过 DSD 的事情,后来随着 DIY 的深入,歪打正着的是刚好 CS4398 可以支持 DSD 直解输出(也可以设置为转 PCM 输出)。

4398 接收 F407 发送的数字音频信号(I2S 和 DSD),通过由 F407 软控预设的寄存器参数来实现不同采样率(44.1K-192K)、不同类型(PCM、DSD)、不同输出方式(DSD直解输出、转PCM输出)、音量控制(256级软控,只针对耳机输出有效)等处理。

4398 模拟输出是左右两路差分信号,通过 LPF 由低电压运放完成最终的模拟信号输出。

4398 有大量资料和介绍,这里就不多啰嗦了。
CS4398.jpg

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 16:00 | 显示全部楼层
运放、继电器及静音

播放器采用的是低电压运放,单电源供电,测试过 AD828AR、OPA2132UA、OPA2134UA,都没有问题。

由于是单电压供电,运放最终输出的是带直流分量的模拟信号,必须加耦合电容。耦合电容采用无极性电解电容,10uf。

直流分量、耦合电容,这些因素导致了开关机爆音的问题。

为了解决这个问题,加上了继电器,欧姆龙的,非常小,可同时传输两路信号。

加上继电器后,开机、切歌没有任何电噪音,关机有非常轻微的噪音。

但是,如果每首歌的切换都靠继电器静音,也不安静。因为继电器本身会有金属机械接触的噪音,我选的这个继电器开合的声音已经非常小了,但仍然清晰可闻。

最后,依据 CS4398 静音电路的建议电路,增加了静音处理,每次切歌时,不再用继电器静音,而是用静音三极管静音。

因为我的整个电路中没有负电压,而静音电路必须加入负电压,否则输出音频的负半周在 -0.7 V 以下的部分会产生严重的失真。因为这个原因,又加了一个 ICL7660,来产生负电压。

运放,AD828AR

运放,AD828AR

继电器,欧姆龙的超小版本

继电器,欧姆龙的超小版本

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 16:14 | 显示全部楼层
耳放

耳放最初采用的是 TPA6132A2,很便宜,可提供 25mw 的驱动能力。

但是这个耳放芯片的定位是手机等设备的耳机输出,其素质听下来确实不高,声音比较含糊。

后来用了 MAX9722 和 MAX97220,这两个耳放芯片的整体听感远超 TPA6132A2,就用它了。

还有一个好处是,MAX9722 和 MAX97220 QFN 封装的产品,PCB 可以共用,多焊接一个电阻的区别而已。

MAX9722、MAX97220本身是可以直接支持差分信号输入的,但是我自己测试下来,发现在这样的配置下,会有非常奇怪的“混响”,原因不明。最终,改为从运放耦合电容后取音频信号进行耳放输入,就完全没有任何噪音了。

耳放本身由 F407 控制是否使能,只有在主控探测到耳机插入的情况下,进入耳机模式,才会使能耳放芯片。

另外,在耳机模式下,主控会自动降低 CS4398 的输出音量,以防止声音过大的问题。只有在耳机模式下,才能调节 CS4398 的音量输出大小。

说实话,QFN 的芯片真的很难焊,多数情况下的耳放问题,都是由于焊接不良引起的。至今我也没有很好的办法把 QFN16 的耳放芯片焊接好。

15

主题

1

好友

1270

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
5653
帖子
1276
精华
1
经验
1270 点
金钱
1187 ¥
注册时间
2005-9-22
发表于 2015-5-20 17:17 | 显示全部楼层
jialong0926 发表于 2015-5-20 14:48
整体结构之后,该说说主控了。

主控采用 STM32F407,连接以下部件:

挺能白话的!支持!

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 17:45 来自手机端 | 显示全部楼层
同样的静音电路,在 line out 输出上用没有问题,但是,用在耳机输出静音上,问题就来了。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 17:49 来自手机端 | 显示全部楼层
分析下来,多半是因为外接功放的输入阻抗通常达到20k欧姆,这样,1欧姆的静音三极管内阻会旁路掉99.99%的信号,当然可以静音了。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 17:54 来自手机端 | 显示全部楼层
而耳机通常单边16欧姆,1欧姆的内阻,只能旁路95左右的信号,5%的信号足以让耳机啪的一声了。而且在爆音时,瞬时电压通常波峰较高,更增大声音。

2

主题

0

好友

12

积分

注册会员 当前离线

Rank: 2

UID
705539
帖子
23
精华
0
经验
12 点
金钱
8 ¥
注册时间
2014-5-26
发表于 2015-5-20 18:54 | 显示全部楼层
有趣的东西,先关注了!

139

主题

11

好友

3306

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
5036
帖子
4977
精华
1
经验
3306 点
金钱
3017 ¥
注册时间
2005-7-26
发表于 2015-5-20 19:03 | 显示全部楼层
jialong0926 发表于 2015-5-20 15:04
非常认同你的说法:同步和错位,指的是”能不能接收到准确的数据“,以最终接收到数据准不准确为最终目标 ...

收到准确的数据是声音出来”正确“的前提
而非是”声音好听“的前提
经常有老烧说“出声容易,好听难啊!”这话我很是赞同。

没有打击你的意思,因个人也经常做音频类的东西,有所感而已。

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 19:13 来自手机端 | 显示全部楼层
haluo 发表于 2015-5-20 19:03
收到准确的数据是声音出来”正确“的前提
而非是”声音好听“的前提
经常有老烧说“出声容易,好听难 ...

不管怎样,谢谢你的建议,我会继续关注相关问题的

5

主题

1

好友

992

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
222191
帖子
1099
精华
0
经验
992 点
金钱
984 ¥
注册时间
2010-7-20
发表于 2015-5-20 20:49 | 显示全部楼层
既然有了付电压,后级可以用双电源了,避免了输出电容等东西,冲击声也会好点

10

主题

8

好友

518

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
712589
帖子
505
精华
0
经验
518 点
金钱
495 ¥
注册时间
2014-6-12
 楼主| 发表于 2015-5-20 21:22 | 显示全部楼层
阿甲1 发表于 2015-5-20 20:49
既然有了付电压,后级可以用双电源了,避免了输出电容等东西,冲击声也会好点

这个是好主意,后续版本实验一下,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部