Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> VHDL

Как использовать цикл while в VHDL

В предыдущем уроке мы узнали, как использовать цикл For-Loop для перебора целочисленного диапазона. Но что, если нам нужно более детальное управление циклом, чем просто фиксированный диапазон целых чисел? Для этого мы можем использовать цикл while.

Цикл While будет продолжать перебирать заключенный код до тех пор, пока выражение, которое он проверяет, оценивается как true. . Таким образом, цикл While подходит для ситуаций, когда вы заранее точно не знаете, сколько итераций потребуется.

Эта запись в блоге является частью серии учебных пособий по основам VHDL.

Синтаксис цикла While:

while <condition> loop
end loop;

<condition> является логическим true или false . Это также может быть выражение, которое оценивается как true. или false . Условие оценивается перед каждой итерацией цикла, и цикл будет продолжаться, только если условие true .

Пример выражения true если i меньше 10:

i < 10

Пример выражения true если i не 10:

i /= 10

Пример выражения true если i больше или равно 0 и меньше 2 8 =256:

i >= 0 and i < 2**8;

Реляционные операторы:

= равно
/= не равно
< меньше
<= меньше или равно
> больше, чем
>= больше или равно

Логические операторы:

нет а true, если а неверно
а и б true, если а и б верны
а или б true, если а или б верны
а нанд б true, если а или б неверно
а ни б true, если а и б являются ложными
а исключающее или б true, если ровно один из a или б верны
а xnor б true, если а и б равны

Упражнение

В этом видеоуроке мы научимся использовать переменную для управления циклом While:

Окончательный код, который мы создали в этом руководстве:

entity T05_WhileLoopTb is
end entity;

architecture sim of T05_WhileLoopTb is
begin

    process is
        variable i : integer := 0;
    begin

        while i < 10 loop
            report "i=" & integer'image(i);
            i := i + 2;
        end loop;
        wait;

    end process;

end architecture;

Вывод в консоль симулятора, когда мы нажали кнопку запуска в ModelSim:

VSIM 2> run
# ** Note: i=0
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=2
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=4
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=6
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=8
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb

Анализ

Мы создали целочисленную переменную i и присвоили ему начальное значение 0. Мы использовали выражение в цикле While, которое верно до тех пор, пока i меньше 10. Поскольку мы увеличивали i на 2 в каждой итерации, последнее число, которое было напечатано, было 8.

На следующей итерации i < 10 оценивается как false потому что 10 не меньше 10. После завершения цикла программа попала в wait; где он остановился на бесконечность.

Вывод

Пройдите базовый тест VHDL — часть 1 »
или
перейдите к следующему руководству »


VHDL

  1. Как мы используем молибден?
  2. Как создать список строк в VHDL
  3. Как остановить симуляцию в тестовом стенде VHDL
  4. Как создать ШИМ-контроллер на VHDL
  5. Как генерировать случайные числа в VHDL
  6. Как использовать процедуру в процессе в VHDL
  7. Как использовать нечистую функцию в VHDL
  8. Как использовать функцию в VHDL
  9. Как создать конечный автомат на VHDL
  10. Как использовать шлифовальный станок