presentacion vhdl

29
UNIVERSIDAD YACAMBÚ VICE-RECTORADO ACADÉMICO FACULTAD DE INGENIERÍA VHDL (Very High Speed Integrated Circuits - Hardware Description Language). Autor: Gustavo Majano Osiel Cordones

Transcript of presentacion vhdl

Page 1: presentacion vhdl

UNIVERSIDAD YACAMBÚVICE-RECTORADO ACADÉMICO

FACULTAD DE INGENIERÍA

VHDL (Very High Speed Integrated Circuits - Hardware Description Language).

Autor:Gustavo MajanoOsiel Cordones

 

Page 2: presentacion vhdl

VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles de abstracción. El significado de las siglas VHDL es VHSIC (Very High Speed Integrated Circuits) y HDL (Hardware Description Language). Esto significa que VHDL permite acelerar el proceso de diseño. VHDL no es un lenguaje de programación, por ello conocer su sintaxis no implica necesariamente saber diseñar con él. VHDL es un lenguaje de descripción de hardware, que permite describir circuitos síncronos y asíncronos.

Page 3: presentacion vhdl

Los estudios para la creación del lenguaje VHDL (VHSIC HDL) comenzaron en el año 1981, bajo la cobertura de un programa para el desarrollo de Circuitos Integrados de Muy Alta Velocidad (VHSIC), del Departamento de Defensa de los Estados Unidos. En 1983 las compañías Intermetrics, IBM y Texas Instruments obtuvieron la concesión de un proyecto para la realización del lenguaje y de un conjunto de herramientas auxiliares para su aplicación. Finalmente, en el año 1987, el lenguaje VHDL se convierte en la norma IEEE-1076-1993.

Para realizar una correcta programación en VHDL se debe tener en cuenta: - Pensar en puertas y biestables, no en variables ni funciones. - Evitar bucles combinacionales y relojes condicionados. - Saber qué parte del circuito es combinacional y cuál secuencial. - Poder descubrir problemas en el diseño antes de su implementación física. - La complejidad de los sistemas electrónicos crece exponencialmente, es necesaria una herramienta que trabaje con el ordenador. - Permite que más de una persona trabaje en el mismo proyecto.

Page 4: presentacion vhdl

CARACTERÍSTICAS DEL LENGUAJE  El lenguaje VHDL fue creado con el propósito de especificar y documentar circuitos y sistemas digitales utilizando un lenguaje formal. En la práctica se ha convertido, en un gran número de entornos de CAD, en el HDL de referencia para realizar modelos sintetizables automáticamente. Las principales características del lenguaje VHDL se explican en los siguientes puntos:

• Descripción textual normalizada: El lenguaje VHDL es un lenguaje de descripción que especifica los circuitos electrónicos en un formato adecuado para ser interpretado tanto por máquinas como por personas. Se trata además de un lenguaje formal, es decir, no resulta ambiguo a la hora de expresar el comportamiento o representar la estructura de un circuito. Está, como ya se ha dicho, normalizado, o sea, existe un único modelo para el lenguaje, cuya utilización está abierta a cualquier grupo que quiera desarrollar herramientas basadas en dicho modelo, garantizando su compatibilidad con cualquier otra herramienta que respete las indicaciones especificadas en la norma oficial. Es, por último, un lenguaje ejecutable, lo que permite que la descripción textual del hardware se materialice en una representación del mismo utilizable por herramientas auxiliares tales como simuladores y sintetizadores lógicos, compiladores de silicio, simuladores de tiempo, de cobertura de fallos, herramientas de diseño físico, etc.

Page 5: presentacion vhdl

• Amplio rango de capacidad descriptiva: El lenguaje VHDL posibilita la descripción del hardware con distintos niveles de abstracción, pudiendo adaptarse a distintos propósitos y utilizarse en las sucesivas fases que se dan en el desarrollo de los diseños. Además es un lenguaje adaptable a distintas metodologías de diseño y es independiente de la tecnología, lo que permite, en el primer caso, cubrir el tipo de necesidades de los distintos géneros de instituciones, compañías y organizaciones relacionadas con el mundo de la electrónica digital; y, en el segundo, facilita la actualización y adaptación de los diseños a los avances de la tecnología en cada momento.

Además de las ventajas ya reseñadas también es destacable la capacidad del lenguaje para el manejo de proyectos de grandes dimensiones, las garantías que comporta su uso cuando, durante el ciclo de mantenimiento del proyecto, hay que sustituir componentes o realizar modificaciones en los circuitos, y el hecho de que, para muchas organizaciones contratantes, sea parte indispensable de la documentación de los sistemas.

