Descargar

Lenguaje VHDL (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

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

edu.red

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

edu.red

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).

edu.red

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:

edu.red

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:

edu.red

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

edu.red

La Sentencia IF Sintaxis if- then – else. if CONDITION then — Sentencias secuenciales end if; if CONDITION then — Sentencias secuenciales else — Sentencias secuenciales end if;

edu.red

Estructura if – elsif. if CONDITION then — Sentencias secuenciales elsif CONDITION then — Sentencias secuenciales elsif CONDITION then — Sentencias secuenciales . . . else — Sentencias secuenciales end if;

edu.red

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;

edu.red

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.

edu.red

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

edu.red

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

edu.red

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;

edu.red

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

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente