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

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

В предыдущем уроке мы научились создавать бесконечный цикл с помощью loop утверждение. Мы также узнали, как выйти из цикла с помощью exit утверждение. Но что, если мы хотим, чтобы цикл повторялся определенное количество раз? Цикл For-Loop — самый простой способ сделать это.

Цикл For-Loop позволяет перебирать фиксированный диапазон целых чисел или перечисляемых элементов. Элемент, принадлежащий текущей итерации, будет доступен внутри цикла через неявно объявленную константу.

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

Синтаксис цикла For-Loop:

for <c> in <r> loop
end loop;

<c> произвольное имя константы, которая будет доступна внутри цикла. <r> представляет собой диапазон целых чисел или перечисляемых значений, по которым будет проходить цикл. Целочисленный диапазон может увеличиваться или уменьшаться.

Код VHDL для возрастающего диапазона, включающего все 10 чисел от 0 до 9:

0 to 9

Код VHDL для уменьшающегося диапазона, включающего все 10 чисел от 9 до 0:

9 downto 0

Код VHDL для диапазона, включающего только число 0:

0 to 0

Код VHDL для пустого диапазона, в котором вообще нет чисел:

0 to -1

Упражнение

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

entity T04_ForLoopTb is
end entity;

architecture sim of T04_ForLoopTb is
begin

    process is
    begin

        for i in 1 to 10 loop
            report "i=" & integer'image(i);
        end loop;
        wait;
        
    end process;

end architecture;

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

VSIM 2> run
# ** Note: i=1
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=2
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=3
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=4
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=5
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=6
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=7
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=8
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=9
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=10
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb

Анализ

Не совсем неожиданно наш цикл For-Loop повторился десять раз, прежде чем завершиться. Значение i выводится на консоль симулятора десять раз в момент времени моделирования 0. Внутри цикла нет инструкции ожидания, поэтому для завершения цикла требуется нулевое время. Наконец, программа переходит в бесконечную паузу на wait; .

Мы научились преобразовывать целое число в строку с помощью integer'image(). , и мы использовали & символ для соединения двух строк вместе.

Вывод

Перейти к следующему руководству »


VHDL

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