|
Altera NCO, Разложение сигнала на квадратуры |
|
|
|
Sep 30 2009, 12:34
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Здравствуйте! Кто пользовался NCO, подскажите как с ним работать. Передо мной стоит задача разложить сигнал на квадратурные составляющие, сигнал с частотой 28МГц оцифровывается 112МГц и поступает в ПЛИС, дальше как я понимаю можно просто брать четные или не четные отсчеты - это и будут квадратуры, а можно перемножать выходы NCO настроенного на частоту 28МГц с входами. Так вот по поводу NCO: 1) на вход clk мне подавать 112МГц и CLOCK RATE задавать 112МГц 2) фазу задавать константой которая высвечивается в мегавизарде для 112МГц и входной 28МГц это 1073741824?
Если делать как в пункте 1 и 2, то я получаю на выходе косинуса значения: 0, -32767 0, 32767, на выходе синуса соответственно 32767, 0 , -32767, 0, с этим и перемножать?? в чем тогда сложность составить таблицу из 2 чисел? И что можно подавать кроме константы на вход фазы?? СПАСИБО! smile3046.gif
|
|
|
|
|
Sep 30 2009, 12:55
|
Знающий
   
Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353

|
Сейчас квартуса под рукой нет, но попробую объяснить. Квадратурный перенос осуществляется с одной частоты на другую. Т.е. Fрез = Fсигн - Fnco (или Fрез = Fnco - Freз кому как нравится  ), где Fрез - частота результирующего сигнала, Fnco - частота NCO, Fсигн - центральная частота сигнала. Константа на входе - это код требуемой частоты. Допустим имеется частота дискретизации 112 Мгц, частота сигнала 28 Мгц. Если необходимо перенести "в ноль" (обычно как раз это и надо), то требуемая частота работы NCO тоже должна быть 28 МГц. А частота дискретизации при этом (Sample rate) = 112 ММГц. Код же частоты определяется через отношение Fnco/Fдискр с учетом масштабного коэффициента. К примеру если требуется поставить NCO точно в центр анализируемого частотного диапазона, тогда как раз и можно ограничиться манипуляциями по пунктам 1 и 2. P.S.: Вполне можно еще задать и начальную фазу, тольк5о в обычном случае это совсем ни к чему. P.P.S: Да, чуть не заыл. Помимо разностной частоты возникает сигнал и на суммарной частоте, в связи с этим используют дополнительную фильтрацию "нежелательных" составляющих.
--------------------
Правильно сформулированый вопрос содержит в себе половину ответа. P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
|
|
|
|
|
Sep 30 2009, 13:21
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Evgeniiy @ Sep 30 2009, 17:17)  В чем тогда преимущество NCO, можно же тогда на эти два числа и умножать У вас вырожденный случай кратных частот: 28*4=112. Если бы вместо 28 у вас сигнал был 27, то вы бы оценили преимущества ;-) Вообще говоря, при подобных кратных частотах могут возникать неприятные эффекты, я бы вас посоветовал для начала помоделировать это и посмотреть на спектр. В Matlab/Simulink к примеру.
|
|
|
|
|
Sep 30 2009, 13:38
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(alexadmin @ Sep 30 2009, 17:37)  Ну если вам ничто не мешает - то хорошо. Вся проблема только в том, сможете ли вы с нужным качеством получить клок произвольной частоты под ваш входной сигнал. И что делать, если нужно настраиваться на разные частоты приема. Впрочем это тоже вопросы решаемые... Спасибо, преимущество понял.
|
|
|
|
|
Sep 30 2009, 13:44
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Evgeniiy @ Sep 30 2009, 17:33)  Как мне эти значения в ручную посчитать, хотя бы несколько, я не очень доганяю как они получаются Какие конкретно значения? Для частот, кратных четырем - вы уже посчитали. В общем случае это sin(Fs/Fnco*i*2Pi), cos(Fs/Fnco*i*2Pi), где i=0...(int(Fnco/Fs)-1). Соответственно, чем больше кратность частот, тем длиннее последовательность. PS отмасштабированное, конечно, под вашу разрядную сетку
Сообщение отредактировал alexadmin - Sep 30 2009, 13:46
|
|
|
|
|
Oct 1 2009, 05:18
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(alexadmin @ Sep 30 2009, 17:44)  Какие конкретно значения? Для частот, кратных четырем - вы уже посчитали. В общем случае это sin(Fs/Fnco*i*2Pi), cos(Fs/Fnco*i*2Pi), где i=0...(int(Fnco/Fs)-1). Соответственно, чем больше кратность частот, тем длиннее последовательность.
PS отмасштабированное, конечно, под вашу разрядную сетку Как я уже писал, для частоты сигнала 28МГц и дискретизации 112МГц я получил на выходе NCO значения косинуса--> 0, -32767 0, 32767.
|
|
|
|
|
Oct 1 2009, 07:36
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Evgeniiy @ Oct 1 2009, 09:18)  Как я уже писал, для частоты сигнала 28МГц и дискретизации 112МГц я получил на выходе NCO значения косинуса--> 0, -32767 0, 32767. Вот, это оно и есть - значения из формулы выше, умноженные на 2^15-1 (16-ти разрядные знаковые числа). Если вы, возьмете, к примеру, частоты 22.4 и 112 МГц (соотношение 1 к 5), то получится набор: >> t=[0:4]; >> sin(1/5.*t*2*pi)*32767 ans = 0 31163 19260 -19260 -31163 >> cos(1/5.*t*2*pi)*32767 ans = 32767 10126 -26509 -26509 10126
Сообщение отредактировал alexadmin - Oct 1 2009, 07:37
|
|
|
|
|
Oct 2 2009, 06:21
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(alexadmin @ Oct 1 2009, 11:36)  Вот, это оно и есть - значения из формулы выше, умноженные на 2^15-1 (16-ти разрядные знаковые числа).
Если вы, возьмете, к примеру, частоты 22.4 и 112 МГц (соотношение 1 к 5), то получится набор:
>> t=[0:4];
>> sin(1/5.*t*2*pi)*32767
ans =
0 31163 19260 -19260 -31163
>> cos(1/5.*t*2*pi)*32767
ans =
32767 10126 -26509 -26509 10126 Спасибо
|
|
|
|
|
Oct 2 2009, 07:57
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(Evgeniiy @ Oct 2 2009, 10:21)  Спасибо Кстате в NCO вроде как можно задавать частоты только целые, 22.4 не получится.
|
|
|
|
|
Oct 2 2009, 10:13
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Evgeniiy @ Oct 2 2009, 11:57)  Кстате в NCO вроде как можно задавать частоты только целые, 22.4 не получится. Не совсем так. В NCO можно задавать целые преращения фазы с шагом 1. В итоге разрешающая способность зависит от разрядности аккумулятора NCO и частоты работы. Таким образом, если взять рассмотреный уже пример, то получится следующее: Для того, чтобы задать частоту 22.4 МГц необходимо установить константу 22.4/112*2^16=13107.2. Округляем до 13107 и получаем результирующую частоту 13107/2^16*112 = 22.399658203125 МГц. В целом, для частоты 112 МГц и 16-разрядного аккумулятора макимальная ошибка по частоте составит 1/2*1/2^16*112MHz=0.0008544921875 MHz = 855 Hz
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|