Page 6: presentacion vhdl

FORMAS DE DESCRIBIR UN CIRCUITO

Dentro del VHDL hay varias formas con las que podemos diseñar el mismo circuito y es tarea del diseñador elegir la más apropiada.

- Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que más se parece a los lenguajes de software ya que la descripción es secuencial. Estas sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos son ejecutados en paralelo entre sí, y en paralelo con asignaciones concurrentes de señales y con las instancias a otros componentes.

- Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseño de jerarquía superior, al conectar los puertos de estas instancias con las señales internas del circuito, o con puertos del circuito de jerarquía superior.

- Mixta: combinación de todas o algunas de las anteriores.

En VHDL también existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.

Page 7: presentacion vhdl

SECUENCIA DE DISEÑO

El flujo de diseño de un sistema podría ser:

- División del diseño principal en módulos separados. La modularidad es uno de los conceptos principales de todo diseño. Normalmente se diferencia entre dos metodologías de diseño: top-down y botton-up. La metodología top-down consiste en que un diseño complejo se divide en diseños más sencillos que se puedan diseñar (o describir) más fácilmente. La metodología botton-up consiste en construir un diseño complejo a partir de módulos, ya diseñados, más simples. En la práctica, un diseño usa generalmente ambas metodologías.

- Entrada de diseños, pueden usarse diversos métodos tal como se vio anteriormente.

- Simulación funcional, es decir, comprobaremos que lo escrito en el punto anterior realmente funciona como queremos, si no lo hace tendremos que modificarlo. En este tipo de simulación se comprueba que el código VHDL o Verilog (u otro tipo de lenguaje HDL) ejecuta correctamente lo que se pretende.

Page 8: presentacion vhdl

- Síntesis. En este paso se adapta el diseño anterior (que sabemos que funciona) a un hardware en concreto, ya sea una FPGA o un ASIC. Hay sentencias del lenguaje que no son sintetizables, como por ejemplo divisiones o exponenciaciones con números no constantes. El hecho de que no todas las expresiones en VHDL sean sintetizables es que el VHDL es un lenguaje genérico para modelado de sistemas (no sólo para diseño de circuitos digitales), por lo que hay expresiones que no pueden ser transformadas a circuitos digitales. Durante la síntesis se tiene en cuenta la estructura interna del dispositivo, y se definen restricciones, como la asignación de pines. El sintetizador optimiza las expresiones lógicas con objeto de que ocupen menor área, o bien son eliminadas las expresiones lógicas que no son usadas por el circuito.

- Simulación post-síntesis. En este tipo de simulación se comprueba que el sintetizador ha realizado correctamente la síntesis del circuito, al transformar el código HDL en bloques lógicos conectados entre sí. Este paso es necesario ya que, a veces, los sintetizadores producen resultados de síntesis incorrectos, o bien realiza simplificaciones del circuito al optimizarlo.

Page 9: presentacion vhdl

- Ubicación y enrutamiento. El proceso de ubicación consiste en situar los bloques digitales obtenidos en la síntesis de forma óptima, de forma que aquellos bloques que se encuentran muy interconectados entre sí se sitúen próximamente. El proceso de enrutamiento consiste en interconectar adecuadamente los bloques entre sí, intentando minimizar retardos de propagación para maximizar la frecuencia máxima de funcionamiento del dispositivo.

- Anotación final. Una vez ha sido completado el proceso de ubicación y enrutamiento, se extraen los retardos de los bloques y sus interconexiones, con objeto de poder realizar una simulación temporal (también llamada simulación post-layout). Estos retardos son anotados en un fichero SDF (Standard Delay Format) que asocia a cada bloque o interconexión un retardo mínimo/típico/máximo.

- Simulación temporal. A pesar de la simulación anterior puede que el diseño no funcione cuando se programa, una de las causas puede ser por los retardos internos del chip. Con esta simulación se puede comprobar, y si hay errores se tiene que volver a uno de los anteriores pasos.

- Programación en el dispositivo. Se implementa el diseño en el dispositivo final y se comprueba el resultado.

Page 10: presentacion vhdl

 PROCEDIMIENTO DE DISEÑO

