Перейти к содержанию
    

DimiD

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные DimiD


  1. Здравствуйте, друзья

    Хочу сказать большое спасибо всем, кто откликнулся на просьбы о помощи.

    Проблема, как и ожидалось, решилась сама. Очень помогла вот эта статья

    https://riptutorial.com/ru/vhdl/example/21010/сигналы-против-переменных--краткий-обзор-семантики-моделирования-vhdl

    Видимо, я слишком быстро полез в VHDL, но в итоге всё получилось.

  2. 12 минут назад, yes сказал:

    может получится избежать тем, что в объявлении сигнала CT дописать :="00000000";

    Я присваиваю CT значение как CT <= delta; delta объявлено в ENTITY как delta : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

  3. Здравствуйте, дорогие друзья!
    Разбираюсь с VHDL и до того как засунуть что-то в FPGA, решил для наглядности промоделировать в Active-HDL.
    Моделирую устройство сложения/вычитания чисел с плавающей запятой (дипломный проект).

    Пока в коде всё идет линейно - проблем нет. Но как только я дохожу до цикла, в частности цикла сдвига мантисс при выравнивании порядков, у меня возникают проблемы.

    Вот кусок кода.

    Цитата

    ---- Цикл сдвигов мантисс
        PROCESS (CT)
        BEGIN
            LOOP
                -- Признак delta == 0
                IF CT = "00000000" THEN
                    EXIT;
                END IF;
                IF CT(7) = '1' THEN    
                    CT <= CT + 1;
                    RMA(21 DOWNTO 0) <= RMA(22 DOWNTO 1);
                    RMA(22) <= '0';
                ELSE
                    CT <= CT - 1;
                    RMB(21 DOWNTO 0) <= RMB(22 DOWNTO 1);
                    RMB(22) <= '0';
                END IF;     
            END LOOP;
        END PROCESS;

    delta здесь - разница между порядками чисел. Не вглядывайтесь в алгоритм, суть в том, что значение CT не меняется. Я не могу посмотреть его при отладке (всегда UUUUUUUU), и цикл получается вечным.

    Подскажите, то ли Active-HDL такой тупой, то ли я. Может стоит использовать какую-то интовую переменную (тоже в цикле не меняется, как ни стараюсь). Рассмотрю все возможные решения. Заранее спасибо.

×
×
  • Создать...