[音源] 用cpld做主时钟分频如何?

[复制链接] 查看: 6597|回复: 17

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
发表于 2019-1-16 22:49 | 显示全部楼层
这样的。目前在做一个东西,用单片机来做一个USB 声卡,替代XMOS。单片机本身可以外接音频晶振作为音源时钟,理论上可以输出标准的I2S信号。但是它不能输出MCLK时钟,无法接驳AK4490。我想通过CPLD对晶振分频来获取与FS相对应的MCLK。但是有一个疑问,CPLD对音源抖动的影响是积极的还是消极的?我的想法是只用CPLD生成主时钟,与单片机生成的I2S信号合在一起。
或者让I2S信号一起进入CPLD,对他们重采样,但是我怕出现时序错误。哪种方案好呢

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:03 | 显示全部楼层
本帖最后由 BH7KQK 于 2019-1-16 23:05 编辑

外挂一片单片机,用其I2S输出。。比较好,虽说DAC对MCLK的相位没有要求,但是却要求同步。
即用一个I2S接收,另一个I2S发。
跑晶振,不开PLL,抖动只关晶震事,可以低至几ps,比神马PLL都强。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:09 | 显示全部楼层
BH7KQK 发表于 2019-1-16 23:03
外挂一片单片机,用其I2S输出。。比较好,虽说DAC对MCLK的相位没有要求,但是却要求同步。
即用一个I2S接 ...

你是说让CPLD接收单片机I2S,然后再转发给dac?

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:12 | 显示全部楼层
本帖最后由 BH7KQK 于 2019-1-16 23:13 编辑
IBMSSS 发表于 2019-1-16 23:09
你是说让CPLD接收单片机I2S,然后再转发给dac?


你不是说你的单片机可以输出I2S吗,再加一片STM32或者其它有两路I2S的单片机,一路I2S接收单片机的I2S,另一路输出到DAC。。
就是相当于FIFO。。。。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:15 | 显示全部楼层
BH7KQK 发表于 2019-1-16 23:12
你不是说你的单片机可以输出I2S吗,再加一片STM32或者其它有两路I2S的单片机,一路I2S接收单片机的I2S ...

再加一片STM32用处是?没太明白

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:20 | 显示全部楼层
本帖最后由 IBMSSS 于 2019-1-16 23:21 编辑

现在情况是,I2S信号没有MCLK,128FS,256FS等等没着落。这个单片机能输出最高384KHZ的采样率。

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:21 | 显示全部楼层
IBMSSS 发表于 2019-1-16 23:15
再加一片STM32用处是?没太明白

借用一下本坛的图片,示意一下。
我没理解错的话,你需要这样的功能对吗?
i2s.JPG

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:22 | 显示全部楼层
本帖最后由 IBMSSS 于 2019-1-16 23:25 编辑
BH7KQK 发表于 2019-1-16 23:21
借用一下本坛的图片,示意一下。
我没理解错的话,你需要这样的功能对吗?


对的,要的就是这个。但是为何要用STM32时钟管理而不是更擅长的CPLD。STM32的MCLK输出能力很弱的,最多到96K的采样率,固定256FS。我RT1052能输出到384KHZ采样率。

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:25 | 显示全部楼层
本帖最后由 BH7KQK 于 2019-1-16 23:29 编辑
IBMSSS 发表于 2019-1-16 23:22
对的,要的就是这个。但是为何要用STM32时钟管理而不是更擅长的CPLD


这个问题就要问你自已了,我只是比较熟悉STM32,用什么都可以的。
但是有一点可以肯定,MCLK必须和其它信号同步。。
另外纠正一下,STM32可以到192K,而且作为MCO输出,是没有限制到256Fs的。。。注意,是MCO,而不是MCLK。类似ATMEL的SAM3,SAM4系列,它就是靠这个输出的,而没有所谓的MCLK。。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:27 | 显示全部楼层
BH7KQK 发表于 2019-1-16 23:25
这个问题就要问你自已了,我只是比较熟悉STM32,用什么都可以的。
但是有一点可以肯定,MCLK必须和其它 ...

STM32H7不错,刚开始想弄这个,模仿amanero,USB搞不定,放弃了。转投RT1052

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:33 | 显示全部楼层
IBMSSS 发表于 2019-1-16 23:27
STM32H7不错,刚开始想弄这个,模仿amanero,USB搞不定,放弃了。转投RT1052

都用到RT1052了,没什么不行的。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:38 | 显示全部楼层
我的想法是这样的
CPLD3.jpg

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:40 | 显示全部楼层
本帖最后由 BH7KQK 于 2019-1-16 23:44 编辑
IBMSSS 发表于 2019-1-16 23:38
我的想法是这样的


明白了,同一个时钟源,是可以满足同步要求的,就算内部PLL比晶振抖动大很多。。
这种方式也许会遇到不同码率切换,自动切歌时,会产生短小的噪声,当然,是我遇到过的情况。只能从主机软件上处理。不知道你的方案有没有问题,只是提个醒。。。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:43 | 显示全部楼层
BH7KQK 发表于 2019-1-16 23:40
明白了,同一个时钟源,是可以满足同步要求的,就算内部PLL比晶振抖动大很多。。

只分频不会涉及锁相环吧

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:44 | 显示全部楼层
本帖最后由 BH7KQK 于 2019-1-16 23:45 编辑
IBMSSS 发表于 2019-1-16 23:43
只分频不会涉及锁相环吧


我说是主机里面的PLL的话(如果有的话)

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:48 | 显示全部楼层
哦,主机有专门的音频参考时钟路径,不经过锁相环

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2019-1-16 23:50 | 显示全部楼层
IBMSSS 发表于 2019-1-16 23:48
哦,主机有专门的音频参考时钟路径,不经过锁相环

那就应该没问题了。。你可以看看MCO输出脚能否实现,可以的话这些都省了。

4

主题

0

好友

40

积分

注册会员 当前离线

Rank: 2

UID
404621
帖子
64
精华
0
经验
40 点
金钱
34 ¥
注册时间
2011-9-27
 楼主| 发表于 2019-1-16 23:56 | 显示全部楼层
好吧,就这样,CPLD还要再翻翻课本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部