设计用于实时采集和"控制"的系统架构

Ben*_*jol 5 architecture f# real-time fpga

要求的简要说明

(这里有很多好的答案,感谢所有人,如果我得到这个飞行,我会更新).

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

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

该过程的第三部分涉及再次沿轨道运行,但这次将校正写入校正轨道的物理系统(仍然是曲线距离的函数).

我目前对您的输入/评论/警告的想法

我想确定的是我是否可以用PC + FPGA来做到这一点.FPGA会进行"数据采集",我会在PC上使用C#从缓冲区读取数据.航点信息可以通过WPF/Winforms应用程序输入,并存储在数据库/平面文件/任何待处理的"处理"中.

对于处理,我会使用F#.

FPGA将用于将信息"写入"物理机器.

我目前可以预见的一个问题是,处理算法是否需要采样频率,这使得缓冲的数据量太大.这意味着将一些处理卸载到FPGA - 至少是不需要用户输入的位.不幸的是,唯一的预处理算法是卡尔曼滤波器,用我用Google搜索的方法很难用FPGA实现.

我非常感谢您提供的任何反馈意见.

更新(此处及时添加额外信息)

在卡尔曼滤波器的入口处,我们每1ms看一次.但是在卡尔曼滤波器的另一侧,我们将每隔1米采样一次,我们所讨论的速度大约为2秒.

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

  1. 实施卡尔曼滤波器在FPGA上- 似乎 认为 这是可能的,但我不明白的差不多了这两门课都能够制定出多么可能它.

  2. 我也不确定卡尔曼的FPGA实现是否能够每1ms循环一次 - 尽管我认为它应该没有问题.

  3. 如果我理解正确的话,FPGA就没有内存负载.对于该过程的第三部分,我将发送(大约)4 x 400双打数组用作查找表,这是否可行?

  4. 此外,在两个进程之间进行交换(读/写数据)意味着每次重新编程FPGA,还是可以指示在两者之间切换?(也许只能并行运行并忽略其中一个).

  5. 我见过的另一个选择是使用Avalda FPGA Developer将F#编译为VHDL ,我想我很快就会尝试.

Bri*_*ton 2

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

对于数学数据的认真处理,Matlab 是最佳选择。但由于我没有听说过 F#,所以无法发表评论。

4 x 400 双打没问题。即使是低端 FPGA 也有数百 kb 的内存。

您不必更改图像即可在阅读和写作之间切换。FPGA 中一直都是这样做的。