Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Согласованная фильтрация на плис
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
fertna18
Здравствуйте уважаемые форумчане. Недавно начал осваивать плис Xilinx. Появились некоторые вопросы, на которые не смог найти исчерпывающих ответов в сети, а самостоятельный анализ долгое время не даёт необходимой информации.
1) Как организовать согласованную фильтрацию с использованием ядра ких-фильтра?
2)Как организовать согласованную фильтрацию средствами vhdl?
3)Как организовать корреляционную обработку сигнала с использованием ядер?
Особенности сигнала: длительность - 7 мкс, период - 14 мкс, частота дискретизации - равна максимальной частоте тактирования 125 МГц(8 нс).
Использую ise design, isim, modelsim se
Vascom
Изучаешь Verilog и/или VHDL и описываешь все необходимые фильтры и корреляторы.
Ядра вряд ли получится использовать поскольку согласованная фильтрация - слишком специфичная вещь.
fertna18
Цитата(Vascom @ Feb 9 2018, 11:06) *
Изучаешь Verilog и/или VHDL и описываешь все необходимые фильтры и корреляторы.
Ядра вряд ли получится использовать поскольку согласованная фильтрация - слишком специфичная вещь.

Всё конечно хорошо, только есть одно достаточно большое НО - а именно это колличество ресурсов. И при этом отклик СФ должен происходить в реальном времени и время прихода сигнала неизвестно. Есть идейка конечно генерировать зеркальный сигнал и использовать его отчёты в качестве отчётов ИХ, но и тут та же проблема - неизвестно время прихода сигнала.
Vascom
Используй несколько корреляторов.
RobFPGA
Приветствую!

Вам для начала нужно разобраться с алгоритмом - что и как бы будете коррелировать и фильтровать.
Какие требования по макс диапазона дальности и точности определения положения сигнала в нем.
Входные и выходные объемы и потоки данных, требуемые дин диапазон, точности коэффициентов, ...
Промоделировать все это.
Потом оценив требуемые ресурсы wacko.gif для реализации алгоритма и наличествующие в реальности sad.gif
Выбрать структуру реализации коррелятора (FIR, FFT-IFFT, ...) -
Ну и напоследок начать ... написание модуля верификации ну и потом непосредственно дизайна модулей.

Удачи! Rob.

iosifk
Цитата(fertna18 @ Feb 9 2018, 11:39) *
Здравствуйте уважаемые форумчане. Недавно начал осваивать плис Xilinx.

Если хотите, могу с этим помочь... Напишите мне на почту...
Mad_max
Можно предположить, что у ТС с мат. аппаратом все в порядке и он понимает, что хочет фильтроват, а что коррелировать.
Проблема именно в реализации, на новой для человека аппартной платформе - ПЛИС. Тогда можно посоветовать посмотреть
в сторону simulink. Кубиками состряпать DSP тракт, промоделировать алгоритм, далее сгенерировать RTL код, который даже можно попробывать
синтезнуть для прикидки утилизации ресурсов. Параллельно при этом читать книги по плисоводству.

А так конечно пичаль, если человек ни когда не работал с ПЛИС и тут бац боевая задача запилить DSP тракт, так еще и не понятно откуда берутся данные
и куда деваются после обработки. В идеале мат моделированием занимается один человек, а реализацией другие, в идеале отдельно RTL проектировщики
и отдельно RTL верификаторы.
fertna18
Цитата(RobFPGA @ Feb 9 2018, 11:59) *
Вам для начала нужно разобраться с алгоритмом - что и как бы будете коррелировать и фильтровать.
Какие требования по макс диапазона дальности и точности определения положения сигнала в нем.

Вот в этом то и прошу помощи, ну дальность определяется скважностью сигнала, а точность от выбранного алгоритма обработки.
Вот и возникает вопрос.
какие способы реализации есть? И их особенности.
Допустим имея сигнал длительностью 7 мкс и периодом 14 мкс при дискретизации 125МГц получается 875 отчётов и соответственно кол-во перемножителей огромное - в итоге расход ресурсов. Это если подходить к делу во временной реализации. А если частота дискретизации будет выше тогда что?
RobFPGA
Приветствую!

Цитата(fertna18 @ Feb 9 2018, 15:34) *
...
Допустим имея сигнал длительностью 7 мкс и периодом 14 мкс при дискретизации 125МГц получается 875 отчётов и соответственно кол-во перемножителей огромное - в итоге расход ресурсов. Это если подходить к делу во временной реализации. А если частота дискретизации будет выше тогда что?

А зачем Вам во временной? Я же Вам намекнул FFT - IFFT свертка в частотной области. Размер FFT/IFTT на 1K что желудок у котенка sm.gif

