Professional Documents
Culture Documents
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
Son construcciones VHDL que sirven para modelar hardware y que se pueden analizar de forma independiente
Entidad (entity) Arquitectura (architecture) Configuracin (configuration) Paquete (package) Bibliotecas (library)
library <nombre_librera> use <nombre_librera>.<nombre_paquete>.all entity <nombre_entidad> is <listado_puertos> -- Declaracin de pines end <nombre_entidad>; architecture <nombre_arquitectura> of <nombre_entidad> -- Declaracin de seales internas -- Declaracin de tipos de datos definidos por el usuario -- Declaracin de componentes en caso de instanciacin -- Clasulas de enlace si fueran necesarias o bien fichero de -- configuracin begin -- Cuerpo de la arquitectura -- Se define la funcionalidad del diseo con: -- asignaciones concurrentes -- procesos -- instanciacin de componentes end <nombre_arquitectura>
1
Entidad
Arquitectura
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
ENTIDAD
Define el nombre del diseo y el interfaz con su entorno (puertos). Sintaxis:
entity identificador is port ( [genericos] <nombre_puertos> : <modo> <tipo>; [declaraciones] [begin sentencias] ); end [entity] [identificador] ; --VHDL-93 obligatorio entity
Ejemplo de declaracin de una entidad que implementa un multiplexor 2 a 1: entity Mux21 is port ( a : in bit; b : in bit; ctrl : in bit; z : out bit); end Mux21;
Los puertos equivalen a las patillas del circuito. Para cada puerto se debe indicar:
Nombre: referencia al pin Tipo de datos: clase de informacin que se transmite Modo: in: entrada, solo pueden ser ledos out: salida, solo pueden ser escritos inout: bidireccionales, pueden ser ledos y escritos buffer: son puertos de salida que pueden ser ledos
2
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
ARQUITECTURA
Sirve para definir la funcionalidad de la entidad que representa. Sintaxis:
architecture identificador of identificador_entidad is [declaraciones] begin [sentencias concurrentes] end [architecture] [identificador] ; --VHDL-93 obligatorio architecture
Identificador es el nombre que recibe la arquitectura y que servir para referenciarla ms tarde. Son visibles los objetos declarados en la entidad (puertos) [declaracin] para declarar ctes, tipos de datos, seales, etc Despus del begin -> sentencias de la arquitectura, son concurrentes y se ejecutan de forma asncrona entre s, comunicndose mediante seales. Dependiendo del tipo de sentencias existen distintos estilos descriptivos:
Estilo algortmico Estilo flujo de datos Estilo estructural
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
ESTILO ALGORTMICO
Define la funcionalidad del diseo mediante un algoritmo ejecutado secuencialmente. No hay ninguna referencia a la estructura utilizada para implementar el algoritmo hardware (caja negra). La arquitectura de Mux21 en estilo algortmico ser:
architecture algoritmico of Mux21 is begin process (a, b, ctrl) begin a bit if (ctrl =0) then b bit z<=a; else ctrl bit z<=b; end if; end process; end algoritmico;
0 1 Mux21
bit z
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
ESTILO ESTRUCTURAL
Descripcin mediante un conjunto de componentes ya descritos interconectados mediante seales (netlist). Los componentes: se declaran en la parte de declaraciones de la arquitectura y se instancian en el cuerpo de la misma Los componentes representan zcalos donde se pueden encajar los dispositivos (Declaracin de entidad + cuerpo de arquitectura asociado). Si se dispone de una biblioteca de dispositivos VHDL y se desea realizar una descripcin estructural con ellos se debe: Declarar los componentes Instanciarlos Utilizar alguno de los mecanismos que proporciona VHDL para establecer el enlace (binding) entre cada componente y el dispositivo VHDL asociado.
Biblioteca de Dispositivos VHDL Clasulas de enlace Descripcin estructural
entity sistema is port ( ); end sistema; architecture estructural of sistema is {DECLARACIN DE COMPONENTES} begin {INSTANCIACIN DE COMPONENTES} end estructural;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO Descripcin estructural del Mux21
architecture Estructural of Mux21 is component INV -- Declaracin de componentes port (y: in bit; z: out bit); end component; component AND2 port (x, y: in bit; z: out bit); end component; component OR2 port (x, y: in bit; z: out bit); end component; signal ctrl_n, n1, n2 : bit; --Declaracin de seales begin U0: INV port map (ctrl, ctrl_n); --Instanciacin de componentes U1: AND2 port map (ctrl_n, a, n1); U2: AND2 port map (ctrl, b, n2); U3: OR2 port map (n1, n2, z); end Estructural; b ctrl
UO U2 U3
ctrl_n a
U1
n2 n1
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
CONFIGURACIN
Es una unidad de diseo donde se establecen los enlaces entre una entidad y su cuerpo de arquitectura asociado o entre una declaracin de componente y su dispositivo VHDL asociado. Sintaxis:
configuration identificador of identificador_entidad is for identificador_arquitectura {for (ref_componente {,} | others | all) : id_componente use entity id_entity [(id_arquitectura); | use configuration id_configuration;] end for; } end for; end [configuration] [identificador] ;
Ventajas:
Enlaces concentrados y fciles de modificar Se puede especificar cualquier componente de cualquier nivel de jerarqua Se pueden enlazar componentes con una configuracin
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
configuracin
entity arch-1 entity
Biblioteca de dispositivos
arch-1
arch-2
arch-3
arch-2
arch-3
10
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO Ejemplo de especificacin de configuracin:
architecture Estructural of Mux21 is component INV port (y: in bit; z: out bit); end component; component AND2 port (x, y: in bit; z: out bit); end component; component OR2 port (x, y: in bit; z: out bit); end component; signal ctrl_n, n1, n2 : bit;
Obsrvese que los nombres de los componentes no tienen por qu coincidir con los de la entidad asociada
component X port (y: in bit; z: out bit); end component; for U0 : X use entity work.INV (Algoritmico); end for; U0: X port map (ctrl, ctrl_n);
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
11
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO Ejemplo de declaracin de configuracin:
architecture Estructural of Mux21 is component INV port (y: in bit; z: out bit); end component; component AND2 port (x, y: in bit; z: out bit); end component; component OR2 port (x, y: in bit; z: out bit); end component; signal ctrl_n, n1, n2 : bit; begin U0: INV port map (ctrl, ctrl_n); --Instanciacin de componentes U1: AND2 port map (ctrl_n, a, n1); U2: AND2 port map (ctrl, b, n2); U3: OR2 port map (n1, n2, z); end Estructural; -- Unidad de configuracin configuration Mux21_cfg of Mux21 is for estructural for U0 : INV use entity work.INV (Algoritmico); end for; for U1 : AND2 use entity work.AND2 (Algoritmicoa); end for; for others : AND2 use entity work.AND2 (Algoritmicob); end for; for all : OR2 use entity work.OR2 (Algoritmico); end for; end Mux21_cfg;
12
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO No hay que olvidar que lo primero que hay que tener es la descripcin de los componentes a enlazar y sus arquitecturas asociadas. Pueden estar definidos en la biblioteca de trabajo o en otra biblioteca aparte. En el ejemplo deberan estar incluidos en la biblioteca de trabajo (work):
entity INV is port (e: in bit; y: out bit); end INV; entity AND2 is port (e1,e2:in bit; y: out bit); end AND2; entity OR2 is port (e1, e2: in bit; y: out bit); end OR2; architecture Algoritmico of INV is begin y<= not e; end Algoritmico; architecture Algoritmico of OR2 is begin y<= e1 or e2; end Algoritmico; architecture Algoritmicoa of AND2 is begin y<= e1 and e2; end Algoritmicoa; architecture Algoritmicob of AND2 is begin y<=0 when (e1=0 or e2=0) else 1; end Algoritmicob;
13
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
PAQUETES
Facilitan la reutilizacin y actualizacin del cdigo ya que permiten agrupar un conjunto de declaraciones (tipos, constantes, subprogramas, etc) para que puedan ser usadas por varios dispositivos sin ser repetidas en la definicin de cada uno. Est formado por dos unidades: declaracin y cuerpo
Declaracin: visin externa de los elementos que se declaran Cuerpo: define su implementacin
Sintaxis:
Declaracin del paquete package identificador [declaraciones] end [package] [identificador]; --VHDL-93 obligatorio package Cuerpo del paquete package body identificador is [declaraciones cuerpo] end [package body] [identificador]; --VHDL-93 obligatorio package body
14
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
Ejemplo de un paquete donde se define el retardo de los operadores lgicos not, and y or.
package RetardosOp is constant RetNOT : time; constant RetAND2 : time; constant RetOR2 : time; end RetardosOp; package body RetardosOp is constant RetNOT : time := 1 ns; constant RetAND2 : time := 2 ns; constant RetOR2 : time := 3 ns; end RetardosOp;
El resultado de la compilacin de un paquete queda almacenado en la biblioteca de trabajo (work) y se puede salvar con cualquier otro nombre para poder ser usado ms adelante. Para poder utilizar las declaraciones definidas en un paquete stas deben ser visibles, para ello se usan clasulas de visibilidad. Sea un paquete llamado RetardosOp almacenado en una biblioteca llamada Biblio en donde hay definida una constante llamada RetNOT, para hacerla visible se usa la clasula: Biblio.RetardosOp.RetNOT
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
15
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
Para no tener que identificar la biblioteca cada vez que se utilice se hacen visibles todos los elementos del paquete, previamente se debe hacer visible la biblioteca.
library Biblio; --clasula de visibilidad de la biblioteca use Biblio.RetardosOp.all; -- clasula de visibilidad del paquete entity Mux21 is port ( a : in bit; b : in bit; ctrl : in bit; z : out bit); end Mux21; architecture FlujoDatos of Mux21 is signal ctrl_n, n1, n2 : bit; begin ctrl_n <= not (ctrl) after RetNOT; n1 <= ctrl_n and a after RetAND2; n2 <= ctrl and b after RetAND2; z <= (n1 or n2) after RetOR2;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
16
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
17
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
BIBLIOTECAS
Almacenan el resultado de la compilacin de las unidades de diseo.
LIBRARY (Biblioteca)
ENTITY (Entidad)
PACKAGE (Paquete)
CONFIGURATION (Configuracin)
Unidades Primarias
ARCHITECTURE (Arquitectura)
Unidades Secundarias
Ficheros descripcin del diseo compilacin biblioteca La biblioteca work sirve por defecto como biblioteca de trabajo. Atencin al orden de compilacin ya que unas unidades dependen de otras: declaracin del paquete, cuerpo del paquete, declaracin de la entidad, arquitectura y configuracin. Para dar visibilidad a una biblioteca se usa la sentencia library:
library Ejemplo library BibliotecaEjemplo
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
18
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO
textio
ieee
Std_logic_unsigned
ieee
Std_logic_textio
Las libreras std y work son siempre visibles no requieren la sentencia library. El resto necesitan las clasulas de visibilidad:
library ieee; use ieee.std_logic_1164.all; --para realizar operaciones aritmticas use ieee.std_logic_signed.all; -- con signo sobre std_logic_vector
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
18