Vous êtes sur la page 1sur 80

Diseo Digital.

Tema 1: Lenguaje VHDL

Diseo Digital Tema 1. Lenguaje VHDL

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-1

Contenidos
Diseo con Lenguajes de Descripcin de Hardware (HDL) Unidades de diseo y libreras Tipos de datos y operadores Objetos VHDL La declaracin de entidad El cuerpo de arquitectura Procesos Funciones de resolucin Los paquetes Cuerpos de arquitectura estructurales Modelado de autmatas Ejemplos
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Diseo Digital. Tema 1: Lenguaje VHDL

1-2

Diseo con Lenguajes de Descripcin de Hardware


Introduccin
Diseo Digital. Tema 1: Lenguaje VHDL

Los HDLs permiten modelar circuitos digitales:


Interfaces Funcionamiento / Estructura Retardos

Los HDLs sirven para:


Modelado de circuitos para ser sintetizados Especificacin formal del funcionamiento de sistemas Evaluacin de arquitecturas

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-3

Diseo con Lenguajes de Descripcin de Hardware


Introduccin
Diseo Digital. Tema 1: Lenguaje VHDL

Antecedentes
Lenguajes para el diseo de PLDs sencillos
Escasa capacidad descriptiva
Ecuaciones lgicas explcitas Mquinas de estados

Dependencia de la tecnologa Lenguajes propietarios Ejemplos


PALASM (AMD) AMAZE (Philips)

Lenguaje ABEL

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-4

Diseo con Lenguajes de Descripcin de Hardware


Introduccin
Diseo Digital. Tema 1: Lenguaje VHDL

El lenguaje Verilog Diseado por Gateway Design Automation


Publicado como norma IEEE en 1995 (IEEE 1364-1995) Concebido para simulacin Sintaxis parecida a la del lenguaje C Fcil de aprender Poco adecuado para modelado a alto nivel Algunas ambigedades sintcticas/semnticas Actualizado recientemente, Verilog-2000 (IEEE 1364- 2001)

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-5

Diseo con Lenguajes de Descripcin de Hardware


Introduccin
Diseo Digital. Tema 1: Lenguaje VHDL

El lenguaje VHDL
Promovido en 1982 por la Defense Advanced Research Projects Agency, DARPA del DoD americano Publicado como norma IEEE en 1987 (IEEE-1076) Posteriormente revisado en 1993 Orientado (inicialmente) a la especificacin y documentacin Sintaxis compleja, parecida a la del lenguaje Ada Algo ms difcil de aprender que Verilog Adecuado para diferentes niveles de abstraccin

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-6

Diseo con Lenguajes de Descripcin de Hardware


Introduccin
Diseo Digital. Tema 1: Lenguaje VHDL

Caractersticas de los HDLs


El modelado de los sistemas es bastante independiente de la tecnologa que se emplee en su realizacin Permiten la descripcin del hardware con distintos niveles de abstraccin (algortmico, RTL, estructural) Facilitan la portabilidad entre entornos de CAD por estar normalizados Facilitan la documentacin de las especificaciones y la verificacin formal de las mismas Facilitan la reutilizacin de las descripciones en distintos proyectos

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-7

Unidades de diseo y libreras


Unidades de diseo
Diseo Digital. Tema 1: Lenguaje VHDL

Bloques bsicos sobre los que se soporta el lenguaje Cinco tipos:


Declaracin de Entidad Declaracin de Paquete Declaracin de Configuracin Cuerpo de Arquitectura Cuerpo de Paquete Primarias

Secundarias

Dos categoras:
Primarias: pueden existir por s mismas Secundarias: requieren la existencia de una primaria

Cada una est orientada a una funcin concreta


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-8

Unidades de diseo y libreras


Unidades de diseo
Diseo Digital. Tema 1: Lenguaje VHDL

Declaracin de Entidad
Describe la interfaz del circuito

Cuerpo de Arquitectura
Describe el funcionamiento del circuito

Declaracin de Paquete
Declara tipos, funciones, componentes y otros objetos usados en la descripcin del circuito

Cuerpo de Paquete
Contiene la materializacin de las funciones declaradas en el paquete

Declaracin de Configuracin
Permite definir la estructura del diseo
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-9

Unidades de diseo y libreras


Libreras
Diseo Digital. Tema 1: Lenguaje VHDL

Estructura de datos dependiente de la herramienta que almacena unidades de diseo VHDL ya compiladas Se referencian mediante nombres lgicos Dos tipos:
Librera de trabajo: En la que se almacena la unidad de diseo analizada. Es nica Libreras de recursos: Contienen unidades de diseo referenciadas en la unidad de diseo analizada
Unidades de Unidades diseo de Unidades diseo de Unidades diseo de diseo