Удачи! Rob.
fertna18
Цитата(Mad_max @ Feb 9 2018, 13:22) *
Можно предположить, что у ТС с мат. аппаратом все в порядке и он понимает, что хочет фильтроват, а что коррелировать.
Проблема именно в реализации, на новой для человека аппартной платформе - ПЛИС. Тогда можно посоветовать посмотреть
в сторону

Осваивать начал с vhdl, мат аппарат нормальный, в матлабе навыки есть, но вот simulink сложновато.
Задача стоит не в создании системы обработки, а научиться делать согласованную фильтрацию на плис.
Обычные фильтры например делал на fir compiler, с помощью coe файлов, которые предварительно создавал в матлабе.
Но вот с СФ возникают проблемы, связанные с кол-вом коэффициентов.
Vascom
Начинать с verilog проще.
А обязательно нужны FIR-фильтры? Ведь согласованный фильтр это может быть и коррелятор.
fertna18
Цитата(RobFPGA @ Feb 9 2018, 13:43) *
Приветствую!


А зачем Вам во временной? Я же Вам намекнул FFT - IFFT свертка в частотной области. Размер FFT/IFTT на 1K что желудок у котенка sm.gif

Удачи! Rob.

А временная задержка при обработке на низкой частоте тактирования(в моем случае 125 МГц) единицы микросекунд и это я ресурсы ещё не смотрел.
Хотя сегодня-завтра попробую что нибудь на fft ради интереса сделать.

Цитата(Vascom @ Feb 9 2018, 13:53) *
Начинать с verilog проще.
А обязательно нужны FIR-фильтры? Ведь согласованный фильтр это может быть и коррелятор.

Нет необязательно. Можете предложить что-нибудь?
Mad_max
Цитата(fertna18 @ Feb 9 2018, 15:49) *
мат аппарат нормальный.
Но вот с СФ возникают проблемы, связанные с кол-вом коэффициентов.

Уж простите, но не вяжется.

Тем не менее, если с мат аппаратом все ок, то понятие операции свертки вам должно быть знакомо.
КИХ фильтр, собственнно, делает ни что иное как сворачивает (во временной области) обрабатываемый цифровой сигнал со своей
импульсной характеристикой. И вам теперь надо "всего лишь" разобратсья как реализовать операцию свертки на FPGA.
Можно подойти и с другого боку, путем перемножения спектров, тогда вместо свертки простое по коэффициентное перемножение,
если конечно опустить кучу нюансов связанных с переходом от представления сигнала во времени к частотному отображению и обратно.

В итоге, вот вам две книги ученых мужей.
1. [Meyer_Baese_U.]_Digital_Signal_Processing_with_FPGA
2. Лайонс Р., Цифровая обработка сигналов.

Там популярно и про сверку и про спектры и про реализацию на FPGA.

Удачи!

P.S. Verilog
blackfin
Цитата(fertna18 @ Feb 9 2018, 15:34) *
Допустим имея сигнал длительностью 7 мкс и периодом 14 мкс при дискретизации 125МГц получается 875 отчётов и соответственно кол-во перемножителей огромное - в итоге расход ресурсов.

А что за сигнал такой, злобный? Обычно же согласованный фильтр для таких длинных отсчетов делают для М-последовательностей или кодов Голда, а там все коэффициенты +1 и -1.. Для каналов связи, ЕМНИП, согласованные фильтры на порядок короче и имеют, к тому же, симметричную КИХ..
fertna18
Цитата(blackfin @ Feb 9 2018, 14:56) *
А что за сигнал такой, злобный? Обычно же согласованный фильтр для таких длинных отсчетов делают для М-последовательностей или кодов Голда, а там все коэффициенты +1 и -1.. Для каналов связи, ЕМНИП, согласованные фильтры на порядок короче и имеют, к тому же, симметричную КИХ..

Почему сразу злобный. Будь это пачка ри или пачка лчм или фкм 7. Смысл не меняется - везде гармоническое заполнение, отсюда и такое колличество отчётов.
blackfin
Цитата(fertna18 @ Feb 9 2018, 17:22) *
Почему сразу злобный. Будь это пачка ри или пачка лчм или фкм 7. Смысл не меняется - везде гармоническое заполнение, отсюда и такое колличество отчётов.

Гармоническое заполнение "ри" или "фкм" обычно обнуляют с помощью DDC. biggrin.gif
dmitry-tomsk
А какая полоса сигнала? 125 МГц (комплексного)?
jojo
Полоса потока 10Гбит/с...
Mr_Doomsday
Я делал СФ по схеме FIR-фильтра, тупо оцифровал распознаваемый сигнал и запихнул его в качестве коэффициентов фильтра, предварительно переставив местами. И все дела. Работало на отлично. На частоте в 213 МГц
fertna18
Цитата(blackfin @ Feb 9 2018, 15:23) *
Гармоническое заполнение "ри" или "фкм" обычно обнуляют с помощью DDC. biggrin.gif

