Vhdl

Capítulo 1 Lenguajes de Descipció n de Hardware 1.0 INTRODUCCION Resulta muy difícil diseñar un sistema digital sin

Views 538 Downloads 7 File size 458KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Capítulo

1

Lenguajes de Descipció n de Hardware

1.0

INTRODUCCION Resulta muy difícil diseñar un sistema digital sin tener conocimiento y comprensión de los bloques básicos tales como compuertas lógicas y Flip Flops. Muchos sistemas digitales han sido diseñados utilizando ecuaciones Booleanas. Se han desarrollado muchas técnicas para optimizar esta técnica, incluyendo la minimización de ecuaciones para lograr un uso efectivo de los componentes. La técnica de diseño con ecuaciones booleanas requiere que se conozcan las ecuaciones para: la entrada de cada Flip Flop, entrada de datos y Bloque de compuertas. Esto ha hecho que las ecuaciones booleanas sean poco prácticas en diseños complejos que contienen miles de compuertas y Flip Flops ya que serían necesarias un gran número de ellas.

Existen varios niveles de descripción que van desde un nivel de silicio hasta la descripción de sistemas complejos. Estos niveles pueden ser analizados en términos de su estructura y funcionamiento.

1.0.0

DESCRIPCIÓN FUNCIONAL A través de la descripción funcional de un sistema, se busca representar el comportamiento del mismo mediante modelos matemáticos o algorítmicos. El más bajo nivel dentro de este dominio lo constituyen descripciones con base en ecuaciones que modelan cada uno de los elementos (transistores, diodos, resistencias, etc.) que conforman el sistema. Subiendo de nivel se encuentran las ecuaciones booleanas, lenguaje de transferencia de registros (RTL), máquinas de estado, etc. Buscando siempre que las descripciones se puedan realizar de la forma más “natural“ posible. Dentro de esta categoría se encuentran los lenguajes de descripción o especificación de Hardware (HDLs), que básicamente permiten descripciones a nivel algorítmico (funcional) y a nivel de estructura (nivel de transferencia de registros).

1.0.0.0

NIVEL ALGORÍTMICO En este nivel se modela el comportamiento, como una función entrada–salida, sin tener en cuenta cómo puede llegar a ser su realización física, o cual será la tecnología en la cual se implemente. La descripción del sistema a este nivel toma la forma de algoritmos, usualmente expresados en un lenguaje con las construcciones, tipos de datos, operadores, y facilidades de un lenguaje de programación de alto nivel. Lenguajes de descripción funcional incluyen a VHDL, Verilog, subconjuntos de lenguajes convencionales de programación, como “C“, y lenguajes de varios fabricantes, como Altera (AHDL), y Xilinx (SML). Las ventajas que se ganan al adoptar este nivel de descripción del sistema son: Su utilidad como medio de especificación o definición del sistema a ser desarrollado. La rapidez con la que puede ser concebido el sistema, al no tener que especificarse los detalles de cómo será su realización. La velocidad con la que la descripción del sistema puede ser depurada, al ser posible la simulación directa de la descripción funcional realizada. Este último punto es de gran importancia en la concepción de sistemas complejos, en los que a menudo es difícil o imposible, contemplar todas las posibilidades de la relación entrada–salida del sistema.

1.0.0.0

NIVEL DE TRANSFERENCIAS ENTRE REGISTROS (RTL) En este nivel se define la arquitectura para la realización del sistema, en términos de las distintas unidades funcionales a ser utilizadas, de los registros o bloques de almacenamiento requeridos, y de los buses de datos o medios de interconexión entre las unidades funcionales y entre éstas y los registros. En la definición de la arquitectura de un sistema digital moderno es usual observar una separación clara entre la sección de datos de la arquitectura, con capacidad de transformación y almacenamiento de datos, y la sección de control sobre la misma. Esto permite separar el diseño de la sección de datos, que es usualmente de arquitectura sencilla pero con unidades funcionales complejas y grandes bloques de almacenamiento, del diseño de la sección de control, que usualmente demanda un pequeño número de componentes, pero es de una alta complejidad algorítmica.

