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.
¿Qué significa VHDL? VHDL = VHSIC + HDL. VHSIC = Very High Speed Integrated Circuit Circuitos Integrados de Muy Alta Velocidad HDL = 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.
¿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.
¿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
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 SystemVerilog están ganando mayor atención y popularidad.
¿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.
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.
Conceptos Fundamentales • CONCURRENCIA => Actividades concurrentes son sucesos que ocurren en paralelo. En el hardware los eventos suelen disparar varios 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.
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
Carta Y de Gajski & Kahn Estructural
RTL:ALU, regisro Procesador
Microcomputador
Puerta lógica, flipflop Transistor Especificaciones Algoritmo
Geométrico Trazado de figuras
Lenguaje RTL Ecuación Booleana Ecuación Diferencial
Celdas estándares Macroceldas
Funcional
Plano de bloques Chip, PCP, MCM
Mayor abstracción
Menor abstracción
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 a partir 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.
Unidades de Diseño en VHDL
Entidad
Paquete
Arquitectura Cuerpo de Paquete Configuración
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.
VHDL Metodología de Diseño Requerimientos
Especificaciones
Arquitectura Modelamiento RTL, Funcional Verificación
Síntesis Modelo de Puertas
Banco de Pruebas Simulación Rediseño Simulación
Ubicación y Conexión FPLD, ASIC
Modelo de Retardos
Simulación
Sintaxis VHDL Entidad y Arquitectura – Tipos de datos Señales y variables – Asignaciones – Procesos Sentencia IF ELSE – Sentencia CASE
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.
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 Entradas Puerto
ENTITY ejemplo IS PORT ( a, b : in BIT; c, d : out BIT); END ejemplo;
Tipo de dato
Salidas
IN: entrada OUT: salida INOUT: bidireccional
Nombre de la Entidad
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 IS BEGIN c p.e. “0Z1X011” Carácter => ‘A’ ‘x’ ‘7’ Cadenas => “VHDL” Real => 1.23 -9.8
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;
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)
Asignación de Buses • Bus completo – pebbles