制作FPGA+WM8741解码器
最近空闲的时候,利用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显示和遥控.由于不是专业发烧友,各指标没设备测量,只是个人感觉声音很不错.主板正面图
主板反面图
电源板正面图 以后在上传几张焊好元器件的照片,目前正放在朋友哪里试听 下午从朋友那里拿回来,现上传几张图片 全部用上贴片元件了 是的,电容电阻都是0805的 因为我是搞工业控制产品设计的,大部分都是用的手上现成的元件,设计这个产品当时是突发的想法,完全是为了好玩,声明一下,我不是发烧友,但我有几个朋友是,主要是好玩,反正也不占用我很多时间,闲着也是闲 何必用三个晶振呢?一个33.8688MHZ然后用FPGA的PLL产生三个时钟不就行了吗?太多的晶振感觉时钟蛮乱的,干扰也多,亚稳态不可预测啊!
FPGA我平时玩的也蛮多的,但没做过音频解码方面的项目,正想学学这方面的知识,希望LZ多多指点啊!!:handshake 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,做数据缓冲;电容电解用的都是普通的. 主程序用的是48M的晶振,播放44.1KHZ/88.2KHZ/176.4KHZ的文件是用材林33.8688M的,48KHZ/96KHZ/192KHZ用的是36.864MHZ,三个晶振完全独立,互不干涉,WM8741的MCLK用的是33.8688或36.864是有播放文件自动选择,如果用33.8688MHZ然后用FPGA的PLL产生其它频率的话,误差会很大,没有有合适的分频因子,误差会很大 目前接在朋友高档设备上,在空闲时听不到任何背景音和噪色
FPGA读SD卡用的是软核NIOS 不错,FPGA能否做USB3.0转IIS? 电源部分:+15V,-15V给运放供电,两路隔离的DC5V,一个DC5V给数字电路供电,一个DC5V给WM8741的模拟部份供电,三组电源完全独立,每个变压器都是独立的双绕组输出,这两个变压器是朋友提供的. jsan203 发表于 2013-12-12 20:55 static/image/common/back.gif
不错,FPGA能否做USB3.0转IIS?
USB3.0的速率是多少?这个还没搞过 以前我测试过播放20HZ-20KHZ的正弦波,用示波器观测波形很漂亮,看不到波形的损失 不知论坛里面可有高手能作个性能上的评价,最好有相关的测试设备,能给个客观上的评价,我可以快递寄过去.