La descripción del sistema a nivel de arquitectura toma usualmente la forma de sentencias concurrentes, que describen la secuencia de operaciones del sistema y el flujo de datos de un sitio a otro en el mismo. Este tipo de descripción es soportada por lenguajes como VHDL.

1.0.0

DESCRIPCIÓN ESTRUCTURAL Una descripción a nivel estructural de un sistema, define la arquitectura del mismo a nivel de subcomponentes y sus interconexiones. Este tipo de descripciones es usualmente de tipo jerárquico, donde la descripción de los subcomponentes es a la vez basada en otra que utiliza elementos (componentes) de más bajo nivel. Los elementos de más bajo nivel son normalmente compuertas lógicas y flip–flops, incluso componentes como transistores y resistencias. Esto ocasiona que las descripciones estructurales puedan tener un carácter lógico o circuital. Este tipo de descripciones es normalmente respaldado por una herramienta CAD de diseño digital a través de editores esquemáticos (editores gráficos) que facilitan la interconexión de los componentes disponibles en librerías. Estas descripciones normalmente incluyen características físicas del comportamiento de los elementos, tales como retardos de operación, con los cuales se logran simulaciones funcionales próximas al desempeño real que se obtendrá con la implementación física.

1.0.0.0

NIVEL LÓGICO Este nivel es comúnmente utilizado en los métodos tradicionales de diseño, donde los componentes empleados corresponden a bloques funcionales disponibles comercialmente y para los cuales se encuentran diversidad de herramientas para diseño, simulación e implementación. Los lenguajes de descripción a este nivel incluyen los editores esquemáticos, lenguajes primitivos como AHPL, lenguajes de intercambio de información de componentes e interconexiones (Netlist) como EDIF, además de los subconjuntos respectivos de VHDL, Verilog y otros.

1.0.0.0

NIVEL ELÉCTRICO O DE CIRCUITO Identifica la realización en términos de dispositivos electrónicos básicos, tales como interruptores, transistores, resistencias y condensadores, según la tecnología

seleccionada. En la mayoría de los casos, en descripciones con componentes o celdas de tipo estándar, o con dispositivos de lógica programable, la correspondencia entre celdas funcionales básicas del sistema (compuertas y celdas de almacenamiento) y el nivel eléctrico es fija, y determinada por la familia lógica, dispositivo, o tecnología electrónica utilizada. Sin embargo, en estos casos es necesario tener en cuenta algunas consideraciones eléctricas importantes del diseño, tales como los niveles de fan–in y fan–out (manejos de corriente) de los componentes, tiempos de inercia, retardo, ajuste y mantenimiento en compuertas y celdas de almacenamiento, y niveles de consumo de potencia. La descripción eléctrica de un sistema se puede hacer por diagramas esquemáticos, o por listas de componentes y conexiones eléctricas, como en el formato usado por el simulador eléctrico SPICE.

1.0.0

DESCRIPCIÓN FÍSICA El tipo de descripción física adecuada para la realización de un sistema depende de la tecnología utilizada y el nivel de detalle requerido. La descripción física puede darse a nivel de bastidor, de tarjeta, de configuración de dispositivo lógico programable, o de geometrías de circuito integrado. Los problemas abordados en el diseño físico del sistema son de partición, colocación, y enrutamiento de las unidades básicas. Las consideraciones principales para el diseño físico incluyen: El número de unidades básicas, dispositivos, o geometrías requeridas en la realización del sistema, así como el número de interconexiones entre éstas. El espacio físico o la cantidad de recursos disponibles en cada unidad de fabricación usada Las facilidades de enrutamiento e interconexión existentes en las unidades de fabricación. Las reglas de diseño que es necesario obedecer, propias de la tecnología (tal como número, dimensiones, y espaciamientos mínimos, etc). El nivel de descripción física genera un mayor volumen de información en la especificación de un sistema, e invariablemente requiere el uso de herramientas de diseño asistido por computador. Los lenguajes usados en la descripción física incluyen el formato CIF (Caltech Intermediate Format) para la descripción de geometrías en circuitos integrados sobre medidas (full–custom) y semicustom, varios formatos de asignación de recursos y dispositivos en lógica programable, y diagramas físicos de colocación e interconexión de dispositivos, como en diagramas de circuito impreso.

