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 |