Как использовать цикл 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(). , и мы использовали & символ для соединения двух строк вместе.
Вывод
- Цикл For-Loop может перебирать увеличивающийся или уменьшающийся целочисленный диапазон
- Увеличивающийся диапазон обозначается
to, и уменьшение диапазона наdownto - Целое число можно преобразовать в строку с помощью
integer'image(). - Две строки можно соединить с помощью символа конкатенации строк
&.
Перейти к следующему руководству »
VHDL
- Как мы используем молибден?
- Как создать список строк в VHDL
- Как остановить симуляцию в тестовом стенде VHDL
- Как создать ШИМ-контроллер на VHDL
- Как генерировать случайные числа в VHDL
- Как использовать процедуру в процессе в VHDL
- Как использовать нечистую функцию в VHDL
- Как использовать функцию в VHDL
- Как создать конечный автомат на VHDL
- Как использовать шлифовальный станок