1.0

METODOLOGIA DE DISEÑO

1.0.0

INTRODUCCIÓN Con el advenimiento de múltiples tecnologías de implementación y herramientas de diseño orientadas al manejo y desarrollo de los procesos de diseño de sistemas digitales, es claro que una metodología estructurada semi-estandarizada, colabora en la solución de varios de los problemas presentados en el abordaje, desarrollo y mantenimiento de los sistemas trabajados, problemas tales como: el manejo de la complejidad propia del sistema a desarrollar, la cantidad de información generada y el aprovechamiento al máximo de los beneficios que se puedan obtener de las diferentes tecnologías de implementación accequibles y de el potencial brindado por las herramientas de diseño que se dispongan.

Una metodología de diseño estructurado de sistemas digitales comparte ideas de programación estructurada, y es similar a ésta en los pasos que toma : • •







La concepción y el desarrollo de un sistema digital se realiza de una manera descendente (top–down), partiendo desde su especificación funcional hasta llegar a su realización física en la tecnología seleccionada. La especificación funcional del sistema a diseñar y de cada uno de sus subsistemas permite la verificación y depuración de éstos desde las primeras etapas de desarrollo. Esto hace que se eviten errores de especificación o diseño, que pueden llegar a ser costosos si se detectan únicamente en las últimas etapas del proceso de diseño. El uso de una jerarquía de niveles de diseño en el método descendente permite particionar el sistema a diseñar en una serie de subsistemas más simples que el original, que en principio pueden ser especificados y desarrolados independientemente por distintos grupos de trabajo. El uso de estructuras regulares de diseño, como son los bloques RAM, ROM, y de dispositivos lógicos programables (PICs) en general, permite el uso y la réplica de unidades básicas de diseño (como celdas de almacenamiento, compuertas AND u OR, o bloques lógicos generales) muchas veces y con patrones de inteconexión absolutamente regulares y eficientes. Se debe recordar aquí que los problemas de interconexión y comunicaciones en un sistema digital complejo, como lo es un circuito integrado VLSI, son grandes, y en muchos casos superiores a los de diseño y realización de las distintas unidades funcionales utilizadas. La reutilización de diseños, hecha posible por medio de su definición y almacenamiento en librerías de diseño, así como el uso de diseños genéricos parametrizables, son elementos importantes en el desarrollo de nuevos sistemas digitales. La reutilización de diseños permite aumentar la confiabilidad de un nuevo diseño, al presentar componentes depurados y así reducir la posibilidad de errores y a la vez reducir el tiempo y costo de desarrollo del nuevo diseño.

A continuación se presenta una metodología general "Top-Down" estructurada para el desarrollo de diseños de tipo digital, con la cual se aborda de una manera coherente las etapas en el proceso de diseño y se pueda acoplar a múltiples técnicas o tecnologías de implementación. Las fases de la metodología se deducen de los procesos obvios de diseño, buscando se tomen en cuenta la mayor cantidad de consideraciones en el desarrollo, para así incrementar la garantía de la obtención de un producto con un desempeño funcional correcto. Actualmente se cuenta con una gran variedad de tecnologías de implementación, empezando por aquellos dispositivos de funciones estándar o función fija (compuertas, registros, contadores, multiplexores, decodificadores, sumadores, etc), dispositivos lógicos programables (PALs, PLAs, PLDs, FPGAs, PLSs, ROMs), microprocesadores y microcontroladores, hasta la posibilidad de implementación de diseños en circuitos integrados de aplicación específica (ASIC) no programables, es decir aquellos diseños en los que se aborda el desarrollo de circuitos integrados para su fabricación y en los cuales se pueden integrar múltiples funciones con una complejidad considerable.

