Sunteți pe pagina 1din 28

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Son sentencias de control de flujo de programa, parecidas a las de cualquier lenguaje software, que se utilizan para modelar la funcionalidad de un componente. Tipos:
Sentencias de sincronizacin: wait Sentencias de asignacin: seales, variables Sentencias condicionales: if-then-else Sentencias iterativas: loop, exit, next O Otras sentencias: assert, report, null , p , Llamadas a subprogramas

Las sentencias secuenciales nicamente pueden aparecer en el interior de un proceso.


architecture begin secuenci ial secuencial
P1:process begin end; d P2:process begin end;

Entorno c concurrente

end;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

PROCESO
Es una sentencia concurrente en cuyo interior las sentencias se ejecutan secuencialmente en tiempo cero. Su sintasis es:
[etiqueta :] process (lista de sensibilidad) {zona de declaracin} begin {algoritmo de procesamiento} end process [etiqueta]; Lista de sensibilidad (optativa). Conjunto de seales que provocan la activacin del proceso Zona de declaracin. Se declaran objetos locales al mismo (tpicamente variables) Algoritmo de procesamiento. Se construye con sentencias similares a los lenguajes de alto nivel (C/C++/ADA).

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

S b l infinitos: Son bucles i fi it


al llegar al final (end process) vuelven al principio (begin)

Los procesos se ejecutan (se disparan) cuando se producen eventos en las seales para los que son sensibles. Un proceso es sensible a las seales incluidas en la lista de sensibilidad o alternativamente a las seales que aparecen en sentencias wait dentro del proceso (son formas excluyentes). Cada vez que en una de las seales a la que es sensible un proceso ocurre un evento, se produce la siguiente ejecucin:
Con lista de sensibilidad, se ejecutan todas las sentencias incluidas en l, suspendindose la ejecucin al alcanzarse la ltima sentencia del proceso. Con sentencia wait, se ejecutan las sentencias que sigan a sta hasta alcanzar una nueva sentencia wait.
process begin g Ejecucin sent_1; . Suspenso wait on a,b; sent_i; Despierta sent_N; end process;
Evento a, b

process (a b) (a,b) Despierta begin sent_1; Ejecucin Evento a, b . sent_N; Suspenso end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA wait it
Se utiliza para la suspensin de un proceso Sintaxis:
[ q [etiqueta :] wait [ on seal {,}] ] { }] [ until expresin_booleana] [ for expresin_tiempo]

Formas de uso:
Sin ningn tipo de condicin: cuando el proceso llega a la sentencia wait se suspende indefinidamente.
process begin sentencias_secuenciales wait; end process;

Con lista de seales: esta forma establece las seales a las que es sensible el proceso. Cuando en alguna de las seales se produce un evento el proceso despierta.
process begin c<=a and b; wait on a, b; end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES C di i de reactivacin condicional: wait until, se Condicin d i i di i l i i suspende el proceso hasta que se verifique la condicin anexa.
process begin q<=d; wait until reloj=1; -- equivale a wait on reloj until reloj=1; end process;

Condicin de reactivacin por tiempo: wait for, se especifica el tiempo que va a estar dormido el proceso.
process begin Reloj <= not Reloj; wait for 10 ns; end process;

Se pueden mezclar las distintas opciones de la sentencia wait.


wait on a, b until c=1; -- evento en a b y adems c=1 wait on a, b for 10 ns; -- evento en a b tiempo mximo de espera -- de 10 ns.

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Ejemplos de uso de wait.


entity fft is port (clk: in bit; t: in bit; q: inout bit); end fft; architecture rtl of fft is begin process begin wait until clkevent and clk=1; if t=1 then q<=not q; end if; end process; end rtl;
clk t q

entity reloj is port (clk:buffer bit); end reloj; architecture rtl of reloj is begin process begin wait for 200 ns; clk <= not clk; end process; end rtl;

400 ns

clk
0 200 600 1000

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Ejemplos de uso de lista de sensibilidad en lugar de wait.