El primer paso del diseño consiste en la construcción del diagrama en bloque del sistema. En diseños complejos como en software los programas son generalmente jerárquicos y VHDL ofrece un buen marco de trabajo para definir los módulos que integran el sistema y sus interfaces, dejando los detalles para pasos posteriores.

El segundo paso es la elaboración del código en VHDL para cada módulo, para sus interfaces y sus detalles internos. Como el VHDL es un lenguaje basado en texto, se puede utilizar cualquier editor para esta tarea, aunque el entorno de los programas de VHDL incluye su propio editor de texto. Después de que se ha escrito algún código se hace necesario compilarlo. El compilador de VHDL analiza este código y determina los errores de sintaxis y chequea la compatibilidad entre módulos. Crea toda la información necesaria para la simulación. El próximo paso es la simulación, la cual le permite establecer los estímulos a cada módulo y observar su respuesta. El VHDL da la posibilidad de crear bancos de prueba que automáticamente aplica entradas y compara las salidas con las respuestas deseadas. La simulación es un paso dentro del proceso de verificación. El propósito de la simulación es verificar que el circuito trabaja como se desea, es decir es más que comparar entradas y salidas.

Page 11: presentacion vhdl

Después de la verificación se está listo para entrar en la fase final del diseño. La naturaleza y herramientas en esta fase dependen de la tecnología, pero hay tres pasos básicos. El primero es la síntesis, que convierte la descripción en VHDL en un conjunto de componentes que pueden ser realizados en la tecnología seleccionada. Por ejemplo, con PLD (Programmable Logic Device) se generan las ecuaciones en suma de productos. En ASIC genera una lista de compuertas y un netlist que especifica cómo estas compuertas son interconectadas. El diseñador puede ayudar a la herramienta de síntesis especificando requerimientos a la tecnología empleada, como el máximo número de niveles lógicos o la capacidad de salida que se requiere. En el siguiente paso de ajuste (fiting) los componentes se ajustan a la capacidad del dispositivo que se utiliza. Para PLD esto significa que acopla las ecuaciones obtenidas con los elementos AND – OR que dispone el circuito. Para el caso de ASIC se dibujarían las compuertas y se definiría como conectarlas. En el último paso se realiza la verificación temporal, ya que a esta altura es que se pueden calcular los elementos parásitos, como las capacidades de las conexiones.

Page 12: presentacion vhdl

ESTRUCTURA DE PROGRAMA

VHDL fue diseñado con base a los principios de la programación estructurada. La idea es definir la interfaz de un módulo de hardware mientras deja invisible sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la declaración de las entradas y salidas de un módulo mientras que la arquitectura (ARCHITECTURE) es la descripción detallada de la estructura interna del módulo o de su comportamiento. En la siguiente figura (Figura 1) se ilustra el concepto anterior. Muchos diseñadores conciben la Entity como una funda de la arquitectura dejando invisible los detalles de lo que hay dentro (architecture). Esto forma la base de un sistema de diseño jerárquico, la arquitectura de la entidad de más nivel (top level) puede usar otras entidades, dejando invisible los detalles de la arquitectura de la identidad de menos nivel. En un fichero texto VHDL la entidad y la arquitectura se escriben separadas, por ejemplo a continuación (ejemplo 1) se muestra un programa muy simple en VHDL de una compuerta de 2 entradas y una salida. Como otros programas, VHDL ignora los espacios y saltos de líneas. Los comentarios se escriben con 2 guiones (--) y terminan al final de la línea. En la figura siguiente se muestra la estructura de un modelo en VHDL. SINTAXIS PARA LA DECLARACIÓN DE LA ENTIDAD VHDL define muchos caracteres especiales llamados “palabras reservadas”. Aunque las palabras reservadas no son sensibles a las mayúsculas o minúsculas, en el ejemplo que sigue las utilizaremos en mayúsculas y negrita para identificarlas.

Page 13: presentacion vhdl

Figura 1.

Ejemplo 1.

Page 14: presentacion vhdl

Además de darle nombre a la entidad el propósito de la declaración es definir sus señales (o ports) de interfaz externa en su declaración de ports. Además de las palabras reservadas o claves ENTITY, IS, PORT and END, una ENTITY tiene los siguientes elementos:

- Nombre_entidad: es un identificador seleccionado por el usuario para seleccionar la entidad.

- Nombre de señal: es una lista de uno o más identificadores separados por una coma y seleccionados por el usuario para identificar las señales externas de la interfaz.

- MODO es una de las 4 siguientes palabras reservadas para indicar la dirección de la señal:

