VHDL · 2005-05-10 · 09/05/05 3 VHDL: Antecedentes históricos Uso de los lenguajes de tipo...

Post on 06-Apr-2020

5 views 0 download

Transcript of VHDL · 2005-05-10 · 09/05/05 3 VHDL: Antecedentes históricos Uso de los lenguajes de tipo...

09/05/05 1

Laboratorio de diseño digitalLaboratorio de diseño digitalLaboratorio de diseño digitalLaboratorio de diseño digital

Ingeniería ElectrónicaIngeniería ElectrónicaIngeniería ElectrónicaIngeniería Electrónica

Lenguaje de descripción deHardware VHSIC

VHDL

09/05/05 2

Primera descripción de un diseñomediante un lenguaje

El formato EDIF (Electronic Design Interchange Format)es un estándar de los lenguajes de tipo Netlist

VHDL: Antecedentes históricos

NETLIST

Describe los componentes de un circuito y su interconexión

Herramientas EDA Necesidad de intercambiode información

09/05/05 3

VHDL: Antecedentes históricosUso de los lenguajes de tipo Netlist

Sugiere la idea de una descripción de mayor nivelde abstracción (descripción funcional)

Un lenguaje permite la edición más rápida y sencilla

Una descripción con esquemas resulta más fácil de entender

09/05/05 4

DoD+

IEEEPatrocinan el desarrollo en los 80´s

Es estándar de IEEE en 1987 VHDL-87

El estándar se amplía en 1993 VHDL-93

Existen otros HDL populares como ABEL y VERILOG

VHDL: Antecedentes históricos

Necesidad de estandarizar los diseños

09/05/05 5

Se inicia como un leguaje de modelado y especificación.

Ligado a actividades de Documentación

Simulación

Luego se incorporan herramientas de síntesiscapaces de manejar este tipo de descripciones

VHDL: Evolución

Ambientes integrados de diseño de ASIC´s

09/05/05 6

VHDL: EvoluciónEs un lenguaje para el modelado, simulación lógica

dirigida por eventos y síntesis de sistemas de Hardware

SíntesisAtraviesa verticalmente los niveles

de abstracción de la descripcióndesde el más alto al más bajo

Subsisten problemas y algunas construccionesde alto nivel no resultan sintetizables

Depende de la herramienta

09/05/05 7

! Es un estándar

! Flexibilidad

Distintas metodologías de diseño: Top-down,Bottom-up, diseño jerárquico.

Diversos niveles de descripción en los componentesde un mismo circuito.

VHDL: Ventajas:

Facilita la documentación, minimiza los erroresde comunicación en el equipo de desarrollo e

incrementa la portabilidad de los diseños.

09/05/05 8

! Independencia tecnológica.

!Bibliotecas y paquetes.

Gestión de diseño entre miembrosde equipos de trabajo grandes.

Diseño enfocado a la reutilización.

VHDL:Ventajas

Los diseños pueden implementarse endispositivos de diferentes tecnologías.

09/05/05 9

VHDL como lenguaje de alto nivel

Lenguaje fuertemente tipado

El compilador no permite asignarun valor a un objeto a menos que

coincida con el tipo declaradopreviamente para ese objeto.

Programas más confiables y fáciles de depurar

Necesidad de conversiones de tipo

09/05/05 10

VHDL como lenguaje de alto nivel

Potente control de flujo

Control de condiciones: if-then, case

Control de iteraciones: for, while

Estructuración de código con funciones y procedimientos

Desarrollo y utilización de bibliotecas de diseño

09/05/05 11

Flujo de diseño VHDL

Análisis Código Compilación Simulación

Síntesis Mapeo, rutasy ubicación

Componentefrontal

Componente posterior

Verificacióntemporal

09/05/05 12

VHDL como lenguaje de alto nivel

Modelo de estructura

Modelo de concurrencia

Modelo de tiempo

1º OBJETIVO Modelar Hardware

