amobbs.com 阿莫电子技术论坛

标题: fpga+stm32的信号采集方案设计的问题 [打印本页]

作者: Vampireyifeng    时间: 2015-5-18 09:13
标题: fpga+stm32的信号采集方案设计的问题
本帖最后由 Vampireyifeng 于 2015-5-19 19:54 编辑

有个问题想请教一下,想做一个fpga+stm32 的信号采集。信号采集速率在30Msps以上。但是信号不是一直都有的,而是靠外部触发电路来触发采集的。采集后先缓存在sdram里。然后stm32读走。但是现在有一个问题是,fpga将数据采集到sdram里。stm32通过fsmc总线读sdram里的数据。但这样写的时候就不能读,读的时候就不能写了。这样的话。采集到的波型就不是连续的。因为要以最快的速度来采集信号,所以不能采集一个点,处理一个点那样做。只能把一段时间内的信号以最快的速度采集到sdram里。难道要加双sdram做乒乓缓冲?但是这方面没有什么思路,不知道有没有人做过可以交流一下。
作者: zqy517    时间: 2015-5-18 11:09
FPGA 内部或者外部开FIFO了
作者: Vampireyifeng    时间: 2015-5-18 11:26
zqy517 发表于 2015-5-18 11:09
FPGA 内部或者外部开FIFO了

用sdram做 fifo,不知道 这样可不可以
作者: zqy517    时间: 2015-5-18 11:44
Vampireyifeng 发表于 2015-5-18 11:26
用sdram做 fifo,不知道 这样可不可以

不可以的吧,SDRAM是同步的 FIFO是异步
作者: liuerbin    时间: 2015-5-18 11:47
双口ram适合你。用过IDT 70V25。
作者: howmoney    时间: 2015-5-18 11:53
nios不也是处理器吗,把STM32的任务交给它咯
作者: zxq6    时间: 2015-5-18 19:21
有硬核就甭去折腾软核了,不好玩的。
作者: xqscucc    时间: 2015-5-18 22:10
先将采集的数据放到fifo,再异步进sdram,stm使用等待模式同步读取。
作者: mainbp    时间: 2015-5-18 22:28
dual ram适合
作者: chengsong    时间: 2015-5-18 22:32
两个内存,乒乓操作。
作者: NJ8888    时间: 2015-5-18 22:40
根据写入读出总带宽需求评估
作者: Vampireyifeng    时间: 2015-5-19 10:27
xqscucc 发表于 2015-5-18 22:10
先将采集的数据放到fifo,再异步进sdram,stm使用等待模式同步读取。

现在我就是打算这样做的。可否具体说一下
作者: Vampireyifeng    时间: 2015-5-19 19:54
liuerbin 发表于 2015-5-18 11:47
双口ram适合你。用过IDT 70V25。

双口ram成本有点高
作者: Vampireyifeng    时间: 2015-5-19 19:55
howmoney 发表于 2015-5-18 11:53
nios不也是处理器吗,把STM32的任务交给它咯

因为stm32那里用的比较多,维护什么的也好做一点。
作者: Vampireyifeng    时间: 2015-5-19 19:56
xqscucc 发表于 2015-5-18 22:10
先将采集的数据放到fifo,再异步进sdram,stm使用等待模式同步读取。

ad采样速率高,数据量大,内部fifo可能缓冲不过来的。
作者: Vampireyifeng    时间: 2015-5-19 19:57
chengsong 发表于 2015-5-18 22:32
两个内存,乒乓操作。

现在是打算用双sdram做乒乓缓冲,不过以前没有做过,比较吃力。
作者: Vampireyifeng    时间: 2015-5-19 19:58
NJ8888 发表于 2015-5-18 22:40
根据写入读出总带宽需求评估

因为我AD采样的速率大概在32Msps以上。STM32的读写速度大概是十几M。所以打算用双SDRAM做缓冲。但是具体怎么做不是很清楚。吃力进行中
作者: aureole    时间: 2015-5-19 20:03
可以看看我的icore2;当然,用 SRAM 是最简单的。 用 SDRAM 稍微复杂点。最主要的是一次触发;你要存多少点的数据。
作者: NJ8888    时间: 2015-5-19 20:07
aureole 发表于 2015-5-19 20:03
可以看看我的icore2;当然,用 SRAM 是最简单的。 用 SDRAM 稍微复杂点。最主要的是一次触发;你要存多少点 ...

这个不成问题,fpga做FIFO,存满1页突发写一页
作者: Vampireyifeng    时间: 2015-5-19 21:49
本帖最后由 Vampireyifeng 于 2015-5-19 22:09 编辑
aureole 发表于 2015-5-19 20:03
可以看看我的icore2;当然,用 SRAM 是最简单的。 用 SDRAM 稍微复杂点。最主要的是一次触发;你要存多少点 ...


多谢小马哥指导,从小马哥做的东西里真的学到了很多东西,真心感谢。 现在的思路是,因为我AD采样的速率大概在32Msps以上。STM32的读写速度大概是十几M。所以打算用双SDRAM做缓冲。这样触发一次写其中一个sdram。当stm32来读取时,信号数据写到另外一个sdram里。这样可以保证信号触发后的波形数据可以连续采集到。现在有的只是icore2的原理图。不知道icore2在fpga软件上可不可以放一些可以参考的东西。(icore2的默认出厂程序不知道可不可以让我借鉴一下)
作者: victor_yy    时间: 2015-5-26 09:03
STM32与FPGA之间采用FSMC总线通信吗?
作者: 竹叶听筝    时间: 2016-2-21 00:08
请问你用的哪种AD芯片?怎么样?
作者: Suna    时间: 2016-2-21 01:16
你好,我在跟你做一样的事情,用STM32+FPGA做示波器,可以加我qq:693585111,咱们交流交流
作者: YFM    时间: 2016-2-22 07:48
为啥fpga内部不用avalon总线?adc采样一个master,stm32读写一个master,avalon总线自动生成逻辑可以并发读写sdram。第一次读取的adc数据由adc的master放到sdram的地址0处,然后stm32的master开始读地址0处的数据,在这期间adc的master也可以对sdram进行操作把下一阶段的数据写到sdram的地址1处。sdram对于adc和stm32来说就是随时都可以访问的了由avalon总线生成的仲裁器来分时复用sdram。
作者: sblpp    时间: 2016-3-29 15:38
用fpga做接口啊,在fpga上做缓冲就可以了。
还有就是利用好时序。
stm32读的速度慢,fpga这边可以快速准备好数据。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4