Esta gama de potenciales tecnologías de implementación, obliga a un diseñador a evaluar las ventajas existentes entre un tipo de implementación y otra. Aunque algunos tipos de aplicación o módulos de la misma se prestan de manera directa a ser

implementados con una tecnología en particular, la implementación de los otros será definida prácticamente por los deseos, conocimientos o criterios del diseñador, basado posiblemente en su experiencia previa o restricciones del medio. Para facilitar este tipo de evaluación se debe adoptar una metodología que guíe al diseñador en su decisión, facilite el desarrollo al máximo de un diseño de manera independiente a la tecnología, utilice las facilidades brindadas por los recursos disponibles y genere una documentación manejable con información útil, para hacer que el diseño obtenido pueda ser abordado nuevamente (retomado, actualizado, mejorado, etc) de forma eficaz.

1.0.0

FASES PARA LA IMPLEMENTACIÓN DE UNA APLICACIÓN

1.0.0.0

FASE DE DISEÑO Es la primera fase del desarrollo lógico. Aquí se tienen en cuenta los aspectos involucrados en el diseño teórico, desde la definición de las funciones necesarias a partir de las especificaciones, hasta lograr una implementación de la solución a nivel digital. Esta fase conlleva la realización de las siguientes etapas: 1. Planteamiento del problema. Consiste en dar una clara y completa descripción funcional del problema a ser solucionado, usando criterios que permitan visualizar las necesidades del requerimiento en cuanto a: restricciones de potencia y velocidad, condiciones para interfazarse hacia el exterior del sistema (cantidad y tipo de señales), etc. Dada la complejidad del diseño a abordar y con base en los criterios anteriores se puede realizar una modularización inicial que permita descomponer el problema en múltiples problemas de menor complejidad, generando un diagrama en bloques con una notación clara que no permita ambigüedad entre las diferentes señales que conforman el sistema. En esta etapa por consiguiente se genera la documentación que contiene los requerimientos del diseño y un diagrama en bloques que describe las señales e interfaces a utilizar. 2. Descripción. Del anterior diagrama en bloques, el diseñador deriva una descripción funcional detallada. Esta puede tomar varias formas dependiendo de la aplicación y de las preferencias del diseñador. Comúnmente, esta expresión se hace mediante el uso de tablas de operación funcional (tablas de verdad o tablas de estado) o mediante el uso de diagramas de tiempo o esquemáticos. En esta etapa debe seleccionarse el tipo de implementación con el que se realizará cada módulo con respecto a Hardware y Software. Se realizará una implementación HW normalmente en módulos con funciones de mediana o baja complejidad o con altos volúmenes de producción. Las implementaciones SW utilizando una plataforma PC o similar, se utilizan normalmente para la implementación de funciones complejas y de baja producción, además de permitir una interfaz de manejo más natural y amable al usuario. Caben dentro de la categoría SW, implementaciones de módulos con base en microcontroladores y similares. La descripción de los diferentes módulos HW puede hacerse de diversas maneras, entre las cuales están: ecuaciones Booleanas, tablas de verdad, diagramas de tiempo tabulados, tablas de estado, un lenguaje de alto nivel, diagramas esquemáticos, diagramas de estado, etc. Estos pueden ser manejados por el diseñador en forma individual o en combinaciones de ellos. Una vez realizada esta especificación inicial

del sistema, el diseñador debe obtener una descripción que se preste a la implementación del mismo, es decir una descripción optimizada a nivel de componentes (ecuaciones Boolenas, planos, etc.) lista para poder abordar la implementación física de la misma. 1.0.0.0

FASE DE SIMULACIÓN La simulación es una parte integral en el proceso de diseño. Consiste en aplicar niveles a las entradas y probar las respuestas en las salidas, para asegurar que el diseño lógico de entrada opere correctamente. Es muy importante entonces contar con herramientas software que permitan evaluar la correcta funcionalidad de las descripciones realizadas. En este paso se generan los vectores de diseño los cuales pueden ser derivados directamente de las tablas de verdad, de los diagramas de tiempo o de la forma escogida para describir el sistema. Esto debe ser elaborado manualmente si no se dispone de un módulo de simulación. El conjunto de vectores de diseño y los resultados de la simulación deben formar parte de la documentación.

