You are on page 1of 19

Microelectrnica

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)

Estructura bsica de un archivo fuente VHDL


Encabezamiento

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

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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;

a bit b bit ctrl bit Mux21 bit z

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

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO

ESTILO FLUJO DE DATOS


Define la funcionalidad de un dispositivo mediante un conjunto de ecuaciones ejecutadas concurrentemente que determinan el flujo que van a seguir los datos entre la entrada y la salida. Existe una correspondencia directa entre el cdigo y su implementacin hardware. Mux21 en estilo flujo de datos:
architecture FlujoDatos of Mux21 is signal ctrl_n, n1, n2 : bit; begin ctrl_n <= not (ctrl) after 1 ns; n1 <= ctrl_n and a after 2 ns; n2 <= ctrl and b after 2 ns; z <= (n1 or n2) after 2 ns; end FlujoDatos; b ctrl ctrl_n a n2 n1 z

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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

En VHDL-93 la declaracin de los componentes cambia:


component INV is port (y: in bit; z: out bit); end component INV;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO

ENTIDAD & ARQUITECTURA


Una Declaracin de Entidad puede tener asociados varios Cuerpos de Arquitectura, con el fin de facilitar el modelado de un dispositivo con distintos niveles de abstraccin. Los cuerpos de Arquitectura de una Entidad tienen que almacenarse en la misma biblioteca que sta.
BIBLIOTECA VHDL Declaracin de entidad Cuerpos de arquitectura

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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

En ausencia de la unidad de configuracin los enlaces se configuran por defecto:


Entidad con la primera arquitectura, declarada para esa entidad, que se encuentre en la biblioteca de trabajo o en las bibliotecas visibles para ella. Cada instanciacin se enlaza con una declaracin de entidad visible que tenga el mismo nombre que el componente instanciado y una lista de puertos idntica a la de ste.
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

Microelectrnica

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO

Configuracin para enlazar entidad-arquitectura (muy poco usada).


Ejemplo:
configuration Mux21_cfg of Mux21 is for FlujoDatos end for; end Mux21_cfg;

Configuracin para enlazar componentes-dispositivos (muy usada).


Hay dos formas de hacerlo Especificacin de la configuracin: se definen los enlaces en la zona declarativa de la arquitectura Declaracin de la configuracin: los enlaces se definen en una unidad aparte
entity Component Component Biblioteca de trabajo

configuracin
entity arch-1 entity

Biblioteca de dispositivos

arch-1

arch-2

arch-3

arch-2

arch-3

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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;

-- Especificacin de la configuracin (clasulas de enlace)


for U0 : INV use entity work.INV (Algoritmico); for U1 : AND2 use entity work.AND2 (Algoritmicoa); for others : AND2 use entity work.AND2 (Algoritmicob); for all : OR2 use entity work.OR2 (Algoritmico); 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;

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;

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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;

En VHDL-93 se aadi una forma de instanciacin directa


architecture estructural of Mux21 is signal ctrl_n, n1, n2 : bit; -- Instanciacin directa U0: entity work.INV(Algoritmico) port map (e=>ctrl, y =>ctrl_n); U1: entity work.AND2(Algoritmicoa) port map (e1=>a, e2 =>ctrl_n, y=>n1); U2: entity work.AND2(Algoritmicob) port map (b, ctrl, n2); U3: entity work.OR2(Algoritmico) port map (e1=>n1, y=> z, e2 =>n2); end estructural;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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

La arquitectura del Mux21 del tipo FlujoDatos se puede reescribir como:


architecture FlujoDatos of Mux21 is signal ctrl_n, n1, n2 : bit; begin ctrl_n <= not (ctrl) after Biblio.RetardosOp.RetNOT; n1 <= ctrl_n and a after Biblio.RetardosOp.RetAND2; n2 <= ctrl and b after Biblio.RetardosOp.RetAND2; z <= (n1 or n2) after Biblio.RetardosOp.RetOR2; end FlujoDatos;

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

Microelectrnica end FlujoDatos;

ITT-Sistemas Electrnicos

EL LENGUAJE VHDL
UNIDADES BSICAS DE DISEO

METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES

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)

PACKAGE BODY (Cuerpo del paquete)

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

Principales bibliotecas y paquetes predefinidos:


Librera std Package standard Descripcin Define los tipos y subtipos bsicos de VHDL: boolean, bit, bit_vector, character, string, integer, real, time, Define tipo de datos como line y text y procedimientos de lectura y escritura en archivos Librera por defecto donde se almacenan las unidades de diseo del usuario Std_logic_1164 Std_logic_arith Std_logic_signed Define los tipos std_logic y std_logic_vector Define los tipos signed y unsigned y operaciones aritmticas entre ellos Define operaciones aritmticas con signo, operaciones de conversin y comparacin para std_logic_vector Define operaciones aritmticas sin signo, operaciones de conversin y comparacin para std_logic_vector Define tipos de datos y procedimientos de lectura y escritura de archivos para std_logic y std_logic_vector

std work ieee ieee ieee

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

You might also like