[便携设备] 小制作:USB界面+64Mb SDRAM缓冲

[复制链接] 查看: 2155|回复: 20

14

主题

1

好友

168

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
336820
帖子
181
精华
0
经验
168 点
金钱
161 ¥
注册时间
2011-5-19
发表于 2023-11-10 14:27 | 显示全部楼层
本帖最后由 tcjie 于 2023-11-10 14:26 编辑

     近日利用USB Phy + FPGA 做了一个高速USB2.0的异步界面,实现了USB界面的基本功能,主要器件是用国产芯片。因为现在购买国外名厂的零件价格比较高。接触一下国产的这类型的芯片看看性能如何,都是用业余时间慢慢来研究。做下来觉得国产器件也不错。性价比高。
仔细研究了这颗FPGA后发现有64Mb的SDRAM,利用它建立环形FIFO队列先存放数据,再用本地时钟将其取出进行SPDIF和I2S传输,摆脱USB的传输干扰,使重播的品质更稳定。
64Mb = 32b x 2M,对于双通道32bit的取样可以存放1M帧,44.1K取样可存放1M/44.1K = 23.2秒,48K取样可存放1M/48K = 21.3秒。96K的音乐可存放大约10秒。播放44.1K的音乐先用一半的内存来存放数据,大约可存放11秒,再进行播放,相当于音乐播放延迟了11秒再播放,使数据量在一半内存里摆动,根据内存数据量来进行USB流量控制,最大限度延长内存上溢,下溢的时间。在电脑这边做个软件观察这个内存的数据量变化情况,发现在播放过程中,这个数据量基本没什么变化,也就是说FIFO的进出动态平衡,可见异步USB流量控制起作用。既然这缓冲区的数据量基本不变,可根据需要设置这缓冲区的深度:深,中,浅,分别是1/2,1/4,1/8内存。对于播放视频,可设置旁路这缓冲区,实现画面和声音同步。
实现这些功能后,发现这颗FPGA还有大量的资源空间,下一步打算将SPDIF接收的功能做进去,同样做数据缓冲。相当于实现SPDIF接收-》大缓冲区-》I2S输出,也就实现了SPDIF传输的DOP转为DSD由I2S输出。由于SPDIF没有流控,可能会因为发送方和接收方时钟的差异会使缓冲区上溢或下溢。到时根据情况需要看能否利用这颗FPGA现有的资源做一个PLL,同步一下SPDIF的输入时钟。

捕获.JPG

电脑端软件可对USB界面固件改写,并进行播放设置和监测。

Inked捕获_LI2.jpg

以后就在使用中发现问题,修改问题了。或在现有的板上硬件资源修改固件增加功能了。

9

主题

0

好友

93

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
906453
帖子
94
精华
0
经验
93 点
金钱
77 ¥
注册时间
2021-5-27
发表于 2023-11-10 14:49 | 显示全部楼层
这么好的国产硬件软件资源怎么不支持呢?请问是否支持高品质的24bit192k和DSD512重播?

7

主题

1

好友

98

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
1061187
帖子
97
精华
0
经验
98 点
金钱
85 ¥
注册时间
2023-6-6
发表于 2023-11-10 16:15 | 显示全部楼层
这个必须点赞!

15

主题

0

好友

2427

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
761332
帖子
2472
精华
0
经验
2427 点
金钱
2382 ¥
注册时间
2014-10-10
发表于 2023-11-10 16:18 | 显示全部楼层
这是在山寨意大利方案界面?

43

主题

6

好友

3121

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
879936
帖子
3077
精华
0
经验
3121 点
金钱
3020 ¥
注册时间
2020-6-25
发表于 2023-11-10 18:01 | 显示全部楼层
64Mb的SDRAM,多少钱说出了让大家死心

89

主题

1

好友

1393

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
584589
帖子
1325
精华
0
经验
1393 点
金钱
1219 ¥
注册时间
2013-4-18
发表于 2023-11-10 18:19 | 显示全部楼层
超过100元就买意大利界面。

89

主题

1

好友

1393

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
584589
帖子
1325
精华
0
经验
1393 点
金钱
1219 ¥
注册时间
2013-4-18
发表于 2023-11-10 18:21 | 显示全部楼层
另外请教一下楼主,使用独立供电时,拆掉USB外壳接地那个电阻和电容可以的吗?

39

主题

0

好友

640

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
400675
帖子
771
精华
0
经验
640 点
金钱
728 ¥
注册时间
2011-9-20
发表于 2023-11-10 19:04 | 显示全部楼层
capa 发表于 2023-11-10 18:01
64Mb的SDRAM,多少钱说出了让大家死心

这个容量后面加个0 是不是可以对WAV的CD进行全部加载

4

主题

12

好友

943

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
440369
帖子
919
精华
0
经验
943 点
金钱
906 ¥
注册时间
2012-3-6
发表于 2023-11-10 19:11 | 显示全部楼层
不贵就可以试试

43

主题

6

好友

