Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Интерполяция сигнала с получением двух отсчётов за такт
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Lionet
Есть модуль ЦАП, принимающий данные по два отсчёта за такт обмена. Т.е. частота оцифровки сигнала 500 МГц, а обмен идёт на 250 МГц, но по два отсчёта. Модуль подключён к ПЛИС.

Есть сигнал с частотой оцифровки 250 МГц. Соответственно, необходимо произвести передискретизацию (интерполяцию) сигнала на частототу оцифровки 500 МГц и, далее, группировку симплов парами.

Проблема в том, что привычные методы (например, FIR и CIC ядра для ПЛИС), выдают по одному отсчёту за такт и требуют тактовой частоты не менее 500 МГц, соответственно.
На такой частоте проект у меня не собирается даже в пустой ПЛИС.
Само по себе это странно, используется Kintex-7, Xilinx FIR пишет в конфигураторе допустимую тактовую до 700 с лишним МГц, но, возможно, проблема в том, что используется LabView FPGA и это добавляет
какие-то дополнительные модули, не дающие проекту собраться на такой частоте. На 250 МГц всё собирается нормально даже в больших проектах.

Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала?
_Anatoliy
Цитата(Lionet @ Jun 9 2017, 10:32) *
Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала?

Это называется полифазная реализация. Ищите.
quato_a
Может быть от производителя ЦАП есть готовый драйвер потоковой работы с их IC.

Думаю, рыть нужно в сторону примотивов xilinx selectio.
aT-DeviLru
Xilinx FIR Compiler в Vivado умеет делать интерполяцию параллельных потоков, поэтому задача интерполяции сигнала в 2 раза с Fд = 250 МГц до 500 МГц на клоке 250 МГц решается очень просто.
Lmx2315
Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте?
Lionet
Цитата(_Anatoliy @ Jun 9 2017, 11:52) *
Это называется полифазная реализация. Ищите.


Спасибо огромное!
Нашёл описание у Айфичера, сделал на двух фильтрах из FIR compiler-a.

Единственный странный момент: судя по описанию, Xilinx FIR Compiler тоже применяет полифазную интерполяцию. Но у него нельзя убрать выходной коммутатор, собирающий данные с отдельных трактов. Поэтому он выдаёт отсчёты только последовательно (а не парами, как надо). И странно, что из-за этого коммутатора он, видимо, по таймингам и не собирается.

Цитата(Lmx2315 @ Jun 10 2017, 09:16) *
Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте?


Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция.
Модуль ЦАП - NI 5782.
ViKo
Подумал, что же здесь не так...
Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговым фильтром. Просто.
Lionet
Цитата(ViKo @ Jun 13 2017, 11:47) *
Подумал, что же здесь не так...
Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговм фильтром. Просто.


Аналоговый (восстанавливающий) фильтр уже встроен в блок ЦАП (потому я и написал, что у меня модуль, а не микросхема). И рассчитан на частоту дискретизации 500 МГц - по сути это оцифровка с запасом
по частоте, позволяет упростить фильтр и сделать его более линейным. Но требования Найквиста-Котельникова нужно соблюдать :-)
Lmx2315
Цитата(Lionet @ Jun 13 2017, 10:04) *
Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция.
Модуль ЦАП - NI 5782.

это я про лабвью так по хамски сказал, прошу прощения, потом посмотрел описание на ваш модуль цап и увидел что лабвью - это нормально.
Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём.
Lionet
Цитата(Lmx2315 @ Jun 13 2017, 13:35) *
Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём.


Да, ЦАП там TI-евский, но специфика технологии LabView FPGA в том, что ко всем модулям прилагается одно или несколько IP-ядер, осуществляющих взаимодействие по правилам этой системы и имеющих поддержку в среде разработки и прочее... Можно сделать и что-то своё, но это весьма нетривиальный процесс и вся инициализация ЦАП и передача данных ложится на разработчика. В условиях прототипирования единичной системы этого хотелось избежать.

Конкретно с 5782 идёт два ядра - одно с обменом 2 семпла/такт на 250 МГц, другое - 4 семпла/такт на 125 МГц. Т.е. в любом случае фактическая частота дискретизации - 500 МГц.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.