Libreras de recursos

Unidades de diseo

Librera de trabajo

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-10

Tipos de datos y operadores


Tipos de datos
Diseo Digital. Tema 1: Lenguaje VHDL

En VHDL todos los objetos (seales, variables, puertos, etc.) tienen asociado un tipo
Establece el conjunto de valores y las operaciones

Existen algunos tipos predefinidos en el lenguaje


Similares a los existentes en los lenguajes de programacin y otros ms orientados al modelado hardware Se encuentran en el paquete STANDARD, incluido en todas las herramientas de diseo con VHDL No todos ellos son sintetizables

Pueden definirse subtipos y tipos nuevos


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-11

Tipos de datos y operadores


Tipos predefinidos (1)
Diseo Digital. Tema 1: Lenguaje VHDL

Escalares:
Enumerados:
BOOLEAN, BIT, CHARACTER, SEVERITY_LEVEL

Enteros
INTEGER, NATURAL, POSITIVE

Fsicos
TIME

Flotantes
REAL

Compuestos:
Arrays:
STRING, BIT_VECTOR

Adecuados para el modelado de hardware

RECORD
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-12

Tipos de datos y operadores


Tipos predefinidos (2)
Diseo Digital. Tema 1: Lenguaje VHDL

Puntero:
ACCESS

Ficheros:
FILE

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-13

Tipos de datos y operadores


Tipos bit y bit_vector
Diseo Digital. Tema 1: Lenguaje VHDL

El tipo bit sirve para modelar niveles lgicos Conjunto de valores:


0 y 1

Operaciones definidas sobre l:


Lgicas: not, and, nand, or, nor, xor y xnor Comparacin: =, /=, <, <=, > y >= Concatenacin: &
type bit is ('0', '1');
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-14

Tipos de datos y operadores


Tipos bit y bit_vector
Diseo Digital. Tema 1: Lenguaje VHDL

El tipo bit_vector es un array de bit Permite modelar buses con un solo driver
Tiene definidas las mismas operaciones

Limitaciones de los tipos bit y bit_vector


Solo admiten los valores 0 y 1 No tienen definidas operaciones aritmticas No tienen definidas funciones de resolucin

type bit_vector is array (natural range <>) of bit;


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-15

Tipos de datos y operadores


Tipo time
Diseo Digital. Tema 1: Lenguaje VHDL

El tipo time sirve para especificar valores de tiempo en los modelos Tipo fsico: se define la unidad bsica y las derivadas de ella
type time is range -2147483647 to 2147483647 units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; end units;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-16

Tipos de datos y operadores


Tipos definidos en std_logic_1164
Diseo Digital. Tema 1: Lenguaje VHDL

Para solventar las limitaciones del tipo bit, aparece una ampliacin de la norma (IEEE-1164) que define el paquete std_logic_1164 Tipos std_ulogic y std_ulogic_vector
type std_ulogic is ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-'); ---------Uninitialized Forcing Unknown Forcing 0 Forcing 1 High Impedance Weak Unknown Weak 0 Weak 1 Don't care

type std_ulogic_vector is array ( natural range <> ) of std_ulogic;


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-17

Tipos de datos y operadores


Tipos definidos en std_logic_1164
Diseo Digital. Tema 1: Lenguaje VHDL

Tipos std_logic y std_logic_vector Ventajas


Mltiples valores lgicos Permite modelar buses con varios drivers

Inconvenientes
No se definen operaciones aritmticas en este paquete
subtype std_logic is resolved std_ulogic;
type std_logic_vector is array (natural range <> ) of std_logic;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-18

Tipos de datos y operadores


Otros paquetes
Diseo Digital. Tema 1: Lenguaje VHDL

La compaa Synopsys incluye en sus herramientas los paquetes:


std_logic_unsigned
Operaciones aritmticas entre std_logic_vector (sin signo)

std_logic_signed
Operaciones aritmticas entre std_logic_vector (con signo)

std_logic_arith
Tipos signed y unsigned y operaciones aritmticas entre ellos

La norma IEEE-1076.3 define el paquete numeric_std


Tipos signed y unsigned Operaciones lgicas y aritmticas entre ellos Funciones de conversin
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-19

Tipos de datos y operadores


VHDL IEEE
IEEE- 1076.3 Paquete numeric_std

Diseo Digital. Tema 1: Lenguaje VHDL

