• No se han encontrado resultados

CAPÍTULO 4 ”Dispositivos de lógica programable.”

4.4 Lenguajes de descripción de hardware (HDL)

4.4.1 VHDL

VHDL es un lenguaje de descripción del hardware que puede utilizarse para

modelar, documentar, simular, verificar y sintetizar un sistema digital. Por tanto, abarca el

ciclo completo de diseño, salvo el trazado físico o layout, desde las especificaciones

iniciales hasta la construcción del prototipo hardware. Proporciona soporte suficiente para

especificar su comportamiento o su estructura, incluyendo jerarquías. Asimismo, es útil

tanto para metodologías de diseño ascendentes (bottom-up) como, sobre todo, descendentes

(top-down),

La semántica y construcciones del lenguaje permiten también diseñar con facilidad

bancos de prueba (test-benches), mediante los que se lleva a cabo la simulación de los

sistemas modelados.

Se trata de un lenguaje amplio y prolijo: tanto es así que incluso algún autor ya ha

acuñado un segundo significado al acrónimo VHDL (Very Hard Description Language),

más que nada por sus enormes posibilidades potenciales. No obstante, es factible asimilar con relativa rapidez un subconjunto del mismo, mediante el cual el futuro usuario puede comenzar a construir sus primeros modelos y bancos de prueba de una manera simple y rápida.

Existen muchos lenguajes de descripción del hardware, pero la ventaja del VHDL

reside en haber nacido como estándar del IEEE. Ello hace que hoy en día se haya convertido en el de mayor difusión, juntamente con Verilog, también estandarizado por el IEEE en 1995. Ambos se reparten en la actualidad la práctica totalidad del mercado en cuanto a herramientas comerciales desarrolladas y, por tanto, en cuanto a grado de penetración y aceptación, tanto a nivel industrial como universitario y de investigación [30].

4.4.1.1 Características

.

VHDL es un lenguaje de descripción hardware de gran generalidad derivado del

lenguaje de alto nivel ADA, dispone de tipos abstractos para definir el formato y valores de

señales, variables, constantes, etc. Y proporciona amplias facilidades para la realización de algoritmos.

Admite casi todos los niveles de descripción desde el algorítmico hasta el lógico. Para ello proporciona herramientas semánticas y sintácticas que se pueden agrupar así:

• Aquellas orientadas a las descripciones de comportamiento del circuito.

• Aquellas orientadas a la descripción de las relaciones entre los distintos bloques de

un circuito, es decir, su estructura.

Al realizar una descripción VHDL es importante elegir adecuadamente el nivel en función del objetivo perseguido. Por ejemplo, si se pretende sintetizar la descripción realizada, es decir, si el objetivo final es obtener un conjunto de puertas e interconexiones,

no se debe emplear el nivel algorítmico, pues en general las herramientas actuales de síntesis no aceptan como entrada estas descripciones. Sin embargo, este nivel sí es adecuado cuando el objetivo es comprobar que un sistema complejo funciona correctamente, pues se puede describir y simular de una forma rápida y eficiente [30].

4.4.1.2 Fundamentos del lenguaje.

Comenzar el estudio de un nuevo lenguaje desde sus fundamentos puede resultar una tarea complicada debido a la necesidad de asimilar una serie de conceptos aparentemente no relacionados entre sí. Sólo al avanzar en el mismo se adquiere de forma progresiva una visión global y un mayor entendimiento de las definiciones iniciales. Este capítulo pretende ayudar a la comprensión de dichos conceptos previos, con una introducción genérica del lenguaje y sus elementos. Como indica la Figura 4.5, toda descripción en VHDL está constituida al menos por tres tipos de elementos:

• Bibliotecas (libraries).

• Entidades (entities).

• Arquitecturas (architectures).

El diseñador generalmente realiza la descripción de las entidades y arquitecturas empleando elementos almacenados en las bibliotecas. Aquéllas a su vez son almacenadas

