Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NCO генератор и смесители
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Vital_100
Не мог бы кто-нибудь подсказать или посоветовать, стоит ли игра свеч, в реализации генератора NCO и соответственно двух смесителей, для получения квадратурного сигнала. Иначе говоря, необходимо получить, разложить сигнал на sin и cos составляющие! Насколько проблемна задача, стоит ли браться за ее реализацию на ПЛИС (Альтера например)? Много ли объема занимает эта штука в логике?
Если у кого есть реализации был бы очень благодарен за пример, или хотя бы советы!
(Сижу в жутком цейтноте и кроме того плата спаяна уже. разрабатывать в виде каких-то других реализаций не имею возможности, плату не я разрабатывал!)
Спасибо!
kst
Цитата(Vital_100 @ May 24 2006, 14:50) *
...стоит ли игра свеч, в реализации генератора NCO и соответственно двух смесителей, для получения квадратурного сигнала...
Однозначно стоит. Только так и делаю.
Цитата
Насколько проблемна задача, стоит ли браться за ее реализацию на ПЛИС (Альтера например)? Много ли объема занимает эта штука в логике?
Не сильно проблемна. Все упирается в требуемые характеристики. Объем занимаемых ресурсов зависит опять же от требуемых характеристик, скорости поступления данных и требуемого коэффициента децимации.
Реализация варианта DDC (Digital Down Conderter), когда на один период опорных сигналов (sin и cos) приходится 4 выборки, вообще смешной до коликов. Основная нагрузка - это фильтры. При фильтрах девятого порядка с единичными коэффициентами и разрядностью входного сигнала 12 (CIC фильтры не использовались) - около сотни логических элементов на такой микросхеме, как EP1K100 (Acex1K). Но могу соврать, так как было давно.
Последний вариант планировался по-честному (NCO, CORDIC, фильтры). Около 400-500 логических элементов.
Цитата
Если у кого есть реализации был бы очень благодарен за пример, или хотя бы советы!
Реализацию сложно, советы можно smile.gif
Serega_YSV
Цитата(kst @ May 24 2006, 19:09) *
Реализация варианта DDC (Digital Down Conderter), когда на один период опорных сигналов (sin и cos) приходится 4 выборки, вообще смешной до коликов. Основная нагрузка - это фильтры. При фильтрах девятого порядка с единичными коэффициентами и разрядностью входного сигнала 12 (CIC фильтры не использовались) - около сотни логических элементов на такой микросхеме, как EP1K100 (Acex1K). Но могу соврать, так как было давно.
Последний вариант планировался по-честному (NCO, CORDIC, фильтры). Около 400-500 логических

Интересует вопрос синхронизации NCO, точнее, по какому алгоритму производить выделение ошибки синхронизации с несущей (чтобы меньше ресурсов потребовалось)???
Vital_100
Спасибо! Очень вразумительный, толковый ответ.
Я еще забегу сюда... Надо обдумать идею!
Попутно вопрос если можно... На четыре выборки у меня никак не получается демодуляция - не настроить PLL для забитой уже тактовой частоты и скорости поступления данных. Придется умножение делать классическое. Хочу эту штуку написать на Veriloge, но не пробовал делать еще умножители так. Раньше делал все в схематике, а сейчас все больше в Veriloge клепаю. Не могли бы что-нибудь посоветовать по поводу построения умножителя в Veriloge, не предстваляю пока, как его сделать. Простой оператор "*" в один такт здесь очевидно не пройдет. Как тогда решить эту проблему. Входные данные 12 разрядов!
kst
Цитата(Vital_100 @ May 25 2006, 18:25) *
На четыре выборки у меня никак не получается демодуляция - не настроить PLL для забитой уже тактовой частоты и скорости поступления данных. Придется умножение делать классическое.
Это не проблема.
Цитата
Хочу эту штуку написать на Veriloge, но не пробовал делать еще умножители так. Раньше делал все в схематике, а сейчас все больше в Veriloge клепаю. Не могли бы что-нибудь посоветовать по поводу построения умножителя в Veriloge, не предстваляю пока, как его сделать. Простой оператор "*" в один такт здесь очевидно не пройдет. Как тогда решить эту проблему. Входные данные 12 разрядов!
Здесь помочь не могу. Сам только только слезаю со схематики и перехожу на VHDL. До верилога в ближайший год не доберусь. Однако все это сделать можно.
Можно попробовать инструмент распределенной арифметики - разбить одно большое многоразрядное умножение на ряд более простых операций умножения/сложения с меньшей разрядностью операндов. К сожалению никаких ссылок пока дать не могу.


Цитата(Serega_YSV @ May 24 2006, 23:35) *
Интересует вопрос синхронизации NCO, точнее, по какому алгоритму производить выделение ошибки синхронизации с несущей (чтобы меньше ресурсов потребовалось)???
Это из области ФАПЧ. Не силен. Такого пока еще не делал.
Vital_100
Кое-что слепил на Verilog'е уже. В частности умножители-смесители. Симулировал в Quartus'e. Поразило то, что код (написанный для NCO, смесителей) занял очень мало места. Похоже в кристалл (Cyclone) войдет все, что задумано - фильтры и пр. скарб.
Опыта пока не имею создания таких изделий (темы другие разрабатывал), но все больше вижу преимущества Verilog'a перед схематикой. Хотя разрабатываю чаще смешанный вариант - мелочь, детали в Verilog'e, а крупные блоки соединяю в схематике.
Спасибо еще раз за дельные мысли! Может быть и я смогу, чем помочь при случае...
Koluntaev
Цитата(Serega_YSV @ May 24 2006, 23:35) *
Интересует вопрос синхронизации NCO, точнее, по какому алгоритму производить выделение ошибки синхронизации с несущей (чтобы меньше ресурсов потребовалось)???


Сильно зависит от того, какой вид модуляции используется. Для фазоманипулированных сигналов - обычно какой-либо вариант схемы Костаса. У Спилкера в книжке "Цифровая спутниковая связь" про восстановление несущей хорошо написано. Если принимать автокорреляционно (сравнивать фазы сигнала на текущем и предыдущем такте), можно и вообще без восстановления несущей обойтись, а только примерно настраивать NCO по центру сигнала.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.