3121

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
879936
帖子
3077
精华
0
经验
3121 点
金钱
3020 ¥
注册时间
2020-6-25
发表于 2023-11-10 21:38 | 显示全部楼层
ehftlov 发表于 2023-11-10 19:04
这个容量后面加个0 是不是可以对WAV的CD进行全部加载

老哥,这种问题很烧脑,你应付不了的

14

主题

1

好友

168

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
336820
帖子
181
精华
0
经验
168 点
金钱
161 ¥
注册时间
2011-5-19
 楼主| 发表于 2023-11-10 23:31 | 显示全部楼层
该板现在实现的功能有PCM 44.1 - 384KHz,32bits,DSD64 - DSD512,DOP,nactive DSD。双SPDIF输出最高192KHz 24bit,spdif可输出DOP,I2S输出,
内部64Mb全部用作环形FIFO缓冲,缓冲区的大小可设置。SPDIF最高192KHz输入在代码中。

USB异步界面都是按照UAC2.0标准来做的,如何用软硬件方案来实现就各显神通了。意大利方案电路板尺寸,输出针位功能成了大家模仿的标准,我也有一
块意大利的卡。做这个板就是要能方便地,无差别地安装在我原来的机箱里,榨取这片FPGA硅片上的资源,代替我原来的卡,实现我想要的效果。

简单来看,意大利方案是两颗大芯片,我的方案是一个小芯片加一个大芯片。呵呵。

其实,我的这个方案前面的小芯片是可以省掉的,因为这片FPGA芯片可通过阻容网络接到USB线上实现USB2.0全部的功能。如用FPGA来实现USB2.0底层的功能就要使FPGA工作在480MHz下,这样才能捕捉到USB2.0传输线上480MHz的信号,一来运行频率高,二来占用FPGA逻辑资源。以我的经验来看,工作在高频率下对FPGA来说是一个考验。单纯用FPGA还要加上阻容网络,ESD保护。综合上述的原因,还是另外用一片USB PHY芯片省事,再说这颗国产的芯片不贵。

43

主题

0

好友

231

积分

业余侠客 当前离线

Rank: 4

UID
1039312
帖子
191
精华
0
经验
231 点
金钱
147 ¥
注册时间
2023-4-2
发表于 2023-11-11 21:00 | 显示全部楼层
排针前加电阻有什么用?

10

主题

0

好友

682

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
1969
帖子
569
精华
0
经验
682 点
金钱
509 ¥
注册时间
2004-10-29
发表于 2023-11-11 22:30 | 显示全部楼层
高手!我以前和同事合作,用CY7C68013A+XC6SLX9做的8通道音频录音板,速率虽然高,但可惜没搞UAC2.0。现在想用USB3.0实现,但没人配合了。

15

主题

0

好友

2427

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
761332
帖子
2472
精华
0
经验
2427 点
金钱
2382 ¥
注册时间
2014-10-10
发表于 2023-11-11 23:44 | 显示全部楼层
FIFO只要不空就可以开始播放。并不需要等待到半满的状态。毕竟USB数据传输的输入速率远大于向DAC芯片输出的速率。

14

主题

1

好友

168

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
336820
帖子
181
精华
0
经验
168 点
金钱
161 ¥
注册时间
2011-5-19
 楼主| 发表于 2023-11-25 00:53 | 显示全部楼层
xandd 发表于 2023-11-11 21:00
排针前加电阻有什么用?

听大牛说,那是用来匹配传输线的阻抗,防反射,改善信号波形质量。

14

主题

1

好友

168

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
336820
帖子
181
精华
0
经验
168 点
金钱
161 ¥
注册时间
2011-5-19
 楼主| 发表于 2023-11-25 00:54 | 显示全部楼层
markamp 发表于 2023-11-11 22:30
高手!我以前和同事合作,用CY7C68013A+XC6SLX9做的8通道音频录音板,速率虽然高,但可惜没搞UAC2.0。现在 ...

CY7C68013A现在也贵了。

14

主题

1

好友

168

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
336820
帖子
181
精华
0
经验
168 点
金钱
161 ¥
注册时间
2011-5-19
 楼主| 发表于 2023-11-25 01:02 | 显示全部楼层
加了一些功能: spdif 输入,最高支持192KHz,可实现spdif输入经芯片FIFO缓存再由spdif或I2S输出。
捕获1.JPG

2

主题

1

好友

194

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
10585
帖子
141
精华
0
经验
194 点
金钱
140 ¥
注册时间
2006-7-9
发表于 2023-11-25 07:27 | 显示全部楼层
LDO的采样反馈电阻接在输出滤波电感器后面能行吗?我以前这样接感觉工作不太稳定。

6

主题

1

好友

274

积分

业余侠客 当前离线

经济烧友

Rank: 4

UID
116930
帖子
509
精华
0
经验
274 点
金钱
272 ¥
注册时间
2009-7-8
发表于 2023-11-25 09:59 | 显示全部楼层
牛人啊  ,看不懂。

9

主题

1

好友

1299

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
33568
帖子
1368
精华
0
经验
1299 点
金钱
1243 ¥
注册时间
2008-1-7
发表于 2023-11-25 14:36 来自手机端 | 显示全部楼层
一个字:牛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部