【发布时间】:2010-10-07 09:59:30
【问题描述】:
要求的简要说明
(这里有很多很好的答案,谢谢大家,如果我得到这个飞行,我会更新)。
探测器沿着轨道运行,实时测量几个不同的物理参数(确定性),作为曲线距离的函数。在此过程中,用户可以单击一个按钮来“标记”航点,然后使用 GUI 输入每个航点的详细信息(以人工方式,但在继续数据采集的同时)。
在此之后,系统对获取的数据执行一系列计算/过滤/修改,同时考虑到为每个航路点输入的约束条件。这个过程的输出是一系列的修正,也是曲线距离的函数。
该过程的第三部分涉及再次沿着轨道运行,但这次将修正写入修正轨道的物理系统(仍然是曲线距离的函数)。
我目前对您的输入/cmets/警告的想法
我想确定的是我是否可以使用 PC + FPGA 来做到这一点。 FPGA 会进行“数据采集”,我会在 PC 上使用 C# 从缓冲区读取数据。航点信息可以通过 WPF/Winforms 应用程序输入,并存储在数据库/平面文件/任何待处理的“处理”中。
对于处理,我会使用 F#。
FPGA 将用于将信息“写入”回物理机。
我目前可以预见的一个问题是,如果处理算法需要一个采样频率,这会使要缓冲的数据量太大。这意味着将一些处理卸载到 FPGA - 至少是不需要用户输入的位。不幸的是,唯一的预处理算法是卡尔曼滤波器,我在 google 上搜索过,很难用 FPGA 实现。
如果您愿意提供任何反馈,我将不胜感激。
更新(此处添加的额外信息)
在卡尔曼滤波器的入口处,我们每 1 毫秒查看一次。但在卡尔曼滤波器的另一边,我们将每 1m 采样一次,按照我们所说的速度,采样速度约为每秒 2 次。
所以我想更精确的问题是:
在 FPGA 上实现 Kalman filter - seems that it's 可能,但我对这两个主题的了解还不够,无法弄清楚它是如何可能的。
我也不确定卡尔曼的 FPGA 实现是否能够每 1ms 循环一次 - 尽管我想应该没问题。
如果我理解正确的话,FPGA 没有大量的内存。对于流程的第三部分,我将发送(大约)4 x 400 的双精度数组用作查找表,这可行吗?
另外,两个进程之间的交换(读/写数据)是否意味着每次都重新编程 FPGA,或者是否可以指示在两者之间切换? (也许可以只并行运行并忽略其中一个)。
Anotheroption 我看到正在使用Avalda FPGA Developer 将 F# 编译为 VHDL,我想我很快就会尝试。
【问题讨论】:
-
你的问题非常广泛..真的有问题吗?最好先开始其中的一些内容,并在实际开始后返回详细问题!
标签: f# real-time fpga architecture