entity fft is port (clk:in bit; t:in bit; q: out bit); end fft; architecture rtl of fft is begin process (clk) begin if clkevent and clk=1; if t=1 then q<=not q; end if; end if; end process; end rtl;
clk t q

entity reloj is port (clk:buffer bit); end reloj; architecture rtl of reloj is begin p process (clk) ( ) begin clk <= not clk after 200 ns; end process; end rtl;

400 ns

c clk
0 200 600 1000

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

ASIGNACIN A SEAL
Se proyecta un valor en la cola de eventos y se asigna cuando todos los procesos estn suspendidos/inactivos. Cola de eventos: lista con los valores futuros a asignar a la seal ordenados por tiempo.
t 10 ns 20 ns 25 ns 35 ns 40 ns 0 1 0 0 1

Seal

Sintaxis:
[etiqueta:] nombre_seal <= valor {after expresin_tiempo}

Ejemplo:
process begin a <=b; c <=a; wait on a, b, c; end process; Inicio : a=2, b=3, c=1;

Fin : a=3, c=2;

Existen 2 modelos de retardo en la asignacin a seal:


Transporte (transport) : propaga cualquier cambio que se produzca. Inercial (inertial) : filtra cambios de duracin inferior a un mnimo.
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Retardo tipo transporte


Por defecto VHDL supone que las asignaciones a seal siguen el modelo inercial. Sintaxis:
nombre_seal <= [transport] valor [after expresin_tiempo]

En asignaciones posteriores al ltimo evento de la cola se mantiene la anterior. Si la asignacin es anterior a la que hay en la cola se elimina la posterior. Ejemplo de modelo transporte:
process begin s <= transport 0 after 10 ns; 0 s <= transport 1 after 20 ns; wait; end process; p process begin s <= transport 1 after 20 ns; s <= transport 0 after 10 ns; wait; end process; Cola de eventos de s t v t v t v t v 10 ns 0 10 ns 0 20 ns 1 20 ns 1 10 ns 0
9

20 ns 1

Cola de eventos de s

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Retardo tipo inercial


En asignaciones posteriores al ltimo elemento que hay en la cola se elimina el anterior. Si la asignacin es anterior a la que hay en la cola se elimina la posterior. posterior Ejemplo de modelo inercial:
process begin s <= 0 after 10 ns; s <= 1 after 20 ns; wait; end process; process begin s <= 1 after 20 ns; s <= 0 after 10 ns; wait; end process; Cola de eventos de s t v t v 10 ns 0 10 ns 0 20 ns 1

Cola de eventos de s t v t v 20 ns 1 20 ns 1 10 ns 0

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

10

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Diferencia entre retardo inercial y transporte


entity inversor is port(a :in bit; b :out bit); end inversor; architecture rtl of inversor is begin b<= not a after 12 ns; -- b<= transport not a after 12 ns; end rtl; a
b(inercial) b(transporte)

0 ns

20 ns

40 ns

a
b(inercial) b(transporte)

0 ns

20 ns

40 ns
11

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

El retardo inercial es ms real que el de transporte, ya que los circuitos reales filtran las seales de entrada, pero no es cierto que tengan que estar estables un tiempo igual al de propagacin, sino que ste es algo menor. Para simular este comportamiento se usa:
b<= reject 10 ns inertial not a after 12 ns;
Duracin mnima del pulso que pasa Tiempo de propagacin

