+ All Categories
Home > Documents > Vhdl Tutorial

Vhdl Tutorial

Date post: 12-Jun-2015
Category:
Upload: voltersas
View: 10,038 times
Download: 3 times
Share this document with a friend
Popular Tags:
40
Introducción al VHDL Ing. Arturo Miguel de Priego [email protected] Parte de este material está basado en presentaciones de Altera, de cursos que preparé en la PUCP, y de fuentes en Internet.
Transcript
Page 1: Vhdl Tutorial

Introducción al VHDL

Ing. Arturo Miguel de [email protected]

Parte de este material está basado en presentaciones de Altera, de cursos que preparé en la PUCP, y de fuentes en Internet.

Page 2: Vhdl Tutorial

¿Qué significa VHDL?

VHDL = VHSIC + HDL.VHSIC = Very High Speed Integrated Circuit

Circuitos Integrados de Muy Alta VelocidadHDL = Hardware Description Language

Lenguaje de Descripción de Hardware

VHDL es un lenguaje textual de alto nivel que se utiliza para la descripción del hardware de los

sistemas digitales. Las herramientas CAD toman descripciones VHDL

para simular, sintetizar y verificar circuitos digitales.

Page 3: Vhdl Tutorial

¿Qué es VHDL?• VHDL es un lenguaje estándar que se emplea para la

documentación, simulación, síntesis y verificación de sistemas digitales.

• Los lenguajes de descripción de hardware, como el VHDL, facilitan la descripción de circuitos integrados digitales complejos.

Page 4: Vhdl Tutorial

¿Por qué VHDL?• Lenguaje estándar.• Soporte de las principales compañías proveedoras de

herramientas CAD y EDA.• Flexibilidad de implementación en circuitos integrados:

código VHDL es portable entre herramientas, aunque normalmente es necesario hacer ajustes según el dispositivo o la tecnología.

• Es un lenguaje popular cuyo número de usuarios sigue aumentando.

• Ventajas– Proceso de desarrollo más confiable y automatizado – Reducción de costo y tiempo de salida al mercado

Page 5: Vhdl Tutorial

VHDL: Orígenes y evolución• Desarrollado en los comienzos de los 80’s como un

método para la descripción de sistemas electrónicos para el Departamento de Defensa de EE.UU. Su sintáxis es similar al lenguaje de programación Ada.

• Fue estandarizado en 1987, bajo la norma IEEE 1076. En 1993 salió una revisión con algunas nuevas capacidades, manteniendo la compatibilidad con la norma original.

• Es utilizado ampliamente en la industria y academia, sin embargo, otros lenguajes como SystemC y SystemVerilogestán ganando mayor atención y popularidad.

Page 6: Vhdl Tutorial

¿Para qué sirve VHDL?• Comienzos de los 90’s : diseño de ASICs complejos,

empleando herramientas de síntesis.• Mediados de los 90’s: diseño con lógica programable.• Se utiliza en la documentación así como en la simulación

del sistema, y además se emplea para sintetizar la parte hardware del sistema digital.

• Actualmente se emplea en el modelamiento de todo el sistema digital (hardware y software.)

• Las herramientas de síntesis permiten implementar los circuitos sobre ASICs y FPLDs.

Page 7: Vhdl Tutorial

Limitaciones de VHDL• No permite describir sistemas analógicos. Sin embargo,

ya se están desarrollando versiones análogas y mixtas. • No existe un estilo de descripción normalizado. Para

síntesis se requiere ajustar los estilos disponibles a la capacidad de las herramientas CAD.

• Es posible sintetizar lógica solo de un subconjunto del lenguaje. Las herramientas de síntesis no soportan los mismos subconjuntos, y existen a veces diferencias al mudar de herramientas.

Page 8: Vhdl Tutorial

Conceptos Fundamentales• CONCURRENCIA => Actividades concurrentes son sucesos que

ocurren en paralelo. En el hardware los eventos suelen dispararvarios procesos al mismo tiempo. Modela la activación de los bloques de un sistema digital, donde las señales se presentan sobre las entradas de los bloques y producen resultados en las salidas

• ESTRUCTURA=> Ordenamiento de bloques en una jerarquía. Cada bloque se puede describir en estilo RTL, comportamental o mixto.

