Você está na página 1de 58

Lenguaje de descripcin de Hardware VHSIC

VHDL
Laboratorio de diseo digital
5/2/2006

Ingeniera Electrnica
1

VHDL: Antecedentes histricos


Herramientas EDA Necesidad de intercambio de informacin NETLIST

Primera descripcin de un diseo mediante un lenguaje

Describe los componentes de un circuito y su interconexin El formato EDIF (Electronic Design Interchange Format) es un estndar de los lenguajes de tipo Netlist
5/2/2006 2

VHDL: Antecedentes histricos


Uso de los lenguajes de tipo Netlist Sugiere la idea de una descripcin de mayor nivel de abstraccin (descripcin funcional)

Un lenguaje permite la edicin ms rpida y sencilla

Una descripcin con esquemas resulta ms fcil de entender


5/2/2006 3

VHDL: Antecedentes histricos


Necesidad de estandarizar los diseos
DoD

+
IEEE

Patrocinan el desarrollo en los 80s


VHDL-87

Es estndar de IEEE en 1987 El estndar se ampla en 1993

VHDL-93

Existen otros HDL populares como ABEL y VERILOG


5/2/2006 4

VHDL: Evolucin
Se inicia como un leguaje de modelado y especificacin. Documentacin Simulacin Luego se incorporan herramientas de sntesis capaces de manejar este tipo de descripciones

Ligado a actividades de

Ambientes integrados de diseo de ASICs


5/2/2006 5

VHDL: Evolucin
Es un lenguaje para el modelado, simulacin lgica dirigida por eventos y sntesis de sistemas de Hardware Sntesis Atraviesa verticalmente los niveles de abstraccin de la descripcin desde el ms alto al ms bajo

Subsisten problemas y algunas construcciones de alto nivel no resultan sintetizables Depende de la herramienta

5/2/2006

VHDL: Ventajas:
Es un estndar
Facilita la documentacin, minimiza los errores de comunicacin en el equipo de desarrollo e incrementa la portabilidad de los diseos.

Flexibilidad

Distintas metodologas de diseo: Top-down, Bottom-up, diseo jerrquico. Diversos niveles de descripcin en los componentes de un mismo circuito.
5/2/2006 7

VHDL:Ventajas
Independencia tecnolgica.
Los diseos pueden implementarse en dispositivos de diferentes tecnologas.

Bibliotecas y paquetes.
Gestin de diseo entre miembros de equipos de trabajo grandes. Diseo enfocado a la reutilizacin.
5/2/2006 8

VHDL como lenguaje de alto nivel


Lenguaje fuertemente tipado El compilador no permite asignar un valor a un objeto a menos que coincida con el tipo declarado previamente para ese objeto. Programas ms confiables y fciles de depurar Necesidad de conversiones de tipo
5/2/2006 9

VHDL como lenguaje de alto nivel


Potente control de flujo Control de condiciones: if-then, case Control de iteraciones: for, while Desarrollo y utilizacin de bibliotecas de diseo Estructuracin de cdigo con funciones y procedimientos
5/2/2006 10

Flujo de diseo VHDL

Componente frontal Compilacin Simulacin

Anlisis

Cdigo

Sntesis

Mapeo, rutas y ubicacin

Verificacin temporal

5/2/2006

Componente posterior

11

VHDL como lenguaje de alto nivel


1 OBJETIVO Modelar Hardware

Modelo de estructura VHDL incorpora tres caractersticas.


5/2/2006

Modelo de concurrencia Modelo de tiempo


12

VHDL: Modelo de estructura


Componentes y jerarqua Dispositivo VHDL

Entidad

Arquitectura

Declaracin de I/O Distintos estilos

Descripcin comportamental

Interfaz
5/2/2006

13

VHDL: Modelo de estructura


Programa VHDL
Archivo de texto Entidad Arquitectura

Se pueden definir mltiples arquitecturas para una entidad. Una entidad de nivel superior puede instanciar mltiples entidades de niveles inferiores.

5/2/2006

Diseo jerrquico

14

VHDL: Modelo de estructura, uso jerrquico


Entidad A Arquitectura A

Entidad B Arquitectura B

Entidad C Arquitectura C

Entidad D Arquitectura D
5/2/2006

Entidad E Arquitectura E
15

