1 circuitos digitales ii introducción al vhdl semana no.3 semestre 2008-2 prof. gustavo patiño...
TRANSCRIPT
1
Circuitos Digitales IICircuitos Digitales II
Introducción al VHDLIntroducción al VHDLSemana No.3Semana No.3
Semestre 2008-2Semestre 2008-2
Prof. Gustavo PatiñoProf. Gustavo Patiñ[email protected]
Prof. Eugenio DuqueProf. Eugenio [email protected]
Departamento de Ingeniería ElectrónicaDepartamento de Ingeniería Electrónica
Facultad de IngenieríaFacultad de Ingeniería
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
2
Recordando ….
Niveles de Abstracción: Carta Y
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
3
Recordando ….
Proceso de Diseño
4
Recordando …
Proceso de DiseñoStructural Domain
Physical Domain
Boards, MCM
Transistor Layout
Cells, Modules
Chips, ASICs
Flowcharts, Algorithms
Register Transfers Boolean Expressions Transistor Functions
Processors, Mem, Buses Registers,
ALUs, MuXs,
Gates, Flip-Flops
Transistors
Synthesis
Implementation
Behavioral Domain
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Introducción al VHDL Temario
Objetivos Áreas de Aplicación Terminología importante Elementos básicos del VHDL Unidades de Diseño Descripción de Entidades (Entity’s) Descripción de Arquitecturas (Architecture’s)
Ejemplo Tipos de diseño Niveles de Abstracción
Tipos de Arquitecturas Modelado comportamental
Procesos Concurrencia vs secuencia Ejemplo.
Modelado estructural Ejemplo.
Mezcla de ambas modelados Paquetes y Configuración
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
5
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
6
Objetivos
Introducir los conceptos básicos de VHDL. Lograr un razonable nivel de entendimiento que le permita escribir
código VHDL para cualquier diseño que pudiera ser especificado usando un editor de esquemáticos con componentes de biblioteca.
Desarrollar un buen nivel de apreciación de la habilidad de VHDL de manipular diseños mezclados (estructurales, comportamentales y de flujo de datos (datapath)).
Aprender los elementos básicos de VHDL que le permitan realizar sus proyectos en CPLDs y/o FPGAs, y posteriormente probarlos.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
7
Introducción al VHDL
VHDL es un lenguaje usado para describir el comportamiento de proyectos de circuitos digitales.
Los proyectos en VHDL pueden ser simulados y traducidos en un formato apropiado para la implementación en hardware.
El uso jerárquico de los diseños hechos en VHDL permite la rápida creación de proyectos de circuitos digitales complejos.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
8
Areas de Aplicación del VHDL Especificación de sistemas. Captura del diseño de un proyecto. Simulación. Síntesis. Desarrollo de pruebas (testing). Verificación temporal. Documentación.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
9
Terminología importante
Simulación es la predicción del comportamiento de un proyecto circuital. VHDL provee muchas características propias para la simulación
de circuitos digitales. La simulación funcional aproxima el comportamiento de un
proyecto de hardware asumiendo de todas las salidas cambian al mismo tiempo.
La simulación temporal predice el comportamiento exacto de un proyecto de Hardware.
Síntesis en la traducción de un proyecto circuital en un archivo de netlist que describe la estructura de hardware de un circuito. VHDL no fue diseñado para propósitos de síntesis. No todos los componentes de VHDL son sintetizables.
Elementos Básicos de VHDL
Asignación de señal: A <= B5
• Comparaciones: = /= > < >= <=
• Operaciones lógicas: and xor or nand nor xnor not
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
10
Elementos Básicos de VHDL (…cont) Condicionales :
If (estado_siguiente = espera) then ….
else | elseif | end if Lazos :
For i in y’range loop
….
end loop Otros :
when/else case wait :=
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
11
Elementos Básicos de VHDL (…cont) Insensible a mayúsculas o minúsculas.
Terminación de enunciado: ; Inicio de línea de comentario: -- -- Los identificadores deben iniciar con una letra y
pueden incluir caracteres alfanuméricos o guión bajo.
Concordancia estricta de tipo.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
12
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
13
Unidades de diseño en VHDL
VHDL posee básicamente cinco unidades o componentes de diseño: Descripción de Entidades (Entity´s). Descripción de arquitecturas (Architecture´s). Paquetes (Package). Cuerpo de paquetes (Package body). Configuraciones (Configuration´s).
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
14
Descripción de Entidades Describen las entradas y las salidas de un módulo
en un sistema. Ocultan los detalles internos de un módulo. Pueden ser usadas para describir módulos en muy
bajos niveles de abstracción (p.e nivel de puertas lógicas), así como un sistema completo (nivel de sistemas), y en niveles intermedios.
Modelado de Interfaces
Ejemplo : Declaración de una Entity Describiendo los puertos de entrada y salida de un
módulo.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
15
entity reg4 isport ( d0, d1, d2, d3, en, clk : in
bit;q0, q1, q2, q3 : out bit );
end entity reg4;
entity name port names port mode (direction)
port typereserved words
punctuation
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
16
Descripción de la Arquitectura Suministra una descripción estructural o funcional
de una entidad. Cada arquitectura es limitada solamente a una
entidad – pero una entidad puede estar asociada a múltiples arquitecturas (solamente una a la vez, para una cierta simulación o síntesis).
Múltiples arquitecturas permiten descripciones tempranas del funcionamiento del módulo sin tener que diseñar todo a fin de comenzar la prueba funcional.
Descripción de la Arquitectura (…cont)
Architecture arquitectura of modelo is
begin….
enunciados concurrentes
….
end architecture arquitectura ;
Architecture arquitectura of modelo is
begin….
enunciados concurrentes
….
end architecture arquitectura ;
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
17
Ejemplo Mux 2 a 1LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
18
Bibliotecas
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
19
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Bibliotecas (…cont)
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
20
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Entity : Interface Externa
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
21
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Entity : Interface Externa (…cont)
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
22
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Buses o vectores
Ejemplo :
y <= “11110000”;
Si y es
std_logic_vector(7 downto 0)
y(7) es ‘1’ y y(0) es ‘0’
std_logic_vector(0 to 7)
‘y(7) es ‘0’ y y(0) es ‘1’
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
23
Arquitectura : Función del módulo
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
24
LIBRARY IEEE;USE IEEE.std_logic_1164.all;------------------------------------------------------------------------- Declaración del dispositivo-----------------------------------------------------------------------ENTITY mux2a1 ISPORT(
SIGNAL s: IN std_logic; -- selectorSIGNAL a,b: IN std_logic_vector(7 DOWNTO 0); -- entradasSIGNAL o: OUT std_logic_vector(7 DOWNTO 0) --salida
);END ENTITY mux2a1;
------------------------------------------------------------------------- Definición del dispositivo, usando ecuaciones lógicas-----------------------------------------------------------------------
ARCHITECTURE bool_eqs OF mux2a1 ISSIGNAL sel: std_logic_vector(7 DOWNTO 0); -- señal
internaBEGIN
sel <= (OTHERS => s);o <= (a AND (NOT sel)) OR (b AND sel);
END ARCHITECTURE bool_eqs;
Asignación de vectores
sel <= (s,s,s,s,s,s,s,s); posicional sel <=
(4=>s,7=>s,2=>s,0=>s,1=>s,3=>s,5=>s,6=>7)
por nombre • sel <= (others => s); default • sel <= (s,s,3=>s,others=>s); combinado
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
25
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
26
Tipos de diseño
Una unidad simple de un diseño: Corresponde a un archivo fuente en VHDL con una
pareja entity – architecture y una referencia a una biblioteca estándar de diseño. (p.e IEEE Standard Logic).
Un diseño más complejo: Corresponde a múltiples archivos fuentes, cada uno
con una pareja entity – architecture y con una declaración de paquetes.
Puede incluir un archivo de configuración.
Niveles de abstracción
Una importante característica de VHDL que no es compartida por otros tipos de lenguajes orientados al trabajo con PLDs (tales como ABEL, CUPL, etc).
Corresponde a la habilidad de representar diseños en múltiples niveles de abstracción.
Ejemplo : Un sumador de 16 bits podría ser representado por: Interconexión de compuertas. Interconexión de módulos (p.e sumadores completos o
sumadores de 4 bits.). Una función que realice la suma binaria sobre dos vectores
de bits.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
27
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
28
Tipos de Arquitectura
Comportamental Describe la funcionalidad del módulo con respecto al
tiempo, generalmente en forma de un algoritmo. La capacidad directa de síntesis es muy limitada.
Dataflow (Transferencia de Registros) Especifica registros y lógica combinacional en
términos del flujo de datos de una función a otra. Estructural
Especifica los componentes y sus interconexiones. Equivale en lenguaje a lo realizado en esquemáticos.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
29
Modelado Comportamental
Cuerpo del Architecture Describe una implementación de una entidad. Pueden ser varios para una entidad.
Arquitectura Comportamental Describe el algoritmo ejecutado por el módulo. Contiene:
Instrucciones de procesos (Process), cada uno conteniendo: Instrucciones secuenciales, incluyendo:
Instrucciones de asignación de señales y Instrucciones de espera (wait).
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
30
Ejemplo Comportamentalarchitecture behav of reg4 isbegin
storage : process isvariable stored_d0, stored_d1, stored_d2, stored_d3 : bit;
beginif en = '1' and clk = '1' then
stored_d0 := d0; stored_d1 := d1; stored_d2 := d2; stored_d3 := d3;
end if;q0 <= stored_d0 after 5 ns;
q1 <= stored_d1 after 5 ns; q2 <= stored_d2 after 5 ns; q3 <= stored_d3 after 5 ns;
wait on d0, d1, d2, d3, en, clk;end process storage;
end architecture behav;
architecture behav of reg4 isbegin
storage : process isvariable stored_d0, stored_d1, stored_d2, stored_d3 : bit;
beginif en = '1' and clk = '1' then
stored_d0 := d0; stored_d1 := d1; stored_d2 := d2; stored_d3 := d3;
end if;q0 <= stored_d0 after 5 ns;
q1 <= stored_d1 after 5 ns; q2 <= stored_d2 after 5 ns; q3 <= stored_d3 after 5 ns;
wait on d0, d1, d2, d3, en, clk;end process storage;
end architecture behav;
entity reg4 isport (
d0, d1, d2, d3, en, clk : in bit; q0, q1, q2, q3 : out bit );
end entity reg4;
Procesos
nombre : process (señal1, señal2, ...) is
begin
....
enunciados sequenciales
....
end process nombre ;
nombre : process (señal1, señal2, ...) is
begin
....
enunciados sequenciales
....
end process nombre ;
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
31
Concurrencia vs Secuencia
Los enunciados concurrentes se ejecutan todos al mismo tiempo.
Los enunciados secuenciales, que sólo pueden aparecer dentro de un proceso, se ejecutan uno tras de otro. ‘IF/ELSE’ , ’CASE’ , ’FOR’ : secuenciales. ‘PROCESS’ : concurrentes.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
32
Procesos
nombre : process( señal1,señal2,...) is
donde señal1,señal2,… es la lista de sensibilidad del proceso.
Cualquier evento en alguna de estas señales hará que el proceso se ejecute durante una simulación.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
33
Procesos (...cont)
La asignación de señales dentro de los enunciados de un proceso ocurre en forma secuencial, de modo que una asignación posterior siempre puede cambiar el valor de una señal asignada previamente dentro del bloque (proceso).
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
34
Procesos (...cont)
Al usar procesos, un error clásico es olvidar incluir enunciados que asignen valores de default a todas las salidas.
Si las herramientas de síntesis VHDL encuentran una trayectoria lógica tal que una salida no tenga un valor asignado en el proceso, asumirán que el valor actual debe retenerse, generando un latch en el circuito.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
35
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
36
Modelado Estructural
Arquitectura Estructural Implementa el módulo como una composición de
subsistemas. Contiene:
Declaración de señales, para interconexiones internas. Los puertos de la entidad son también tratados como
señales. Instancias de componentes
Son instancias de parejas de entity/arquitecture previamente declarados.
Mapas de puertos en instancias de componentes. Conecta señales a puertos de componentes.
Instrucciones wait.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
37
Arquitectura Estructural
Los componentes declarados en una arquitectura deben ser definidos en alguna parte.
Los componentes pueden ser definidos como: Una pareja de entity-arquitecture en el mismo
archivo fuente de VHDL. Una pareja de entity-arquitecture en otro archivo
fuente de VHDL. Un objeto en otra herramienta de diseño tal que sea
incorporado en un formato de archivo estándar. Un objeto en una biblioteca de tecnología.
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
38
Arquitectura Estructural
Cada tipo componente debe ser declarado usando una declaración de componente.
La declaración del componente debe corresponder con la declaración de la entidad del módulo que está siendo invocado.
component component-name
port ( signal-names : mode signal-type;
signal-names : mode signal-type;
…
signal-names : mode signal-type );
end component;
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
39
Arquitectura Estructural Cada instancia de un componente debe ser
instanciado por una instrucción Component.
La primera forma usa el orden de la señales para crear la correspondencia con la declaración del componente.
La segunda forma usa los nombres de los puertos como aparecen listados en la declaración del componente.
label: component-name port map (signal1, signal2, …, signaln);
OR
label: component-name port map (port1=>signal1, port2=>signal2, portn=>signaln):
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
40
Ejemplo Estructural
int_clk
d0
d1
d2
d3
en
clk
q0
q1
q2
q3
bit0
d_latch
d
clk
q
bit1
d_latch
d
clk
q
bit2
d_latch
d
clk
q
bit3
d_latch
d
clk
q
gate
and2
a
b
y
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
41
Primero declare las entidades y arquitecturas de latches tipo D y compuertas and.
entity d_latch isport ( d, clk : in bit; q : out bit );
end d_latch;
architecture basic of d_latch isbegin
latch_behavior : processbegin
if clk = ‘1’ thenq <= d after 2 ns;
end if;wait on clk, d;
end process latch_behavior;
end basic;
entity d_latch isport ( d, clk : in bit; q : out bit );
end d_latch;
architecture basic of d_latch isbegin
latch_behavior : processbegin
if clk = ‘1’ thenq <= d after 2 ns;
end if;wait on clk, d;
end process latch_behavior;
end basic;
entity and2 isport ( a, b : in bit; y : out bit );
end and2;
architecture basic of and2 isbegin
and2_behavior : processbegin
y <= a and b after 2 ns;wait on a, b;
end process and2_behavior;
end basic;
entity and2 isport ( a, b : in bit; y : out bit );
end and2;
architecture basic of and2 isbegin
and2_behavior : processbegin
y <= a and b after 2 ns;wait on a, b;
end process and2_behavior;
end basic;
Ejemplo Estructural (…cont)
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
42
Declare los componentes correspondientes en el cuerpo de la arquitectura del registro.
architecture struct of reg4 is
component d_latchport ( d, clk : in bit; q : out bit );
end component;
component and2port ( a, b : in bit; y : out bit );
end component;
signal int_clk : bit;
...
architecture struct of reg4 is
component d_latchport ( d, clk : in bit; q : out bit );
end component;
component and2port ( a, b : in bit; y : out bit );
end component;
signal int_clk : bit;
...
Ejemplo Estructural (…cont)
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
43
Ejemplo Estructural (…cont) Ahora, use dichos componentes para definir el
registro del 4 bits....
begin
bit0 : d_latchport map ( d0, int_clk, q0 );
bit1 : d_latchport map ( d1, int_clk, q1 );
bit2 : d_latchport map ( d2, int_clk, q2 );
bit3 : d_latchport map ( d3, int_clk, q3 );
gate : and2port map ( en, clk, int_clk );
end struct;
...
begin
bit0 : d_latchport map ( d0, int_clk, q0 );
bit1 : d_latchport map ( d1, int_clk, q1 );
bit2 : d_latchport map ( d2, int_clk, q2 );
bit3 : d_latchport map ( d3, int_clk, q3 );
gate : and2port map ( en, clk, int_clk );
end struct;
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
44
Mezcla del modelado comportamental y estructural
Una arquitectura puede contener ambas partes. Instrucciones de procesos (process) e instanciación de
componentes. También llamados de estamentos o sentencias concurrentes.
Los procesos pueden leer y escribir en las señales. Ejemplo: Modelo RTL (Nivel de Transferencia de
Registros) Flujo de datos (DataPath) descrito estructuralmente. La sección de control es descrita comportamentalmente.
Tarea A - Arquitecture B - Buffer C - Component D - Downto E - Elsif F - For G - Generate H - Function I - If J - Procedure K - Case L - Loop M - Map (Port map) N - Not O - Others P - Process Q - Package R - Subtype S - Select (With Select) T - Type U - Use V - Variable W - When else X - Xor Y - Wait Z – ‘Z’ (High Impedance)
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
45
Elabore, escriba, consulte, busque, copie o pastelee, un ejemplo completo en VHDL que de acuerdo a la primera letra de su nombre posea uno de las siguientes palabras claves del lenguaje.
En cada una de las próximas tres clases, se escogerán al azar tres estudiantes diferentes a fin de explicar en el tablero su ejemplo en VHDL.