La sentencia de asignacin permite especificar en una nica sentencia un conjunto de pares (valor, tiempo): (valor
Sintaxis: seal <= [transport] {valor [expresin_tiempo],} Ejemplo:
process begin Operando <= 0 after 10 ns, 10 after 20 ns, 100 after 30 ns; wait; end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

12

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

ASIGNACIN A VARIABLE
Se usan para reemplazar el valor actual de la variable por el valor especificado por una expresin. Sintaxis:
[etiqueta:] nombre_variable := expresin;

La asignacin a variable no tiene ningn retardo asociado: la variable toma el valor en el momento de la asignacin. asignacin Consideraciones:
Las variables son locales a los procesos o subprogramas donde se declaran (entornos secuenciales). Las variables declaradas en un proceso nunca se reinicializan reinicializan. Las variables definidas en un subprograma se reinicializan cada vez que se llame al subprograma. En VHDL-93 se definen variables compartidas: equivale a una variable global donde distintos procesos o subprogramas pueden realizar asignaciones sobre ella. Sintaxis: shared variable nombre_variable: tipo_variable;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

13

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Ejemplo de comportamiento de variables y seales:


--clk seal definida en la entidad architecture ejemplo1 of entidad is signal a, b, c, x, y : integer; begin p1: process (clk) clk begin c <= a; -- se ignora x <= c+2; --2+2 c <= b; --6 ; y <= c+2;--2+2 end process p1; end ejemplo1;

c=2, a=4, b=6

x=4, b=c=6, y=4

--clk seal definida en la entidad architecture ejemplo2 of entidad is signal a, b, x, y : integer; begin p2: process (clk) variable c : integer; clk begin g c:= a; x <= c+2; c := b; y <= c+2; end process p2; end ejemplo2;

c 2, a=4, b=6 c=2, a 4, b 6

x=6, c=6, y=8

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

14

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

LA SENTENCIA if
Se utiliza para escoger en funcin de alguna condicin la sentencia que debe ejecutarse. Sintaxis:
if condicin_booleana then sentencias_secuenciales {elsif condicin_booleana then sentencias_secuenciales} [else sentencias_secuenciales] end if;

Formas de utilizacin:
Evaluacin de una nica condicin que permite o no la ejecucin de una instruccin (o conjunto de ellas). Ejemplo: latch con entrada de datos (Dato) y seal de carga (Carga)
entity latch is port (Carga, Dato : in bit; Salida : out bit); end latch; architecture ejemplo of latch is begin g Dato process begin Carga if Carga = 1 then Salida <= Dato; end if; wait on Carga, Dato; end process; end ejemplo;

Latch

Salida

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

15

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES S l i entre dos grupos de sentencias a ejecutar Seleccin d d i j dependiendo de una condicin. Ejemplo: Modelado de un buffer triestado.
library ieee; use ieee.std_logic_1164.all; entity triestado is y port (Habilitacion, Entrada : in std_logic; Salida : out std_logic); end triestado; architecture ejemplo of triestado is begin process begin g if Habilitacion = 1 then Salida <= Entrada; else Salida <= Z; end if; wait on Habilitacion, Entrada; end process; end ejemplo;

Entrada Habilitacion

Salida

Seleccin entre dos o ms conjuntos de sentencias, cada una de ellas en funcin de distintas condiciones. Ejemplo: Latch anterior con seal de reset (Reset).
process begin if Reset = 0 then Salida <= 0; elsif Carga =1 then Salida <= Dato; end if; wait on Reset, Carga, Dato; end process;

Dato Carga Reset

Latch

Salida

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

16

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA case
Se utiliza para escoger el grupo de sentencias que deben ejecutarse entre un conjunto de posibilidades, en funcin de los valores de una determinada expresin. Sintaxis: i i
[etiqueta :] case expresion is when valor => sentencias_secuenciales; {when valor => sentencias_secuenciales; } end case;

Ejemplo: Modelado de un multiplexor 4 a 1 de 8 bits


entity Mux4a1 is port ( Seleccion : in bit_vector (1 downto 0); E1, E2, E3, E4 : in bit_vector (7 downto 0); Salida : out bit_vector (7 downto 0)); end Mux4a1; architecture ejemplo of Mux4a1 is j p begin process begin case Seleccion is E1 when 00 => Salida <= E1; E2 when 01 => Salida <= E2; when 10 => E3 Salida <= E3; when 11 => E4 Salida <= E4; end case; wait on Seleccion, E1, E2, E3, E4; end process; end ejemplo;

8 8 8 8

Mux4a1 8 bits

Salida

S1 S0

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

17

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

S puede especificar dos o ms valores dentro del rango de Se d ifi d l d t d l d posibles valores que puede tomar la expresin de seleccin usando la unin lgica (|). Ejemplo: Mux3a1.
process begin case S l i is Seleccion when 00 | 01 => Salida <= E1; when 10 => Salida <= E2; when 11 => Salida <= E3; end case; wait on Seleccion, E1, E2, E3; end process;

E1 E2 E3

8 8 8

Mux3a1 8 bits

Salida

S1 S0

Se puede especificar un rango dentro de los posibles valores que puede tomar la expresin de seleccin mediante t d t l i d l i di t to. Ejemplo: Mux2a1
process begin case Seleccion is when 00 to 10 => 00 10 Salida <= E1; when 11 => Salida <= E2; end case; wait on Seleccion, E1, E2; end process;

E1 E2

8 8

Mux2a1 8 bits

Salida

S1 S0

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

18

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Se puede especificar como valor de seleccin la palabra clave others que debe ser la ltima.
process begin case Seleccion is when 00 to 10 => Salida < E1; <= when others => Salida <= E2; end case; wait on Seleccion, E1, E2; end process;

Los valores especificados para la seleccin de la sentencia case deben cumplir dos condiciones:
La interseccin entre el rango de valores especificados en las distintas opciones de la sentencia case debe ser nula. La unin de todos los valores especificados debe cubrir todos los l l valores posibles que pueda tomar la variable de seleccin. ibl d t l i bl d l i
process begin case Seleccion is when 00 => Salida <= E1; when 01 => Salida <= E2; when 10 => Salida <= E3; when 11 => Salida <= E4; when others => Salida <= 00000000; end case; wait on Seleccion, E1, E2, E3, E4; end process; 19

Ejemplo: Mux4a1 con datos del tipo std_logic_vector : no td l i t hay que olvidar los valores que pueden tomar este tipo de datos.

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA loop
Se utiliza para ejecutar un grupo de sentencias repetidamente. Sintaxis:
[etiqueta :] [while condicin booleana | for control repeticion] condicin_booleana control_repeticion] loop sentencias_secuenciales end loop [etiqueta];