Objetos VHDL: Constantes, variables y seales


Un objeto VHDL es un elemento que guarda un valor de un tipo de datos especfico. Sobre l pueden invocarse operaciones coherentes con su tipo.

Compilador

Los objetos VHDL deben declararse en forma previa a su utilizacin en cualquier unidad de diseo.
5/2/2006 16

Objetos VHDL: Constantes, variables y seales


Constantes Contribuyen a la legibilidad, mantenimiento y portabilidad del programa. No cambian su valor una vez inicializadas.

constant nombre_constante: tipo := expresin ; Cambian su valor con sentencias de asignacin. En general son locales a los procesos. No tienen significado fsico. variable nombre_variable: tipo ; nombre_variable := expresin ;

Variables

5/2/2006

17

Objetos VHDL : Constantes, variables y seales


Las seales son abstracciones de conexiones fsicas o buses. Seales Cambian su valor con sentencias de asignacin. Tienen una analoga fsica directa. Interconectan componentes de un circuito. Sincronizan la ejecucin y suspencin de procesos. Son visibles para todos los procesos y bloques de una arquitectura. Los puertos de una entidad son seales.
5/2/2006

signal nombre_seal: tipo ; nombre_seal <= expresin ;

18

Componentes bsicos: Declaracin de entidad


Define el mdulo entity nombre_entidad is [ generic (lista propiedades);] [ port (nombre_seal : modo tipo_seal ); port (nombre_seal : modo tipo_seal) ; ............ port (nombre_seal : modo tipo_seal ) ;] [ declaraciones ] [ begin sentencias] end [ nombre_entidad] ;
5/2/2006 19

Componentes bsicos: Declaracin de entidad


Entidad mnima entity nombre_entidad is end ; Permite utilizar parmetros en la definicin de la entidad

generic

Al instanciar el componente se establece el valor Ejemplo: cantidad de bits de un sumador


5/2/2006 20

Componentes bsicos: Declaracin de entidad


port Define las entradas y salidas port (nombre_seal : modo tipo_seal) ; Modo in: Entrada, se lee. No se le puede asignar valor. out: Salida, se le asigna valor. No se puede leer. inout: Entrada / Salida. Puede ser escrito por mltiples fuentes, se puede producir la destruccin del chip. Tipo
5/2/2006

Define los valores y operaciones legales


21

Componentes bsicos:Declaracin de arquitectura


architecture nombre_arquitectura of entidad is [declaraciones] begin Define el [sentencias concurrentes] comportamiento end [nombre_arquitectura]; del mdulo Se modela HARDWARE La arquitectura puede modelarse en tres estilos
5/2/2006

Las sentencias concurrentes se ejecutan en forma simultnea. Estilo estructural Estilo flujo de datos Estilo algortmico
22

Modelado de circuitos combinacionales


Problema: pnico habilitar salir puerta ventana garage

alarma

La salida alarma es 1 si pnico es 1, o si habilitar es 1,salir es 0 y la casa no es segura. La casa es segura si puerta, ventana y garage son 1.
5/2/2006 23

Modelado del circuito con esquemas:


pnico habilitar salir ventana garage alarma

puerta
5/2/2006 24

Estilos de descripcin VHDL:


Descripcin Estructural Lista de componentes interconectados Descripcin de Flujo de datos interconexin entre objetos del lenguaje Descripcin Algortmica Descripcin comportamental p. p. dicha
5/2/2006 25

Nivel de Abstraccin

Elementos de diseo Estructural:


Describe la estructura del circuito como interconexn entre componentes Descripcin similar a un NETLIST (lenguaje de descripcin de estructura)

La descripcin de tipo NETLIST se corresponde en forma directa con su implementacin en hardware Sntesis directa de la descripcin

5/2/2006

26

--The IEEE standard 1164 package, declares std_logic, rising_edge(), etc. library IEEE; use IEEE.std_logic_1164.all; entity alarma is port ( panico, puerta,ventana,garage,salir,habilitar:in std_logic; alarma: out std_logic ); end alarma; architecture alarm_est of alarma is Modelado signal seguro: std_logic; signal noseguro: std_logic; VHDL signal nosalir: std_logic; signal suena: std_logic; component INV port (I:in std_logic; O:out std_logic) ; end component ; component AND3 Estilo port (I0,I1,I2:in std_logic; O:out std_logic) ; end component ; Estructural component OR2 port (I0,I1:in std_logic; O:out std_logic) ; end component ;
27