1.0.0.0

PARTICIÓN En esta etapa debe seleccionarse el tipo de implementación con el que se realizará cada módulo con respecto a Hardware y Software. Se realizará una implementación HW normalmente en módulos con funciones de mediana o baja complejidad o con altos volúmenes de producción. Las implementaciones SW utilizando una plataforma PC o similar, se utilizan normalmente para la implementación de funciones complejas y de baja producción, además de permitir una interfaz de manejo más natural y amable al usuario. Caben dentro de la categoría SW, implementaciones de módulos con base en microcontroladores y similares.

1.0.0.0

FASE DE IMPLEMENTACIÓN El diseñador debe inicialmente seleccionar el tipo de tecnología para la implementación de cada módulo. Los módulos descritos en forma esquemática son directamente implementables con circuitos integrados de función fija, aunque dependiendo de las herramientas disponibles, este tipo de descripción puede ser sintetizado en una tecnología de implementación diferente como un PLD, un FPGA u otro tipo de ASIC. Las descripciones obtenidas con ecuaciones boolenas pueden ser implementadas en forma discreta (compuertas) aunque normalmente será más óptima la utilización de algún elemento programable. Dependiendo de factores como cantidad de productos a obtener, complejidad del mismo, restricciones físicas/eléctricas, es posible que sea válida la realización de un ASIC en el cual se pueda incorporar todo el sistema o un parte importante del mismo. El tipo de descripción no necesariamente debe comprometer el tipo de implementación, así, descripciones tipo hardware pueden ser desarrolladas en soluciones software y viceversa. Para lós módulos hardware, una vez seleccionada la tecnología se debe realizar el proceso de síntesis, el cual consiste en traducir la descripción hasta ahora lograda al formato o lenguaje necesario para su posterior implementación física. Con las

concecuentes etapas de simulación, optimización y resimulación, para asegurar un diseño funcionalmente correcto. Para los módulos Software es necesario seleccionar previamente una arquitectura con un protocolo de comunicación preestablecido con el hardware del sistema. La síntesis de los módulos software son equivalentes a la compilación de las descripciones, obteniéndose como resultado un archivo en el lenguaje de máquina del sistema microprocesado seleccionado. Es de vital importancia poseer facilidades de simulación previa implementación real de estos módulos. Una vez obtenida la implementación física del sistema (prototipo) se debe validar su correcta operación, esta fase es equivalente a la de simulación en donde los vectores o estímulos de entrada serán aplicados directamente sobre las entradas del circuito real y se debe obtener una respuesta eléctrica (funcional) equivalente a la obtenida en simulación. Se procederá entonces a la integración de los diferentes módulos, para validar su funcionamiento de manera global. Un aspecto importante en esta metodología de diseño, es que cubre el diseño de un sistema completo involucrando módulos hardware y software. El objetivo final es el de obtener previa implementación física de los módulos que los constituyen, una simulación funcional completa del sistema. El soporte de esta metodología esta ligado a las facilidades que se dispongan para realizar síntesis de las descripciones realizadas (Codescripción y cosíntesis) y a las técnicas de validación concurrentes de los mismos (Cosimulación y coverificación). 1.0.0.0

DOCUMENTO Finalmente, después de terminado el proceso de diseño e implementación de un sistema, se debe recopilar la documentación que genera cada etapa. Esto es de gran importancia para la determinación de posibles errores y problemas, además de permitir la abstracción de las funciones que desempeña el diseño y mejorar la mantenibilidad del mismo. Además, esta documentación permite su utilización como guía de la aplicación práctica de la metodología, o como base para desarrollos similares, ya que se trata de sistemas que pueden generalmente acomodarse fácilmente a otras aplicaciones. En la siguiente gráfica se resume un proceso estructurado de diseño para diferentes tecnologías de implementación.

1.0

