Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при моделировании счетчика в Libero
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
lex_84
Прошу помощи! help.gif
Проблема заключается в следующем:
при моделировании в Modelsim выдается ошибка

# ** Fatal: (vsim-3421) Value -1 for counter2_fk is out of range 0 to 2047.
# Time: 262500 ps Iteration: 6 Process: ...
# Fatal error in Process line__457 at ...

Код приведен ниже:

Код
PROCESS (reset, f1m, load_fk, set_fk)
    BEGIN
        IF    reset = '0' THEN
        counter2_fk <= 0;
        fk <= '0';
        sign <= '0';
        ELSIF (f1m'EVENT AND f1m = '1') THEN
            IF load_fk = '1' THEN
            counter2_fk <= Conv_Integer(fk_data);
            sign <= fk_sign;
            ELSE counter2_fk <= counter2_fk - 1;
            END IF;
            IF counter2_fk = 0 THEN fk <= '0'; counter2_fk <= 2047;
            END IF;
            IF set_fk = '1' THEN fk <= '1';
            END IF;
        ELSE counter2_fk <= counter2_fk;
        END IF;
END PROCESS;


Что надо изменить чтобы от нее избавиться? Вроде бы все правильно?

На работу схемы она не влияет, но хотелось бы ее убрать.
sazh
Цитата(lex_84 @ Jun 13 2008, 15:41) *
Что надо изменить чтобы от нее избавиться? Вроде бы все правильно?

На работу схемы она не влияет, но хотелось бы ее убрать.


Наверно счетчик описать в одном if else, соблюдая рекомендации по приоритетности:
асинхронный ресет, синхронная загрузка, загрузка по коэффициенту пересчета, счет

IF load_fk = '1' THEN
counter2_fk <= Conv_Integer(fk_data);
ELSEIF counter2_fk = 0 THEN counter2_fk <= 2047;
ELSE counter2_fk <= counter2_fk - 1;
END IF;
lex_84
Цитата(sazh @ Jun 13 2008, 19:39) *
Наверно счетчик описать в одном if else, соблюдая рекомендации по приоритетности:
асинхронный ресет, синхронная загрузка, загрузка по коэффициенту пересчета, счет

IF load_fk = '1' THEN
counter2_fk <= Conv_Integer(fk_data);
ELSEIF counter2_fk = 0 THEN counter2_fk <= 2047;
ELSE counter2_fk <= counter2_fk - 1;
END IF;


Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.