VHDL incorporatres características.

09/05/05 13

VHDL: Modelo de estructura

Componentes y jerarquía

DispositivoVHDLEntidad Arquitectura

Declaración de I/ODescripción

comportamental

InterfazDistintos

estilos

09/05/05 14

VHDL: Modelo de estructuraPrograma VHDL Entidad

Arquitectura

Una entidad de nivel superior puede instanciarmúltiples entidades de niveles inferiores.

Se pueden definir múltiples arquitecturas para una entidad.

Archivo de texto

Diseño jerárquico

09/05/05 15

VHDL: Modelo de estructura, uso jerárquico

Arquitectura A

Entidad A

Arquitectura C

Entidad C

Arquitectura B

Entidad B

Arquitectura D

Entidad D

Arquitectura E

Entidad E

09/05/05 16

Objetos VHDL: Constantes, variables y señales

Los objetos VHDL deben declararse en forma previa asu utilización en cualquier unidad de diseño.

Un objeto VHDL es un elemento que guarda un valorde un tipo de datos específico. Sobre él puedeninvocarse operaciones coherentes con su tipo.

Compilador

09/05/05 17

Objetos VHDL: Constantes, variables y señales

constant nombre_constante: tipo := expresión ;

Contribuyen a la legibilidad, mantenimientoy portabilidad del programa. No cambian suvalor una vez inicializadas.

Variables

Constantes

Cambian su valor con sentencias de asignación.En general son locales a los procesos.No tienen significado físico.

variable nombre_variable: tipo ;nombre_variable := expresión ;

09/05/05 18

Objetos VHDL : Constantes, variables y señales

Señales

! Cambian su valor con sentencias de asignación.! Tienen una analogía física directa.! Interconectan componentes de un circuito.! Sincronizan la ejecución y suspención de procesos.! Son visibles para todos los procesos y bloques de unaarquitectura.! Los puertos de una entidad son señales.

signal nombre_señal: tipo ;nombre_señal <= expresión ;

Las señales son abstracciones de conexiones físicas o buses.

09/05/05 19

Componentes básicos: Declaración de entidad

entity nombre_entidad is [ generic (lista propiedades);] [ port (nombre_señal : modo tipo_señal ); port (nombre_señal : modo tipo_señal) ; ............ port (nombre_señal : modo tipo_señal ) ;] [ declaraciones ][ begin

sentencias]end [ nombre_entidad] ;

Define el módulo

09/05/05 20

Componentes básicos: Declaración de entidad

entity nombre_entidad isend ;

Entidadmínima

genericPermite utilizar parámetros en

la definición de la entidad

Al instanciar el componente se establece el valor

Ejemplo: cantidad de bits de un sumador

09/05/05 21

Componentes básicos: Declaración de entidad

! 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 múltiplesfuentes, se puede producir la destrucción del chip.

port Define las entradas y salidas

port (nombre_señal : modo tipo_señal) ;Modo

Tipo Define los valores y operaciones legales

09/05/05 22

Componentes básicos:Declaración de arquitecturaarchitecture nombre_arquitectura of entidad is [declaraciones] begin

[sentencias concurrentes]end [nombre_arquitectura];

La arquitectura puedemodelarse en tres estilos

! Estilo estructural! Estilo flujo de datos! Estilo algorítmico

Las sentencias concurrentes seejecutan en forma “simultánea”.

Se modela HARDWARE

Define el comportamiento

del módulo

09/05/05 23

Modelado de circuitos combinacionalesProblema:

?

pánicohabilitar

salirpuerta

ventanagarage

alarma

La salida alarma es ‘1’ si pánico es ‘1’, o si habilitares ‘1’,salir es ‘0’ y la casa no es segura. La casa es

segura si puerta, ventana y garage son ‘1’.

09/05/05 24

Modelado del circuito con esquemas:

pánico

habilitar

salir

ventana

puerta

garage

alarma

09/05/05 25

Estilos de descripción VHDL:

