Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VHDL CONCURRENTE
Entidad
Arquitectura
Sentencias concurrentes
Procesos
Wait
Componentes
Generate
VHDL CONCURRENTE
Declaracin entidad
Nombre entidad
entity_decl <=
entity id is
[ port ( port_interface_list ) ; ]
{ entity_declarative_item }
end [ entity ] [ id ] ;
port_interface_list <=
Nombre puerto
( id { , } : [ mode ] subtype [ := expr ] ) { ; }
mode <= in | out | inout
VHDL CONCURRENTE
Entidad: Ejemplo
entity program_rom is
port ( address : in bit_vector (14 downto 0) ;
data : out bit_vector (7 downto 0) ;
enable : in bit );
subtype instruction_byte is bit_vector (7 downto 0);
type program is array (0 to 2**14-1) of instruction_byte;
end entity program_rom;
VHDL CONCURRENTE
Declaracin arquitectura
Nombre arquitecturaNombre entidad
arch_body <=
architecture id of entity_name isDeclaracin de
tipos, seales o
{ block_decl_item }
constantes.
begin
{ concurrent_stmt }
end [ architecture ] [ id ] ;
Procesos e
instanciacin de
componentes.
VHDL CONCURRENTE
Arquitectura: Ejemplo
architecture primitive of and_or_inv is
signal and_a, and_b, or_a_b : bit;
begin
and_a: process is
begin
and_a <= a1 and a2;
wait on a1, a2;
end process;
end architecture;
VHDL CONCURRENTE
Sentencias concurrentes
Sentencias que se ejecutan simultneamente en la
simulacin:
Procesos.
Asignacin concurrente a seales.
Llamadas a procedimientos.
Bloques
Instanciacin de componentes.
Sentencias assert-report
Sentencias generate.
When-else
With-select-them
VHDL CONCURRENTE
Sentencias concurrentes
Sentencias que se ejecutan simultneamente en la
simulacin:
Procesos.
Asignacin concurrente a senales.
Llamadas a procedimientos. (TEMA)
Bloques
Instanciacin de componentes.
Sentencias assert-report
Sentencias generate.
When-else
With-select-them
VHDL CONCURRENTE
Procesos
Lista sensitiva (opcional)
process_stmt <=
[ process_label : ]
process [ ( signal_name { , } ) ] [ is ]
{ process_decl_item }
begin
{ sequential_stmt }
end process [ process_label] ;
VHDL CONCURRENTE
Procesos
10
VHDL CONCURRENTE
11
VHDL CONCURRENTE
VHDL CONCURRENTE
12
VHDL CONCURRENTE
13
Procesos: Ejemplo
Procesos equivalentes
VHDL CONCURRENTE
14
Sentencia wait.
Suspende la ejecucin de un proceso.
Tres tipos de sentencia wait:
VHDL CONCURRENTE
15
Wait on
VHDL CONCURRENTE
16
Wait until
VHDL CONCURRENTE
17
Wait for
Suspensin del proceso durante 10ns.
VHDL CONCURRENTE
18
VHDL CONCURRENTE
19
20
VHDL CONCURRENTE
conditional_signal <=
name <= [ delay_mechanism ]
{ waveform when boolean_expr
else }
waveform [ when boolean_expr ];
VHDL CONCURRENTE
21
22
VHDL CONCURRENTE
Declaracin de componentes
Declaracin dentro de la arquitectura o del paquete.
Declaracin casi idntica a declaracin de entidad.
VHDL CONCURRENTE
23
Instanciacin de componentes
Instanciacin dentro de la arquitectura: Sentencia
concurrente.
Se incluye un label para identificar el elemento
instanciado.
24
VHDL CONCURRENTE
Instanciacin de componentes
25
VHDL CONCURRENTE
26
VHDL CONCURRENTE
27
VHDL CONCURRENTE
full adder
28
VHDL CONCURRENTE
full adder
29
VHDL CONCURRENTE
Sumador acarreo
enlazado
VHDL CONCURRENTE
30
Componentes
VHDL CONCURRENTE
31
Sentencias generate
Para instanciar componentes idnticos bajo el control
de un ndice o de una condicin
library IEEE; use IEEE.std_logic_1164.all;
entity PARIDAD is
generic(no_bits: integer:=32);
port(IN_DAT: in std_logic_vector (no_bits-1 downto 0);
PARITY: out std_logic);
end PARIDAD;
architecture ARBOL_XOR of PARIDAD is
signal TMP: std_logic_vector (no_bits-1 downto 0);
begin
TMP (no_bits-1) <= IN_DATA (no_bits-1);
PARITY <= tmp(0);
GEN_ARBOL: for I in no_bits-2 downto 0 generate
TMP (I) <= IN_DATA(I) xor TMP(I+1);
end generate;
end ARBOL_XOR;
32
VHDL CONCURRENTE
33
VHDL CONCURRENTE
34
VHDL CONCURRENTE
35
VHDL CONCURRENTE