Jump to content
    

Фильтр Калмана на ПЛИС

Задача следующая: требуется реализовать алгоритм настройки коэффициентов фильтра по Калману (или алгоритм Каламана с квадратным корнем). Частота следования посылок - 4 кГц.

Длина фильтра - 64;

Тактовая частота ПЛИС - 200 Мгц;

192 умножителя;

Внешняя память - 8 Мб;

Слышал, что есть готовые оптимизированные схемы, и даже не на один фильтр, а на несколько.

Видел ли кто-нибудь их вживую - очень надо.

Share this post


Link to post
Share on other sites

Простите за вопрос, - а чем сигнальные процессоры Вам не угодили? На них это получится гораздо проще, дешевле и жрать будет гораздо меньше...

Share this post


Link to post
Share on other sites

Простите за вопрос, - а чем сигнальные процессоры Вам не угодили? На них это получится гораздо проще, дешевле и жрать будет гораздо меньше...

На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров).

Share this post


Link to post
Share on other sites

На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров).

У нас тоже Калман реализован на процессоре. Вероятно что у Вас есть модель фильтра написаной в Матлабе. Раз так, и Вам обязательно надо реализация в ПЛИС, посмотрите в сторону AccelDSP и System Generator. Первый реализуюет RTL впрямую из кода матлаба, а второй делает то же самое из блок-схем Simulink.

Share this post


Link to post
Share on other sites

На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров).
Ну, тут от размерностей матриц всё зависит, и от частоты апдэйта коэффициентов. Если не слишком велики - и на одном ЦСП все 360 штук реализовать можно.

А вот на ПЛИС как раз гимор будет, по-моему...

Есть вариант - ПЛИС + ЦСП. В ряде случаев такой подход даёт значительный выигрыш относительно ПЛИС или ЦСП по отдельности.

Share this post


Link to post
Share on other sites

Раз так, и Вам обязательно надо реализация в ПЛИС, посмотрите в сторону AccelDSP и System Generator. Первый реализуюет RTL впрямую из кода матлаба, а второй делает то же самое из блок-схем Simulink.

 

Сюда можно добавить еще Synplify DSP.

Share this post


Link to post
Share on other sites

На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров).

Аппаратных реализаций КФ не видел, но имею вопросы, т.к. задача запуска 350 аппаратных фильтров паралельно вообще-то уникальная. Если не секрет - для чего это нужно?

 

Как вы будете подбирать способ масштабирования для целочисленной реализации фильтра калмана в аппаратуре? Или в каждом фильтре предполагается блок плавающей точки?

 

Если ФК-линейный то его коэффициенты можно рассчитать заранее и просто реализовать набор векторных БИХ фильтров с подгружаемыми коэффициентами из общего массива констант. Если же фильтр расширенный (в смысле extended), то для полноценной реализации требуется обращение матрицы, размерность которой равна размерности вектора состояния. Как в вашем случае это планируется реализовать?

Share this post


Link to post
Share on other sites

Аппаратных реализаций КФ не видел, но имею вопросы, т.к. задача запуска 350 аппаратных фильтров паралельно вообще-то уникальная. Если не секрет - для чего это нужно?

 

Как вы будете подбирать способ масштабирования для целочисленной реализации фильтра калмана в аппаратуре? Или в каждом фильтре предполагается блок плавающей точки?

 

Если ФК-линейный то его коэффициенты можно рассчитать заранее и просто реализовать набор векторных БИХ фильтров с подгружаемыми коэффициентами из общего массива констант. Если же фильтр расширенный (в смысле extended), то для полноценной реализации требуется обращение матрицы, размерность которой равна размерности вектора состояния. Как в вашем случае это планируется реализовать?

 

Задача - прием сигналов с DMT-модуляцией.

Схема приема - потоновая коррекция (per-tone equalization)/

Почему так много фильтров - реализация схемы приема в прикрепленной статье.

Почему фильтр Калмана - обычный МНК, решетчатый корректор - не успевают сходиться за время настройки (треннинга).

Используемый ФК действительно линейный. Алгоритм настройки - "Фильтр Калмана с квадратным корнем (raised square root Kalman)" к сожалению статья только в печатном виде (но найти ее видимо не проблема).

Но , если не ошибаюсь , линейный ФК тоже использует обращение матрицы - это из формулы настройки коэффициентов ФК. Обращается матрица ковариации (без которой в принципе и Калман был бы не Калманом). Просто в алгоритме с квадратным корнем обращается "треугольная" матрица - поэтому он немного побыстрее обычного.

Целочисленная арифметика: 16 бит - так уже реализовано на процессоре и это работает (один корректор), но его по всем вышеприведенным причинам маловато. Максимум, что получилось вставить в процессор - 50 фильтров.

 

vanacker01equalization.zip

Share this post


Link to post
Share on other sites

Задача - прием сигналов с DMT-модуляцией.

Схема приема - потоновая коррекция (per-tone equalization)/

Почему так много фильтров - реализация схемы приема в прикрепленной статье.

Почему фильтр Калмана - обычный МНК, решетчатый корректор - не успевают сходиться за время настройки (треннинга).

vanacker01equalization.zip

 