HERRAMIENTAS CAD Debido al aumento de la complejidad de los sistemas digitales, se crearon herramientas software para proporcionar ayuda al diseñador, dichas herramientas reciben el nombre genérico CAD (Computer Aided Design) y se clasifican según su función en: Modelado Captura Esquemática HDL Síntesis Síntesis de alto nivel Síntesis lógica

Simulación Funcional A nivel de transistor Ubicación e interconexión (Place and Route) Reglas de Diseño (Design Rule Check) Extracción del circuito (LVS) Test. Generación de vectores de test Cobertura de fallos.

1.0.0

HERRAMIENTAS DE MODELADO Las herramientas de modelado permiten realizar descripciones del sistema con diferentes niveles de abstracción, estas herramientas están divididas en dos grupos:

1.0.0.0

CAPTURA ESQUEMÁTICA Permite seleccionar componentes de una determinada librería e interconectarlos de una forma gráfica. Los diseños basados en captura esquemática aumentan las capacidades de las ecuaciones booleanas ya que permiten utilizar además de las compuertas lógicas básicas otros elementos más complejos (Decodificadores, contadores, etc) . Estos elementos pueden estar formados por compuertas, Flip Flops y otros circuitos, permitiendo generar diseños jerárquicos que incorporan un gran número de ecuaciones booleanas con menos esfuerzo que el que se requiere con las ecuaciones booleanas. Muchas personas prefieren la entrada esquemática ya que esta muestra más claramente las relaciones entre los diferentes bloques de diseño. En este tipo de descripción, el sistema se especifica como una red de elementos interconectados. La especificación informal de un sistema es dada en la forma del comportamiento esperado del sistema (Que debe hacer el sistema ante una serie de eventos). En el diseño tradicional esta descripción es trasladada a un sistema de ecuaciones booleanas, en este punto se inicia el proceso de captura esquemática. Algunos diseñadores con mayor experiencia pueden realizar la transición de la especificación formal a la captura esquemática.

DESCRIPCION INFORMAL

ECUACIONES BOOLEANAS

CAPTURA ESQUEMATICA.

SINTESIS

1.0.0.0

LENGUAJES DE DESCRIPCION DE HARDWARE El principal inconveniente del método tradicional es la transición manual de la especificación formal del sistema a un set de ecuaciones lógicas. Este paso puede eliminarse completamente utilizando Lenguajes de Descripción de Hardware (HDL). Por ejemplo, la mayoría de las herramientas HDL permiten el uso de máquinas de estado para sistemas secuenciales y tablas de verdad para sistemas combinatorios. Tales descripciones pueden convertirse automáticamente a un código HDL y posteriormente implementarse por las herramientas CAD.

DESCRIPCION INFORMAL

ESPECIFICACION EN HDL

SINTESIS

Los métodos de diseño descritos anteriormente parecen ser suficientes. Sin embargo muchos de ellos se utilizan en pequeñas partes del proceso. Para realizar un diseño se debería cambiar de una descripción de diseño a otra o de una herramienta a otra. Lo cual lleva a buscar compatibilidad entre las herramientas y a dominar nuevos ambientes de diseño.

1.0.0

HERRAMIENTAS DE SINTESIS La síntesis lógica es el proceso mediante el cual se pasa de una descripción de alto nivel (HDL) a una descripción a nivel de compuertas para una tecnología dada. Además de permitir la transformación de: Ecuaciones booleanas en compuertas Una descripción de máquinas de estado a compuertas y flip flops Minimización de: Número de compuertas Retardo de propagación Area y/o consumo. Las principales ventajas de la síntesis son: Reducción del ciclo de diseño, independencia del diseño frente a la experiencia del diseñador, además de modelar el sistema de una forma independiente de la tecnología y posteriormente sintetizarlo.

1.0

