Está en la página 1de 19

3.

Diseño Digital usando VHDL


3.8. Sentencias para flujo de datos
3.8.1. Sentencias de sincronización
SENTENCIA wait
Se utiliza para la suspensión de un proceso
Sintaxis uso wait
• [etiqueta :] wait [ on señal {,…}]
• [ until expresión_booleana]
• [ for expresión_tiempo]

No es soportada por Quartus II, podría utilizarse solo en otro Software.


3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.2. Sentencias Condicionales
LA SENTENCIA IF
Se utiliza para escoger en función de alguna condición la
sentencia que debe ejecutarse.

Sintaxis:

if condición_booleana then sentencias_secuenciales


{ elsif condición_booleana then sentencias_secuenciales }
[else sentencias_secuenciales]
end if;
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.2. Sentencias Condicionales
LA SENTENCIA IF
Se utiliza para escoger en función de alguna condición la
sentencia que debe ejecutarse.

Sintaxis: Los posibles usos de IF serían:


Primera opción
IF condición THEN
SENTENCIAS
END IF;

Segunda opción
IF condicion THEN SENTENCIAS
ELSE SENTENCIAS
END IF;
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.2. Sentencias Condicionales
LA SENTENCIA IF
Sintaxis:
Tercera opción:
IF condición THEN SENTENCIAS
ELSIF condición THEN SENTENCIAS
ELSIF condición THEN SENTENCIAS . . .
END IF;

La condición de selección debe ser un valor o un objeto BOOLEAN


3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.2. Sentencias Condicionales
LA SENTENCIA CASE
Se utiliza para escoger el grupo de sentencias que deben ejecutarse
entre un conjunto de posibilidades, en función de los valores de una
determinada expresión.

Sintaxis:
CASE expresión IS
WHEN valor => SENTENCIAS
WHEN rango_de_valores => SENTENCIAS
WHEN OTHERS => SENTENCIAS (debe incluirse Others, cuando no se
escriben todos los posibles valores)
END CASE;
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.2. Sentencias Condicionales
LA SENTENCIA CASE

Los valores especificados para la selección de la sentencia case deben


cumplir dos condiciones:

• La intersección entre el rango de valores especificados en las


distintas opciones de la sentencia case debe ser nula.
• La unión de todos los valores especificados debe cubrir todos los
valores posibles que pueda tomar la variable de selección
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA LOOP
Se utiliza para ejecutar un grupo de sentencias repetidamente.
Sintaxis:
[etiqueta :] [while condición_booleana |for control_repeticion]
loop sentencias_secuenciales
end loop [etiqueta];

Uso como bucle infinito.

Ejemplo: contador de 4 bits con valor inicial.


3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA LOOP

El bucle indeterminado como el siguiente:


LOOP sentencias END LOOP;

Puede dar lugar a códigos mal estructurados, por lo que, en la medida de lo


posible, debe evitarse, utilizándose en su lugar los bucles FOR y WHILE, que
tienen la siguiente forma:

FOR variable_del_bucle IN rango LOOP


sentencias
END LOOP;

WHILE condicion LOOP


sentencias
END LOOP;
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA LOOP
Ejemplos uso loop
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA LOOP
Ejemplos uso loop, con for y while
3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA EXIT y NEXT

En los bucles (LOOP) pueden utilizarse sentencias EXIT y NEXT que sirven,
respectivamente, para salir o finalizar una determinada iteración.

EXIT nombre_de_bucle; o EXIT nombre_de_bucle WHEN condición;

y NEXT nombre_de_bucle; o NEXT nombre_de_bucle WHEN condición;


3. Diseño Digital usando VHDL
3.8. Sentencias para flujo de datos
3.8.3. Otras sentencias
LA SENTENCIA NULL

La sentencia null no realiza ninguna acción. Resulta útil en ramas de la


sentencia case a las que no corresponde ningún grupo de sentencias. Su
forma es:

null;
3. Diseño Digital usando VHDL
3.9. Subprogramas
Además de los operadores predefinidos, el lenguaje VHDL permite el uso de
subprogramas para el diseño de operaciones de computación y el modelado
hardware.

El lenguaje proporciona dos tipos de subprogramas: las funciones y los


procedimientos. Estas construcciones son semejantes a las existentes en los lenguajes
de programación de alto nivel.

Los subprogramas (procedimientos o funciones) pueden ser llamados desde cualquier


parte de un código secuencial.

Al ejecutarse una llamada a un subprograma éste se ejecuta y retorna el control a la


siguiente instrucción secuencial.

Sintaxis:
La sintaxis básica de la declaración de funciones y procedimientos es:

FUNCTION nombre_de_función (lista_de_parámetros) RETURN tipo_de_datos;


PROCEDURE nombre_de_procedimiento(lista_de_parámetros);
3. Diseño Digital usando VHDL
3.10 Ejemplos VHDL
3. Diseño Digital usando VHDL
3.10 Ejemplos VHDL
3. Diseño Digital usando VHDL
3.10 Ejemplos VHDL
3. Diseño Digital usando VHDL
3.10 Ejemplos VHDL
Sumador Completo
3. Diseño Digital usando VHDL
3.11 Ejercicio en Clase: VHDL, Quartus II y FPGA
Desarrollar el circuito que tenga la siguiente Tabla de Verdad, sin
calcular la expresión algebraica, ni reducirla algebraicamente o por
Karnaugh, utilizando el método de descripción COMPORTAMENTAL de
VHDL
A B C x
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
3. Diseño Digital usando VHDL
3.12. Ejercicio para terminar próxima clase 25 de
abril (En los grupos conformados previamente)
Desarrollar un circuito utilizando VHDL, a través del SW Quartus, que realice
la siguiente funcionalidad:

Sistema de 2 juegos de luces de 4 leds, controlados por 2 botones de


entrada, al presionar un botón se ejecuta el primer juego de luces
indefinidamente, al presionar un segundo botón, se ejecuta el segundo
juego de luces indefinidamente.

El primer juego de luces de 4 leds, hace que se encienda el primer led


por un segundo, luego se apague y encienda el segundo, luego se
apague y encienda el tercero, así sucesivamente hasta apagar el 4 led y
vuelve a iniciar encendiendo el primero.

El segundo juego de luces de 4 leds, hace que se enciendan los 4 leds al


mismo tiempo por 2 segundos y se apaguen al mismo tiempo por 2
segundos. Luego vuelve a iniciar la secuencia.

También podría gustarte