Uso como bucle infinito. Ejemplo: contador de 4 bits con valor inicial.
entity contadorl is port (reloj : in bit; cuenta : out natural); end contador1; architecture primera of contador1 is signal contador:natural; begin process begin contador<=0; loop wait until reloj='1'; it til l j '1' contador<=(contador+1) mod 16; end loop; end process; cuenta<=contador; end primera; entity contador2 is port (reloj : in bit; cuenta : inout natural); end contador2; architecture primera of contador2 is begin process begin cuenta <=0; loop wait until reloj='1'; reloj 1 ; cuenta <=(cuenta+1) mod 16; end loop; end process; end primera;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

20

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Se puede definir una condicin de finalizacin mediante la sentencia while condicin_booleana.


Ejemplo: contador anterior usando while
process begin contador<=0; wait until reloj='1'; while contador < 15 loop contador<= contador+1; wait until reloj='1'; end loop; p; end process;

Para controlar el nmero de iteraciones de la sentencia loop se puede utilizar la sentencia for control_repeticin
Ejemplo: contador anterior usando for
process begin contador<=0; for I in 0 to 15 loop p wait until reloj='1'; contador<= contador+1; end loop; end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

21

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA exit
Se utiliza para terminar la ejecucin de un bucle. Sintaxis:
[etiqueta :] exit [etiqueta_loop] [when condicin_booleana]