Declaraciones
5/2/2006

Entidad

begin U1: INV Modelado port map ( VHDL salir,nosalir ); U2: AND3 port map ( garage,ventana,puerta,seguro Las sentencias expresan ); la interconexin de los U3: INV port map ( componentes declarados seguro,noseguro ); U4: AND3 port map ( Estilo Netlist habilitar,nosalir,noseguro,suena ); U5: OR2 port map ( Estilo panico,suena,alarma Estructural ); end alarm_est; 5/2/2006 28 (continuacin)

Elementos de diseo Estructural:


Declaracin de componente:
component INV port (I:in std_logic; O:out std_logic) ; end component ;

Los componentes utilizados deben estar definidos Previamente en el diseo Bibliotecas del entorno Paquetes o bibliotecas adicionales
5/2/2006 29

Elementos de diseo Estructural:


Sentencia component: Nombre de una entidad ya definida que se usar en la arquitectura.
U1: INV port map ( salir,nosalir );

Palabras clave que asocian una lista de los ports de la entidad con seales en la arquitectura.
5/2/2006 30

Elementos de diseo de Flujo de Datos:


Describe el flujo de datos entre mdulos usando ecuaciones de transferencia concurrentes. Descripcin a nivel transferencia de registros (RTL)

Las estructuras a nivel RTL tienen una correspondencia muy estrecha con su implementacin en hardware Sntesis bastante directa de la descripcin
5/2/2006 31

Elementos de diseo de Flujo de Datos:


Es un estilo de descripcin a mitad de camino entre una descripcin estructural y una completamente abstracta Describe interconexiones entre objetos del lenguaje Permite estructuras de tipo condicional tpicas de una descripcin ms abstracta Todas las sentencias de la descripcin son concurrentes.
5/2/2006 32

--The IEEE standard 1164 package, declares std_logic, rising_edge(), etc. library IEEE; Estilo use IEEE.std_logic_1164.all; entity alarma is Flujo de Datos port ( panico, puerta,ventana,garage,salir,habilitar:in std_logic; alarma: out std_logic ); end alarma; architecture arch_flu of alarma is signal seguro: std_logic; Modelado signal noseguro: std_logic; Declaraciones signal nosalir: std_logic; VHDL signal suena: std_logic; begin nosalir <= not salir; seguro <= puerta and garage and ventana; Sentencias noseguro <= not seguro; suena <= habilitar and nosalir and noseguro; concurrentes alarma <= suena or panico; end arch_flu;
5/2/2006 33

VHDL: Modelo de concurrencia


Se modela HARDWARE usando SOFTWARE

Concurrente

Secuencial

Se utilizan sentencias concurrentes para describir el comportamiento del circuito y poder simular. Estas sentencias son sensibles a seales
5/2/2006

Los cambios en las seales son eventos.


34

VHDL: Modelo de tiempo


SIMULACIN Dirigida por eventos Dos escalas de tiempo

Interactan para soportar concurrencia en la simulacin Macroescala Microescala


5/2/2006

Mide el tiempo real Ciclos de simulacin que se realizan sin incrementos reales de tiempo

delay

35

VHDL: Modelo de concurrencia / Tiempo


Cada paso de simulacin consiste en la ejecucin de una sentencia concurrente. Seales Cambian su valor al finalizar cada ciclo de simulacin

delay
Estos cambios disparan a su vez otras sentencias concurrentes
5/2/2006

Otros pasos de simulacin


36

Elementos de diseo de Flujo de Datos:


Sentencias concurrentes que se disparan cuando cambia el valor de alguno de los argumentos de las asignaciones. Asignacin concurrente de seal:
nosalir <= not salir;

Asignacin condicional: WHEN ... ELSE


architecture mux_flu of mux is begin salida <= a when selec = 0 else b; end mux_flu;

5/2/2006

37

Elementos de diseo de Flujo de Datos:


Asignacin con seleccin:WITH...SELECT...WHEN
with estado select semaforo <= rojo verde Se modela amarillo Hardware no funciona when 01, when 10, when 11, when others;

Expresiones con valores indefinidos