Modo Descripción IN En este modo las señales solo entran en la entidad OUT Las señales salen de la entidad BUFFER Este modo se utiliza para las señales que además de salir de la

entidad pueden usarse como entradas realimentadas INOUT Este modo se utiliza para señales bidireccionales. Se emplea en

salida con tres estados. Se puede asignar como sustituto de los tres modos anteriores, pero no se aconseja pues dificulta la comprensión del programa.

Page 15: presentacion vhdl

TIPO CaracterísticasBIT En este tipo las señales solo toman los

valores de "1" y "0"Booleana En este tipo las señales solo toman los

valores de True y FalseStd_logic En este tipo las señales toman 9 valores,

entre ellos tenemos: "1", "0", "Z" (para el 3er estado), "-" (para los opcionales).

Integer En este tipo las señales toman valores enteros. Los 1 y los 0 se escriben sin " "

Bit_Vector En este tipo los valores de las señales son una cadena de unos y ceros. Ejemplo: “1000”

Std_Logic_Vector En este tipo los valores de las señales son una cadena de los nueve valores permisibles para el tipo std_logic.

Character Contiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.

Cuando se omite el modo de una señal en la declaración de la entidad se sobreentiende que es de entrada.

•Tipo de señal; en VHDL, hay varios tipos de señales predefinidas por el lenguaje, tales como:

Page 16: presentacion vhdl

Tipo Std_logicU Uninitialized (Sin inicializar)X Forcing Unknown (Forzar valor

desconocido)0 Forcing 0 (Forzar un cero)1 Forcing 1 (Forzar un uno)Z High Impedance (Alta impedancia)W Weak Unknown (Valor débil

desconocido)L Weak 0 (Cero débil)H Weak 1 (uno débil)- Don’t care (Cualquier valor)Además el usuario puede definir otros tipos de señales, lo que resulta muy

conveniente en algunos casos, como en el diseño de máquinas de estados. El lenguaje VHDL concede máxima importancia a los tipos de señales, no se admite realizar una asignación mezclando tipos diferentes.

Page 17: presentacion vhdl

SINTAXIS PARA LA DEFINICIÓN DE LA ARQUITECTURA

La sintaxis para la declaración de la arquitectura es la siguiente (aparecen en mayúscula las palabras reservadas del lenguaje VHDL, pero esto no es necesario):

Figura 2.

Page 18: presentacion vhdl

Las declaraciones y definiciones que preceden al BEGIN, pueden estar presentes todas, algunas o ninguna. Esto depende del tipo de diseño que se esté realizando. No obstante la declaración de señales se utiliza mucho, pues contribuye entre otras cosas a la claridad del diseño.

Nombre_entidad es el nombre de su entidad. Nombre_arquitectura es el nombre dado por el usuario a la arquitectura. Las señales externas de la arquitectura son las declaradas en el port de la entidad, no obstante una arquitectura puede contener señales y otras declaraciones que solo existen localmente en esa arquitectura. Declaraciones comunes a varias entidades pueden ser puestas en un “paquete” separado utilizado por todas las entidades. Las declaraciones en la arquitectura pueden aparecer en diferente orden, pero lo más usual es comenzar por la declaración de las señales.

Signal signal-name : signal-type Variables en VHDL son similares a las señales excepto que ellas no tienen significado físico en el circuito. En el ejemplo 1 no se puso declaración de variables, ellas son usadas en funciones, procedimientos y procesos. Todas las señales, variables y constantes en VHDL tienen asociadas un tipo, este especifica el conjunto de valores que el objeto puede tomar. También hay un conjunto de operadores tales como add, and etc, asociados con un tipo dado.

Page 19: presentacion vhdl

OPERADORES EN VHDL

En VHDL existen diferentes operadores entre los que tenemos:Operadores Definidos en VHDL para los tipos: Lógicos: AND, OR, XOR, NOT, NAND, NOR, XNOR; Bit y Booleanos. De relación: =, /=, <, >, >=, <=; Integer, Bit_Vector, Aritméticos: +, -, *, /, Mod, Rem, Abs, Mod: Modulo de la división. Rem: Resto de la división, Abs: valor absoluto.

En VHDL lo que se escribe después de -- es un comentario.

Asignaciones condicionales en VHDL:En VHDL hay varias asignaciones que se realizan en forma condicionada. IF …. ELSEIF….. WITH ...... SELECT .... WHEN ..... OTHERS WHEN ..... ELSE ….

