Sie sind auf Seite 1von 2

DECLARACIÓN DE UNA ENTIDAD ASIGNACIÓN DE SEÑALES: <Proposiciones>

elsif <condición> then -- opcional


entity ENTITY_NAME is SIG_NAME <= expresión; <Proposiciones>
generic ( lista de parámetros); else
port ( lista de puertos ); DECLARACIÓN DE VARIABLES: <Proposiciones>
end ENTITY_NAME; end if;
variable VAR_NAME: <especificar tipo>;
DECLARACIÓN DE UNA ARQUITECTURA ESTRUTURA CONDICIONAL MÚLTIPLE:
Ejemplos:
architecture ARCH_NAME of ENTITY_NAME is variable V_NAME: BOOLEAN; case <expresión> is
Declaración de Señales o Componentes variable V_NAME: INTEGER range 0 to 31; when <opciones> => <Proposiciones>
begin variable V_NAME: BIT; when <opciones> => <Proposiciones>
Procesos, asignaciones concurrentes o variable V_NAME: BIT_VECTOR (3 downto 0); when others => <Proposiciones>
Instanciación de componentes variable V_NAME: STD_LOGIC; end case;
end ARCH_NAME; variable V_NAME: STD_LOGIC_VECTOR (0 to 3);
Ejemplo:
OPERADORES EN VHDL: ASIGNACIÓN DE VARIABLES:
case SEL is
Lógicos: and, or, nand, nor, xor, xnor, not VAR_NAME := <expression>; when 0 | 1 | 2 => Z <= B;
Relacionales: =, /=, <, <=, >, >= when 3 to 10 => Z <= C;
Aritméticos: +, -, *, /, rem, mod, abs, ** DECLARACIÓN DE CONSTANTES: when others => null;
Concatenación: & end case;
constant CONST_NAME: <tipo> := <valor>;
DEFINICIÓN DE TIPOS Y SUBTIPOS: CICLO REPETITIVO POR CONTADOR:
Ejemplos:
Enumeración: constant C_NAME: BOOLEAN := TRUE; for I in <limite_inferior> to <superior> loop
type TYPE_NAME is (ST1, ST2, ST3, ST4, ST5); constant C_NAME: INTEGER := 31; <Proposiciones>
subtype S_TYPE_NAME is constant C_NAME: BIT_VECTOR (3 downto 0) end loop;
TYPE_NAME range ST2 to ST4; := "0000";
Tipo Entero: constant C_NAME: STD_LOGIC := 'Z'; Ejemplo:
type TYPE_NAME is range 0 to 255; constant C_NAME: STD_LOGIC_VECTOR (3
subtype TYPE_NAME is integer range 0 to 7; downto 0) := "0101"; for I in 1 to 10 loop
I_SQR(I) := I * I;
Tipo Arreglo: DECLRACION DE UN PROCESO: end loop;
type TYPE_NAME is array (0 to 31) of BIT;
LABEL1: -- Etiqueta opcional CICLO REPETITIVO POR CONDICIÓN:
DECLARACIÓN DE SEÑALES: process (lista de sensibilidad)
Declaración de variables while <condición> loop
signal SIG_NAME: <especificar_tipo>; begin < Proposiciones>
Estructuras Secuenciales end loop;
Ejemplos: --wait on CLK, RESET;
signal SIG_NAME: BOOLEAN; --wait until CLK'event and CLK='1'; Ejemplo:
signal SIG_NAME: INTEGER range 0 to 31; end process; I := 0;
signal SIG_NAME: BIT; while I < 10 loop
signal SIG_NAME: BIT_VECTOR (3 downto 0); ESTRUTURA DE CONTROL CONDICIONAL: S <= I;
signal SIG_NAME: STD_LOGIC; I := I + 1;
signal SIG_NAME: STD_LOGIC_VECTOR (0 to 3); if <condición> then end loop;
SALIDAS DE CICLOS REPETITIVOS: ASIGNACIÓN SELECTIVA DE SEÑAL: begin
-- procedure body
--La clausula when con la condición es opcional LABEL1: -- Etiqueta opcional end;
with <expresión selectora> select
exit when <condición>; -- Sale del ciclo SIG_NAME <= Ejemplo (Sumador):
next when <condición>; -- Avanza una iteración <expresión> when <opciones>,
<expresión> when <opciones>, procedure ADD (signal A0, A1, B0, B1: in
ESTRUCTURA PARA GENERAR BLOQUES <expresión> when others; STD_LOGIC; signal C0, C1: out
STD_LOGIC) is
LABEL1: --Opcional, aunque es conveniente Ejemplo: variable X, Y: STD_LOGIC;
-- Usando un estructura repetitiva: begin
for I in <limite inferior> to <superior> generate with SEL select x := B0 and A0;
<Proposiciones> Z <= A when 0 | 1 | 2, Y := B1 xor A1;
end generate; B when 3 to 10, C0 <= (B0 and not A0) or ( not B0 and A0);
C when others; C1 <= (Y and not X) or (not Y and X);
-- Usando una condición: end;
if <condición> generate FUNCIONES:
< Proposiciones > DECLARACIÓN DE COMPONENTES:
end generate; function FUN_NAME (Parámetros: Tipo)
return tipo_de_retorno is component COMPONENT_NAME
Ejemplos: Declaración de señales, variables o constantes generic ( lista de parámetros);
begin port ( lista de puertos );
G0: for I in 0 to 3 generate -- Cuerpo de la función end component ;
G1: if I = 0 generate end;
HA: HALF_ADDER INSTANCIACIÓN DE COMPONENTES:
port map ( A => X(I), B => Y(I), Ejemplo:
S => Z(I), Co => TMP(I+1)); LABEL1: COMPONENT_NAME
end generate; function INCREMENT (COUNT: INTEGER) port map (
G2: if I >= 1 and I <= 3 generate return INTEGER is PORT_NAME => SIG_NAME,
FA: FULL_ADDER variable TEMP: INTEGER; PORT_NAME => SIG_NAME
port map ( A => X(I), B => Y(I), begin );
C => TMP(I), S => Z(I), if COUNT >= 255 then
Co => TMP(I+1)); TEMP := 0; ASIGNACIÓN DE CEROS (VARIOS BITS):
end generate; else
end generate; TEMP := COUNT + 1; COUNT_INT <= (others => '0');
end if;
ASIGNACIÓN CONDICIONAL DE SEÑAL: return TEMP; USO DE BINARIO, OCTAL Y HEXADECIMAL:
end;
LABEL1: -- Etiqueta opcional "01111" -- binario
SIG_NAME <= <expression> when PROCEDIMIENTOS: O"17" -- octal
<condition> else <expression> X"F" -- hexadecimal
when <condition> else <expression>; procedure PROC_NAME (<clase> PAR_NAME:
<modo> ) is
Ejemplo: --<clase>: señal | variable | constante
--<mode>: in | inout | out
Z <= A when (X > 10) else B
when (X > 5) else C; Declaración de señales, variables o constantes

Das könnte Ihnen auch gefallen