VHDL de facto
SYNOPSYS Paquetes std_logic_signed, std_logic_unsigned y std_logic_arith IEEE- 1164 Paquete std_logic_1164

Resumen

Operaciones aritmticas Tipos signed y unsigned

Tipo std_logic Multivaluado Funciones de resolucin

IEEE- 1076 Lenguaje + Tipos predefinidos


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Tipo bit Operaciones lgicas


1-20

Tipos de datos y operadores


Clusulas de visibilidad
Diseo Digital. Tema 1: Lenguaje VHDL

En las herramientas comerciales los paquetes vistos se almacenan en una librera denominada IEEE Para poder emplear los elementos declarados en los mismos, es necesario hacerlos visibles
Librera IEEE
std_logic_arith std_logic_signed
std_logic_unsigned

library ieee; use ieee.std_logic_1164.all; use work.microSEC_pkg.all; entity DataPath is ...

std_logic_1164

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-21

Tipos de datos y operadores


Clusulas de visibilidad
Diseo Digital. Tema 1: Lenguaje VHDL

Las clusulas de visibilidad preceden inmediatamente al cdigo de la unidad VHDL que afectan
library ieee; use ieee.std_logic_1164.std_ulogic; -- Da visibilidad unicamente al tipo std_ulogic library ieee; use ieee.std_logic_1164.all, ieee.std_logic_unsigned.all; -- Da visibilidad al contenido de ambos paquetes use work.tristate.all; -- Da visibilidad al contenido del paquete
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-22

Tipos de datos y operadores


Atributos de los tipos de datos
Diseo Digital. Tema 1: Lenguaje VHDL

Mecanismo para obtener un valor a partir de un tipo o de los valores de un tipo Ejemplos:
bit'left -- Es '0' std_logic'left -- Es 'U' std_logic'right -- Es '-' type short is range 128 to 127; type trohs is range 127 downto -128; short'left -- Es 128 trohs'left -- Es 127 short'low -- Es 128 trohs'low -- Es -128 short'right -- Es 127 short'high -- Es 127
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-23

Objetos VHDL
Tipos de objetos
Diseo Digital. Tema 1: Lenguaje VHDL

Un objeto es un contenedor de valores Tipos de objetos en VHDL:


Constantes Variables Ficheros Seales Similares a los existentes en los lenguajes de programacin

Modelan nodos lgicos

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-24

Objetos VHDL
Declaracin
Diseo Digital. Tema 1: Lenguaje VHDL

Antes de poder ser utilizado, un objeto debe declararse Los objetos deben declararse en las zonas de declaracin de las unidades y construcciones VHDL
Una declaracin de paquete Un cuerpo de arquitectura Un proceso Un subprograma

variable cont : integer; constant pi : real; signal nodo1 : bit;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-25

Objetos VHDL
Declaracin
Diseo Digital. Tema 1: Lenguaje VHDL

Una vez declarado un objeto es posible utilizarlo en el mbito en que es visible El mbito de visibilidad depende de la zona de declaracin
Una seal declarada en un cuerpo de arquitectura puede utilizarse en cualquier construccin dentro de la arquitectura Un objeto declarado en una declaracin de entidad puede ser utilizado en ella misma y en cualquiera de los cuerpos de arquitectura que tenga asociados Un objeto declarado en una declaracin de paquete puede ser utilizado en cualquier unidad para la que el paquete sea visible
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-26

Objetos VHDL
Inicializacin
Diseo Digital. Tema 1: Lenguaje VHDL

Al declarar una variable, constante o seal, es posible inicializarlo Si no se inicializan explcitamente, su valor inicial es el primero en el orden de enumeracin del tipo con que se definen Esta inicializacin se ignora a efectos de sntesis lgica
variable constant signal signal cont pi nodo1 nodo2 : : : : std_logic; -- Valor inicial: 'U' real := 3.141596; bit; -- Valor inicial: '0' bit := '0';
1-27

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Objetos VHDL
Asignacin
Diseo Digital. Tema 1: Lenguaje VHDL

A un objeto slo pueden asignrsele valores del tipo sobre el que est definido
variable flag1, flag2 : bit; variable flag3 : std_ulogic; flag1 := '0'; flag1 := 'U'; -- Asignacin vlida -- Invlida: el caracter 'U' no pertenece -- al tipo BIT flag1 := 0; -- Invalida: se le asigna un valor entero flag1 := flag2; -- Vlida: variables del mismo tipo flag1 := flag3; -- Invlida: variables de distinto tipo

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-28

