|
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, 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
|
|
|
|
|
Oct 8 2009, 13:10
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(alexadmin @ Oct 2 2009, 18:22)  Естественно, как меняется частота - точно так же нужно управлять и NCO. При этом, повторюсь, ошибка по частоте будет почти всегда присутствовать, но не будет превышать для рассмотренного примера величины 855 Hz. Обычно такая ошибка не имеет практического значения. Если у меня ЛЧМ сигнал изменяющийся от 27 до 29 МГц за 300мкc, то мне нужно разбить этот интервал на части например на 100 и каждые 3 мкс изменять константу на фазовом входе? А если у меня входной сигнал не обязательно приходит в фазе с сигналом дискретизации?
|
|
|
|
|
Oct 9 2009, 08:21
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Evgeniiy @ Oct 8 2009, 17:10)  Если у меня ЛЧМ сигнал изменяющийся от 27 до 29 МГц за 300мкc, то мне нужно разбить этот интервал на части например на 100 и каждые 3 мкс изменять константу на фазовом входе? А если у меня входной сигнал не обязательно приходит в фазе с сигналом дискретизации? Если я правильно помню, что такоtt ЛЧМ, то да. Но намного лучше будет изменят частоту не с таким большим дискретом,а действительно линейно. То есть берете свой интервал 300 мкс и считаете, сколько на нем периодов тактовой частоты, допустим тех самых 112 МГц. Получается 33600 тактов. На этом интервале вам надо, чтобы вход вашего управления NCO изменился с 27/112*2^16=15799 до 29/112*2^16=16969. Таким образом счетчик должен считать со средней скоростью (19969-15799)/33600=0.1241... на каждом такте. Делаете высокоточный счетчик ( с дробной частью) в диапазоне от 0 до (19969-15799) с инкрементом 0.1241... прибавляете к нему начальное смещение 15799 и вперед. Естественно у вас будет накапливаться ошибка в виду конечной точности, но она будет несущественна. При этом счетчик не должен быть циклическим, а должен устанавливаться в начальное состояние по окончании целого периода. Как-то так. Наверное можно придумать и более изящное решение, но это "в лоб" наиболее очевидное. Про второй ваш вопрос не очень понял, вы имеете в виду приход самих данных в другом тактовом домене или временнные метки управления NCO?
|
|
|
|
Сообщений в этой теме
Evgeniiy Altera NCO, Разложение сигнала на квадратуры Sep 30 2009, 12:34 eugen_pcad_ru Сейчас квартуса под рукой нет, но попробую объясни... Sep 30 2009, 12:55 Evgeniiy В чем тогда преимущество NCO, можно же тогда на эт... Sep 30 2009, 13:17 alexadmin Цитата(Evgeniiy @ Sep 30 2009, 17:17) В ч... Sep 30 2009, 13:21 alexadmin Цитата(Evgeniiy @ Sep 30 2009, 17:25) А ч... Sep 30 2009, 13:37  Evgeniiy Цитата(alexadmin @ Sep 30 2009, 17:37) Ну... Sep 30 2009, 13:38          Evgeniiy RE: Altera NCO, Разложение сигнала на квадратуры Oct 9 2009, 05:35            des00 Цитата(Evgeniiy @ Oct 27 2009, 01:31) Вот... Oct 27 2009, 07:53             Evgeniiy Цитата(des00 @ Oct 27 2009, 11:53) вообще... Oct 27 2009, 08:20              des00 Цитата(Evgeniiy @ Oct 27 2009, 02:20) я д... Oct 27 2009, 12:42 анатолий Насчет NCO, квадратур и пр.
предлагаю глянуть на
h... Oct 9 2009, 12:41 EvgenyV Тут есть немного теории
http://allfpga.com/fpga/f... Nov 10 2009, 05:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|