Документ скачал - там 256 страниц. В каком разделе схему смотреть - поиск по слову kalman ничего не дал.

 

В линейном фильтре тоже пристуствует обращение матрицы, но т.к. в этом фильтре все матрицы определены заранее (даже если фильтр нестационарный), то коэффициент усиления фильтра можно рассчитать на этапе проектирования и заложить его в устройство в виде векторного массива (если фильтр многомерный). В этом случае от обращения матрицы и прочих специфических для ФК вычислений можно избавиться. Бывают реализации, где коэффициент кусочно приближается полиномами - тогда его даже хранить не надо. В расширенном фильтре матрицы состояния зависят от текущего значения оцениваемого вектора - поэтому там нужно обращать матрицы на месте.

 

Вот про медленную сходимость обычного МНК по сравнению с калманом - не понятно. Если линейно оцениваются несколько стационарных параметров, то в этом случае калман - просто рекурсивная реализация линейной МНК-оценки. Или в связных задачах есть какое-то особенности?

 

В персоначальном сообщении вы написалчто длина фильтра - 64. Это размерность вектора состяния?

Share this post


Link to post
Share on other sites

Документ скачал - там 256 страниц. В каком разделе схему смотреть - поиск по слову kalman ничего не дал.

Раздел 4 - Per Tone Equalization.

 

В линейном фильтре тоже пристуствует обращение матрицы, но т.к. в этом фильтре все матрицы определены заранее (даже если фильтр нестационарный), то коэффициент усиления фильтра можно рассчитать на этапе проектирования и заложить его в устройство в виде векторного массива (если фильтр многомерный). В этом случае от обращения матрицы и прочих специфических для ФК вычислений можно избавиться. Бывают реализации, где коэффициент кусочно приближается полиномами - тогда его даже хранить не надо. В расширенном фильтре матрицы состояния зависят от текущего значения оцениваемого вектора - поэтому там нужно обращать матрицы на месте.

 

Вот это уже очень интересно! А какие методы расчета на этапе проектирования существуют. Буду признателен за ссылки, идеи и т.д.

Я просто с этими вещами ни разу не сталкивался. Да и физика немного не понятна.

Ведь сигнал сигналу - рознь. Каналы передачи данных - все разные (разные АЧХ, соответственно разные импульсные характеристики - а ведь фильтр Каламана как раз и оценивает эту характеристику, точнее получает обратную характеристику канала, кроме того разные шумы - соответственно разные матрицы дисперсий(ковариаций))

На этапе "прозвонки" канала я настраиваю свои фильтры - полным алгоритмом - то есть я уверен, что

система адаптируется под конкретный канал.

То есть непонятно как выбирать эти коэффициенты усиления в зависимости от канала. Хотелось бы с Вашей помощью разобраться с этим вопросом - это ведь будет действительно прорыв.

 

Вот про медленную сходимость обычного МНК по сравнению с калманом - не понятно. Если линейно оцениваются несколько стационарных параметров, то в этом случае калман - просто рекурсивная реализация линейной МНК-оценки. Или в связных задачах есть какое-то особенности?

 

Да, особенности есть.

Быструю сходимость Калману обеспечивает следующая вещь:

сигнал подстройки коэффициентов (ошибка) не одна и та же на каждый коэффициент (как в МНК).

Она еще домножается на индивидуальный коэффициент усиления для каждого коэффициента.

Этот коэффициент как раз и расчитывается при помощи матрицы ковариаций.

То есть алгоритм учитывает вклад каждого входного символа в текущую ошибку.

Да... ну, как смог.

 

А вот по качество сходимости они одинаковы.

 

В персоначальном сообщении вы написалчто длина фильтра - 64. Это размерность вектора состяния?

Да это размерность вектора состояния (длина импульсной характеристики канала)

Share this post


Link to post
Share on other sites

Вот это уже очень интересно! А какие методы расчета на этапе проектирования существуют. Буду признателен за ссылки, идеи и т.д.

 

Насколько я понимаю, у Вас речь идет не про обычный фильтр Калмана, а про QR-RLS эквалайзер. Для него параметры модели задаются принятым сигналом, в отличие от "нормальных" фильтров Калмана, в которых параметры модели известны заранее. Поэтому не думаю, что можно что-то просчитать до принятия сигнала :)

 

Покопайте Хайкина "Adaptive filter theory". У него описано несколько быстрых вариантов RLS алгоритма.

Share this post


Link to post
Share on other sites

Раздел 4 - Per Tone Equalization.

Посмотрел - без подготовки не смог самостоятельно выделить из написанных формул уравнение состояния и уравнение наблюдения.

 

Методы рассчета коэффициентов линейного фильтра до его запуска просты. Если посмотрите на уравнения линейного ФК в общем виде, то выражения для коэффициента усиления и апостериорной ковариационной матрицы зависят только от предыдущих ковариационных матриц, но не зависят от текущего измерения или состояния. Поэтому алгоритм можно запустить только на рассчет коэффицинта усиления без каких-либо измерений, и сохранить результаты для последующего использования. Все это работает, как уже было отмечено, в случае когда матрицы состояния, наблюдения и шумов не зависят ни от текущего состояния системы ни от текущих измерений.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...