Objetos VHDL
Asignacin
Diseo Digital. Tema 1: Lenguaje VHDL

Para asignar valores a variables se usa el smbolo := Para asignar valores a seales se usa el smbolo <=
variable flag1, flag2 : bit; signal nodo1, nodo2 : bit; flag1 nodo1 flag1 nodo1 flag1 nodo1 := <= := <= := <= '0'; '0'; nodo1; flag2; flag2; nodo2;
1-29

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Objetos VHDL
Asignacin
Diseo Digital. Tema 1: Lenguaje VHDL

Para poder asignar a un objeto valores de un tipo distinto, pueden usarse funciones de conversin Verificar la sintetizabilidad !

variable flag : bit; signal nodo : std_ulogic; nodo <= To_StdULogic(flag); flag := To_bit(nodo, '0');

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-30

La declaracin de entidad
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

Modela el interfaz de los dispositivos


entity {nombre del dispositivo} is generic( {nombre del parmetro} : in {tipo} := {valor}; {nombre del parmetro} : in {tipo} := {valor}); port( {lista de puertos de entrada} : in {tipo}; {lista de puertos bidirecc.} : inout {tipo}; {lista de puertos de salida} : out {tipo}; {lista de puertos de salida} : buffer {tipo}); end [entity] {nombre del dispositivo};

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-31

La declaracin de entidad
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

{nombre del dispositivo}

es una etiqueta de usuario que identifica el dispositivo hardware cuyo interfaz se define
Ejemplos: cont8bits, mux21, mem16K, u8086, ...

Puede incluir una lista de genricos


Constantes cuyo valor se define al instanciar la Declaracin de Entidad

La lista de genricos precede, dentro de la sintaxis de la declaracin de entidad a la declaracin de los puertos En las descripciones sintetizables se utilizan para construir dispositivos parametrizables
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-32

La declaracin de entidad
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

Los puertos de la declaracin de entidad son objetos de tipo seal A diferencia de otras seales tienen direccionalidad Para cada puerto del dispositivo hay que definir Su nombre: etiqueta de usuario Su direccionalidad: in, out, inout o buffer Su tipo de datos

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-33

La declaracin de entidad
Direccionalidad de los puertos
Diseo Digital. Tema 1: Lenguaje VHDL

En los puertos de entrada (in) slo se pueden leer valores


No pueden aparecer a la izquierda de una sentencia de asignacin

En los puertos de salida (out) slo se pueden escribir valores


No pueden aparecer a la derecha de una sentencia de asignacin ni formar parte de condiciones evaluables

En los puertos bidireccionales (inout) se pueden leer y escribir valores Los puertos de tipo buffer sirven para modelar salidas cuyo valor es necesario leer
Puede evitarse su uso

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-34

La declaracin de entidad
Ejemplo
Diseo Digital. Tema 1: Lenguaje VHDL

library ieee; use ieee.std_logic_1164.all; entity comp is generic (n : in integer range 0 to 31 := 4); port( AgBin : in std_logic; --\ AeqBin : in std_logic; -- ) Entradas de acarreo AminBin : in std_logic; --/ A : in std_logic_vector(n downto 0); -- Datos que B : in std_logic_vector(n downto 0); -- comparar AgB : out std_logic; --\ AeqB : out std_logic; -- ) Salidas del comparador AminB : out std_logic); --/ end entity;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-35

El cuerpo de arquitectura
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

Son las unidades del lenguaje VHDL que describen cmo funcionan los dispositivos o cul es su estructura Son unidades secundarias y estn asociados a una determinada Declaracin de Entidad (unidad primaria) Heredan la visibilidad de los objetos declarados o visibles por la Declaracin de Entidad a la que estn asociadas Antes de compilar un Cuerpo de Arquitectura ha de haber sido compilada satisfactoriamente la Declaracin de Entidad correspondiente

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-36

El cuerpo de arquitectura
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

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 Declaracin de Entidad tienen que almacenarse en la misma librera que sta
Librera VHDL
Entidad Arquitectura behav Arquitectura rtl Arquitectura struc

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-37

El cuerpo de arquitectura
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

architecture {nombre arquit} of {nombre entidad} is {zona de declaracin} begin {zona de descripcin} end [architecture] {nombre arquit};

{nombre arquit}

identifica el nombre de la unidad

Suele utilizarse para documentar el estilo con el que est descrito el dispositivo: rtl, estructural, test
{nombre entidad}

especifica la Declaracin de Entidad a la que est asociado el Cuerpo de Arquitectura


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-38