• SECUENCIA => Las sentencias secuenciales se ejecutan una después de otra, como en lenguajes de software con un solo microprocesador.

• TIEMPO => VHDL permite modelar el concepto de tiempo. Simulación dirigida por eventos. Un evento es producido por un cambio en una señal en un determinado tiempo de simulación. La respuesta de un modelo a un evento puede provocar nuevos eventos.

Page 9: Vhdl Tutorial

Niveles de Abstracción• La abstracción define cuanto detalle debe ser descrito acerca del

diseño.• Existen cuatro niveles principales de abstracción:

– Layout (Trazado): descripción en el nivel geométrico o físico. Especifica la disposición física de los dispositivos en el chip. Puede incluir información sobre temporización y efectos analógicos.

– Lógico: Especifica la conexión de puertas lógicas y registros. Informa detalladamente la función, arquitectura, tecnología y temporización.

– Transferencia de Registros (RTL): Define cada registro en el diseño y la lógica entre ellos. Contiene información de la arquitectura pero no detalla la tecnología. No especifica los retardos de tiempo absolutos.

– Comportamental: Describe la función de un diseño sin especificar la arquitectura de registros. Puede requerir información de tiempos de retardos.

• En VHDL se utilizan los estilos RTL y Comportamental

Page 10: Vhdl Tutorial

Carta Y de Gajski & Kahn

Funcional

Estructural

GeométricoAlgoritmo

Lenguaje RTL

Ecuación Booleana

Ecuación DiferencialTrazado de figuras

Macroceldas

Celdas estándares

Plano de bloques

Procesador

RTL:ALU, regisroPuerta lógica, flipflop

Transistor

Mayor abstracción Menor abstracción

Chip, PCP, MCM

MicrocomputadorEspecificaciones

Page 11: Vhdl Tutorial

Estilos RTL y Comportamental• La mayoría de las herramientas de síntesis requieren que el código

se exprese en el nivel RTL. En este nivel el diseñador debe especificar la arquitectura de los registros y puertas en el diseño.– Camino de datos (datapath) modelado estructuralmente.

• Las herramientas de síntesis comportamental generan automáticamente el circuito en el nivel de puertas y flipflops apartir de la codificación de un algoritmo.– Sección de control (i.e. máquinas de estados) descrito funcionalmente.

• La descripción comportamental se emplea también para modelar estímulos y respuestas (testbenchs), documentar partes y detallar las especificaciones del hardware.

• NOTA:– Algunos CADs permiten mezclar descripciones HDL con descripciones

esquemáticas.

Page 12: Vhdl Tutorial

Unidades de Diseño en VHDL

EntidadArquitectura

Paquete

Configuración

Cuerpo dePaquete

Page 13: Vhdl Tutorial

Paquetes• En un paquete se colocan definiciones comunes para

varias entidades de diseño. Ello facilita el trabajo de equipos.

• Puede contener declaraciones de:– Valores constantes– Tipos definidos por el usuario– Componentes

• Un Cuerpo de Paquete es otra unidad de diseño, que incluye subprogramas

• En el curso vamos a emplear esta característica del lenguaje para compartir información y archivos de diseño.

Page 14: Vhdl Tutorial

VHDL Metodología de DiseñoRequerimientos Especificaciones

Arquitectura

ModelamientoRTL, Funcional

Síntesis

Modelo de Puertas

Modelo de Retardos

Ubicación y Conexión

Banco de Pruebas

FPLD, ASIC Simulación

Verificación

Simulación

Simulación

Rediseño

Page 15: Vhdl Tutorial

Entidad y Arquitectura – Tipos de datosSeñales y variables – Asignaciones – Procesos

Sentencia IF ELSE – Sentencia CASE

Sintaxis VHDL

Page 16: Vhdl Tutorial

Entidades y Arquitecturas

• Entidad => Indica QUE es el diseño.– Define la interfaz de un bloque, sin definir su comportamiento.

Equivale a un símbolo en un diagrama esquemático.

• Arquitectura => Indica COMO trabaja el diseño.– Modela el comportamiento o estructura del circuito. Puede

contener elementos RTL o comportamentales.– Una entidad puede contener varias arquitecturas.

• Entidad + Arquitecturas = opciones de diseño, diferentes soluciones para un mismo problema.

Page 17: Vhdl Tutorial

Entidad• Define la interfaz con el mundo exterior (i.e., pines de

entrada y salida)• Funciona como un símbolo esquemático, con la diferencia

que se usa texto en vez de símbolos gráficos

ENTITY ejemplo ISPORT ( a, b : in BIT;

c, d : out BIT);END ejemplo;

Entradas

Salidas

Puerto

Nombre de la Entidad

Tipo de dato

IN: entrada

OUT: salida

INOUT: bidireccional

Page 18: Vhdl Tutorial

Arquitectura• Define la implementación del diseño.• La arquitectura puede definirse mediante asignaciones de

expresiones lógicas, interconexiones de componentes y sentencias de alto nivel.

• Funciona como un circuito esquemático.

ARCHITECTURE pld OF ejemplo ISBEGIN

c <= a AND b;d <= a OR b;

END pld; Todas las sentencias se colocan entre BEGIN y END.

Page 19: Vhdl Tutorial

Ejemplo de un diseño completo

ENTITY example IS

PORT ( a : in BIT;b : out BIT);

END example;

ARCHITECTURE pld OF example ISBEGIN

b <= a;END pld;

ENTITY define los puertos (interfaz) del diseño.

ARCHITECTURE define laimplementación.

ENTITY y ARCHITECTUREconforman un par enlazado mediante un nombre.

VHDL no es sensitivo al tipo de carácter

Page 20: Vhdl Tutorial

Puertos, Señales y Variables

• Los puertos se especifican en la entidad:IN Puerto de entradaOUT Puerto de salidaINOUT Puerto bidireccional

• Las señales y variables se usan en la arquitectura

SIGNAL Se declara antes del BEGIN de la arquitectura y se puede usar en cualquier lugar de ella. Si va en un proceso su valor se actualiza al salir de él. La asignación usa el símbolo

VARIABLE Se declara y utiliza en un proceso y actualiza inmediatamente su valor asignado. La asignación usa el símbolo

<=

:=

Page 21: Vhdl Tutorial

Tipos de Datos• Cada señal debe tener un tipo de dato asociado que se indica

cuando la señal es declarada. Tipos diferentes de datos no pueden asignarse unos a otros. Todos los puertos, señales y variables deben ser de algún tipo de dato. Existen tipos ya construidos pero también pueden crearse nuevos.

• TIME => 10 ns 2.5 ps• BIT => ‘0’ ‘1’• BIT_VECTOR => grupo de bits “00101101” “0101”• STD_LOGIC = {‘0’, ‘1’, ‘X’, ‘Z’} más 5 otros tipos no

usados para síntesis.– ‘X’ (no ´x´) es valor de no importa.– ‘Z’ (mayúscula) es valor de tres-estados.

• STD_LOGIC_VECTOR => p.e. “0Z1X011”• Carácter => ‘A’ ‘x’ ‘7’• Cadenas => “VHDL”• Real => 1.23 -9.8

Page 22: Vhdl Tutorial

Tipo de Dato INTEGER • Se comporta como un entero en álgebra• El rango es especificado por el usuario o por defecto por

el compilador.– El usuario puede especificar cualquier subrango:

pablo :INTEGER range 0 TO 255;vilma :INTEGER range 200 DOWNTO 54;

– Si el rango no es especificado será el rango por defecto determinado por el compilador.

doctorRajuela :INTEGER;

Page 23: Vhdl Tutorial

Buses

• VHDL ofrece tipos vectores para crear buses• Tipos de vectores comunes:

– BIT_VECTOR, STD_LOGIC_VECTOR

• Ejemplos– SIGNAL pablo :bit_vector(7 downto 0);

– SIGNAL betty :std_logic_vector(3 downto 0);

– SIGNAL bambam :std_logic_vector(1 to 3);

El MSB queda indicado por el índice de la izquierda: pablo(7), betty(3) bambam(1)

El LSB queda indicado por el índice de la derecha: pablo(0), betty(0) bambam(3)

Page 24: Vhdl Tutorial

Asignación de Buses• Bus completo

– pebbles <= “11111111”;

• Un bit de un bus– dino (3) <= ‘1’;

• Una parte del bus– SIGNAL picapiedras :bit_vector(7 downto 0);

– picapiedras (3 downto 2) <= “11”;

• Encadenación– SIGNAL mas :bit_vector (8 downto 0);

– mas <= a(1) & b(3 downto 0) & ‘0’ & “010”;

• Agregado– mas(3 downto 0) <= ( a(1), b(3), ‘0’, ‘1’);

– maz <= ( 3=> ‘1’, 1 downto 0 => ‘1’, 2 => L );

– max <= ( 3=> ‘1’, OTHERS => N );

La dirección del subrango debe ser igual como en la declaración del vector

Page 25: Vhdl Tutorial

Tipos Enumerados

• Los tipos enumerados son tipos creados por el usuario.• Se emplean principalmente para las máquinas de

estado.• Los tipos se enumeran en una secuencia binaria,

comenzando desde cero e incrementándose de uno en uno.

• Ejemplos– TYPE pais IS (Alemania, Italia, Japon);

– TYPE luces IS (rojo, verde, ambar, negro);

Page 26: Vhdl Tutorial

Asignaciones de Señales Concurrentes • Simple

• Condicional

• Selectiva

a <= r or t;b <= ((r or t) and not(g xor h));

q <= ‘0’ WHEN clr = ‘0’ ELSE‘1’ WHEN set = ‘1’ ELSE ‘X’ ;

WITH sel SELECTq <= a WHEN ‘0’,

b WHEN ‘1’;

Estas asignaciones no se emplean dentro de los procesos

Especifican los valores de las señales para cualquier combinación de las entradas.

La síntesis crea puertas y conexiones lógicas. No se crean latches ni flipflops.

Page 27: Vhdl Tutorial

Asignación múltiple• Cuando más una señal recibe dos asignaciones de señales

separadas, se dice que es manejada por múltiples fuentes.• En esos casos, se necesita una Función de Resolución. Si

no existe una función de resolución la asignación múltiple resulta ilegal.

• El tipo std_ulogic no soporta asignación múltiple, pero si el tipo std_logic.

• VHDL para síntesis de MAX+plus II no permite asignaciones múltiples en asignaciones concurrentes.

Page 28: Vhdl Tutorial

Asignación simple

• Es una asignación directa, como en una función booleana o matemática:

c <= a AND b; -- crea una puerta ANDd <= e; -- conecta dos nodosx <= y + z; -- suma y con z, luego asigna el

-- resultado a x

ENTITY EjmAsgSimple ISPORT ( a, b, e : IN BIT;

c, d : OUT BIT );END EjmAsgSimple;

ARCHITECTURE maxpld OF EjmAsgSimple ISBEGIN

c <= a AND b;d <= e;

END maxpld;

Page 29: Vhdl Tutorial

Asignación Condicional

• Lista una serie de expresiones que son asignadas a una señal luego de una evaluación positiva de una o más expresiones booleanas. Cada expresión booleana se valida en el orden escrito.

-- Multiplexor 2 a 1: f <= a si s = ‘0’, b si s = ‘1’ARCHITECTURE mux OF Mux2a1 ISBEGIN

f <= a WHEN s = '0' ELSE b;END Mux2a1;

Page 30: Vhdl Tutorial

Ejemplo: Codificador con prioridad

ENTITY condsigm ISPORT( high, mid, low : IN BIT;

q : OUT INTEGER RANGE 0 TO 3 );END condsigm;ARCHITECTURE maxpld OF condsigm ISBEGINq <= 3 WHEN high = '1' ELSE -- prioridad más alta

2 WHEN mid = '1' ELSE -- media prioridad1 WHEN low = '1' ELSE -- prioridad más baja0; -- no hay señal activa

END maxpld;

Page 31: Vhdl Tutorial

Asignación SelectivaLista alternativas disponibles para cada valor de una expresión.

ENTITY selsig ISPORT(

d0, d1, d2, d3: IN BIT;s : IN INTEGER RANGE 0 TO 3;q : OUT BIT);

END selsig;

ARCHITECTURE maxpld OF selsig ISBEGINWITH s SELECT

output <= d0 WHEN 0,d1 WHEN 1,d2 WHEN 2,d3 WHEN 3;

END maxpld;

Multiplexor 4 a 1

Page 32: Vhdl Tutorial

Procesos• Un proceso define sentencias que se ejecutan en la

secuencia descrita.• Una sentencia Wait o una Lista de Sensibilidad describe

las condiciones para ejecutar la sentencia Process(Proceso).

• Dentro del proceso, las sentencias se ejecutan secuencialmente.

• Los procesos se comunican entre sí concurrentemente mediante señales.

• En un proceso pueden existir asignación de variables, de señales, llamadas a procedimientos, sentencias IF, sentencias CASE, y sentencias iterativas.

• Una arquitectura puede contener más de un proceso.

Page 33: Vhdl Tutorial

• Usando lista de sensibilidad (Sensitivity List):

• Este proceso se ejecuta luego de un cambio en cualquier señal de la lista de sensibilidad.

La Sentencia Process

PROCESS (a, b, c, d)BEGIN

-- sentencia secuencial #1-- ...-- sentencia secuencial #N

END PROCESS;

Page 34: Vhdl Tutorial

• Usando la sentencia Wait:

• Este proceso se ejecuta cuando la condición WAIT es verdadera

La Sentencia Process

PROCESSBEGIN

WAIT condición-- sentencia secuencial #1-- ...-- sentencia secuencial #N

END PROCESS;

Page 35: Vhdl Tutorial

La Sentencia Process• Utilice etiquetas para la organización de varios procesos:

• La etiqueta (label) identifica procesos específicos en una arquitectura de múltiples procesos

abcd: PROCESS (a, b, c, d)BEGIN

-- sentencia secuencial #1-- ...-- sentencia secuencial #N

END PROCESS abcd;

Page 36: Vhdl Tutorial

Ejemplo: Función OR

entity PuertaOR isport (A,B : in bit;

Z : out bit);end PuertaOR;

architecture comb of PuertaOR isbegin

OR_FUNC: process (A,B)begin

if (A='1' or B='1') thenZ <= '1';

elseZ <= '0';

end if;end process OR_FUNC;

end comb;

Page 37: Vhdl Tutorial

Sentencia if• Elige una acción basada en una condición. Permite las palabras ELSIF, ELSE. Debe estar dentro de una sentencia Process

IF expresion THEN

sentencia;

sentencia;

ELSE

sentencia;

sentencia;

END IF;

IF expresion THEN

sentencia;

sentencia;

ELSIF expresion THEN

sentencia;

sentencia;

ELSIF expresion THEN

sentencia;

sentencia;

ELSE

sentencia;

sentencia;

END IF;

IF expresion THEN

sentencia;

sentencia;

END IF;

IF expresion THEN

sentencia;

sentencia;

ELSIF expresion THEN

sentencia;

sentencia;

ELSIF expresion THEN

sentencia;

sentencia;

END IF;

Page 38: Vhdl Tutorial

Sentencia if : Ejemplo

ENTITY if_ex ISPORT (sel, a, b : IN BIT;

y : OUT BIT);END if_ex;

ARCHITECTURE if_ex OF if_ex ISBEGINPROCESS (sel, a, b) BEGINIF sel = '1' THEN

y <= a;ELSE

y <= b;END IF;

END PROCESS;END if_ex;

Esta descripción resulta en un multiplexor dos a uno.

Page 39: Vhdl Tutorial

Sentencias Case• Ejecuta sentencias de acuerdo al valor de una expresión.• When Others sirve para indicar que sentencias deben

ejecutarse si el valor de la expresión no coincide con los casos anteriores.

CASE val ISWHEN “00” =>

q <= i0;WHEN “01” =>

q <= i1;WHEN OTHERS =>

q <= ‘X’;END CASE;

CASE expresion IS

WHEN valor_constante =>

sentencia;

sentencia;

WHEN valor_constante =>

sentencia;

sentencia;

WHEN OTHERS =>

sentencia;

sentencia;

END CASE;

Page 40: Vhdl Tutorial

Construcciones VHDL para una

AND

asignacióndirecta

asignacióncondicional

asignaciónselectiva

proceso conif - else

proceso concase


Recommended