реклама на сайте
подробности

 
 
> Рассуждения на тему ЦОС на ПЛИС - а нужен ли NCO(цифровой DDS)?
ovs_pavel
сообщение Jul 7 2016, 08:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



День добрый. Вот рассуждаю не тему нужен ли в данном конкретном случае модуль NCO (Numerically Controlled Oscillator)?

Входной сигнал после АЦП с Fd = 112 МГц поступает на ПЛИС.
Внутри ПЛИС раскладывается на квадратуры (умножается на sin и cos, который формируется NCO).
Ситуация интересна тем, что NCO формирует частоту 28 МГц и получаем, что один период 28 МГц - это ровно 4 отсчета частоты дискретизации (112 МГц).

Даже в самой простой ситуации (начальная фаза NCO = 0) получаем:

COS: Vmax, 0, Vmin, 0 ....... (далее повтор)
SIN: 0, Vmin, 0, Vmax ....... (далее повтор)

Т.е. получается если необходимая частота генерации кратна частоте дискретизации, то следовательно данный модуль можно заменить на простой мультиплексор заданных отсчетов.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
des00
сообщение Jul 7 2016, 09:03
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(ovs_pavel @ Jul 7 2016, 15:57) *
Т.е. получается если необходимая частота генерации кратна частоте дискретизации, то следовательно данный модуль можно заменить на простой мультиплексор заданных отсчетов.

если не нужна подстройка по фазе, то не нужен.


--------------------
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Jul 7 2016, 09:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Цитата(des00 @ Jul 7 2016, 12:03) *
если не нужна подстройка по фазе, то не нужен.


Необходимости в подстройке фазы вроде нет (имеется в виду начальной фазы). Просто интересен сам момент что 2 из 4-ех отсчетов могут быть нулями, хотя с теоретической точки зрения это вполне нормально.
С практической надо будет смотреть.
Go to the top of the page
 
+Quote Post
disel
сообщение Jul 7 2016, 09:19
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Все правильно, тут подробно: http://www.chipinfo.ru/literature/chipnews/200008/2.html
Этот факт также позволяет упростить фильтры, поскольку половина коэфициентов нулевые.
Go to the top of the page
 
+Quote Post
Leka
сообщение Jul 11 2016, 17:39
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



У меня получается, что без NCO можно обойтись и в более общем случае (в задаче переноса спектра с децимацией). Вместо перемножения каждого отсчета АЦП на sin/cos от NCO c последующей децимирующей фильтрацией (символ "ж" - свертка):
i = (s * cos) ж h
q = (s * sin) ж h
пропускать отсчеты АЦП сразу через децимирующие фильтры:
i = s ж hc
q = s ж hs
где заранее просчитанные фильтры:
hc = h * cos
hs = h * sin
- а потом повернуть каждую пару отсчетов i(n) q(n) на угол const*n.
Вычислений меньше, тк поворот после децимации.
Не напутал ли где (еще не пробовал)?
Go to the top of the page
 
+Quote Post
Krys
сообщение Aug 8 2016, 06:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



А откуда следует, что умножение на синусоиду и последующую децимацию-фильтрацию можно заменить на децимацию-фильтрацию с синусом? И откуда следует, что потом ещё нужен доворот на линейно нарастающую фазу? А такой поворот на линейно нарастающую фазу не является ли синусом?
Не пробовали в матлабе отмоделировать?


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Leka
сообщение Aug 9 2016, 08:31
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Выводится непосредственно из определения свертки, exp(jw(t-x)) разлагается на exp(jwt)*exp(-jwx), и exp(jwt) выводится из-под знака интеграла по dx.
Делал амплитудный детектор, поэтому не поворачивал.
С поворотом не моделировал, амплитудный детектор сразу в железо зашил, получил, что хотел.

Сообщение отредактировал Leka - Aug 9 2016, 08:31
Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 3 2016, 09:27
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



День добрый коллеги. Вообщем наконец получил железо и теоретические изыскания попытался переложить на железо.

Вкратце:
- частота дискретизации 112 МГц;
- входной сигнал (тестовый) подается частотой 85 МГц (ПЧ = 84 МГц и сдвиг по частоте 1 МГц);
- внутри ПЛИС раскладывается на квадратуры (умножается на sin и cos, причем косинус это 1, 0, -1, 0 и синус это 0, 1, 0, -1).
- внутри ПЛИС реализуем фильтр для подавления зеркальной составляющей.

Получаем первую картинку - с фильтром без децимации:



На этой картинке показана вся частотная шкала (112 МГц) для БПВ 32768. Видна основная гармоника - 1 МГц и подавленная зеркальная составляющая.

Вторая картинка показывает результат децимации после этого фильтра:



На этой картинке вся шкала уже 56 МГц. Также основная гармоника и зеркальная составляющая переехала вправо (хотя физически осталась на месте). Вроде все как и должно быть.

Но при попытке реализовать фильтр-дециматор с учетом того, что у нас после АЦП спектр оказался на частоте Fd/4 и отбрасывания соответствующих нулевых составляющих, практика и теория не совпадает. Картинка:



На этой картинке вся шкала также 56 МГц. Есть основная гармоника (слева), а вот справа появилось что-то, чего быть не должно (должна быть вроде как задавленная зеркалка).

Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 3 2016, 10:35
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Более детальный анализ:

входная последовательность: x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10]...;

для получения синфазной составляющей умножаем ее на 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1... (косинус 28 МГц при частоте дискретизации 112 МГц);

после перемножения: Хm[0], 0, -Хm[2], 0, Хm[4], 0, -Хm[6], 0, Хm[8], 0, -Хm[10]...;

коэффициенты фильтра h[0], h[1], h[2], h[3], h[4], h[5]....

Выход фильтра:
для t=0 y[0] = Xm[0]*h[0];
для t=1 y[1] = 0*h[0] + Xm[0]*h[1];
для t=2 y[2] = -Xm[2]*h[0] + 0*h[1] + Xm[0]*h[2];
для t=3 y[2] = 0*h[0] -Xm[2]*h[1] + 0*h[2] + Xm[0]*h[3];
для t=4 y[4] = Xm[4]*h[0] + 0*h[1] -Xm[2]*h[2] + 0*h[3] + Xm[0]*h[4];
для t=5 y[5] = 0*h[0] + Xm[4]*h[1] + 0*h[2] -Xm[2]*h[3] + 0*h[4] + Xm[0]*h[5];
................

При децимации внутри фильтра отбрасываем составляющие для t=1,3,5... и не учитывая нулевые произведения получим:
y[0] = Xm[0]*h[0]
y[2] = Xm[0]*h[2] - Xm[2]*h[0]
y[4] = Xm[0]*h[4] - Xm[2]*h[2] + Xm[4]*h[0]
y[6] = Xm[0]*h[6] - Xm[2]*h[4] + Xm[4]*h[2] - Xm[6]*h[0]
y[8] = Xm[0]*h[8] - Xm[2]*h[6] + Xm[4]*h[4] - Xm[6]*h[2] + Xm[8]*h[0]
.......................

Для квадратурной составляющей будут нечетные коэффициены. Вроде так получается, но на выходе - беда.

Go to the top of the page
 
+Quote Post
ovs_pavel
сообщение Oct 6 2016, 05:59
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Задача разрешилась.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 17:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016