Page 20: presentacion vhdl

Ejemplo 2. Compuerta XOR con condicionales.

Ejemplo 3. Compuerta NOR con entradas booleanas usando los condicionales WHEN….. ELSE….

Page 21: presentacion vhdl

Ejemplo 4. . Compuerta NOR con entradas booleanas usando los condicionales WITH… SELECT… WHEN OTHERS…..

Sintaxis para el trabajo con vectores. Los vectores se describen como: a(3), a(2), a(1), a(0), siempre comenzando por 0.Cuando un vector se declara en orden descendente utilizando la palabra clave DOWNTO por ejemplo (3 DOWNTO 0), debemos interpretar que el MSB es a(3) y el LSB es a(0). Si se declara (0 to 3), entonces el LSB es a(3) y el MSB es a(0).

Page 22: presentacion vhdl

BIBLIOTECAS Una biblioteca en VHDL es un lugar en donde se guarda la información relacionada con un diseño determinado. Al comienzo de cada diseño el compilador crea automáticamente una biblioteca llamada WORK con este objetivo. Además de esta biblioteca particular existen otras bibliotecas de tipo general que contienen un conjunto de definiciones que pueden utilizarse en cualquier diseño. Un ejemplo de biblioteca general es la llamada Library IEEE, que contiene definiciones estándar para VHDL. Para utilizar una biblioteca general es necesario escribir su nombre al inicio del programa, por eso es muy común que en la primera línea de un diseño en VHDL aparezca escrito "Library IEEE", de ésta forma dicha biblioteca se hace visible para el diseño.  PAQUETES En los paquetes se guardan definiciones de tipos y objetos que pueden ser utilizados en los diferentes diseños que invoquen su utilización. Un paquete muy utilizado es el paquete estándar IEEE_STD_LOGIC_1164.ALL. La utilización de un paquete en un diseño se realiza invocando su empleo mediante la cláusula USE y el nombre del paquete. Por ejemplo USE IEEE_STD_LOGIC_1164.ALL. La terminación ALL, permite utilizar todas las definiciones y objetos que contiene dicho paquete. Además del estándar, existen otros paquetes de utilización general y también los diseñadores que trabajan con VHDL pueden definir sus propios paquetes, lo que les permite reutilizar diseños realizados anteriormente como parte de nuevos diseños.

Page 23: presentacion vhdl

La sintaxis para la definición de un paquete es la siguiente:

Esta última parte que aparece entre los dos END, la relacionada con el cuerpo del paquete puede o no existir y en el caso de existir las declaraciones y definiciones contenidos en la misma son locales, visibles solo dentro del paquete, mientras que las declaraciones y definiciones contenidas en la primera parte del paquete son visibles para todos los diseños que los utilicen.

Figura 2.

Page 24: presentacion vhdl

SINTAXIS PARA LA DECLARACIÓN DE UNA COMPONENTE EN VHDLFigura 3.

Ejemplo 5.

Page 25: presentacion vhdl

Ahora lo empaquetamos para poder utilizarlo en otro diseño:

Page 26: presentacion vhdl

EJEMPLOS DE PROGRAMAS

Ejemplo 1. Multiplexor Este ejemplo simula un multiplexor de dos entradas. Es un ejemplo sencillo que muestra como describir un elemento a partir de su funcionamiento.

Page 27: presentacion vhdl

Ejemplo 2. Biestable A continuación se muestra el proceso que describe un biestable D activado por el flanco de subida del reloj (CLK). Este biestable tiene una señal de reset asíncrona (RST). El dato D se guarda en el biestable hasta el siguiente flanco de subida del reloj.

Page 28: presentacion vhdl

Ejemplo 3. Contador Este es un ejemplo de un sistema que contará pulsos de un reloj digital (CLK) hasta llegar a 1000 y entonces volverá a empezar. La inicialización se consigue con un reset (RST).

Page 29: presentacion vhdl

El VHDL permite descripciones que no son sintetizables, es decir, que no se pueden implementar directamente en un circuito electrónico digital. Este tipo de descripciones son útiles en simulación. Un ejemplo de este tipo de descripciones son las que incluyen mensajes que notifican al diseñador si se ha cumplido alguna condición durante la simulación. Es importante señalar que esta descripción no es sintetizable en un circuito electrónico digital, y que la descripción equivalente en VHDL al programa Hola Mundo sería encender un led.

Ejemplo 4. Hola Mundo