Descripción Estructural

Descripción de Flujo de datos

Descripción Algorítmica

Nivel de A

bstracción

Lista de componentes interconectados

interconexión entre objetos del lenguaje

Descripción comportamental p. p. dicha

09/05/05 26

Elementos de diseño Estructural:Describe la estructura del circuito como

interconexíón entre componentes

Descripción similar a un NETLIST(lenguaje de descripción de estructura)

La descripción de tipo NETLIST se corresponde enforma directa con su implementación en hardware

Síntesis directade la descripción

09/05/05 27

--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 issignal seguro: std_logic;signal noseguro: std_logic;signal nosalir: std_logic;signal suena: std_logic;component INV port (I:in std_logic; O:out std_logic) ;end component ;component AND3 port (I0,I1,I2:in std_logic; O:out std_logic) ;end component ;component OR2 port (I0,I1:in std_logic; O:out std_logic) ;end component ;

Estilo Estructural

ModeladoVHDL

Dec

lara

cion

esE

ntid

ad

09/05/05 28

beginU1: INV port map (

salir,nosalir );

U2: AND3 port map (

garage,ventana,puerta,seguro );

U3: INV port map (

seguro,noseguro );

U4: AND3 port map (

habilitar,nosalir,noseguro,suena );

U5: OR2 port map (

panico,suena,alarma );

end alarm_est;

ModeladoVHDL

Estilo Estructural

(continuación)

Las sentencias expresanla interconexión de los

componentes declarados

Estilo Netlist

09/05/05 29

Elementos de diseño Estructural:

Declaración de componente:

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

Los componentes utilizadosdeben estar definidos

! Previamente en el diseño! Bibliotecas del entorno! Paquetes o bibliotecas adicionales

09/05/05 30

Elementos de diseño Estructural:

Sentencia component:

U1: INV port map ( salir,nosalir );

Nombre de una entidad ya definidaque se usará en la arquitectura.

Palabras clave que asocian una lista de los portsde la entidad con señales en la arquitectura.

09/05/05 31

Elementos de diseño de Flujo de Datos:

Describe el flujo de datos entre módulos usandoecuaciones de transferencia concurrentes.

Descripción a nivel transferencia de registros (RTL)

Las estructuras a nivel RTL tienen una correspondenciamuy estrecha con su implementación en hardware

Síntesis bastante directade la descripción

09/05/05 32

Elementos de diseño de Flujo de Datos:

Es un estilo de descripción a mitad de camino entre unadescripción estructural y una completamente abstracta

Describe interconexionesentre objetos del lenguaje

Permite estructuras de tipo condicionaltípicas de una descripción más abstracta

Todas las sentencias de la descripción son concurrentes.

09/05/05 33

--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 arch_flu of alarma issignal seguro: std_logic;signal noseguro: std_logic;signal nosalir: std_logic;signal suena: std_logic;beginnosalir <= not salir;seguro <= puerta and garage and ventana;noseguro <= not seguro;suena <= habilitar and nosalir and noseguro;alarma <= suena or panico;end arch_flu;

ModeladoVHDL

EstiloFlujo de Datos

Declaraciones

Sentenciasconcurrentes

09/05/05 34

VHDL: Modelo de concurrenciaSe modela HARDWARE usando SOFTWARE

Concurrente Secuencial

Se utilizan sentencias “concurrentes” para describir elcomportamiento del circuito y poder simular.

Estas sentencias sonsensibles a señales

Los cambios en lasseñales son eventos.

09/05/05 35

VHDL: Modelo de tiempo

Dirigida por eventosSIMULACIÓN

Mide el tiempo real

Ciclos de simulación que se realizansin incrementos reales de tiempo

Interactúan para soportarconcurrencia en la simulación

Macroescala

Microescala

δ delay

Dos escalas de tiempo

09/05/05 36

VHDL: Modelo de concurrencia / Tiempo

SeñalesCambian su valor alfinalizar cada ciclo

