Jump to content

    
Sign in to follow this  
14PushOk14

Генератор синусоидальных сигналов метод прямого цифрового синтеза

Recommended Posts

Мне надо организовать Генератор синусоидальных сигналов методом прямого цифрового синтеза. Нашел несколько кодов на VHDL, но в одном и кодов(1) нет входа выбора тактовой частоты. Можно ли его как нибудь туда добавить. С другим кодом(2) никак не могу разобраться, есть ли в нём этот вход или нет. Ещё не могу понять что нужно подавать на входа(когда делаю симуляцию в quartus 9.0).

(1)- dds_sin.vhd

(2)-(

constants.vhd

cos_rom.vhd

dds.vhd

sin_rom.vhd

)

 

Share this post


Link to post
Share on other sites

Попробую вам помочь, хотя и не силен я в VHDL.

 

Вот вы говорите, что " в одном из кодов(1) нет входа выбора тактовой частоты. Можно ли его как нибудь туда добавить."

 

Имеется в виду что? Тактирование схемы? В портах модуля описан тактовый вход.

CLK : in std_logic; -- Вход тактовой частоты.

 

Может вы имели ввиду ввод частоты полученного колебания?

В том же коде(1) при асинхронном сбросе схемы описана строка с комментарием:

 

freq_reg <= X"0CCC_CCCD"; -- 2 МГц, при тактовой 40МГц Fout = FREQ_REG*Fs/2^32; FREQ_REG = Fout*2^32/Fs

 

Собственно значением этого регистра и задается частота синусоиды на выходе.

 

 

Share this post


Link to post
Share on other sites
Препод сказал что в этом коде нет входа выбора частоты. Я уже долго себе голову ломаю над этим входом.

Попробуйте

вывести наружу регистр

freq_reg <= X"0CCC_CCCD";

 

или/и

 

выбор частоты в простейшем случае это связка счетчик + мультиплексор. Выход мультиплексора это и есть тактовая частота для Вашего модуля... Счетчик это делитель Вашей тактовой частоты. Управление осуществляется через мультиплексор (PS при переключении частоты возможны глитчи, чтобы их не было нужна доп. схема для управления мультиплексором.)

Более сложный и правильный вариант это использовать динамически реконфигурируемый PLL

(подробнее здесь)

 

Описанное нужно сделать и добавить в проект

Share this post


Link to post
Share on other sites

Весь синтезатор делается на двух регистрах, сумматоре и ПЗУ синуса. Объем ПЗУ определяется требованиями по точности и искажениям. Набортного ОЗУ циклона-3 хватает даже на 16-разрядные семплы.

post-41263-1324910392_thumb.png

Share this post


Link to post
Share on other sites
Весь синтезатор делается на двух регистрах, сумматоре и ПЗУ синуса. Объем ПЗУ определяется требованиями по точности и искажениям. Набортного ОЗУ циклона-3 хватает даже на 16-разрядные семплы.

Вот бы ещё код к этому блоку был... Было бы супер!

Share this post


Link to post
Share on other sites
Вот бы ещё код к этому блоку был... Было бы супер!

а что именно вы не понимаете в описании взятого с сайта

 

там вроде все очень подробно описано...

Share this post


Link to post
Share on other sites

Там то всё норм, всё работает, всё отлично! Принес преподу, он сказал что в том коде не хватает входа который задает частоту. Может что то я не могу понять, или мой препод что то не понял... Посмотрите по точнее есть ли этот вход?

Share this post


Link to post
Share on other sites
Там то всё норм, всё работает, всё отлично! Принес преподу, он сказал что в том коде не хватает входа который задает частоту. Может что то я не могу понять, или мой препод что то не понял... Посмотрите по точнее есть ли этот вход?

Вы внимательно прочитайте 5 сообщение Maverick.

Share this post


Link to post
Share on other sites
А кто нибудь может вывести этот регистр наружу? (в vhdl я не очень понимаю)

 

signal freq_reg: unsigned(0 to Nph_reg-1); - эту строчку комментируете.

а там где port(xxxx);

Добавляете freq_reg: in unsigned(0 to Nph_reg-1);

 

Ну и читаете соответствующую литературу. Иначе нифига вы курсовик не сдадите.

Share this post


Link to post
Share on other sites
signal freq_reg: unsigned(0 to Nph_reg-1); - эту строчку комментируете.

а там где port(xxxx);

Добавляете freq_reg: in unsigned(0 to Nph_reg-1);

 

Ну и читаете соответствующую литературу. Иначе нифига вы курсовик не сдадите.

Не получается, при компиляции ошибку выдаёт. Можно по подробнее написать как сделать это?

Share this post


Link to post
Share on other sites
Не получается, при компиляции ошибку выдаёт. Можно по подробнее написать как сделать это?

чем то, ваша тема мне напоминает старый мультфильм про двоих из ларца, одинаковых с лица. Дать вам еды, ложку, поднести ко рту, а теперь еще и прожевать. При таком подходе предлагаю переместить вашу тему в подфорум "Предлагаю работу". Т.к. он больше подходит тематически к вашей теме.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this