El cuerpo de arquitectura
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

En la {zona de declaracin} se declaran -para ser usados en la descripcin Objetos (seales y constantes, habitualmente) Subprogramas Sentencias de interconexin local (si hay instanciaciones de componentes en la arquitectura)

En la {zona de descripcin} se disponen los elementos que describen el comportamiento del hardware:
Procesos Sentencias de asignacin concurrente Instanciaciones de componentes Modelado rtl Modelado estructural

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-39

El cuerpo de arquitectura
Formas de modelado
Diseo Digital. Tema 1: Lenguaje VHDL

Modelado funcional (rtl)

architecture rtl of circuito is process (A, B, C) begin s <= (A and B) and C; end end rtl;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-40

El cuerpo de arquitectura
Formas de modelado
Diseo Digital. Tema 1: Lenguaje VHDL

Modelado estructural

architecture estruc of circuito is -- netlist VHDL

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-41

Procesos
Concepto y sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

Son bloques de cdigo que se utilizan, fundamentalmente, en la realizacin de descripciones RTL. Permiten representar el procesamiento realizado por los dispositivos digitales Los procesos se sitan en la {zona de descripcin} de los Cuerpos de Arquitectura
[{nombre proceso}]: process [{lista de sensibilidad}] {zona de declaracin} begin {algoritmo de procesamiento} end process [{nombre proceso}];
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-42

Procesos
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

La {lista de sensibilidad} es optativa


Contiene el conjunto de seales cuyos eventos provocan la activacin del proceso Puede no existir. En ese caso, deber incluirse alguna sentencia wait dentro del algoritmo codificado

En la {zona de declaracin} del proceso pueden declararse objetos locales al mismo; tpicamente variables El {algoritmo de procesamiento} codificado dentro de un proceso se construye con sentencias similares a las existentes en los HLLs: Sentencias IF, CASE y de asignacin, Bucles, etc.

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-43

Procesos
Ejecucin
Diseo Digital. Tema 1: Lenguaje VHDL

Cada vez que una de las seales a las que es sensible un proceso sufre un evento, las sentencias incluidas dentro de ste se ejecutan de la siguiente manera:
Si tiene {lista de sensibilidad}, se ejecutan todas las sentencias incluidas en l, suspendindose la ejecucin al alcanzarse la ltima sentencia Si contiene sentencias wait, se ejecutan las sentencias que la sigan hasta alcanzar una nueva sentencia wait

El uso de la {lista de sensibilidad} o de sentencias wait es excluyente, es decir, no pueden existir ambas en el mismo proceso
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-44

Procesos
Modelado de una puerta AND
Diseo Digital. Tema 1: Lenguaje VHDL

Con lista de sensibilidad


process (a, b) begin if a = '1' and b = '1' then sal <= '1'; else sal <= '0'; a end if; end process; b

sal
Activacin del proceso
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-45

Procesos
Modelado de una puerta AND
Diseo Digital. Tema 1: Lenguaje VHDL

Con sentencia wait


process begin wait on a, b; if a = '1' and b = '1' then sal <= '1'; else a sal <= '0'; end if; b end process;

sal
Activacin del proceso
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-46

Procesos
Sentencias wait
Diseo Digital. Tema 1: Lenguaje VHDL

Posibles sintaxis
wait on {lista de seales}; wait for {valor tipo TIME}; wait until {condicin};

wait on suspende la ejecucin del proceso hasta que se produzca un evento en alguna de las seales de la lista wait for suspende la ejecucin del proceso hasta que transcurra un tiempo de simulacin igual al especificado wait until suspende la ejecucin del proceso hasta que se verifique la condicin anexa
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-47

Procesos
Ejemplo uso de wait
Diseo Digital. Tema 1: Lenguaje VHDL

Generacin de una seal de reloj para test


clock: process constant Tclk : time := 67817 ps; -- 14.7456 MHz begin s_Clk <= wait for s_Clk <= wait for end process

'0'; Tclk/2; not s_Clk; Tclk/2; clock;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-48

Asignacin de valor a seal


Sintaxis
{nombre seal} <= {valor} [after {valor tipo TIME}];

Diseo Digital. Tema 1: Lenguaje VHDL

{valor} puede ser un objeto del mismo tipo que la seal o un valor del tipo de sta Puede incluir, opcionalmente, una clusula after
Indica el tiempo de simulacin que debe transcurrir desde la ejecucin de la sentencia hasta la asignacin efectiva del valor especificado Es ignorada por las herramientas de sntesis lgica
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-49

Asignacin de valor a seal


