Vous êtes sur la page 1sur 7

SINTAXIS BSICA DEL VHDL SIMPLIFICADO

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;

TYPE mio IS (t1, t2, t3),

Declaracin de constantes. seales v variables:


CONSTANT c1 : bit_vector( 3 downto O) := "0000";
SIGNAL s1
: mio;
VARIABLE v1
: bit;
OPERADORES:
Tipo
Lgicos

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:

<seal destino> <= <seal_1>


<Seal destino> <= <expresin>

Asignacin condicional:
<seal_destino> <=

<seal1> WHEN <condicin 1> ELSE


<seal2> WHEN <condicin2> ELSE
...
<sealn>;

Asignacin selectiva:
WITH <seal_cond> SELECT
<seal_destino> <=
<seal1> WHEN <value 1>,
<seal2> WHEN <value 2>,

<sealn> WHEN OTHERS;

Pg.

SENTENCIAS SECUENCIALES (dentro de procesos, funciones o procedimientos):


if_then_else:
IF <cond1> THEN
<sentencias 1 > ;
ELSIF <cond2> THEN

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

PROCEDURE <nom_procedimiento> (<parmetros>) IS


<declaraciones>
BEGIN
<sentencias secuenciales>
END <nom_procedimiento>;
...
BEGIN

END <nom-arch>;
FUNCIONES:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS

FUNCTION <nom_funcin> (<parmetros>) RETURN <tipo> IS


<declaraciones>
BEGIN
<sentencias secuenciales>
RETURN <valor retorno>;
END <nom_funcin>;
...
BEGIN
END <nom-arch>;
SENTENCIAS ESTRUCTURALES:
COMPONENT:
ARCHITECTURE <nom-arch> OF <nom-entidad> IS
...
COMPONENT <nom_componente>
PORT ( <seaI1 >:-<modo> <tipo>;
...
<seaI1>: <modo> <tipo> );
END COMPONENT;
BEGIN

<nom-copia-componente> : <nom-componente> POR MAP (<asignaciones);


...
END <nom-arch>;

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.

BIBLIOTECAS DE TIPOS Y FUNCIONES


STD_LOGIC_1164 (Use ieee.std_logic_1164.ALL)
TIPOS:
STD_ULOGIG;
STD_ULOGIC_VECTOR;
STD_LOGIC;
STD_LOGIC_VECTOR;
X01;
X01Z;
UX01;
FUNCIONES:
TO_BIT (STD_ULOGIC) RETURN BIT
TO_STDULOGIC (BIT) RETURN STD_ULOGIC
TO_BITVECTOR (STD_LOGIC_VECTOR) RETURN BIT_VECTOR
TO_STDLOGICVECTOR(BIT_VECTOR) RETURN STD_LOGIC_VECTOR
TO_BITVECTOR (STD_ULOGIC_VECTOR) RETURN BIT_VECTOR
TO_STDULOGICVECTOR(BIT_VECTOR) RETURN STD_ULOGIC_VECTOR
TO_STDLOGICVECTOR(STD_ULOGIC_VECTOR) RETURN STD_LOGIC_VECTOR
TO_STDULOGICVECTOR(STD_LOGIC_VECTOR) RETURN STD_ULOGIC_VECTOR
STD_LOGIC_ARITH (Use ieee.std_logic_arith.ALL)
TIPOS
UNSIGNED
SIGNED
FUNCIONES
CONV_INTEGER (UNSIGNED) RETURN INTEGER
CONV_UNSIGNED (INTETER, INTEGER) RETURN UNSIGNED

Pg.

CONV_STD_LOGIC_VECTOR (ARG: INTEGER, SIZE: INTEGER) RETURN STD_LOGIC_VECTOR


CONV_STD_LOGIC_VECTOR (ARG: UNSIGNED, SIZE: INTEGER) RETURN STD_LOGIC_VECTOR
STD_LOGIC_TEXTIO (Use ieee.std_logic_textio.all)
TIPOS
LINE
TEXT
FILE
FUNCIONES
WRITE (<variable> : LINE, <seal>)
WRITELINE (OUTPUT, <variable>: LINE)
WRITELINE (<variable>: FILE, <veriable> : LINE)
ARCHITECTURE <nom_architecture> OF <nom_entity> IS
...
SIGNAL A1, A2: BIT;
...
BEGIN
...
PROCESS <nombre_proceso>
VARIABLE lout: LINE;
FILE fichero: TEXT is OUT salida.txt;
BEGIN
WRITE(lout, A1);
WRITE(lout, );
WRITE(lout, A2);
WRITELINE (OUTPUT, lout);
WRITELINE(fichero, lout);
END PROCESS;
...
END <nom_architecture>;

Pg.

Vous aimerez peut-être aussi