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

 
 
> Управление NCO
Artunique
сообщение Mar 2 2015, 09:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Всем доброго дня. Встала задача спроектировать NCO на плис. Использую мегафункцию. Объясните пожалуйста, каким образом перестраивать частоту? Я так понимаю необходим какой-то сигнал управления. Что он из себя представляет? И как его формировать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Lmx2315
сообщение Mar 2 2015, 10:22
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



не то чтобы буквальный ответ на ваш вопрос - но может будет интересно :
http://www.ssau.ru/files/education/metod_1...D0%B8%D0%B5.pdf

http://habrahabr.ru/post/237859/


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Swup
сообщение Mar 2 2015, 10:23
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Выделено значение прироста фазы. Оно зависит от разрядности аккумулятора фазы, частоты дискретизации и необходимой частоты.
У мега функции есть соответствующий порт для этого (phi_inc_i). Меняя подаваемое значение можно в процессе работы менять частоту, можно сделать ЛЧМ.

для примера с картинки PIV = 2^32 * 1.2e6 / 120e6 = 42949673;

Прикрепленное изображение



Сообщение отредактировал Swup - Mar 2 2015, 10:26
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Mar 2 2015, 11:28
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Я, например делал так

Код
localparam Fclk = 50_000_000;//Hz
localparam Freq = 300_000;//Hz

localparam Fbase = (Freq/Fclk) * 2^32;
localparam Fstep =  Fbase / 128;

/// BITS_STREAM - Si5338 CLK = 320 kHz * 16 bit; When '1' - Freq data, when '0' Freq = Fbase;

assign phase_inc =  data_tx[8] ? Fbase + (data_tx[6:0] * Fstep):  Fbase - (data_tx[6:0] * Fstep );

///

always_comb begin
    if(data_tx[9])
        phase_mod = Fbase;
    else if (BITS_STREAM) begin
        phase_mod = phase_inc;
    end
    else
        phase_mod = Fbase;
end

///


nco_n U1(
    .phi_inc_i        (phase_mod),
    .clk                (DCLK),
    .reset_n            (1),
    .clken            (1),
    .phase_mod_i    (),
    .freq_mod_i        (),
    .fsin_o            (sin),
    .fcos_o            (cos),
    .out_valid        ()
);
Go to the top of the page
 
+Quote Post
Artunique
сообщение Mar 2 2015, 13:17
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 25-11-14
Из: Санкт-Петербург
Пользователь №: 83 820



Спасибо всем, разобрался.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 23:27
Рейтинг@Mail.ru


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