Mecanismo de asignacin
Diseo Digital. Tema 1: Lenguaje VHDL

La seal afectada por la sentencia nunca se actualiza durante la ejecucin de la misma, sino:
Un tiempo despus -de valor igual al especificado en la sentencia after, si existe En caso contrario, despus de suspenderse la ejecucin del proceso

La sentencia proyecta una transaccin sobre el valor de la seal. Pueden ponerse varias en cola

Este mecanismo resulta imprescindible para el modelado del comportamiento dinmico del hardware
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-50

Asignacin de valor a variables


Mecanismo de asignacin
Diseo Digital. Tema 1: Lenguaje VHDL

La asignacin de valor a variables (:=) se efecta inmediatamente despus de la ejecucin de la sentencia que realiza la asignacin Mantienen su valor cuando se suspende el proceso Son locales, es decir, se declaran en el propio proceso

Obsrvese que el mecanismo de actualizacin de variables es radicalmente distinto del de actualizacin de seales

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-51

Modelo de tiempo de simulacin en VHDL


Ciclo de simulacin
Diseo Digital. Tema 1: Lenguaje VHDL

Procesamiento de eventos
Se procesan las transacciones pendientes para el tiempo de simulacin actual

Ejecucin de procesos
Se proyectan transacciones para un tiempo de simulacin futuro

+T +

Se actualizan las seales

Se ejecutan los procesos sensibles a las seales actualizadas

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-52

Modelo de tiempo de simulacin en VHDL


Ejemplo
Diseo Digital. Tema 1: Lenguaje VHDL

-- Estimulos a <= '1'; wait for 4 ns; a <= '0'; wait for 4 ns; a <= '1'; wait;

architecture rtl of inv is begin process (a) begin b <= not a; end process; end rtl;

entity inv is port( a : in bit; b : out bit); end entity;

0 ns
a=0 a=1 b=0 b=1 b0 b=0 + 2 +

4 ns
a0 a=0 b1 b=1 + 2 +

8 ns
a1 a=1

T (ns)

a1 b1

+ b0 b=0 + 2

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-53

Procesos
Sentencias de ejecucin secuencial
Diseo Digital. Tema 1: Lenguaje VHDL

Las sentencias de ejecucin secuencial ms frecuentemente utilizadas en la codificacin de procesos son:


Las sentencias de asignacin (a seal o variable) Las sentencias condicionales if y case Los bucles

Adems de stas, tambin pueden utilizarse:


Las sentencias null, assert, exit, next y return Las llamadas secuenciales a subprogramas

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-54

Procesos
Sentencias de ejecucin secuencial: sentencia if
Diseo Digital. Tema 1: Lenguaje VHDL

Posibles formatos:
if {condicin} then {sentencias de ejecucin secuencial}; end if; if {condicin} then {sentencias de ejecucin secuencial}; else {sentencias de ejecucin secuencial}; end if;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-55

Procesos
Sentencias de ejecucin secuencial: sentencia if
Diseo Digital. Tema 1: Lenguaje VHDL

Posibles formatos:
if {condicin} then {sentencias de ejecucin elsif {condicin} then {sentencias de ejecucin elsif {condicin} then {sentencias de ejecucin else {sentencias de ejecucin end if;

secuencial}; secuencial}; secuencial}; secuencial};

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-56

Procesos
Sentencias de ejecucin secuencial: sentencia case
Diseo Digital. Tema 1: Lenguaje VHDL

Formato:

Tipo discreto o array de una dimensin

case {clusula de seleccin} when {valor} => {sentencias ejecucin secuencial}; when {valor} => {sentencias ejecucin secuencial}; when {valor} => {sentencias ejecucin secuencial}; end case; Valor,

grupo de valores u others


1-57

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Procesos
Sentencias de ejecucin secuencial: bucles
Diseo Digital. Tema 1: Lenguaje VHDL

Formatos:
-- Bucle for for {iteraciones} loop {sentencias ejecucin secuencial}; end loop; -- Bucle while while {condicin} loop {sentencias ejecucin secuencial}; end loop;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-58

Procesos
Sentencias de ejecucin secuencial: bucles
Diseo Digital. Tema 1: Lenguaje VHDL

Formatos:
-- Bucle infinito loop {sentencias ejecucin secuencial}; end loop;

La sentencia exit permite salir del bucle La sentencia next permite pasar a la siguiente iteracin

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-59

Procesos
Sentencias concurrentes
Diseo Digital. Tema 1: Lenguaje VHDL