de simulación

Cada paso de simulación consiste en la ejecuciónde una sentencia concurrente.

δ delay

Estos cambios disparan asu vez otras sentencias

concurrentes

Otros pasos desimulación

09/05/05 37

Elementos de diseño de Flujo de Datos:

nosalir <= not salir;

Asignación concurrente de señal:

Asignación condicional: WHEN ... ELSE

architecture mux_flu of mux isbegin

salida <= a when selec = ‘0’ else b;end mux_flu;

Sentencias concurrentes que se disparan cuando cambia elvalor de alguno de los argumentos de las asignaciones.

09/05/05 38

Elementos de diseño de Flujo de Datos:Asignación con selección:WITH...SELECT...WHEN

with estado select semaforo <= “rojo” when “01”,

“verde” when “10”, “amarillo” when “11”, “no funciona” when others;

Simulaciones incorrectas oimposibilidad de síntesis.

Se modela Hardware

Expresiones convalores indefinidos

Las asignaciónes condicional y conselección deben cubrir todos losposibles valores de la expresión

09/05/05 39

Elementos de diseño algorítmico:Es una descripción de funcionalidad

con un alto nivel de abstracción.

Se necesitan instrucciones más complejas para:

No es suficiente asignar valores a señales.

Realizar cálculos.

Acumular resultados intermedios.

Repetir una secuencia de operaciones.

09/05/05 40

Se necesitan instrucciones de ejecución secuencialsimilares a los lenguajes software de alto nivel

Sentencias concurrentesbastante particulares.

Elementos de diseño algorítmico:

PROCESOS

Describen comportamiento en forma secuencialpero su ejecución conjunta es concurrente

Introducen variables locales para soportar los cálculos.

09/05/05 41

Elementos de diseño algorítmico:

El significado en hardware es más difuso, las instruccionesse ejecutan cuando cambian ciertos argumentos.

Síntesis mucho más complicada

SEÑALES Sincronizan procesos entre sí.

Sensibles a

PROCESOS Instrucciones secuenciales.

09/05/05 42

--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 arch_alarAlg of alarma isbeginprocess (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;suena := noseguro and nosalir and habilitar;alarma <= panico or suena;end process;end arch_alarAlg;

Estilo Algorítmico

ModeladoVHDL

09/05/05 43

Elementos de diseño algorítmico:El bloque PROCESS

Compuesto por un conjunto de instrucciones secuenciales

En un programa puede haber varios bloques PROCESS

Cada bloque PROCESS esuna instrucción concurrente

Permite estructuras más abstractascomo la ejecución de bucles

09/05/05 44

Elementos de diseño algorítmico:

¿Cómo se activa el bloque PROCESS?

"""" La forma habitual es con una lista de sensibilidad

#### Existe la posibilidad de usar un WAITexplícito en algún lugar del bloque

09/05/05 45

Elementos de diseño algorítmico:

process (panico, puerta,ventana,garage,salir,habilitar)

Lista de sensibilidadLista de señales

Cada vez que cambiaalguna de las señales se

ejecuta el bloque

Activación habitual del bloque PROCESS

09/05/05 46

Elementos de diseño algorítmico:Activación del bloque PROCESS con wait

wait on lista-sensible until condición for timeout

wait on pulso;wait until contador > 6;wait on interrupción for 25 ns;wait on reloj, sensor until contador > 5 for 50 ns;

Ejemplos

Los tres parámetros son optativos.El que se verifique antes continuará la ejecución del bloque.Si el bloque tiene una lista sensible no puede tener wait.

09/05/05 47

Elementos de diseño algorítmico:

El bloque PROCESStiene dos estados posibles

EJECUCION

SUSPENDIDO

El proceso debe tener una lista sensible o un wait, encaso contrario se ejecuta en forma indefinida.

En simulación no se podría salirnunca del lazo del process.

09/05/05 48

Elementos de diseño algorítmico:

Sentencia condicional IF...THEN...ELSE

if condición then sentenciaselsif condición then sentencias $ $ $

else sentenciasend if ;

Esta estructura puede anidarse.

elsif y else son optativas. Convienecontemplar todos los posibles casos.

El resultado de la síntesisestá más optimizado

09/05/05 49

Elementos de diseño algorítmico:Sentencia condicional IF...THEN...ELSE

-- Ejecución secuencialprocess ( a, b, c )beginif a > b thenp <= 2;elsif a > c then p <= 3;elsif (a = c and c = b) thenp <= 4else p <= 5;end if ;end process ;

-- Ejecución concurrentep < = 2 when a > b else 3 when a > c else 4 when (a = c and c = b) else 5 ;

En asignaciones tiene suequivalente concurrente.

La lista sensible debe incluir todas lasseñales cuyo cambio es importante.

09/05/05 50

Sentencia de selección CASE

Elementos de diseño algorítmico:

case expresión is when caso1 = > instrucciones when caso2 = > instrucciones $ $ $

when others = > instruccionesend case ;

-- Ejemplocase 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 expresión de selección debe ser discreta.! No puede haber casos duplicados.! Se deben cubrir todas las opciones de selección.

09/05/05 51

Sentencia de bucles WHILE Y FOR

Elementos de diseño algorítmico:

bucle_id:for identificador in rango loop

instruccionesend loop;

Bucle_id:while condición loop

instruccionesend loop;

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

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

Entero o enumerado

09/05/05 52

Elementos de diseño algorítmico:Interrupción de los bucles

next bucle_id when condición ;

exit bucle_id when condición ;

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;

Detiene una iteración delbucle y pasa a la siguiente

Detiene la ejecucióny sale del bucle

Interrumpe el fory sigue en el while

09/05/05 53

Sentencia configure:

Cuando un diseño incluye varias arquitecturasposibles para la misma entidad

Se debe indicar al compilador con cuál de ellasse desea trabajar.

Sentencia configure

Si no se indica la arquitectura objetivo elcompilador toma alguna desición por defecto

09/05/05 54

Sentencia configure: Sintaxisentity Mux2 is Port ( a : in bit; b : in bit; ctrl : in bit; z : out bit );end Mux2;-- Definición arquitectura Algoritmica para la entidad mux2-- Definición arquitectura Flujo para la misma entidad

-- Uso de sentencia configureconfiguration confmux2 of mux2 is for Algoritmicaend for;end;

Se liga la arquitecturaAlgorítmica con la

entidad mux2

09/05/05 55

Modelado de circuitos secuenciales

Para la descripción se utilizan los recursos ya analizados.

Se describen circuitos temporizados

Es necesario recoconocer un flanco activo de reloj.

Atributoevent

clk’event and clk = ‘1’

Expresión reconocida porSynopsis para describir unflanco ascendente de reloj

Se depende de unaherramienta de síntesis

09/05/05 56

Ejemplo de código para un registro de desplazamientolibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;--Registro con reset sincrónico load paralelo y corrimiento--lógico a la izquierda, con prioridades en ese orden.-- Se dejo la salida paralela (bout) para claridad en--simulación, corresponde mantener sólo 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;

09/05/05 57

architecture register_arch of regis isbeginprocess (clk)variable dout : std_logic_vector (3 downto 0);variable aux: std_logic_vector (2 downto 0);beginaux := (r,l,shl);if ( clk'event and clk = '1') then case conv_integer (aux) iswhen 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;end register_arch;

Registro de desplazamiento: Continuación

Flanco ascendente del reloj.

09/05/05 58

Bibliografía

Pardo Carpio F. - Tecnología Informática - Universidadde Valencia - 1996.

Villar, Teres, Olcoz, Torroja - VHDL Lenguaje estándarde diseño electrónico - Mc Graw Hill - 1998

Wakerly J. F. - Diseño digital: principios y prácticasPrentice Hall - 2001