Краткое описание требований
(Здесь много хороших ответов, спасибо всем, я обновлю, если когда-нибудь получу этот полет).
Детектор работает по дорожке, измеряя несколько различных физических параметров в режиме реального времени (детерминист) в зависимости от криволинейного расстояния. Пользователь может нажать кнопку, чтобы «пометить» путевые точки во время этого процесса, а затем использует графический интерфейс для ввода деталей для каждой путевой точки (в человеческом времени, но пока продолжается сбор данных).
После этого система выполняет серию вычислений / фильтров / модификаций полученных данных с учетом ограничений, введенных для каждой путевой точки. Результатом этого процесса является ряд поправок, также как функция криволинейного расстояния.
Третья часть процесса заключается в том, чтобы снова бегать по дорожке, но на этот раз записать поправки в физическую систему, которая исправляет дорожку (все еще в зависимости от криволинейного расстояния).
Моя текущая идея для вашего ввода / комментарии / предупреждения
Что я хочу определить, могу ли я сделать это с ПК + FPGA. FPGA будет выполнять «сбор данных», я буду использовать C # на ПК для чтения данных из буфера. Информация о путевых точках может быть введена через приложение WPF / Winforms и помещена в базу данных / плоский файл / что-либо, ожидающее «обработки».
Для обработки я бы использовал F #.
FPGA будет использоваться для «записи» информации обратно на физическую машину.
Единственная проблема, которую я могу предвидеть в настоящее время, заключается в том, что алгоритмы обработки требуют частоту дискретизации, что делает количество данных для буферизации слишком большим. Это подразумевало бы разгрузку части обработки на ПЛИС - по крайней мере, биты, которые не требуют пользовательского ввода. К сожалению, единственный алгоритм предварительной обработки - это фильтр Калмана, который сложно реализовать с помощью ПЛИС, как я уже гуглил.
Я был бы очень признателен за любые ваши отзывы.
ОБНОВЛЕНИЯ (дополнительная информация добавляется здесь как и когда)
При входе в фильтр Калмана мы смотрим раз в 1 мс. Но с другой стороны фильтра Калмана мы будем отбирать каждые 1 м, что при скоростях, о которых мы говорим, будет около 2 в секунду.
Итак, я думаю, более точные вопросы были бы:
реализация фильтра Калмана на FPGA - кажется , что возможно возможно, но я не понимаю достаточно о том или ином предмете можно разобраться, насколько это возможно.
Я также не уверен, сможет ли реализация Kalman в FPGA работать с циклом каждые 1 мс - хотя я предполагаю, что это не должно быть проблемой.
Если я правильно понял, у ПЛИС нет проблем с памятью. Для третьей части процесса, где я буду отправлять (приблизительно) массив двойных чисел 4 x 400 для использования в качестве таблицы поиска, возможно ли это?
Кроме того, будет ли переключение между двумя процессами (чтение / запись данных) означать перепрограммирование ПЛИС каждый раз, или может быть дано указание переключаться между ними? (Возможно, можно просто запустить оба параллельно и игнорировать одно или другое).
Другая опция Я видел компиляцию F # в VHDL с использованием Avalda FPGA Developer , я скоро попробую, я думаю .