VHDL VHDL es la sigla de : “V” Very High Speed Integrated Circuit (Circuitos Integrados de alta velocidad) y “HDL” Significa Hardware Descrption Language (Lenguaje de Descripción de Hardware). Este nombre ha sido dado por el departamento de Defensa de los Estados Unidos, los cuales fueron los primeros en utilizar los beneficios del lenguaje. Bajo su patrocinio el VHDL ha sido desarrollado e introducido en los aplicaciones de diseño electrónico. Los primeros simuladores aparecieron a principios de los 90’s y hasta 1994 se pudo disponer de una versión para PC y los diseñadores de PLD y FPGA comenzaron a utilizarlo en grandes diseños. Note que la palabra Síntesis no fue mencionada como razón para la creación del VHDL, el VHDL inicialmente fue diseñado como una herramienta de simulación, modelaje y documentación. La síntesis fue implementada por algunos investigadores que lo veían como una forma de automatizar el proceso de diseño. Sin una plataforma común de diseño, un proyecto dividido en varios equipos de trabajo requeriría un trabajo adicional para coordinarse de tal forma que todas las partes se integren entre sí. Cuando se utiliza en lenguaje universal los equipos de trabajo pueden compartir fácilmente sus trabajos

1.0.0

ESTANDARIZACIÓN. A pesar del hecho que el VHDL estuvo ligado fuertemente al Departamento de defensa de los Estados Unidos, se utilizó rápidamente en diseños no militares. Gracias a la estandarización y divulgación realizada a través de la IEEE (Institute of Electrical and Electronic Engineering). El primer standard de VHDL aparece en 1993. Respondiendo a las necesidades de los diseñadores, varios grupos de expertos han puesto sus esfuerzos para hacer un lenguaje más universal. Estos esfuerzos dieron como frutos algunos estándares que hacen parte del principal 1076 (IEEE VHDL STANDARD) : El Standard 1076 contiene la definición del lenguaje. Tiene dos versiones la 1076-87 y la 1076-93 relacionadas con su año de publicación. A pesar de que la versión 1076-93 se puede conseguir fácilmente algunas herramientas de trabajo están limitadas a la versión 1076-87: 1076.1 : Extensión análoga Ha sido propuesta para la especificación de sistemas análogos y mixtos. 1076.2 : Utilidades Matemáticas. 1076.3 : Destinado a realizar síntesis en VHDL. 1076.4 : VITAL (VHDL Initiative Toward ASIC Libraries) Estandarización de circuitos integrados de aplicación específica. 1076.5 : Librería VHDL 1164 : Extiende el lenguaje VHDL co. lógica multi-valor necesaria para describir sistemas en tiempo real. 1029 : VHDL Waveform and Vector Exchange Specification define los formatos de datos para pruebas y verificación de tiempos.

1.0.0

VENTAJAS AL UTILIZAR VHDL Permite diseños modulares y jerárquicos. Soporta diferentes metodologías de diseño. Soporta varias técnicas de modelado digital: Descripción algorítmica Ecuaciones booleanas Máquinas de Estados Finitos Soporta temporización: Síncrona Asíncrona Es un lenguaje concurrente, aunque permite definir dominios en los que las acciones se suceden en un orden secuencial. Permite simular el diseño y generar formas de onda Soporta diferentes tipos de descripción Comportamental RTL Lógico A partir de un modelo en VHDL se puede sintetizar Hardwarea nivel de puertas con herramientas de síntesis. Es el lenguaje de Descripción de hardware más utilizado.

Los sistemas se pueden especificar de forma estructural o comportamental a diferentes niveles de detalle.

1.0

UNIDADES BASICAS EN VHDL Todo sistema debe tener una forma de comunicación desde y hacia el entorno donde el opera. Esta función de comunicación recibe el nombre de interfaz, si no existiera esta interfaz, el sistema podría no tener uso alguno. (Imagine un computador típico con sus periféricos: Mouse, Keyboard y monitor estos elementos constituyen la interfaz del computador y son de suma importancia). En VHDL la interfaz esta descrita por su entidad (Entity), la cual constituye la unidad básica de diseño de cualquier sistema y realiza una abstracción Hardware del mismo. Así como es imposible tener un sistema sin interfaz no se puede concebir un sistema VHDL sin una entidad. Para lograr el funcionamiento deseado, los datos de entrada deben sufrir alguna transformación dentro del sistema. Esta transformación y salida de datos son realizadas por la parte interna del sistema la cual recibe el nombre de arquitectura (Architecture). Algunos sistemas pueden presentar características adicionales al utilizar elementos externos. Un ejemplo de dichos elementos puede ser una tarjeta que acelera las operaciones gráficas en un computador. Tales tarjetas adicionales pueden ser consideradas parte del sistema pero para mayor claridad las consideraremos como un tercer componente del sistema y lo denominaremos Paquetes (Package).

