3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
发表于 2016-2-2 13:09 | 显示全部楼层
本帖最后由 ljpwed 于 2016-2-2 13:07 编辑

    平时经常测试各种DAC和数字端口,老是在各种板和机之间换来换去,感觉很麻烦,年底了就决定做一款全功能的测试平台!
DSCF1955.JPG

DSCF1956.JPG


整个PCB做得比较简单,当然这个只是一个炮灰板,后面会做个更完美的PCB!
   1:带有USB输入。USB输入用的是意大利模块的ARM部分,而CDLP部分则用FPGA自己编写!IIS输出方面和官方模块完全一样,另外为了实验方便,还有一个SPDIF输出,SPDIF和IIS是同步输出,并支持DSD DOP同步输出,也就是说即使播放DSD,IIS和SPDIF也可以同时输出,非常方便! IIS支持的采样:PCM,44.1k-384K,DSD为DSD64-DSD512,而SPDIF PCM输出最大可达到384K(实际上可以实现768K和1536K输出,但是一方面是当前这么高的码率基本用不上,在者要输出1536K的话还要用到FPGA的PLL),DSD DOP则可以最大输出DSD128。为什么要输出384K呢,后面会说到!!用别人的东西虽然并不是我的风格,但是如果自己开发一个USB 解码并不是容易的事,硬件开发并不难,但是windows 驱动并不是我的在行的(虽然难搞一些比较简单的),在者国内驱动开发的资料少得要死,那些从入门到精通都他么的在扯蛋!
   2:FPGA内部带有一个自行设计的SPDIF接收器。SPDIF最高可以接收PCM 384K,既然可以接收384K那么DSD128 DOP接收就不是问题了! SPDIP解码设计最重要的技术是CDR(时钟数据恢复),比如说在数据传输方面的光纤通信,硬盘SATA接口,USB接口等都是要用到这个技术。如果把传输速度的难道先不说,SPDIF解码以个人观点应该是比较其它的要难!原因在于SPDIF是一种变码率的信号,而且还有两种晶振模式(44.1 48),这样就把解码器变得更复杂! 板上用的是一片ALTEAR EP4的FPGA,其内部逻辑速度可以达到400M左右,达到400MHZ的速度是在简单逻辑上是可以实现的,时序也是能很好的满足的,如果放在复杂的逻辑运算中,那基本不太可能!SPDIF接收器基本上是一种复杂的逻辑,本板的SPDIF接收器主时钟运行在250MHZ左右!这个频率在FPGA复杂的运算中可以说是非常高了(以和EP4 相同种类的FPGA来说),为了满足时序要求,我也是花了不少心思做时序优化!用FPGA做SPDIF解码难度大,原因在于FPGA的速度问题,如果要像AK4118等这样的芯片那样接收,那么FPGA的逻辑速度至少也要GHZ以上的,但那种FPGA成本太高了,虽然EP4的PLL输出可以达到1.3GHZ,不过逻辑速度就差远了,所以要样解码SPDIF那么就要双晶振模式,使用双晶振模式相对AK4118这种单晶振模式(IIS输出是用内部高速PLL分频)输出的IIS精度要高一些(其实也差不了多少,如果用示波器看的话还是很明显的),当然了AK4118锁定速度要比 FPGA SPDIF解码的要快几个采样!别一方面,由于FPGA单口IO输出电压要3.3v,那么就要有电压转换器,板上有一个LMV7219作为整形! 这款板子的SPDIF接收稳定性上是完全没有问题,为了测试稳定性我也是找来了很多SPDIF输出的源:
DSCF1958.JPG


底下是一台PS3主机,主机上最左的是一片很久以前做的一个意大利模块,CDLP部分用的是ALTEAR MAX II (还是自己搞的)同样支持SPDIF PCM384K DSD128 DOP输出,后面的板子,我想大家都知道是什么,年后,还会找一两台老的CD机做测试! 实际上只要SPDIF输出的码率误差不小于3%-5%(主要看输出采样是多少),就可以完美接收!!
  3:FPGA还内置了一个IIS接收器!! 以前做IIS接收器的时候 都是使用的被动接收,这种 接收方式容易受IIS源时钟的干扰,会产生很大的失真,为了解决这个问题,我是采用一个类似SPDIF 的接收方式,IIS解码同样有一个CDR,产生同步接收的BCLK,这样MCLK,LRCK,BCLK就是主动式的,这样IIS的MCLK就完全不用,即使BCLK在短时内产生大的抖动,也不会影响FPGA的数据接收! IIS接收器制作起来要简单一样,原因是BCLK的脉冲长度是相同的!! IIS解码还带一个SPDIF输出,原理和功能上和意大利一样!!
