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.