Presenta 2 opciones: i
Expresa una condicin que si se cumple, finaliza la ejecucin del lazo y pasa a ejecutar la primera sentencia que se encuentre a continuacin Ejemplo: contador mdulo 16 con seal de inicializacin (inicio)
entity contador0_15 is port (reloj, inicio : in bit; cuenta : out natural); end contador0_15; ; architecture ejemplo of contador0_15 is signal contador : natural; begin process begin contador<=0; loop wait until (reloj='1 and relojevent) or inicio=0; exit when inicio=0; contador<=(contador+1) mod 16; end loop; end process; cuenta<=contador; end ejemplo;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

22

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES La segunda opcin permite especificar la etiqueta de la sentencia loop de forma que la ejecucin de exit fuerza la terminacin del bucle correspondiente a la etiqueta. Ejemplo: contador de 16 bits con inicio y carga
process begin contador<=0; carga_datos : loop incremento : loop wait until (reloj='1 and relojevent) or carga=1 or inicio=0; carga 1 inicio 0 ; exit carga_datos when inicio=0; exit incremento when carga=1; contador<=(contador+1) mod 16; end loop incremento; wait until reloj=1; if carga=1 then g contador <= datos; end if; end loop carga_datos; end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

23

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA next
Se utiliza para detener la ejecucin de una sentencia loop y pasar a la siguiente iteracin de la misma. Sintaxis:
[etiqueta ] [ ti t :] next [ ti t l t [etiqueta_loop] [when condicin_booleana] ][ h di i b l ]

Opciones:
Se especifica la condicin para la cual pasa a ejecutarse la siguiente iteracin de la sentencia l i i t it i d l t i loop. Se especifica una etiqueta que hace referencia a qu sentencia loop debe realizar ese salto de una iteracin.

Ejemplo: modificacin del contador mdulo 16 para que no j l difi i d l d d l cuente el valor 8.
process begin contador<=0; ; for I in 0 to 15 loop next when I=8; contador<= I; wait until reloj=1; end loop; end process;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

24

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

SENTENCIA assert
Permite reportar mensajes en funcin de si una determinada condicin se cumple o no, tambin permite interrumpir la simulacin en funcin de dicha condicin. Si Sintaxis: i
[etiqueta :] assert expresin_booleana [report cadena_caracteres] [expresin_severidad]

La utilidad principal de esta sentencia consiste en ayudar a depurar un modelo en tiempo de simulacin. Funciona de la siguiente forma: en caso de no cumplirse la condicin se enva la cadena de caracteres especificada al dispositivo de salida y dependiendo del nivel de severidad indicado i di d se puede o no interrumpir la simulacin. d i t i l i l i La expresin de severidad debe ser del tipo severity_level definido en el paquete standard. Este tipo enumerado puede tomar cuatro valores: note, warning, error, failure. E caso de no especificar el nivel de severidad el de por En d ifi l i ld id d l d defecto es error.

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

25

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

Ejemplo tpico es la comprobacin de tiempos en el modelado de dispositivos secuenciales.


Comprobacin de tiempos mnimos de anchura de pulsos de reloj.
entity biestable is port ( l j d : in bi (reloj, bit; q : out bit); end biestable; architecture ejemplo of biestable is begin d process q variable i i i i bl inicio_pulso : time; l ti biestable reloj begin case reloj is when 1 => q<=d; inicio_pulso := now; when 0 => 0 assert (now-inicio_pulso) >= 5 ns report (pulso de reloj menor de 5 ns) inicio severity warning; end case; wait on reloj; reloj end process; end ejemplo; now

VHDL-93 ofrece una variacin de assert sin condicin. report cadena_caracteres [expresin_severidad]
Ejemplo: report paso por aqu; -- es equivalente a assert FALSE report paso por aqu severity note;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

26

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

LLAMADA SECUENCIAL A SUBPROGRAMAS


Los subprogramas (procedimientos o funciones) pueden ser llamados desde cualquier parte de un cdigo secuencial. Al ejecutarse una llamada a un subprograma ste se ejecuta y retorna el control a la siguiente instruccin secuencial. l l l i i i i i l Sintaxis:
Llamada a un procedimiento (procedure) [etiqueta :] nombre_procedimiento [{parmetros,}] Llamada a una funcin (function) nombre_funcin [{parmetros}]

SENTENCIA return
Se utiliza para terminar la ejecucin de un subprograma. Sintaxis:
[etiqueta :] return [ expresin];

En procedimientos se utiliza sin expresin.

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

27

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
SENTENCIAS SECUENCIALES

LA SENTENCIA null
Se utiliza para indicar que no se debe realizar ninguna operacin. Sintaxis: [etiqueta:] null; Ejemplo de la sentencia null complementando a la sentencia case.
case valor is when 0 | 1 => null; when others => Valor := Valor mod 2; end case;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

28

S-ar putea să vă placă și