Не всегда можно это использовать. Ну... Например при локации будет появляться доплеровская добавка, удобно ли будет использовать подобное обнуление


Цитата(Mr_Doomsday @ Feb 15 2018, 22:33) *
Я делал СФ по схеме FIR-фильтра, тупо оцифровал распознаваемый сигнал и запихнул его в качестве коэффициентов фильтра, предварительно переставив местами. И все дела. Работало на отлично. На частоте в 213 МГц

На основе чего делал? Ip ядра или руками писал?
Mr_Doomsday
Цитата(fertna18 @ Feb 17 2018, 12:01) *
На основе чего делал? Ip ядра или руками писал?

Руками писал. Можно было использовать и готовые ядра, но мне это было не столь интересно
el.d
Цитата(fertna18 @ Feb 9 2018, 12:34) *
Вот в этом то и прошу помощи, ну дальность определяется скважностью сигнала, а точность от выбранного алгоритма обработки.
Вот и возникает вопрос.
какие способы реализации есть? И их особенности.
Допустим имея сигнал длительностью 7 мкс и периодом 14 мкс при дискретизации 125МГц получается 875 отчётов и соответственно кол-во перемножителей огромное - в итоге расход ресурсов. Это если подходить к делу во временной реализации. А если частота дискретизации будет выше тогда что?

Тогда децимацию (процедура понижения частоты дискретизации) вам в руки...
fertna18
Цитата(el.d @ Feb 19 2018, 10:51) *
Тогда децимацию (процедура понижения частоты дискретизации) вам в руки...

Спасибо за совет, так и сделал. Выбирал каждый 10 -ый отчёт и всё. Ну конечно пока с ядром ковыряться замучился - даташит на fir compiler через одно место написан.
Mad_max
Цитата(fertna18 @ Feb 20 2018, 15:44) *
Выбирал каждый 10 -ый отчёт и всё.


ФНЧ не забудьте поставить, а то спектральные копии они такие.
el.d
Цитата(Mad_max @ Feb 20 2018, 13:43) *
ФНЧ не забудьте поставить, а то спектральные копии они такие.

Так ТС же написал, что ядро КИХ фильтра хилых использовал для этого дела
Mad_max
Цитата(el.d @ Feb 20 2018, 17:45) *
Так ТС же написал, что ядро КИХ фильтра хилых использовал для этого дела

Судя по тому что ТС понравилась вот эта фраза
Цитата
Я делал СФ по схеме FIR-фильтра, тупо оцифровал распознаваемый сигнал и запихнул его в качестве коэффициентов фильтра, предварительно переставив местами. И все дела. Работало на отлично. На частоте в 213 МГц

Ковыряния с КИХ филтром как раз связанны с потроением самого коррелятора.

А децемация проведена по схеме
Цитата
Выбирал каждый 10 -ый отчёт и всё.

Возможно принято решение, что спектральное размножение действовать не будет, ТС тут виднее.
Alexey_Rostov
Цитата(fertna18 @ Feb 9 2018, 11:39) *
Здравствуйте уважаемые форумчане. Недавно начал осваивать плис Xilinx. Появились некоторые вопросы, на которые не смог найти исчерпывающих ответов в сети, а самостоятельный анализ долгое время не даёт необходимой информации.
1) Как организовать согласованную фильтрацию с использованием ядра ких-фильтра?
2)Как организовать согласованную фильтрацию средствами vhdl?
3)Как организовать корреляционную обработку сигнала с использованием ядер?
Особенности сигнала: длительность - 7 мкс, период - 14 мкс, частота дискретизации - равна максимальной частоте тактирования 125 МГц(8 нс).
Использую ise design, isim, modelsim se


Если речь идет о первичной обработке радиолокационного сигнала например, то можно делать примерно так:
1. Понижаете по частоте и децимируете входной сигнал. Например, несущая частота входного сигнала 30 МГц (для вашей частоты тактирования - 125 МГц). Опорный сигнал для понижающего преобразования выбираете исходя из ширины спектра входного сигнала. Например, у вас ЛЧМ с девиацией 10 МГц. В этом случае понижаете входной сигнал на 30 МГц. Получается ЛЧМ с переходом через 0 от - 5 до +5 Мгц. Децимируете в 10 раз (т.е. новая частота дискретизации 12.5 МГц).
2. Собираете КИХ фильтр с ИХ зеркальной ЛЧМ на видеочастоте. Собрать можно самому, но без навыков будет сложновато, проще использовать ядра.
3. Наблюдаете отклик на выходе КИХ фильтра, при этом необходима синхронизация по фронту зондирующего сигнала. Относительно него отсчитываете время, когда сигнал на выходе КИХ максимален и пересчитываете в дальность/время.