4:FPGA还内置一个正弦波发生器!正弦波发生器可以输出PCM 44.1k-1536k的采样(1536k的我并没有测试),输出频率1HZ-35KHZ,IIS输出32bit!! 正弦波发生器采用的是CORDIC算法,Quartus是带有这个IP核,很省事,虽然省事但这个IP并不好用,这个IP都是浮点输入和输出,还是弧度角,这样计算角速度的时候就写一大堆代码,还要用到浮点加减乘,这样FPGA用掉的资源就差不多是7500个逻辑了,好在上面三个解码器只用到1500多个逻辑,还是有余量的!整个正弦IP可以运行在100MHZ左右(时序是满足的),而整个计算会有差不多50个时钟,这样就可以产生2MHZ的采样率(输出1536k的采样不是问题)!!后面我会自己做一个整数类型的CORDIC,只为了减少FPGA的资源使用量!!
年底了PCB产厂都过年了,不好打样!年后会搞一个带DAC的板子到时候实际测试给大家评评!
QQ截图20160202130644.png


评分

参与人数 2经验 +20 魅力 +18 收起 理由
明9002 + 10 + 10 很给力!
new1510 + 10 + 8 精品美文

查看全部评分

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-2 13:10 | 显示全部楼层
文采不是很好,请各位见谅!!

116

主题

12

好友

1万

积分

版主 当前在线

Rank: 7Rank: 7Rank: 7

UID
64430
帖子
13421
精华
2
经验
11098 点
金钱
10111 ¥
注册时间
2008-11-21

社区贡献 论坛贵宾 乐于助人 DIY大赛亚军

发表于 2016-2-2 15:11 | 显示全部楼层
看起来不错,提个建议,换种RCA座在高频输出会更好

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-2 15:26 | 显示全部楼层
new1510 发表于 2016-2-2 15:11
看起来不错,提个建议,换种RCA座在高频输出会更好

谢谢支持!作为炮板,板上只有一个RCA头输出,别外一个RCA是输入!!

1

主题

0

好友

462

积分

业余侠客 当前离线

Rank: 4

UID
405863
帖子
1309
精华
0
经验
462 点
金钱
462 ¥
注册时间
2011-9-29
发表于 2016-2-2 21:25 来自手机端 | 显示全部楼层
俺是菜鸟!

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
发表于 2016-2-2 22:21 | 显示全部楼层
SPDIF接收器输出的i2s时钟信号来自内置的正弦波发生器?

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-2 22:33 | 显示全部楼层
jdog 发表于 2016-2-2 22:21
SPDIF接收器输出的i2s时钟信号来自内置的正弦波发生器?

SPDIF接收器 IIS接收器正弦波发生器都是独立的,他们之间并没有什么关联,当然了,晶振只有一对,他们唯一的关联是用到同一对晶振,说实话,我不太明白你的话!
头像被屏蔽

152

主题

14

好友

3215

积分

禁止发言 当前离线

DAC7天下无敌

UID
23806
帖子
4807
精华
0
经验
3215 点
金钱
3198 ¥
注册时间
2007-6-19
发表于 2016-2-2 22:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-2 22:44 | 显示全部楼层
op111op 发表于 2016-2-2 22:40
赞一个
另外请教一下楼主,意大利模块的那个CMD信号是做什么用的

他是一个命令时钟,采样变化或者播放器有中断(电脑上的)就是用来产生中断的,中断后就是采样的数据时钟!!

157

主题

22

好友

1398

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
543780
帖子
3335
精华
0
经验
1398 点
金钱
1090 ¥
注册时间
2012-11-15
发表于 2016-2-3 07:29 | 显示全部楼层
创意不错!
俺也做了一片板子放假折腾一下,为SPDIF输入转iis及右对齐输出,适合搭配各种不同的新老DA芯片。

