Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> VHDL

Cómo usar un ciclo while en VHDL

En el tutorial anterior, aprendimos cómo usar un For-Loop para iterar sobre un rango de enteros. Pero, ¿qué pasa si queremos un control más detallado del ciclo que solo un rango de enteros fijo? Podemos usar un ciclo while para esto.

El ciclo while continuará iterando sobre el código adjunto siempre que la expresión que prueba se evalúe como true . Por lo tanto, el ciclo while es adecuado para situaciones en las que no se sabe exactamente cuántas iteraciones se necesitarán por adelantado.

Esta publicación de blog es parte de la serie Tutoriales básicos de VHDL.

La sintaxis del ciclo while es:

while <condition> loop
end loop;

El <condition> es un true booleano o false . También puede ser una expresión que evalúe a true o false . La condición se evalúa antes de cada iteración del ciclo, y el ciclo continuará solo si la condición es true .

Expresión de ejemplo que es true si i es menor que 10:

i < 10

Expresión de ejemplo que es true si i no es 10:

i /= 10

Expresión de ejemplo que es true si i es mayor o igual a 0 y menor a 2 8 =256:

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

Operadores relacionales:

= igual
/= no igual
< menor que
<= menor que o igual
> mayor que
>= mayor que o igual

Operadores lógicos:

no un verdadero si a es falso
a y b verdadero si a y b son ciertas
a o b verdadero si a o b son ciertas
a y b verdadero si a o b es falso
a ni b verdadero si a y b son falsos
a xor b verdadero si exactamente uno de a o b son ciertas
a xnor b verdadero si a y b son iguales

Ejercicio

En este video tutorial, aprendemos a usar una variable para controlar un ciclo while:

El código final que creamos en este tutorial:

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;

La salida a la consola del simulador cuando presionamos el botón ejecutar en 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

Análisis

Creamos una variable entera i y le dimos un valor inicial de 0. Usamos una expresión en el ciclo while que es verdadera siempre que i es menor que 10. Porque estábamos incrementando i por 2 en cada iteración, el último número que se imprimió fue 8.

En la siguiente iteración, el i < 10 evaluado a false porque 10 no es menor que 10. Después de que terminó el ciclo, el programa presionó el wait; donde se detuvo infinitamente.

Para llevar

Realice el cuestionario básico de VHDL, parte 1 »
o
Pase al siguiente tutorial »


VHDL

  1. ¿Cómo utilizamos el molibdeno?
  2. Cómo crear una lista de cadenas en VHDL
  3. Cómo detener la simulación en un banco de pruebas VHDL
  4. Cómo crear un controlador PWM en VHDL
  5. Cómo generar números aleatorios en VHDL
  6. Cómo usar un procedimiento en un proceso en VHDL
  7. Cómo usar una función impura en VHDL
  8. Cómo usar una función en VHDL
  9. Cómo crear una máquina de estados finitos en VHDL
  10. Cómo usar un procedimiento en VHDL
  11. Cómo usar una amoladora cortadora