en la biblioteca de trabajo (denominada work) luego de ser compiladas.

Figura 4.5 Componentes principales de una descripción en VHDL.

4.4.1.3 Entidades y arquitecturas.

Una entidad tiene la misión de modelar la interfaz de un circuito o sistema con el exterior a través de unas entradas y salidas que, según el nivel de descripción, pueden reflejar diversos terminales tales como los de una puerta que forma parte de un bloque combinacional, los de un registro que forma parte de una ruta de datos o los de un bloque más abstracto. Entidad 1 Arquitectura A Entidad 2 Arquitectura A Entidad 3 Arquitectura A Biblioteca 1 Biblioteca 2

La figura 4.6 muestra el ejemplo de una puerta AND de dos entradas. La descripción de su entidad está formada por un identificador «<puerta_and>», la caracterización de sus dos entradas (A y B) Y su única salida (C). Además puede contener información adicional, como el tiempo de propagación de las señales a través de la puerta.

Figura 4.6 Símbolo y modelo de una compuerta and.

El identificador de la entidad y su comunicación con el exterior forman la envoltura básica de un circuito proporcionada por VHDL, que es común a todos los niveles de descripción en los que se modele un diseño. Esto permite formar una jerarquía en la que una descripción de nivel superior referencia a otras a través de sus identificadores y terminales.

Para que la descripción de un circuito sea completa se necesita, además de su declaración como entidad, una especificación de su funcionamiento. La arquitectura es la encargada de ello. Es posible realizar diversas descripciones del funcionamiento de un circuito, por lo que pueden existir varias arquitecturas para una misma entidad [30].

4.4.1.4 Bibliotecas y paquetes.

Las bibliotecas (libraries) almacenan distintos componentes y elementos a utilizar en

un determinado diseño. Por ejemplo, se puede describir en VHDL una puerta lógica AND de cuatro entradas y guardarla en una biblioteca para su posterior uso. O bien almacenar un conjunto de funciones matemáticas, nuevos tipos de datos, objetos, etc.

Todos estos elementos se agrupan, dentro de una biblioteca determinada, en unidades

denominadas paquetes (packages). La Figura 4.7 muestra una biblioteca «Mi_Biblioteca»

en la que coexisten varios paquetes y cada uno de ellos contiene diferentes componentes y/o elementos. Cuando se describe un circuito se puede acceder a todos o a alguno de los elementos de cada biblioteca. Por ejemplo, se puede acceder a todo el paquete «Circui- tos_2» que contiene una memoria RAM y una ALU, o solamente al componente V _RISC del paquete «Circuitos_1» [30].

A B C & B it s de e nt ra da B it s de s alida

Figura 4.7 Biblioteca de componentes

4.4.1.5 Configuraciones

La configuraciones son descripciones encargadas de seleccionar qué arquitectura, de entre todas las existentes, se asocia con una entidad dada, y qué componentes de dicha arquitectura se asocian con otras entidades externas para formar un circuito concreto.

Cuando se describe un circuito complejo, normalmente se realizan varias arquitecturas de sus distintos componentes. Se pueden incluir estas arquitecturas dentro del diseño, sin embargo esto no es práctico, pues obliga a modificarlo cada vez que se elige una arquitectura para un componente. Las configuraciones constituyen una herramienta muy útil porque definen de forma sencilla la arquitectura que se desea asociar con una entidad y el conjunto entidad-arquitectura que se asocia con cada componente del circuito; la Figura 4.8 explica de forma gráfica el concepto de configuración [30].

(…)

Biblioteca “Mi_Biblioteca”

Paquete “Tipos” El tipo de byte es… Subtipo de palabra es…

(…) Paquete “Puertas” (…) Paquete “Funciones” + * / (…) Paquete “Circuitos_1” V_RISC RAM Paquete “Circuitos_2” ALU RAM

Figura 4.8 Ejemplo de configuraciones.

Documento similar