Son equivalentes a los procesos pero con una sintaxis ms simple Las sentencias concurrentes de asignacin de valor a seal se ejecutan cuando ocurre un evento en cualquiera de las seales a la derecha de la asignacin
architecture rtl of inv is begin process (a) architecture rtl of inv is begin begin b <= not a; b <= not a; end process; end rtl; end rtl;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-60

Procesos
Sentencias concurrentes
Diseo Digital. Tema 1: Lenguaje VHDL

Las sentencias concurrentes del lenguaje son:


Sentencias Concurrentes de Asignacin de valor a seales:
Asignacin Incondicional Asignacin Condicional Asignacin Seleccionada

Sentencias de llamada concurrente a Subprogramas Sentencias Concurrentes de Comprobacin de Condiciones

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-61

Procesos
Sentencias concurrentes
Diseo Digital. Tema 1: Lenguaje VHDL

Sentencia de asignacin incondicional

process (a, b) begin sal <= a + b; end process;

sal <= a + b;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-62

Procesos
Sentencias concurrentes
Diseo Digital. Tema 1: Lenguaje VHDL

Sentencia de asignacin condicional


process (a, b, s) begin if s = '0' then sal <= a; else sal <= b; end if; end process;

sal <= a when s = '0' else b;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-63

Procesos
Sentencias concurrentes
Diseo Digital. Tema 1: Lenguaje VHDL

Sentencia de asignacin con seleccin


process (a, b, c, d, s) begin case s is when "00" => sal <= a; when "01" => sal <= b; when "10" => sal <= c; when "11" => sal <= d; end case; end process;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

with s select sal <= a when "00", b when "01", c when "10", d when "11";

1-64

Funciones de resolucin
Ejemplo: bus triestado
Diseo Digital. Tema 1: Lenguaje VHDL

Ctrl1 A Ctrl2 B Ctrl3 C

architecture rtl of bus is begin bus_Z <= A when Ctrl1 = '1' else 'Z'; bus_Z <= B when Ctrl2 = '1' else 'Z'; bus_Z <= C when Ctrl3 = '1' else 'Z'; end rtl; bus_Z

Qu valor toma bus_Z?


Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-65

Funciones de resolucin
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

Cada proceso en el que se asigna valor a una seal es un driver de la seal Cuando una seal tiene ms de un driver, debe ser de un tipo que tenga asociada una funcin de resolucin, que sea capaz de determinar, a partir de los valores que proyectan los distintos drivers, cul es el efectivamente asignado Ejemplos:
(A = 'Z', B = 'Z', C = '1' ) => bus_Z = '1' (A = 'Z', B = '1', C = '0') => bus_Z = 'X'
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-66

Funciones de resolucin
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

A los tipos de datos que tienen una funcin de resolucin asociada se los denomina tipos resolved. Se construyen a partir de otro tipo bsico, aadiendo la funcin de resolucin En el paquete std_logic_1164, se declara el tipo std_logic, de la siguiente manera:
subtype std_logic is resolved std_ulogic;

resolved es el nombre de la funcin de resolucin asociada al tipo std_ulogic para crear el tipo std_logic
function resolved (s: std_ulogic_vector) return std_ulogic;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-67

Funciones de resolucin
Funcin de resolucin del tipo std_logic
type stdlogic_table is array(std_ulogic, std_ulogic) of std_ulogic; --------------------------------------------------------------- resolution function -------------------------------------------------------------constant resolution_table : stdlogic_table := ( ----------------------------------------------------------| U X 0 1 Z W L H | | ---------------------------------------------------------( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X | ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 | ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 | ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z | ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L | ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ));-- | - |
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Diseo Digital. Tema 1: Lenguaje VHDL

1-68

Funciones de resolucin
Funcin de resolucin del tipo std_logic
function resolved ( s : std_ulogic_vector ) return std_ulogic is variable result : std_ulogic := 'Z'; -- weakest state default begin -- the test for a single driver is essential otherwise the -- loop would return 'X' for a single driver of '-' and that -- would conflict with the value of a single driver unresolved -- signal. if (s'LENGTH = 1) then return s(s'LOW); else for i in s'RANGE loop result := resolution_table(result, s(i)); end loop; end if; return result; end resolved;
Diseo Digital. Tema 1: Lenguaje VHDL

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-69

Los paquetes
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

Cumplen funciones equivalentes a las de las libreras en los lenguajes de programacin de alto nivel Contienen, fundamentalmente, tipos de datos y operadores definidos por el usuario, subprogramas y componentes Se construyen con dos unidades del lenguaje:
La Declaracin de Paquete, que es la vista pblica del Paquete El Cuerpo de paquete, que contiene la definicin de los operadores y subprogramas que aparecen en la Declaracin del Paquete
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-70