Simulaciones incorrectas o imposibilidad de sntesis.

5/2/2006

Las asignacines condicional y con seleccin deben cubrir todos los posibles valores de la expresin

38

Elementos de diseo algortmico:


Es una descripcin de funcionalidad con un alto nivel de abstraccin. No es suficiente asignar valores a seales. Se necesitan instrucciones ms complejas para: Realizar clculos. Acumular resultados intermedios. Repetir una secuencia de operaciones.
5/2/2006 39

Elementos de diseo algortmico:


Se necesitan instrucciones de ejecucin secuencial similares a los lenguajes software de alto nivel PROCESOS Sentencias concurrentes bastante particulares.

Describen comportamiento en forma secuencial pero su ejecucin conjunta es concurrente Introducen variables locales para soportar los clculos.
5/2/2006 40

Elementos de diseo algortmico:


PROCESOS Sensibles a SEALES Sincronizan procesos entre s. Instrucciones secuenciales.

El significado en hardware es ms difuso, las instrucciones se ejecutan cuando cambian ciertos argumentos. Sntesis mucho ms complicada

5/2/2006

41

--The IEEE standard 1164 package, declares std_logic, rising_edge(), etc. library IEEE; use IEEE.std_logic_1164.all; entity alarma is port ( panico,puerta,ventana,garage,salir,habilitar:in std_logic; alarma: out std_logic ); end alarma; Modelado architecture arch_alarAlg of alarma is VHDL begin process (panico, puerta,ventana,garage,salir,habilitar) variable nosalir, seguro,noseguro,suena: std_logic; begin nosalir := not salir; seguro := ventana and puerta and garage; noseguro := not seguro; Estilo suena := noseguro and nosalir and habilitar; Algortmico alarma <= panico or suena; end process; end arch_alarAlg;
5/2/2006 42

Elementos de diseo algortmico:


El bloque PROCESS Compuesto por un conjunto de instrucciones secuenciales Permite estructuras ms abstractas como la ejecucin de bucles En un programa puede haber varios bloques PROCESS Cada bloque PROCESS es una instruccin concurrente

5/2/2006

43

Elementos de diseo algortmico:


Cmo se activa el bloque PROCESS?

n La forma habitual es con una lista de sensibilidad o Existe la posibilidad de usar un WAIT
explcito en algn lugar del bloque
5/2/2006 44

Elementos de diseo algortmico:


Activacin habitual del bloque PROCESS
process (panico, puerta,ventana,garage,salir,habilitar)

Lista de sensibilidad

Lista de seales

Cada vez que cambia alguna de las seales se ejecuta el bloque


5/2/2006 45

Elementos de diseo algortmico:


Activacin del bloque PROCESS con wait wait on lista-sensible until condicin for timeout Los tres parmetros son optativos. El que se verifique antes continuar la ejecucin del bloque. Si el bloque tiene una lista sensible no puede tener wait. wait on pulso; wait until contador > 6; Ejemplos wait on interrupcin for 25 ns; wait on reloj, sensor until contador > 5 for 50 ns;
5/2/2006 46

Elementos de diseo algortmico:


El bloque PROCESS tiene dos estados posibles EJECUCION SUSPENDIDO El proceso debe tener una lista sensible o un wait, en caso contrario se ejecuta en forma indefinida.

En simulacin no se podra salir nunca del lazo del process.


5/2/2006 47

Elementos de diseo algortmico:


Sentencia condicional IF...THEN...ELSE if condicin then sentencias elsif condicin then sentencias
zzz

Esta estructura puede anidarse. elsif y else son optativas. Conviene contemplar todos los posibles casos. El resultado de la sntesis est ms optimizado
48

else sentencias end if ;


5/2/2006

Elementos de diseo algortmico:


Sentencia condicional IF...THEN...ELSE
-- Ejecucin secuencial -- Ejecucin concurrente process ( a, b, c ) p < = 2 when a > b else begin 3 when a > c else if a > b then 4 when (a = c and c = b) else p <= 2; 5; elsif a > c then En asignaciones tiene su p <= 3; equivalente concurrente. elsif (a = c and c = b) then p <= 4 else p <= 5; end if ; La lista sensible debe incluir todas las end process ; seales cuyo cambio es importante.
5/2/2006 49

