Lionet 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Есть модуль ЦАП, принимающий данные по два отсчёта за такт обмена. Т.е. частота оцифровки сигнала 500 МГц, а обмен идёт на 250 МГц, но по два отсчёта. Модуль подключён к ПЛИС. Есть сигнал с частотой оцифровки 250 МГц. Соответственно, необходимо произвести передискретизацию (интерполяцию) сигнала на частототу оцифровки 500 МГц и, далее, группировку симплов парами. Проблема в том, что привычные методы (например, FIR и CIC ядра для ПЛИС), выдают по одному отсчёту за такт и требуют тактовой частоты не менее 500 МГц, соответственно. На такой частоте проект у меня не собирается даже в пустой ПЛИС. Само по себе это странно, используется Kintex-7, Xilinx FIR пишет в конфигураторе допустимую тактовую до 700 с лишним МГц, но, возможно, проблема в том, что используется LabView FPGA и это добавляет какие-то дополнительные модули, не дающие проекту собраться на такой частоте. На 250 МГц всё собирается нормально даже в больших проектах. Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Есть ли какие-то методы, позволяющие проводить интерполяцию "параллельно", получая сразу N-й и N-1 отсчёты выходного сигнала? Это называется полифазная реализация. Ищите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Может быть от производителя ЦАП есть готовый драйвер потоковой работы с их IC. Думаю, рыть нужно в сторону примотивов xilinx selectio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aT-DeviLru 0 9 июня, 2017 Опубликовано 9 июня, 2017 · Жалоба Xilinx FIR Compiler в Vivado умеет делать интерполяцию параллельных потоков, поэтому задача интерполяции сигнала в 2 раза с Fд = 250 МГц до 500 МГц на клоке 250 МГц решается очень просто. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 10 июня, 2017 Опубликовано 10 июня, 2017 · Жалоба Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lionet 0 13 июня, 2017 Опубликовано 13 июня, 2017 · Жалоба Это называется полифазная реализация. Ищите. Спасибо огромное! Нашёл описание у Айфичера, сделал на двух фильтрах из FIR compiler-a. Единственный странный момент: судя по описанию, Xilinx FIR Compiler тоже применяет полифазную интерполяцию. Но у него нельзя убрать выходной коммутатор, собирающий данные с отдельных трактов. Поэтому он выдаёт отсчёты только последовательно (а не парами, как надо). И странно, что из-за этого коммутатора он, видимо, по таймингам и не собирается. Если человек разрабатывает прошивку с помощью костылей то начинаешь подозревать что проблема не там где он её видит , ТС - вы не могли бы сказать какой тип ЦАП вы применяете и в МГц какой частоты сигнал вы на выходе цап ждёте? Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция. Модуль ЦАП - NI 5782. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 июня, 2017 Опубликовано 13 июня, 2017 · Жалоба Подумал, что же здесь не так... Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговым фильтром. Просто. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lionet 0 13 июня, 2017 Опубликовано 13 июня, 2017 · Жалоба Подумал, что же здесь не так... Интерполяцией вы дополнительной информации в сигнал не добавите. Значит, хватит и 250 МГц выборок. Дальше можно фильтровать аналоговм фильтром. Просто. Аналоговый (восстанавливающий) фильтр уже встроен в блок ЦАП (потому я и написал, что у меня модуль, а не микросхема). И рассчитан на частоту дискретизации 500 МГц - по сути это оцифровка с запасом по частоте, позволяет упростить фильтр и сделать его более линейным. Но требования Найквиста-Котельникова нужно соблюдать :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 13 июня, 2017 Опубликовано 13 июня, 2017 · Жалоба Почему Вы считаете, что с помощью костылей? Интерполяция сигнала к частоте работы ЦАП - это штатная операция. Модуль ЦАП - NI 5782. это я про лабвью так по хамски сказал, прошу прощения, потом посмотрел описание на ваш модуль цап и увидел что лабвью - это нормально. Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lionet 0 13 июня, 2017 Опубликовано 13 июня, 2017 · Жалоба Кстати , в описании на ваш DAC - http://www.ti.com/lit/ds/symlink/dac5682z.pdf , сказано что внутри есть интерполяционные фильтры и как я понял вовсе не надо на него лить поток на 500 Мгц , чтобы иметь эту тактовую на нём. Да, ЦАП там TI-евский, но специфика технологии LabView FPGA в том, что ко всем модулям прилагается одно или несколько IP-ядер, осуществляющих взаимодействие по правилам этой системы и имеющих поддержку в среде разработки и прочее... Можно сделать и что-то своё, но это весьма нетривиальный процесс и вся инициализация ЦАП и передача данных ложится на разработчика. В условиях прототипирования единичной системы этого хотелось избежать. Конкретно с 5782 идёт два ядра - одно с обменом 2 семпла/такт на 250 МГц, другое - 4 семпла/такт на 125 МГц. Т.е. в любом случае фактическая частота дискретизации - 500 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться