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

 
 
> глюк в Signal Tap, переменным присваеивается непонятный сигнал
mr.alexeevas
сообщение Sep 18 2013, 06:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Подключил через Qsys SDRAM к проекту, написал машину состояний для управления памятью и передачей данных через FTDI на компьютер. Стал смотреть, что происходит в проекте через Signal Tap, а там такой глюк скрин прилагаю ниже.

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


Вопрос, почему переменной counter_wr, в некоторые разряды проникла клоковая частота, в данном случае counter_wr[5] ? Как с этим бороться?
Прилагаю и кусок кода, чтобы было понятно, что такое counter_wr.
Код
    signal counter_rd             : integer range low_level to 33554431 :=low_level;
    signal counter_wr             : integer range low_level to 33554431 :=low_level;    
    
    signal read_or_write                : integer range low_level to 33554431 :=low_level;
    signal rg_read_or_write        : integer range low_level to 33554431 :=low_level;

    signal count                : std_logic; -- сигнал, разрешающий считать счетчику counter_wr
    signal rg_write_on_FTDI        : std_logic;
begin

--------------------------------------------------------------
---=======     смена текущего состояния с.машины
--------------------------------------------------------------
    process(clk, clk_en, sclr, next_state, N_valid, cur_state, rg_valid, count)
    begin
        if rising_edge(clk) then
            if sclr = '1' then
            ----------
                cur_state <= st_check_counter;
                ---------------
                rg_valid <= '0';
                ---------------
                rg_read_from_m <= '1';
                rg_write_to_m <= '1';
                ---------------
                rg_address <= (others => '0');
                ---------------
                counter_wr <= low_level;
                counter_rd <= low_level;
                ---------------
                rg_read_or_write <= low_level;
                
                
                rg_write_on_FTDI <= '0';
            ----------
            elsif clk_en = '1' then
            ----------
                cur_state <= next_state;
                ---------------
                rg_valid <= N_valid;
                ---------------    
                rg_address <= N_address;
                ---------------
                if N_write_to_m = '0' then
                    counter_wr <= counter_wr+1;
                else counter_wr <= counter_wr;
                end if;    
                ---------------
                if count = '1' then
                    counter_rd <= counter_rd+1;
                    rg_write_on_FTDI <= '1';
                else counter_rd <= counter_rd;
                    rg_write_on_FTDI <= rg_write_on_FTDI;
                end if;    
                ---------------
                rg_read_from_m <= N_read_from_m;
                rg_write_to_m <= N_write_to_m;
                ---------------
                rg_read_or_write <= read_or_write;
            ----------
            else
            ----------
                cur_state <= cur_state;
                ---------------
                rg_valid <= rg_valid;
                ---------------    
                rg_read_from_m <= rg_read_from_m;
                rg_write_to_m <= rg_write_to_m;
                ---------------
                counter_wr <= counter_wr;
                counter_rd <= counter_rd;
                ---------------
                rg_address <= rg_address;
                ---------------
                rg_read_or_write <= rg_read_or_write;
                
                
                rg_write_on_FTDI <= rg_write_on_FTDI;
            ----------
            end if;
        end if;
    end process;
--============================================================
--============================================================

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DENth
сообщение Sep 18 2013, 10:26
Сообщение #2


Участник
*

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



Вы противоречите сами себе. 200 МГц как раз-таки очень даже используется. На весь сигнал тап. А он оперирует теми же блоками памяти, что и остальной проект.
А имел я ввиду следующее:


Отсюда видно, что предел - 274 МГц в вашем случае. Но это в теории.
А из приведенного Вами отчета видно, что Вы не используете временной анализ. Компилятору неизвестно ничего о каких-либо ограничениях и о том, как должен работать проект.
О чем он и пишет в первой приведенной строке. Задайте констрейны на указанные в варнингах клоки и посмотрите на отчет анализатора.

Без использования временных ограничений проект будет жить своей жизнью =)
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Sep 18 2013, 10:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(DENth @ Sep 18 2013, 14:26) *
А из приведенного Вами отчета видно, что Вы не используете временной анализ. Компилятору неизвестно ничего о каких-либо ограничениях и о том, как должен работать проект.
О чем он и пишет в первой приведенной строке. Задайте констрейны на указанные в варнингах клоки и посмотрите на отчет анализатора.

Без использования временных ограничений проект будет жить своей жизнью =)


Вот и пришло время вплотную заняться констрейнами, до этого все как-то обходился без них) порекомендуете литературу или ссылке, где можно это дело изучить и с чего начать? Спасибо)
Go to the top of the page
 
+Quote Post



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

 


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


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