首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时采集与控制的系统结构设计

实时采集与控制的系统结构设计
EN

Stack Overflow用户
提问于 2009-02-13 09:29:23
回答 7查看 1.5K关注 0票数 5

需求的简要描述

(这里有很多很好的答案,感谢所有的人,如果我有机会的话,我会更新的)。

探测器沿着轨道运行,实时测量几个不同的物理参数(确定性),作为曲线距离的函数。用户可以在此过程中单击一个按钮来“标记”路径点,然后使用GUI为每个路径点输入详细信息(在人工时间内,但数据采集仍在继续)。

在此之后,系统对获取的数据执行一系列计算/筛选/修改,同时考虑到为每个路径点输入的约束。这一过程的输出是一系列修正,也是曲线距离的函数。

这一过程的第三部分是再次沿着轨道运行,但这一次是将修正写入到一个物理系统中,该系统修正了轨道(仍然是曲线距离的函数)。

我对您的输入/注释/警告的当前想法

我想确定的是,我是否可以用PC + FPGA来完成这个任务。FPGA会做‘数据采集’,我会使用C#在PC机上读取数据从一个缓冲区。可以通过WPF/Winforms应用程序输入路径点信息,并将其存储在数据库/平面文件/任何待处理的“处理”中。

在处理过程中,我将使用F#。

FPGA将用于将信息“写入”回物理机器。

我目前可以预见的一个问题是,如果处理算法需要一个采样频率,这会使数据的缓冲量过大。这将意味着将一些处理卸载到FPGA --至少是不需要用户输入的比特。不幸的是,唯一的预处理算法是卡尔曼滤波器,这是很难用FPGA实现的,据我谷歌搜索。

如果你愿意给我任何反馈,我会非常高兴的。

更新(在这里添加的额外信息以及何时添加)

在卡尔曼滤波器的入口处,我们每隔1ms就看一次。但是在卡尔曼滤波器的另一边,我们每1米采样一次,我们所说的速度大约是每秒2次。

所以我想更准确的问题是:

  1. 在FPGA上实现一个卡尔曼滤波 -- 看起来 它是,但我对这两个主题都不太了解,无法计算出它有多可能。
  2. 我也不确定一个Kalman的FPGA实现是否能够每1ms循环一次--尽管我认为这应该没有问题。
  3. 如果我的理解是正确的,FPGA就没有大量的内存。对于过程的第三部分,我将发送一个(大约)4x400个双数组作为查找表,这是可行的吗?
  4. 另外,这两个进程(读写数据)之间的交换是否意味着每次都要对FPGA进行重新编程,还是可以指示它在两者之间切换?(可能只需要并行运行,而忽略其中一个)。
  5. 我见过的另一个 选项正在使用Avalda FPGA开发人员将F#编译成VHDL,我想我很快就会尝试的。
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-02-13 19:21:17

因为你沿着轨道移动,我必须假设采样频率不超过10 kHz。您可以轻松地将数据卸载到PC上,甚至12 Mb (全速)。

对于数学数据的认真处理,Matlab是一条必经之路。但是由于我没有听说过F#,所以我不能发表评论。

4x400双打没问题。即使是低端FPGA也有100 kb的内存。

你不需要改变图像,在读写之间进行切换。这在FPGA中一直都是这样的。

票数 2
EN

Stack Overflow用户

发布于 2009-02-23 03:01:55

你没有提到你的目标,客户,预算,可靠性或最后期限,所以这很难回答,但是.

别管FPGA了。简化您的设计、开发环境和接口,除非您知道您将用另一种解决方案破坏您的实时需求。

如果你有预算,我会先看看LabView。

http://www.ni.com/labview/

http://www.ni.com/dataacquisition/

LabView会给你的数据采集系统和用户图形用户界面都在一台PC上。根据我的经验,开发人员不会选择LabView,因为它不像是一个“真正的”编程环境,但是我肯定会推荐它来解决您描述的问题。

如果您决定使用编译语言,那么我会将实时数据采集组件隔离到带有RTOS的嵌入式目标上,最好是利用MMU进行调度和线程隔离,并允许您使用C编写。如果您得到了真正的RTOS,您应该能够合理地调度需要运行的进程,如果需要,还应该能够调试它们!使用定义好的接口,使这个离目标系统尽可能简单。让它做的仅仅是得到你需要的数据。

然后,我将使用一个用于维护的通用接口文件将这些接口实现回PC GUI。使用标准接口将数据传输到PC机,比如USB2或以太网。FTDI芯片非常适合这类产品。

票数 3
EN

Stack Overflow用户

发布于 2009-02-23 05:20:16

这是一个建议。

放弃FPGA的概念。从TI公司得到一个DSP评估板,选择一个有足够的gigaflops让你高兴的。足够的RAM来存储你的工作装置。

在C中编程,TI提供了一个小RT内核。

它可以和PC机通话,比如串口或以太网之类的。

它通过握手发送PC煮熟的数据,这样数据就不会丢失。有足够的内存在DPS存储您的数据,而个人电脑有高级时刻。

DSP没有性能问题。

实时位做实时,与MP的ram。处理速度快,而且GUI不需要时间.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/545326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档