mikalaha 0 2 июля, 2007 Опубликовано 2 июля, 2007 · Жалоба Задача следующая: требуется реализовать алгоритм настройки коэффициентов фильтра по Калману (или алгоритм Каламана с квадратным корнем). Частота следования посылок - 4 кГц. Длина фильтра - 64; Тактовая частота ПЛИС - 200 Мгц; 192 умножителя; Внешняя память - 8 Мб; Слышал, что есть готовые оптимизированные схемы, и даже не на один фильтр, а на несколько. Видел ли кто-нибудь их вживую - очень надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 3 июля, 2007 Опубликовано 3 июля, 2007 · Жалоба Простите за вопрос, - а чем сигнальные процессоры Вам не угодили? На них это получится гораздо проще, дешевле и жрать будет гораздо меньше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikalaha 0 6 июля, 2007 Опубликовано 6 июля, 2007 · Жалоба Простите за вопрос, - а чем сигнальные процессоры Вам не угодили? На них это получится гораздо проще, дешевле и жрать будет гораздо меньше... На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CodeWarrior1241 0 6 июля, 2007 Опубликовано 6 июля, 2007 · Жалоба На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров). У нас тоже Калман реализован на процессоре. Вероятно что у Вас есть модель фильтра написаной в Матлабе. Раз так, и Вам обязательно надо реализация в ПЛИС, посмотрите в сторону AccelDSP и System Generator. Первый реализуюет RTL впрямую из кода матлаба, а второй делает то же самое из блок-схем Simulink. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav 0 6 июля, 2007 Опубликовано 6 июля, 2007 · Жалоба На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров).Ну, тут от размерностей матриц всё зависит, и от частоты апдэйта коэффициентов. Если не слишком велики - и на одном ЦСП все 360 штук реализовать можно. А вот на ПЛИС как раз гимор будет, по-моему... Есть вариант - ПЛИС + ЦСП. В ряде случаев такой подход даёт значительный выигрыш относительно ПЛИС или ЦСП по отдельности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oval 0 6 июля, 2007 Опубликовано 6 июля, 2007 · Жалоба Раз так, и Вам обязательно надо реализация в ПЛИС, посмотрите в сторону AccelDSP и System Generator. Первый реализуюет RTL впрямую из кода матлаба, а второй делает то же самое из блок-схем Simulink. Сюда можно добавить еще Synplify DSP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба На процессоре это уже реализовано - но проблема в том, что таких фильтров необходимо реализовать 360 штук. Естественно хотелось бы их запустить параллельно (или ставить с десяток процессоров). Аппаратных реализаций КФ не видел, но имею вопросы, т.к. задача запуска 350 аппаратных фильтров паралельно вообще-то уникальная. Если не секрет - для чего это нужно? Как вы будете подбирать способ масштабирования для целочисленной реализации фильтра калмана в аппаратуре? Или в каждом фильтре предполагается блок плавающей точки? Если ФК-линейный то его коэффициенты можно рассчитать заранее и просто реализовать набор векторных БИХ фильтров с подгружаемыми коэффициентами из общего массива констант. Если же фильтр расширенный (в смысле extended), то для полноценной реализации требуется обращение матрицы, размерность которой равна размерности вектора состояния. Как в вашем случае это планируется реализовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikalaha 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба Аппаратных реализаций КФ не видел, но имею вопросы, т.к. задача запуска 350 аппаратных фильтров паралельно вообще-то уникальная. Если не секрет - для чего это нужно? Как вы будете подбирать способ масштабирования для целочисленной реализации фильтра калмана в аппаратуре? Или в каждом фильтре предполагается блок плавающей точки? Если ФК-линейный то его коэффициенты можно рассчитать заранее и просто реализовать набор векторных БИХ фильтров с подгружаемыми коэффициентами из общего массива констант. Если же фильтр расширенный (в смысле extended), то для полноценной реализации требуется обращение матрицы, размерность которой равна размерности вектора состояния. Как в вашем случае это планируется реализовать? Задача - прием сигналов с DMT-модуляцией. Схема приема - потоновая коррекция (per-tone equalization)/ Почему так много фильтров - реализация схемы приема в прикрепленной статье. Почему фильтр Калмана - обычный МНК, решетчатый корректор - не успевают сходиться за время настройки (треннинга). Используемый ФК действительно линейный. Алгоритм настройки - "Фильтр Калмана с квадратным корнем (raised square root Kalman)" к сожалению статья только в печатном виде (но найти ее видимо не проблема). Но , если не ошибаюсь , линейный ФК тоже использует обращение матрицы - это из формулы настройки коэффициентов ФК. Обращается матрица ковариации (без которой в принципе и Калман был бы не Калманом). Просто в алгоритме с квадратным корнем обращается "треугольная" матрица - поэтому он немного побыстрее обычного. Целочисленная арифметика: 16 бит - так уже реализовано на процессоре и это работает (один корректор), но его по всем вышеприведенным причинам маловато. Максимум, что получилось вставить в процессор - 50 фильтров. vanacker01equalization.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба Задача - прием сигналов с DMT-модуляцией. Схема приема - потоновая коррекция (per-tone equalization)/ Почему так много фильтров - реализация схемы приема в прикрепленной статье. Почему фильтр Калмана - обычный МНК, решетчатый корректор - не успевают сходиться за время настройки (треннинга). vanacker01equalization.zip Документ скачал - там 256 страниц. В каком разделе схему смотреть - поиск по слову kalman ничего не дал. В линейном фильтре тоже пристуствует обращение матрицы, но т.к. в этом фильтре все матрицы определены заранее (даже если фильтр нестационарный), то коэффициент усиления фильтра можно рассчитать на этапе проектирования и заложить его в устройство в виде векторного массива (если фильтр многомерный). В этом случае от обращения матрицы и прочих специфических для ФК вычислений можно избавиться. Бывают реализации, где коэффициент кусочно приближается полиномами - тогда его даже хранить не надо. В расширенном фильтре матрицы состояния зависят от текущего значения оцениваемого вектора - поэтому там нужно обращать матрицы на месте. Вот про медленную сходимость обычного МНК по сравнению с калманом - не понятно. Если линейно оцениваются несколько стационарных параметров, то в этом случае калман - просто рекурсивная реализация линейной МНК-оценки. Или в связных задачах есть какое-то особенности? В персоначальном сообщении вы написалчто длина фильтра - 64. Это размерность вектора состяния? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mikalaha 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба Документ скачал - там 256 страниц. В каком разделе схему смотреть - поиск по слову kalman ничего не дал. Раздел 4 - Per Tone Equalization. В линейном фильтре тоже пристуствует обращение матрицы, но т.к. в этом фильтре все матрицы определены заранее (даже если фильтр нестационарный), то коэффициент усиления фильтра можно рассчитать на этапе проектирования и заложить его в устройство в виде векторного массива (если фильтр многомерный). В этом случае от обращения матрицы и прочих специфических для ФК вычислений можно избавиться. Бывают реализации, где коэффициент кусочно приближается полиномами - тогда его даже хранить не надо. В расширенном фильтре матрицы состояния зависят от текущего значения оцениваемого вектора - поэтому там нужно обращать матрицы на месте. Вот это уже очень интересно! А какие методы расчета на этапе проектирования существуют. Буду признателен за ссылки, идеи и т.д. Я просто с этими вещами ни разу не сталкивался. Да и физика немного не понятна. Ведь сигнал сигналу - рознь. Каналы передачи данных - все разные (разные АЧХ, соответственно разные импульсные характеристики - а ведь фильтр Каламана как раз и оценивает эту характеристику, точнее получает обратную характеристику канала, кроме того разные шумы - соответственно разные матрицы дисперсий(ковариаций)) На этапе "прозвонки" канала я настраиваю свои фильтры - полным алгоритмом - то есть я уверен, что система адаптируется под конкретный канал. То есть непонятно как выбирать эти коэффициенты усиления в зависимости от канала. Хотелось бы с Вашей помощью разобраться с этим вопросом - это ведь будет действительно прорыв. Вот про медленную сходимость обычного МНК по сравнению с калманом - не понятно. Если линейно оцениваются несколько стационарных параметров, то в этом случае калман - просто рекурсивная реализация линейной МНК-оценки. Или в связных задачах есть какое-то особенности? Да, особенности есть. Быструю сходимость Калману обеспечивает следующая вещь: сигнал подстройки коэффициентов (ошибка) не одна и та же на каждый коэффициент (как в МНК). Она еще домножается на индивидуальный коэффициент усиления для каждого коэффициента. Этот коэффициент как раз и расчитывается при помощи матрицы ковариаций. То есть алгоритм учитывает вклад каждого входного символа в текущую ошибку. Да... ну, как смог. А вот по качество сходимости они одинаковы. В персоначальном сообщении вы написалчто длина фильтра - 64. Это размерность вектора состяния? Да это размерность вектора состояния (длина импульсной характеристики канала) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба Вот это уже очень интересно! А какие методы расчета на этапе проектирования существуют. Буду признателен за ссылки, идеи и т.д. Насколько я понимаю, у Вас речь идет не про обычный фильтр Калмана, а про QR-RLS эквалайзер. Для него параметры модели задаются принятым сигналом, в отличие от "нормальных" фильтров Калмана, в которых параметры модели известны заранее. Поэтому не думаю, что можно что-то просчитать до принятия сигнала :) Покопайте Хайкина "Adaptive filter theory". У него описано несколько быстрых вариантов RLS алгоритма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GroundCtrl 0 10 июля, 2007 Опубликовано 10 июля, 2007 · Жалоба Раздел 4 - Per Tone Equalization. Посмотрел - без подготовки не смог самостоятельно выделить из написанных формул уравнение состояния и уравнение наблюдения. Методы рассчета коэффициентов линейного фильтра до его запуска просты. Если посмотрите на уравнения линейного ФК в общем виде, то выражения для коэффициента усиления и апостериорной ковариационной матрицы зависят только от предыдущих ковариационных матриц, но не зависят от текущего измерения или состояния. Поэтому алгоритм можно запустить только на рассчет коэффицинта усиления без каких-либо измерений, и сохранить результаты для последующего использования. Все это работает, как уже было отмечено, в случае когда матрицы состояния, наблюдения и шумов не зависят ни от текущего состояния системы ни от текущих измерений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться