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

 
 
> синтез частоты, не работает(
mcaffee
сообщение Mar 11 2013, 19:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 9-10-12
Пользователь №: 73 873



Всем доброго времени суток!
На работе пытаемся организовать такой процесс(синтез частоты путем DDS) :через spi загружается 40 разрядный входной код. Этот код поступает в сумматор. С выхода сумматора от получившейся суммы берутся 10 старших разрядов и они сравниваются с таблицей синусов. На выходе соответственно получается 10 разрядов кода синуса. Предполагается далее подать это на цап и увидеть синус. Но возникла проблема.( При проверки правильности работы плис обнаружилось,что сумматор работает правильно,это подтвердилось проверкой на осциллографе и в ModelSIm, а вот сравнение по таблице синусов дает сбой( Выдает неправильные значения из таблицы,некоторых в таблице даже нет! Очень странно(
Вот фрагменты кода, отвечающего за сравнение по таблице синусов:
Код
mkk : PROCESS  ( clock )
        
    BEGIN
        if Clr = '1' then
         sout <= "0000000000";
          ELSIF true THEN
        IF rising_edge( clock ) THEN
        case S_out2(39 downto 30) is

        when "0000000000" =>
        sout <= "0000000000";

        when "0000000001" =>
        sout <= "0000000011";

        when "0000000010" =>
        sout <= "0000000110";

........и т.д. всего 1024 раза

       when "1111111111"=>
        Sout <= "1111111011";

        when others => null;
       END CASE;
  
        END IF;
        END IF;
vihod <= Sout;
    END PROCESS;

vihod подается на выходной порт и по нему смотрится итоговый результат.
Сумматор также складывает с каждым приходящим фронтом (rising_edge) тактовой частоты.
Была попытка разнести суммирование и сравнение по фронту и спаду такта,но она тоже не привела к 100% улучшению. Если так сделать, например, суммирование по фронту, а сравнение по спаду, то в итоге получались правильные результаты из таблицы синусов,но только на пол периода. Точнее,когда у нас идет спад, должно появляться значение из таблицы синусов,но оно появлялось неверным, а при фронте такта появляется верное значение из таблицы синусов,хотя оно вообще появляться не должно!в коде прописано,что сравнение по спаду!Как так?Помогите разобраться!;)
Причина редактирования: используйте теги для оформления кода (с) модератор
Go to the top of the page
 
+Quote Post



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

 


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


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