Для верификации используйте modelsim se: в нем есть возможность посмотреть форму сигналов.
По организации проекта: моделируете весь тракт в matlab или python. записываете входной сигнал в отдельный файл, который потом будете вычитывать в тестбенче при верификации своего проекта.

Цитата(Mad_max @ Feb 20 2018, 19:16) *
А децемация проведена по схеме
Возможно принято решение, что спектральное размножение действовать не будет, ТС тут виднее.


Как вариант, чтобы весь мусор убрать при децимации, можно CIC фильтром децимировать. Его опять же можно на ядрах собрать.

el.d
Цитата(Mad_max @ Feb 20 2018, 16:16) *
Судя по тому что ТС понравилась вот эта фраза

Ковыряния с КИХ филтром как раз связанны с потроением самого коррелятора.

А децемация проведена по схеме

Возможно принято решение, что спектральное размножение действовать не будет, ТС тут виднее.

Корка хилых позволяет сделать КИХ фильтр сразу же дециматором/интерполятором...
fertna18
Цитата(el.d @ Feb 21 2018, 05:44) *
Корка хилых позволяет сделать КИХ фильтр сразу же дециматором/интерполятором...

При согласованной фильтрации в принципе бессмысленно интерполяцией пользоваться
Kluwert
Цитата(Mr_Doomsday @ Feb 18 2018, 00:29) *
Руками писал. Можно было использовать и готовые ядра, но мне это было не столь интересно

Что значит "не столь интересно"? КИХ-фильтр, например, пишется за 10 мин. Но, типичный проигрыш по быстродействию рукописного, например, КИХ-фильтра его же IP'шному аналогу типично составляет в районе 1,5 раз, как вы не играйтесь с локерами и таймквестами. Даже если разложить фильтр руками по DSP-блокам, т.е., по-сути, сделать за компилёр 80% его работы, и то, разница всё равно будет процентов 15-20. Проверяли сотни раз. Но раз это вас устроило, значит у вас камень был выбран с чрезмерным запасом. Ну можно конечно для перевозки тумбочки вызывать трейлер, но наш опыт показал, что, когда нужно из камня выжать всё, никакие рукописные аналоги кор не прокатывают.

Позволю себе чутка откомментировать сообщение коллеги:
Цитата(Alexey_Rostov @ Feb 20 2018, 23:47) *
Если речь идет о первичной обработке радиолокационного сигнала например, то можно делать примерно так:
1. ... Например, у вас ЛЧМ.

Ну, наверное, НЧМ всё-таки, использование ЛЧМ'а с его невменяемым уровнем боковиков, как-то уже не модно. Даже в кач-ве "например" sm.gif
Цитата
Для верификации используйте modelsim se: в нем есть возможность посмотреть форму сигналов.
По организации проекта: моделируете весь тракт в matlab или python. записываете входной сигнал в отдельный файл, который потом будете вычитывать в тестбенче при верификации своего проекта.

Modelsim в принципе и не нужен. Коры генерят вполне адекватные матлаб-модели, с помощью которых всё отлично моделируется прямо в Матлабе. Да и если уж про то пошло, тогда уже самое правильное - использовать DSPbuilder. Что называется, не отходя от кассы sm.gif
Цитата
Как вариант, чтобы весь мусор убрать при децимации, можно CIC фильтром децимировать. Его опять же можно на ядрах собрать.

Э-э, тут не всё так просто, как я уже в другой ветке писал. Тут начнутся проблемы с диким ростом выходной разрядности и последующим выравнивающим (компенсирующим) фильтром, порядок которого может оказаться совсем не детским. Причём, этот же фильтр собственно и должен будет осуществлять сжатие квадратур и тут вообще может начаться дикий замес из разрядностей, АЧХ цика и требуемой АЧХ. Кроме того, лицензия на кору цика очень дорогая, ну а при использовании "русских лицензий" (как острят мои иностранные коллеги sm.gif), можно легко нарваться на "сюрпризы".
fertna18
Цитата(Kluwert @ Feb 25 2018, 14:24) *
КИХ-фильтр, например, пишется за 10 мин. Но, типичный проигрыш по быстродействию рукописного, например, КИХ-фильтра его же IP'шному аналогу типично составляет в районе 1,5 раз, как вы не играйтесь с локерами и таймквестами.

Вот здесь абсолютно согласен. Использование ядер не всегда даёт необходимую гибкость инструмента, но экономия ресурсов и быстродействие на лицо.
Цитата(Kluwert @ Feb 25 2018, 14:24) *
Modelsim в принципе и не нужен. Коры генерят вполне адекватные матлаб-модели, с помощью которых всё отлично моделируется прямо в Матлабе. Да и если уж про то пошло, тогда уже самое правильное - использовать DSPbuilder. Что называется, не отходя от кассы sm.gif

Можно здесь пожалуйста немного поподробнее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.