Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выделение квадратур с помощью ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
guxa
Скажите пожалуйста.
Есть ли возможность реализовать на ПЛИС разложение сигнала, приходящего с АЦП на квадратуры?

Чисто математически эту задачу представляю, а как реализовать в логику ПЛИС - не пойму. help.gif
DmitryR
Поставить в ПЛИС NCO, настроенный на частоту несущей и тупо умножить его выходы (синус и косинус) на данные от ADC.
guxa
А что есть NCO? 07.gif
DmitryR
Цитата(guxa @ Oct 15 2008, 13:42) *
А что есть NCO? 07.gif

Numericaly Controlled Oscillator. Это блок, чаще всего библиотечный, который выдает в численном виде значения синуса и/или косинуса некоторой частоты. Значение этой частоты (а также ее фазы) может быть задано константно, или изменяться во время функционирования схемы путем подачи управляющих сигналов на вход блока.
guxa
Спасибо.

В АЛЬТЕРЕ такого блока нет, но могу ли я сделать его сама? Как понимаю, если мне известна частота я итак смогу вычислить значения синуса и косинуса. Верно?

Мне тут еще шепнули, что если частота дискритизации ровно в 4 раза выше, чем частота несущей, я могу просто брать четные и нечетные дискреты - это и будут квадратуры, это так?
DmitryR
Цитата(guxa @ Oct 15 2008, 13:58) *
В АЛЬТЕРЕ такого блока нет, но могу ли я сделать его сама?
Есть такой блок, так и называется, NCO. Ищите в MegaWizard Plug-in Manager, DSP/Signal generation.

Цитата(guxa @ Oct 15 2008, 13:58) *
Как понимаю, если мне известна частота я итак смогу вычислить значения синуса и косинуса. Верно?
Можете, безусловно. Но просто обычно требуется достаточно высокая точность, значений будет много, при формировании таблицы можно где-то ошибиться... Проще взять готовое.

Цитата(guxa @ Oct 15 2008, 13:58) *
Мне тут еще шепнули, что если частота дискритизации ровно в 4 раза выше, чем частота несущей, я могу просто брать четные и нечетные дискреты - это и будут квадратуры, это так?
Ну да, учетверенная частота - это фазы 0, 90, 180 и 270 градусов. Синус в этих точках - 0, 1, 0 и -1 соответственно. Косинус наверное понятно как.

Только сложность нередко в том, что в реальном приборе несущая и частота дискретизации формируются в разных местах (несущая в передатчике, а частота дискретизации - в приемнике), и "ровно" в 4 раза отличаться скорее всего не будут, будет небольшая разница (реально - от нескольких милионных до нескольких сот). Более того, эта разница может заметно плавать во времени от температуры и напряжения . Для этого и сделан NCO - сигнал предварительно декодируется, высняется ошибка частоты, и частота NCO корректируется, чтобы как можно более точно соответствовать частоте, которую сгенерировал передатчик. Вам, однако, такая точность может, конечно, и не потребоваться.
guxa
Спасибо огромное, будем изучать.
Гяук
Цитата(DmitryR @ Oct 15 2008, 14:36) *
...сигнал предварительно декодируется, высняется ошибка частоты, и частота NCO корректируется, чтобы как можно более точно соответствовать частоте, которую сгенерировал передатчик...

А можно в этом месте поподробнее - не могу взять в толк, что значит "сигнал предварительно декодируется"? Это Вы предлагаете сделать квадратуры, по этим квадратурам получить спектр и найти смещение максимума несущей от нуля? Похоже, что я что-то не так понял smile.gif

2 guxa
С учетверенной все получается действительно легко и нересурсоемко, но...
Во-первых Вам нужно помнить, что вы не просто разбрасываетесь отсчетами: четный - синус, нечетный - косинус, но и не забываете про нули, то есть когда четный уходит в синус - в косинусе на его месте стоит ноль.
Во вторых вариант с частотой дискретизации, равной учетверенной несущей приводит к тому, что в прямой спектр сигнала у Вас попадает еще его третья гармоника. Иногда это оказывается критичным - тут как говорится нужно смотреть от задачи.
DmitryR
Цитата(Гяук @ Oct 17 2008, 17:09) *
А можно в этом месте поподробнее - не могу взять в толк, что значит "сигнал предварительно декодируется"? Это Вы предлагаете сделать квадратуры, по этим квадратурам получить спектр и найти смещение максимума несущей от нуля? Похоже, что я что-то не так понял smile.gif
Я вобщем-то ниего не предлагал, я сказал, что так делается wink.gif Какой конкретно алгоритм - я не скажу, не так глубоко силен в этом, но в том, что вы сказали ничего фантастического не вижу. Знаю есть еще поисковые алгоритмы, которые прочесывают спектр в поисках мест, где есть сигнал (это в случаях, когда в полосе может быть несколько каналов).
bve
Неплохо бы еще отфильтровать получающийся комплексный сигнал фильром низкой частоты.
Соответственно, в библиотеке у ALTERA есть мегафункция
Михаил_K
Цитата(DmitryR @ Oct 15 2008, 13:25) *
Поставить в ПЛИС NCO, настроенный на частоту несущей и тупо умножить его выходы (синус и косинус) на данные от ADC.



Вы забыли несколько "не очень важных моментов".
1. После "тупого" умножения, нужно не забыть отфильтровать ВЧ сигнал
2. Частота NCO для умножения должна быть выбрана так, чтобы не произошло наложение участков спектра сигнала. Т.е. для распространенных видов сигналов - не менее половины ширины спектра. Это при условии что у вас будет идеальный ФНЧ.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.