[心得经验] 制作FPGA+WM8741解码器

[复制链接] 查看: 57659|回复: 171

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
发表于 2013-12-12 10:09 | 显示全部楼层
最近空闲的时候,利用FPGA(ALTERA公司 EP2C8Q208)+WM8741做了一个解码器,目前支持的格式为WAV,16位/48KHZ/44.1KHZ,24位/96KHZ/88.2KHZ,24位/192HZ/176.4KHZ,支持SDHC卡,用了三个TCXO晶振,48MHZ用于FPGA,33.8688MHZ用于播放44.1KHZ/88.2KHZ/176.4KHZ的文件,36.8688MHZ用于播放48KHZ/96KHZ/192KHZ的文件,系统会自动选择不同的晶振.考虑用这两个晶振是由于是解码率的整数倍,最高可达768fs,WM8741的驱动用的是FPGA的硬件驱动,所以说时序相当精密可控,比用ARM和其它的CPU解码精度更高,因为FPGA是纯硬件构成的,不存在时序的不可控,用FPGA的硬件驱动WM8741,目前在完善TFT LCD显示和遥控.由于不是专业发烧友,各指标没设备测量,只是个人感觉声音很不错.

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 10:10 | 显示全部楼层
3{0EZTWAU4H0}H}$_YOE246.jpg
主板正面图

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 10:11 | 显示全部楼层
6MH{8Y1}U_~Y}9@`]T(DD~Y.jpg
主板反面图

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 10:12 | 显示全部楼层
RD~{HE}51@JWD9$I1`J5@H9.jpg
电源板正面图

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 10:14 | 显示全部楼层
以后在上传几张焊好元器件的照片,目前正放在朋友哪里试听

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 19:51 | 显示全部楼层
下午从朋友那里拿回来,现上传几张图片 电源正面图.JPG 主板正面图.JPG 主板反面图.JPG

23

主题

5

好友

2092

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
429137
帖子
2861
精华
0
经验
2092 点
金钱
2125 ¥
注册时间
2011-11-4
发表于 2013-12-12 19:56 | 显示全部楼层
全部用上贴片元件了

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:05 | 显示全部楼层
是的,电容电阻都是0805的

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:11 | 显示全部楼层
因为我是搞工业控制产品设计的,大部分都是用的手上现成的元件,设计这个产品当时是突发的想法,完全是为了好玩,声明一下,我不是发烧友,但我有几个朋友是,主要是好玩,反正也不占用我很多时间,闲着也是闲
头像被屏蔽

1

主题

0

好友

-69

积分

禁止发言 当前离线

UID
647585
帖子
6
精华
0
经验
-69 点
金钱
9 ¥
注册时间
2013-12-12
发表于 2013-12-12 20:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

3

主题

0

好友

23

积分

注册会员 当前离线

Rank: 2

UID
640835
帖子
20
精华
0
经验
23 点
金钱
17 ¥
注册时间
2013-11-19
发表于 2013-12-12 20:14 | 显示全部楼层
何必用三个晶振呢?一个33.8688MHZ然后用FPGA的PLL产生三个时钟不就行了吗?太多的晶振感觉时钟蛮乱的,干扰也多,亚稳态不可预测啊!
FPGA我平时玩的也蛮多的,但没做过音频解码方面的项目,正想学学这方面的知识,希望LZ多多指点啊!!

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:32 | 显示全部楼层
DAC的电路是按照WM8741的规格书设计的,FPGA构架为:WM8741的驱动(用的是verilog语言),WM8741用的是soft_control模式;高速SD卡的读取,一定要用高速卡,低速卡的读取速度有限,实现不了24位/192K的吞吐量;FIFO(数据先进先出),用FIFO的目的是为了防止WM8741的播放速率和SD读取的速率不同步,一般SD的读取速率要大于WM8741的播放速率的两倍,播放24位/192K文件的每秒数据量是:2*24*192000=9216000,即9.216M,那么读取SD卡的速率应该在20M左右;设计了一个RS232通信口;TFT LCD接口及遥控器接口;扩展了一片SDRAM  容量为32M,做数据缓冲;电容电解用的都是普通的.

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:42 | 显示全部楼层
主程序用的是48M的晶振,播放44.1KHZ/88.2KHZ/176.4KHZ的文件是用材林33.8688M的,48KHZ/96KHZ/192KHZ用的是36.864MHZ,三个晶振完全独立,互不干涉,WM8741的MCLK用的是33.8688或36.864是有播放文件自动选择,如果用33.8688MHZ然后用FPGA的PLL产生其它频率的话,误差会很大,没有有合适的分频因子,误差会很大

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:44 | 显示全部楼层
目前接在朋友高档设备上,在空闲时听不到任何背景音和噪色

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 20:50 | 显示全部楼层
FPGA读SD卡用的是软核NIOS

6

主题

3

好友

847

积分

版主 当前离线

Rank: 7Rank: 7Rank: 7

UID
308015
帖子
860
精华
0
经验
847 点
金钱
843 ¥
注册时间
2011-3-23

社区贡献 论坛版主

发表于 2013-12-12 20:55 | 显示全部楼层
不错,FPGA能否做USB3.0转IIS?

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 21:00 | 显示全部楼层
电源部分:+15V,-15V给运放供电,两路隔离的DC5V,一个DC5V给数字电路供电,一个DC5V给WM8741的模拟部份供电,三组电源完全独立,每个变压器都是独立的双绕组输出,这两个变压器是朋友提供的.

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 21:02 | 显示全部楼层
jsan203 发表于 2013-12-12 20:55
不错,FPGA能否做USB3.0转IIS?

USB3.0的速率是多少?这个还没搞过

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 21:08 | 显示全部楼层
以前我测试过播放20HZ-20KHZ的正弦波,用示波器观测波形很漂亮,看不到波形的损失

2

主题

1

好友

101

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
583669
帖子
101
精华
0
经验
101 点
金钱
97 ¥
注册时间
2013-4-14
 楼主| 发表于 2013-12-12 21:22 | 显示全部楼层
不知论坛里面可有高手能作个性能上的评价,最好有相关的测试设备,能给个客观上的评价,我可以快递寄过去.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部