Académique Documents
Professionnel Documents
Culture Documents
ENTIDAD:
ENTITY <nombre_ent> IS
PORT <seaI1 >: <modo> <tipo>
...
<seaI1>: <modo> <tipo>
END <nombre ent>;
<modo> = IN / OUT / IN OUT
ARQUITECTURA:
ARCHITECTURE <nombre_arch> OF <nombre_ent> IS
<declaraciones1 >
BEGIN
<sentencias concurrentes>
<PROCESS (<lista de seales>)
<declaraciones2>
BEGIN
<sentencias secuenciales>
END PROCESS;>
END <nombre_arch>;
<declaraciones1 > =
declaraciones de tipos
declaraciones de seales, constantes
declaraciones de subprogramas
<declaraciones2> =
declaraciones de tipos
declaraciones de variables, constantes
declaraciones de subprogramas
OBJETOS DE LA DESCRIPCIN:
Seales (SIGNAL):
Variables (VARIABLE):
Constantes (CONSTANT):
globales en la descripcin
locales en cada proceso
segn dnde se declaren
TIPOS DE DATOS:
Escalares
Estndar
Estndar
Estndar
Estndar
Estndar
def. por usuario
bit
boolean
integer
positive
natural
enumerados
:
:
:
:
:
:
(0, 1)
(false, true)
<range n to m range m downto n>
(integer = 1)
(integer = 0)
<definidos por el usuario>
type colores is (blanco, rojo, azul)
IEEE.std.logic.1164
std_Iogic
(U, X, 0, W, L, H, Z, -)
Pg.
Arrays
Estndar
IEEE.std.logic.1164
def. por usuario
Definicin de tipos:
bit_vector
std_Iogic_vector
arrays
:
:
:
(m to n); (n downto m)
(m to n); (n downto m)
type int_array is array (7 downto 0) of integer;
Datos entrada
Bit, bolean, std_logic
Relacin
Aritmticos
Cualquiera
Integer
Positive, natural
Cualquiera
(homogneo)
Concatenacin
Devuelve...
Bit, Boolean
std_logic
Bolean
Integer
Positive, natural
Array de elementos
Operadores
Not, and, or, nand,
Nor, xor
=, /=, <, <=, >, >=
+, -, /, *. **
ABS, MOD, REM
&
ATRIBUTOS:
<signal> 'EVENT: devuelve true cuando la seal cambia de valor
ej: clk='1' and clk'event (cierto cuando hay un flanco de subida en clk)
<array> 'RANGE: devuelve el rango del vector
ej: signal A: std_Iogic_vector (7 downto O)
for i in A'range loop es equivalente a:
for i in 7 downto 0 loop
SENTENCIAS CONCURRENTES:
Asignacin simple de seal:
Asignacin condicional:
<seal_destino> <=
Asignacin selectiva:
WITH <seal_cond> SELECT
<seal_destino> <=
<seal1> WHEN <value 1>,
<seal2> WHEN <value 2>,
Pg.
END IF;
case_is_when:
CASE <expresin> IS
WHEN <valor 1> => <sentencias1>;
...
WHEN <valorn> => <sentenciasn>;
END CASE;
for_loop:
FOR <indice> IN <rango> LOOP
<sentencias>
END LOOP;
(el ndice de los bucles for no tiene que declararse)
asignacin de seal:
<seal_destino> <= <expresin>;
asignacin de variable
<var_destino> := <expresin>;
PROCESOS:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS
BEGIN
<nomb_proceso>: PROCESS (<lista de sensibilidad>)
BEGIN
<sentencias secuenciales>
END PROCESS <nombre_proceso>;
END <nom-arch>;
Pg.
PROCEDIMIENTOS:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS
END <nom-arch>;
FUNCIONES:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS
Pg.
GENERATE:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS
...
COMPONENT <nom_componente>
PORT ( <seaI1 >:-<modo> <tipo>;
...
<seaI1>: <modo> <tipo> );
END COMPONENT;
BEGIN
...
<nom-elemento> : FOR <indice> IN <rango> GENERATE
nom-subelemento>: <nom-componente> PORT MAP (<asignaciones seales>);
END GENERATE <nom-elemento>;
...
END <nom-arch>;
SENTENCIAS DE ESPERA:
AFTER: en asignaciones concurrentes o secuenciales
<seal><= <valor1> AFTER <tiempo1>ns, <valor2> AFTER <tiempo2>ns ... ;
WAIT: sentencia secuencial
WAIT FOR <tiempo>ns;
WAIT UNTIL <condicion>;
WAIT ON <lista de sensibilidad>;
Pg.
Pg.
Pg.