1.0.0

UNIDAD PRINCIPAL DE DISEÑO: ENTITY Ya que al iniciar cualquier diseño lo primero que se hace es realizar un estudio de su entorno (Conexión con otros sistemas), la entidad, la cual describe la interfaz entre el sistema y su ambiente debe ser la principal unidad de cualquier especificación. No existe una especificación en VHDL de cualquier sistema si no se declara la entidad. Más aún cualquier especificación de entidad es automáticamente visible desde las demás unidades de diseño asociadas con esta entidad. Por lo tanto el nombre del sistema debe ser el mismo nombre de la entidad. (Todo diseño en VHDL comienza con la declaración de una entidad). La entidad suministra la interfaz del sistema y esta compuesta por dos partes:

Parámetros del sistema: que son vistos desde el exterior, como por ejemplo el ancho del bus de un microprocesador, la máxima frecuencia de operación, etc. Conexiones: Las cuales transfieren datos desde y hacia el sistema.

Ejemplo: entity Eight_bit_register is LENGTH = 8 fmax = 50MHz D_IN eight_bit D_OUT eight_bit CLK One bit end entity Eight_bit_register;

Parámetros Input Output Input

Conexiones

Los elementos de la interfaz (Parámetros y conexiones) tienen sus propias declaraciones dentro de la entidad: Todos los parámetros son declarados como genéricos y son pasados al cuerpo del sistema. Las conexiones pueden transmitir datos desde y hacia el sistema y reciben el nombre de puertos (ports) y forman la segunda parte de la entidad. Ejemplo: entity Eight_bit_register is generic( LENGTH = 8 fmax = 50MHz ); port( D_IN eight_bit Input D_OUT eight_bit Output CLK One bit Input ); end entity Eight_bit_register;

1.0.0

Parámetros

Conexiones

ARQUITECTURA En VHDL la arquitectura está encargada de realizar operaciones con los datos, cada entidad debe tener por lo menos una arquitectura.

Ejemplo: entity cain is .... end entity cain

architecture abel of cain is ..... end architecture abel

Todo sistema puede ser especificado en términos de su funcionalidad (Behavoir) o en términos de su estructura, las cuales requieren diferentes clases de información sobre el sistema. Para un mejor entendimiento de la diferencia entre descripción funcional y estructural debemos realizar las siguientes preguntas: Que función realiza (Funcional) Como está compuesto (Estructural) La descripción funcional especifica el comportamiento que se espera del sistema ante una determinada entrada. La descripción estructural especifica que elementos se utilizan y como están conectados para lograr el comportamiento deseado. En otras palabras describe la estructura interna del sistema. Los diseños estructurales son más fáciles de sintetizar que los funcionales ya que el primero se refiere a componentes físicos. Sin embargo son más difíciles de crear ya que requieren cierta experiencia por parte de los diseñadores para ser más efectivos. Ya que diferentes tipos de arquitecturas pueden realizar la misma función, un sistema (entity) puede ser especificado con diferentes arquitecturas. Sin embargo lo contrario no es cierto, ya que la arquitectura no debe tener diferentes interfaces. Y no puede ser asignada a diferentes entidades. Dependiendo del tipo de sentencias utilizadas se puede modelar una arquitectura de las siguientes formas: Algorítmica: Define la funcionalidad del componente mediante un algoritmo compuesto por un conjunto de instrucciones que se ejecutan secuencialmente. Ejemplo: architecture Algoritmico of Cain is begin process (a, b, ctrl) begin if (ctrl = ‘0’) then z