[心得经验] 烦请看下32bit I2S喂给PCM1704的逻辑

[复制链接] 查看: 43958|回复: 85

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
发表于 2014-7-3 22:43 | 显示全部楼层
untitled.png

如题。是否正确可行?或者有更简洁的方法?

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-3 23:42 来自手机端 | 显示全部楼层
哎呀,少串了两个164...

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-4 10:40 | 显示全部楼层
昨晚睡前匆匆,好象是混淆了左右串流和并发……

参考了下Eric juaneda的原理图和另一个7310->1702的方案(对于这个使用用反相BCK还是疑惑不解)

dd.png

i2s interface for bb.jpg

还有这个更完整的

pavouk.png

72

主题

2

好友

1176

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
157281
帖子
2600
精华
0
经验
1176 点
金钱
1078 ¥
注册时间
2009-12-21
发表于 2014-7-4 10:46 来自手机端 | 显示全部楼层
太复杂,

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-4 11:07 | 显示全部楼层
改成这样:

I2S_tr.png

U6出反相LE ’和CLOCK ’,照理不需要,留着备用

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-4 11:15 | 显示全部楼层
顺便附带两个可玩的,也许有感兴趣的

1543DMONO1.jpg

Interfacing balanced TDA1541.png

9

主题

0

好友

62

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
381618
帖子
204
精华
0
经验
62 点
金钱
53 ¥
注册时间
2011-8-17
发表于 2014-7-5 15:29 | 显示全部楼层
看不懂

56

主题

12

好友

6086

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7494
精华
0
经验
6086 点
金钱
5743 ¥
注册时间
2008-10-20
发表于 2014-7-5 15:54 | 显示全部楼层
假设BCK为通常值64FS。
I2S的DATA或者LRCK 挪7位就得,然后把LRCK反向,就可以。
也有人觉得它听得出左右声道的1/FS秒的时间差,这是需要再把数据挪32位。

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-5 22:23 来自手机端 | 显示全部楼层
本帖最后由 LeonBernieniv 于 2014-7-5 22:30 编辑

整理一下,不知道是否表达得清楚。卡大再看看是不是这样:
前端右对齐时,LRCK作右LE,反向LRCK作左LE。
前端I2S时,DATA右移7位,LRCK作左LE,反向作右LE。

要左右无时差:
前端右对齐时,LRCK作LE,DATA为右声道,DATA右移32位为左声道。
前端I2S时,LRCK作LE,DATA右移7位为左声道,DATA右移7+32位为右声道。

上面是PCM1704,如果用作分立R-2R,上升沿触发的情况,LE的处理要反向。

8

主题

1

好友

525

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
4148
帖子
456
精华
0
经验
525 点
金钱
442 ¥
注册时间
2005-5-8
发表于 2014-7-8 23:13 | 显示全部楼层
丢了的八位怎么办?削峰了照样听?还是32位分段,一片处理上8位,一片处理下24位?

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-9 07:06 | 显示全部楼层
tendy 发表于 2014-7-8 23:13
丢了的八位怎么办?削峰了照样听?还是32位分段,一片处理上8位,一片处理下24位?

对不起标题有问题,应该说是I2S的帧长是32位,右对齐为24位给DA。

8

主题

1

好友

525

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
4148
帖子
456
精华
0
经验
525 点
金钱
442 ¥
注册时间
2005-5-8
发表于 2014-7-9 20:43 | 显示全部楼层
哦,了解了,完美的方案是:先用移位寄存器吧i2s移成右对齐格式,顺便把左声道右声道的帧对齐,然后用二选一把左右分离成独立两轨,最后用mck来做个recolcking就可以了。

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-9 21:34 | 显示全部楼层
tendy 发表于 2014-7-9 20:43
哦,了解了,完美的方案是:先用移位寄存器吧i2s移成右对齐格式,顺便把左声道右声道的帧对齐,然后用二选一 ...