72

主题

2

好友

1176

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
157281
帖子
2600
精华
0
经验
1176 点
金钱
1078 ¥
注册时间
2009-12-21
发表于 2016-2-3 09:45 来自手机端 | 显示全部楼层
usb的啊!有没有3.0
头像被屏蔽

152

主题

14

好友

3215

积分

禁止发言 当前离线

DAC7天下无敌

UID
23806
帖子
4807
精华
0
经验
3215 点
金钱
3198 ¥
注册时间
2007-6-19
发表于 2016-2-3 10:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-3 10:55 | 显示全部楼层
zhp25 发表于 2016-2-3 09:45
usb的啊!有没有3.0

当前的USB模块好像都没有USB3.0的吧,在说了USB2.0无论PCM 还是DSD都是有余的!!不过以后应该会有!!

3

主题

0

好友

54

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
800497
帖子
50
精华
0
经验
54 点
金钱
48 ¥
注册时间
2015-9-18
发表于 2016-2-3 12:44 | 显示全部楼层
简单来说就是一个输入输出的USB界面了?赞啊~

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-3 13:03 | 显示全部楼层
xyj9903 发表于 2016-2-3 12:44
简单来说就是一个输入输出的USB界面了?赞啊~

USB只是一个部分!!

8

主题

0

好友

203

积分

业余侠客 当前离线

Rank: 4

UID
94615
帖子
264
精华
0
经验
203 点
金钱
193 ¥
注册时间
2009-4-7
发表于 2016-2-4 10:26 | 显示全部楼层
ljpwed 发表于 2016-2-2 22:33
SPDIF接收器 IIS接收器正弦波发生器都是独立的,他们之间并没有什么关联,当然了,晶振只有一对,他们唯 ...

谢谢!我已在你的回复中找到答案。

1

主题

3

好友

360

积分

业余侠客 当前离线

Rank: 4

UID
58162
帖子
1564
精华
0
经验
360 点
金钱
358 ¥
注册时间
2008-10-12
发表于 2016-2-4 10:42 | 显示全部楼层
不错

13

主题

1

好友

1395

积分

认证会员 当前离线

Rank: 4

UID
30337
帖子
1584
精华
0
经验
1395 点
金钱
1371 ¥
注册时间
2007-11-12

认证会员

发表于 2016-2-4 10:56 | 显示全部楼层
LZ牛逼啊,不过,用双晶振做SPDIF的时钟恢复是不行的,除非你开了FPGA的PLL。
但是FPGA的PLL比一般的接收芯片要差一些,除非你能自己写牛逼的DPLL。
SPDIF解码出I2S之后,时钟必须是和外面的时钟源同步的。

3

主题

0

好友

265

积分
     

业余侠客 当前离线

Rank: 4

UID
248901
帖子
238
精华
0
经验
265 点
金钱
238 ¥
注册时间
2010-10-10
 楼主| 发表于 2016-2-4 13:18 | 显示全部楼层
chenxiuping15 发表于 2016-2-4 10:56
LZ牛逼啊,不过,用双晶振做SPDIF的时钟恢复是不行的,除非你开了FPGA的PLL。
但是FPGA的PLL比一般的接收 ...

呵呵! 有些东西可能你没真正接触到FPGA吧,很多人当然会有旧观念去评价FPGA解码SPDIF,实际上接收芯片的PLL都不如FPGA的PLL,解码SPDIF当然是用到PLL的,自己写一个DPLL又有多难?无论是altera 还是Xilinx 实现DPLL都是非常简单的事,当然了你没有真正去实现 一个东西你自然是认为他是很难的,这个我是可以理解的!!

48

主题

0

好友

1144

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
103
帖子
1419
精华
0
经验
1144 点
金钱
714 ¥
注册时间
2004-3-23
发表于 2016-2-4 14:10 来自手机端 | 显示全部楼层
俺感觉这东西在发烧友,尤其爱折腾的发烧友中用处大了,一块板子 把家里手机,平板,电脑,电视盒等都接在一块,同意一台dac输出,不知我理解的对吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部