Los paquetes
Conceptos
Diseo Digital. Tema 1: Lenguaje VHDL

Los elementos declarados en un Paquete pueden ser utilizados en otras unidades VHDL haciendo uso de clusulas de visibilidad
Pblico

Paquete Cuerpo de Paquete

Descripcin VHDL

Clusulas de visibilidad: library use


1-71

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Los paquetes
Sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

package {nombre del paquete} is {zona de declaracin} end {nombre del paquete};

package body {nombre del paquete} is {zona de declaracin} end {nombre del paquete};

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-72

Los paquetes
Ejemplo
package milib_pkg is component and port(a : in bit; b : in bit; sal : out bit); end component; component inv port(ent : in bit; sal : out bit); end component; end milib_pkg;
Diseo Digital. Tema 1: Lenguaje VHDL

library work; -- Innecesaria use work.milib_pkg.all; architecture str of nand is signal nodo bit; begin u0: and port map (ent1, ent2, nodo); u1: inv port map (nodo, sal); end str;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-73

Cuerpos de arquitectura estructurales


Conceptos y sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

El comportamiento del hardware se modela por medio de la interconexin de un conjunto de componentes (netlist VHDL) Los componentes instanciados en las sentencias de instanciacin de componentes deben haber sido previamente declarados La sintaxis ms simple de una sentencia de instanciacin de componentes es:
{nombre instancia} : {nombre componente} [generic map ({lista de asociaciones})] port map ({lista de interconexiones});
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-74

Cuerpos de arquitectura estructurales


Conceptos y sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

{nombre instancia}

identifica cada referencia particular a un componente. Debe ser distinto para cada sentencia identifica el componente instanciado. Debe coincidir con el nombre de un componente declarado establece la relacin entre los genricos y su valor para la instancia actual

{nombre componente}

{lista de asociaciones}

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-75

Cuerpos de arquitectura estructurales


Conceptos y sintaxis
Diseo Digital. Tema 1: Lenguaje VHDL

{lista de interconexiones}

establece una conexin entre cada puerto de la declaracin del componente y una seal (la seal ser, en general, uno de los puertos de la declaracin de entidad del dispositivo que se est declarando o una seal declarada en el propio cuerpo de arquitectura)

La interconexin puede definirse de dos modos:


Explcita (por nombre) Implcita (por posicin)

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-76

Cuerpos de arquitectura estructurales


Ejemplo
Diseo Digital. Tema 1: Lenguaje VHDL

library ieee; use ieee.std_logic_1164.all; entity p_and_3 is port(A, B, C : in std_logic; S : out std_logic); end entity; architecture estructural of p_and_3 is component p_and_2 is port (ent1, ent2 : in std_logic; sal : out std_logic); end component; signal nodo: std_logic; begin u0: p_and_2 port map (ent1 => A, ent2 => B, sal => nodo); u1: p_and_2 port map (nodo, C , S); end estructural;
Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

Puerta AND de tres entradas

Conexin explcita

Conexin implcita
1-77

Cuerpos de arquitectura estructurales


Los componentes
Diseo Digital. Tema 1: Lenguaje VHDL

Los componentes son las construcciones VHDL que permiten instanciar dispositivos para realizar descripciones estructurales Antes de instanciar el componente es necesario declararlo La sintaxis bsica de la declaracin de componente es:
component {nombre del componente} is [generic ({lista de genricos});] port ({lista de puertos}); end component;

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-78

Cuerpos de arquitectura estructurales


Procedimiento recomendado
Diseo Digital. Tema 1: Lenguaje VHDL

Crear la librera de diseo (declaraciones de entidad y los cuerpos de arquitectura asociados) Crear un paquete e incluirlo en la librera Incluir en el paquete la declaracin de todos los componentes de la librera de diseo Dar visibilidad al paquete en la unidad de diseo estructural

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-79

Bibliografa
VHDL Lenguaje Estndar de Diseo Electrnico
Lluis Ters y otros. Ed. McGraw-Hill

Diseo Digital. Tema 1: Lenguaje VHDL

VHDL for Logic Synthesis


Andrew Rushton. Ed. Wiley

ModelSim SE Users Manual


Mentor Graphics Corporation

LeonardoSpectrum HDL Synthesis Manual


Mentor Graphics Corporation

Departamento de Sistemas Electrnicos y de Control Universidad Politcnica de Madrid

1-80