谢谢。有空有闲就麻烦多给我通通脑筋
对于分离成独立的左右两轨,先前装过本坛坛友forsli@163.com的四分时1702,用74153做选通,跌跌撞撞地也读得通,但是要灵活应用就露怯了…… 容我再摸摸看吧。不过依我目前的理解,单为正确播放左右声道数据,不做分时之类处理的话,没必要把DATA串流分离吧?因LRCK拿来当LE用,50%的占空比,另一声道的数据本就是可有可无的,对不对?reclock倒是有方案可抄的。

13

主题

1

好友

694

积分
     

职业侠客 当前离线

Rank: 5Rank: 5

UID
27727
帖子
1483
精华
0
经验
694 点
金钱
676 ¥
注册时间
2007-9-26
发表于 2014-7-9 23:03 | 显示全部楼层
数字逻辑这方面DIY基本空白啊,支持下上面的高手们!

8

主题

1

好友

525

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
4148
帖子
456
精华
0
经验
525 点
金钱
442 ¥
注册时间
2005-5-8
发表于 2014-7-10 03:15 | 显示全部楼层
LeonBernieniv 发表于 2014-7-9 21:34
谢谢。有空有闲就麻烦多给我通通脑筋
对于分离成独立的左右两轨,先前装过本坛坛友的四分时1702,用 ...

分离的目的主要还是要把左右给对齐了,不分开,没法对,lrck当le,确实有50%是空白,这个可以先倍频后再当le用,这样能增加些信噪比,另外这段空白还可以有很多玩法,哈哈,总之,这块太有意思了,另外我劝你别用逻辑元件来折腾,这样既没效率还累死,玩cpld吧,非常快就能检验结果,有新的想法也能迅速实现。

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-10 08:52 | 显示全部楼层
tendy 发表于 2014-7-10 03:15
分离的目的主要还是要把左右给对齐了,不分开,没法对,lrck当le,确实有50%是空白,这个可以先倍频后再当 ...

CPLD完全使不上劲啊!还是把基础搞清比较实在哈~
前面关于左右分离又说错了,应该是两片74164在做功,后面跟一片74153两个通道分别选通移位对齐的比特数据。在bit移位的同时借用互为反向的LRCK做清零实现左右分离,应该说是顺势而为,不是“必须”。
节选forsli大大的这部分原理图:

选通.png

仅以这个24bit右对齐 --> PCM1702而言,改成下面电路,应该也是可以的吧?也不会影响后面的分时。

yw.png



36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-10 12:53 | 显示全部楼层
这一部分先糊弄过去,临时抱佛脚再啃一下补码移码,理解起来就不再需要太多的空间感。回头再去看TDA1541的OB/TWC        MODE就豁然开朗了。
抄的这个R2R不日会到,MSB符号位,单极,不考虑过零,不考虑毛刺,不考虑精度,不考虑开关内阻,的确是幼稚园体验级别了,呵。。。
赶在大暑前出声,然后懒懒的过一个夏天。

Renew Simple R-2R DAC V2.png

8

主题

1

好友

525

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
4148
帖子
456
精华
0
经验
525 点
金钱
442 ¥
注册时间
2005-5-8
发表于 2014-7-10 16:19 | 显示全部楼层
过零毛刺开关内阻等问题是r2r必须解决的难题,实际上,r2r dac我已经玩了一年以上了,以上问题都有些感受,一两句话真不容易说清楚,有兴趣加个qq讨论吧41888355

36

主题

0

好友

3495

积分

罗宾汉 当前离线

Silenton Shutupov Speechlesski

Rank: 7Rank: 7Rank: 7

UID
238600
帖子
3611
精华
0
经验
3495 点
金钱
3415 ¥
注册时间
2010-9-9
 楼主| 发表于 2014-7-10 16:36 | 显示全部楼层
这些都有现成的解决方案,反倒是不在意一揽子到位,而且layout生疏得不行,所以就宁愿爬着玩耍。

16

主题

3

好友

822

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
55715
帖子
904
精华
0
经验
822 点
金钱
797 ¥
注册时间
2008-9-24
发表于 2014-7-10 18:14 | 显示全部楼层
上传一个24bit供参考
aa.GIF
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部