VHDL SECUENCIAL

Anuncio
VHDL SECUENCIAL
1
VHDL SECUENCIAL
Sentencias secuenciales:
Sentencias que sólo pueden aparecer dentro de procesos
y subprogramas.
• Wait
• If-then-else
• Case
• Lazos:
• Infinite Loop
• While Loop
• For Loop
VHDL SECUENCIAL
2
If-Then-Else
• Permite desviar el flujo de ejecución dentro de
un proceso o subprograma.
VHDL SECUENCIAL
3
If-Then-Else
VHDL SECUENCIAL
4
If-Then-Else
VHDL SECUENCIAL
5
Case
• Permite seleccionar una entre varias alternativas
excluyentes entre sí de una expresión.
• Si se usa “others” debe ser la última alternativa.
VHDL SECUENCIAL
6
Case
VHDL SECUENCIAL
7
Case: Null
• Case: Asignación de valor para cada posibilidad.
• A veces no se requiere ninguna acción para una de las
posibilidades “null”.
null_stmt <= [ label : ] null ;
case opcode is
when add => acc = acc + op;
when sub => acc = acc – op;
when nop => null;
end case;
VHDL SECUENCIAL
8
Lazos: 3 tipos
• Lazos:
• Infinite Loop
• While Loop
• For Loop
VHDL SECUENCIAL
9
Lazos: 3 tipos
VHDL SECUENCIAL
10
Infinite Loop
• No se especifica esquema de iteración.
• Es un bucle infinito que se ejecuta repetidamente hasta
que alguna acción implica su fin.
• Para terminar el lazo: exit, next.
VHDL SECUENCIAL
11
Infinite Loop: EXIT
exit_stmt <=
[ label : ]
exit [ loop_label : ] [ when boolean_expr ] ;
exit ; -- Sale del lazo interno
VHDL SECUENCIAL
12
Infinite Loop: EXIT
loop
…
exit ; -- Sale del lazo más interno.
…
end loop;
……
……
-- Exit implica seguir en esta sentencia.
exit loop1; -- sale del lazo llamado loop1
exit when x = 1; -- sale del lazo más interno cuando se verifica
condición.
VHDL SECUENCIAL
13
Infinite Loop: NEXT
• Comienza la siguiente iteración del lazo.
next_stmt <=
[ label : ]
next [ loop_label : ] [ when boolean_expr ] ;
next ; -- provoca comienzo siguiente iteración del lazo
loop
A: ………
…
next ; -- Salta a la sentencia etiquetada con A
B: …… -- La sentencia B y las siguientes no serán ejecutadas
…
end loop;
VHDL SECUENCIAL
14
While Loop
• Permite imponer una condición de repetición.
• El bucle se repite mientras que la condición que
aparece tras “while” sea verdadera.
VHDL SECUENCIAL
15
For Loop
• Ejecución de un bucle un número fijo de veces.
VHDL SECUENCIAL
16
For Loop
• Resultan necesarias las indicaciones de un índice
y un rango.
• El índice es una variable discreta, enumerada o
entera, que no es preciso declarar.
• El índice cambia su valor en una unidad por cada
ejecución del bucle a lo largo del rango
especificado.
Descargar