Elementos de diseo algortmico:


Sentencia de seleccin CASE
case expresin is when caso1 = > instrucciones when caso2 = > instrucciones
zzz

when others = > instrucciones end case ;

-- Ejemplo case nota is when 10 = > acta <= SOB; when 8 to 9 = > acta <= DIS; when 6 to 7 => acta <= BUE; when 4 | 5 => acta <= APR; when others = > acta <= INS; end case ;

La expresin de seleccin debe ser discreta. No puede haber casos duplicados. Se deben cubrir todas las opciones de seleccin.
5/2/2006 50

Elementos de diseo algortmico:


Sentencia de bucles WHILE Y FOR
Bucle_id: while condicin loop instrucciones end loop;

Entero o enumerado
bucle_id: for identificador in rango loop instrucciones end loop;

-- Lazo while cuenta := 5; while cuenta >= 0 loop tabla (cuenta) <= cuenta * 2; cuenta := cuenta - 1; end loop;
5/2/2006

-- Lazo for for cuenta in 5 downto 0 loop tabla (cuenta) <= cuenta * 2; end loop;
51

Elementos de diseo algortmico:


Interrupcin de los bucles
next bucle_id when condicin ; exit bucle_id when condicin ;

Detiene una iteracin del bucle y pasa a la siguiente Detiene la ejecucin y sale del bucle
fuera: while a < 10 loop -- varias sentencias dentro: for i in 0 to 10 loop; -- varias sentencias next fuera when i = a; end loop dentro; end loop fuera;

Interrumpe el for y sigue en el while


5/2/2006

52

Sentencia configure:
Cuando un diseo incluye varias arquitecturas posibles para la misma entidad

Se debe indicar al compilador con cul de ellas se desea trabajar. Sentencia configure Si no se indica la arquitectura objetivo el compilador toma alguna desicin por defecto
5/2/2006 53

Sentencia configure: Sintaxis


entity Mux2 is Port ( a : in bit; b : in bit; ctrl : in bit; z : out bit ); end Mux2; -- Definicin arquitectura Algoritmica para la entidad mux2 -- Definicin arquitectura Flujo para la misma entidad -- Uso de sentencia configure configuration confmux2 of mux2 is for Algoritmica end for; end;
5/2/2006

Se liga la arquitectura Algortmica con la entidad mux2


54

Modelado de circuitos secuenciales


Para la descripcin se utilizan los recursos ya analizados. Se describen circuitos temporizados Es necesario recoconocer un flanco activo de reloj. Atributo event Se depende de una herramienta de sntesis
5/2/2006

clkevent and clk = 1 Expresin reconocida por Synopsis para describir un flanco ascendente de reloj
55

Ejemplo de cdigo para un registro de desplazamiento


library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; --Registro con reset sincrnico load paralelo y corrimiento --lgico a la izquierda, con prioridades en ese orden. -- Se dejo la salida paralela (bout) para claridad en --simulacin, corresponde mantener slo la salida s. entity regis is port ( din: in STD_LOGIC_VECTOR (3 downto 0); clk: in STD_LOGIC; l: in STD_LOGIC; r: in STD_LOGIC; shl: in STD_LOGIC; s: out STD_LOGIC; bout: out std_logic_vector (3 downto 0) ); end regis;

5/2/2006

56

Registro de desplazamiento: Continuacin


architecture register_arch of regis is begin process (clk) variable dout : std_logic_vector (3 downto 0); variable aux: std_logic_vector (2 downto 0); begin Flanco ascendente del reloj. aux := (r,l,shl); if ( clk'event and clk = '1') then case conv_integer (aux) is when 4 | 6 | 7 => dout := ('0','0','0','0'); when 2 | 3 => dout := din; when 1 => dout := dout (2 downto 0) & '0'; when others => null; end case; s <= dout(3); bout<= dout; end if; end process; 57 end register_arch;

5/2/2006

Bibliografa
Pardo Carpio F. - Tecnologa Informtica - Universidad de Valencia - 1996. Villar, Teres, Olcoz, Torroja - VHDL Lenguaje estndar de diseo electrnico - Mc Graw Hill - 1998 Wakerly J. F. - Diseo digital: principios y prcticas Prentice Hall - 2001

5/2/2006

58

Você também pode gostar