wtuleexiang 发表于 2013-3-21 17:29:29

基于fpga的高速采集卡FIFO缓冲采集数据的若干问题

24路同步模拟信号经AD转换后经过fpga内部FIFO缓冲送往乒乓SDRAM存储,再由fpga读回来做fft运算
AD是串行输出的,FIFO要写24个吗?是调用IP里面的核好还是自己写好?还要另外写FIFO控制器吗?

Henjay724 发表于 2013-3-21 18:17:25

wtuleexiang 发表于 2013-3-21 18:33:29

Henjay724 发表于 2013-3-21 18:17 static/image/common/back.gif
如果你将24路转换结果加个通道编码的话就可以直接存在一个FIFO里。
关于FIFO的实现,用核与自己写从功能上 ...


非常感谢!
由于硬件电路已经定了,24路AD输出(AD是双通道输入单通道输出)分12组已经接在fpga的12个IO口了,怎么加通道编码器?

wye11083 发表于 2013-3-21 20:27:06

你的AD是串行的?双路*12?位数?FFT核有几个?FFT计算什么?计算一路的还是计算24路还是计算24路卷积的?你不说清楚谁能帮得了你?

Henjay724 发表于 2013-3-21 20:50:18

wtuleexiang 发表于 2013-3-21 20:57:55

wye11083 发表于 2013-3-21 20:27 static/image/common/back.gif
你的AD是串行的?双路*12?位数?FFT核有几个?FFT计算什么?计算一路的还是计算24路还是计算24路卷积的? ...

12个AD都是是串行的而且是两路同时转换,转换后的数字信号先后串行输出,每路是12位;
fft是单核,将采样转换后的数字信号转换到频域进行频谱分析。谢谢!

wye11083 发表于 2013-3-21 21:01:23

wtuleexiang 发表于 2013-3-21 20:57 static/image/common/back.gif
12个AD都是是串行的而且是两路同时转换,转换后的数字信号先后串行输出,每路是12位;
fft是单核,将采样 ...

我晕,你还是没讲明白,你的FFT到底要对什么数据进行处理?一路的还是24路的?怎么处理?

wtuleexiang 发表于 2013-3-21 21:06:45

Henjay724 发表于 2013-3-21 20:50 static/image/common/back.gif
在FPGA代码里加啊,得到转换结果后按序编码扔进FIFO就行了。

明白了,谢谢!
弱弱的问一下,IP核中FIFO有串行输入并行输出的吗

wtuleexiang 发表于 2013-3-21 21:09:44

wye11083 发表于 2013-3-21 21:01 static/image/common/back.gif
我晕,你还是没讲明白,你的FFT到底要对什么数据进行处理?一路的还是24路的?怎么处理? ...

就是24路转换后的所有数字量啊

wye11083 发表于 2013-3-21 21:21:48

wtuleexiang 发表于 2013-3-21 21:09 static/image/common/back.gif
就是24路转换后的所有数字量啊

你一次处理一个通道的还是一次处理24通道的?

wtuleexiang 发表于 2013-3-21 21:30:01

wye11083 发表于 2013-3-21 21:21 static/image/common/back.gif
你一次处理一个通道的还是一次处理24通道的?

一个通道的

wye11083 发表于 2013-3-21 23:28:35

考虑到FFT点数问题,你可以考虑用双口RAM,而不是用FIFO,考虑把多个块RAM拼接成12*24=32*9的超宽RAM,然后用多级流水线把某一地址的某一组数据通过流水线打入到FFT核中,这样对于新的FPGA只需要9个块RAM,而不是24个FIFO。FIFO的写地址卷绕,读地址也卷绕,注意必须要用流水线的方式才能保证正常读写,否则性能会大打折扣。比如采用3级流水线控制写入状态(你可以用288个寄存器临时存放ADC值,然后统一写入,或者用分组来存,写一个BRAM之后就不再往里面写了,用控制WE的方式来减少DFF占用率。而如果不使用流水线,则这么大的超宽存储器会使器件频率难以突破20MHz。

wtuleexiang 发表于 2013-3-22 14:48:03

明白了,非常感谢!!
页: [1]
查看完整版本: 基于fpga的高速采集卡FIFO缓冲采集数据的若干问题