Перейти к содержанию
    

Интерполяция сигнала с получением двух отсчётов за такт

Есть модуль ЦАП, принимающий данные по два отсчёта за такт обмена. Т.е. частота оцифровки сигнала 500 МГц, а обмен идёт на 250 МГц, но по два отсчёта. Модуль подключён к ПЛИС.

 

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

 

Проблема в том, что привычные методы (например, FIR и CIC ядра для ПЛИС), выдают по одному отсчёту за такт и требуют тактовой частоты не менее 500 МГц, соответственно.

На такой частоте проект у меня не собирается даже в пустой ПЛИС.

Само по себе это странно, используется Kintex-7, Xilinx FIR пишет в конфигураторе допустимую тактовую до 700 с лишним МГц, но, возможно, проблема в том, что используется LabView FPGA и это добавляет

какие-то дополнительные модули, не дающие проекту собраться на такой частоте. На 250 МГц всё собирается нормально даже в больших проектах.

 

Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала?

Это называется полифазная реализация. Ищите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть от производителя ЦАП есть готовый драйвер потоковой работы с их IC.

 

Думаю, рыть нужно в сторону примотивов xilinx selectio.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Xilinx FIR Compiler в Vivado умеет делать интерполяцию параллельных потоков, поэтому задача интерполяции сигнала в 2 раза с Fд = 250 МГц до 500 МГц на клоке 250 МГц решается очень просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это называется полифазная реализация. Ищите.

 

Спасибо огромное!

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

 

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

 

Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте?

 

Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция.

Модуль ЦАП - NI 5782.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подумал, что же здесь не так...

Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговым фильтром. Просто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подумал, что же здесь не так...

Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговм фильтром. Просто.

 

Аналоговый (восстанавливающий) фильтр уже встроен в блок ЦАП (потому я и написал, что у меня модуль, а не микросхема). И рассчитан на частоту дискретизации 500 МГц - по сути это оцифровка с запасом

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция.

Модуль ЦАП - NI 5782.

это я про лабвью так по хамски сказал, прошу прощения, потом посмотрел описание на ваш модуль цап и увидел что лабвью - это нормально.

Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём.

 

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

 

Конкретно с 5782 идёт два ядра - одно с обменом 2 семпла/такт на 250 МГц, другое - 4 семпла/такт на 125 МГц. Т.е. в любом случае фактическая частота дискретизации - 500 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...