Lista de Sensitividad
MUX: process (A , B, SEL)
begin
if SEL = '1' then
Z <= A;
else
Z <= B;
end if;
end process MUX;
SEL
A
B
Z
Lista de Sensitividad
MUX: process (A , B)
begin
if SEL = '1' then
Z <= A;
else
Z <= B;
end if;
end process MUX;
Falta SEL
SEL
A
B
Z
Variables y Señales:
Las Señales:
Objetos que pueden ser declarados en el interior de una entidad (ports) o de una arquitectura (señales internas).
La asignación de un valor a una señal se hace con un retardo (infinitesimal).
Variables
Son objetos que pueden ser declarados dentro de un process (u otras entidades secuenciales).
Entity SIG is
port ( A, B, C, CK : in std_logic; S, T: out std_logic );
End SIG;
Architecture ARCHI of SIG is signal TMP : std_logic;
begin
process
begin
wait until CK’event and CK = ‘1’ ;
TMP <= A or B; — Esta línea será ignorada
S <= TMP;
TMP <= A and C; — anula la asignación precedente
T <= TMP; — sobre la señal TMP
end process;
End ARCHI;
Ejemplo sobre las señales:
Entity VAR is
port ( A, B, C, CK : in std_logic; S, T: out std_logic );
End VAR;
Architecture ARCHI of VAR is
begin
process
variable TMP : std_logic;
begin
wait until CK’event and CK = ‘1’ ;
TMP := A or B;
S <= TMP;
TMP := A and C;
T <= TMP;
end process;
End ARCHI;
Ejemplo utilizando una variable:
Instrucciones secuénciales: frecuentemente utilizadas.
-IF…THEN… ; [ELSIF… THEN…];[ELSE…]; END IF;
Similar a la asignación de señales por selección.
-CASE … END CASE;
Similar a la asignación de señales por selección.
-FOR … LOOP END LOOP;
Similar a la instrucción FOR … GENERATE
La Sentencia IF
Sintaxis if- then – else.
if CONDITION then
— Sentencias secuenciales
end if;
if CONDITION then
— Sentencias secuenciales
else
— Sentencias secuenciales
end if;
Estructura if – elsif.
if CONDITION then
— Sentencias secuenciales
elsif CONDITION then
— Sentencias secuenciales
elsif CONDITION then
— Sentencias secuenciales
.
.
.
else
— Sentencias secuenciales
end if;
IF-ELSIF
El orden de las sentencias en la estructura if-elsif es muy importante. Más de una condición puede ser verdadera, y es la primera condición verdadera la que provoca que se ejecuten el grupo de sentencias que le siguen
if CONDITION then
— sentencias secuenciales
elsif CONDITION then
— sentencias secuenciales
elsif CONDITION then
— sentencias secuenciales
else
— sentencias secuenciales
end if;
Ejemplo de IF-ELSIF
process (A,B,C,X)
begin
If (X=“0000”) then
Z<=A;
elsif (X<=“0101”) then
Z<=B;
else
Z<=C;
end if;
end process;
Si X tiene el valor “0000”, la condición X=0000 es probada primero, entonces a Z se le asigna el valor de A.
IF… THEN… ;[ELSIF… THEN…];[ELSE…]; END IF;
Sintaxis:
Todo IF debe terminarse por END IF.
IF esta en general seguido por ELSE
Varios IF pueden estar enlazados.
La contracción ELSIF permite simplificar la escritura
process (A,B,C,D,SEL)
begin
If SEL = “00” then MUX <=A;
else if SEL = “01” then MUX <= B;
else if SEL = “10” then MUX <=C;
else MUX <=D;
end if;
end if;
end if;
end process;
process (A,B,C,D,SEL)
begin
If SEL = “00” then MUX <=A;
elsIf SEL = “01” then MUX <=B;
elsif SEL = “10” then MUX <=C;
else MUX<=D;
end if;
end process;
Ejemplo 2 de IF-ELSIF
Utilización de Clock_Enable
architecture ARCHI of SECUENCE is
begin
process
begin
wait until CK’event and CK = ‘1’ ;
If ENABLE = ‘1’ then COUNT<=COUNT+1;
end if;
end process;
end ARCHI;
architecture ARCHI of SECUENCE is
begin
process(CK)
begin
if CK’event and CK = ‘1’ then
If ENABLE = ‘1’ then COUNT<=COUNT+1;
end if;
end process;
end ARCHI;
Utilización de Clock_Enable
Página anterior | Volver al principio del trabajo | Página siguiente |