VHDL / Entidad

De Wikilibros, la colección de libros de texto de contenido libre.

← Elementos básicos del lenguaje Entidad Arquitectura →


Durante los capítulos anteriores se ha insistido varias veces en que VHDL sirve para describir hardware. Un circuito electrónico puede se parte de otro más grande, en este caso el primero sería un subcircuito del segundo.

Un circuito puede estar compuesto por muchos subcircuitos y estos subcircuitos se interconectarían.

Así aparece una jerarquía en el diseño. En la parte alta de la jerarquía aparecerían los circuitos más complejos, que estarían compuestos por subcircuitos y, a su vez, cada uno de estos subcircuitos podría estar compuesto por subcircuitos más sencillos.

Un ejemplo de jerarquía sería un microprocesador. El circuito más complejo y el más alto en la jerarquía sería el propio microprocesador. Éste estaría compuestos por subcircuitos, por ejemplo el de la unidad de control, el de la unidad aritmético-lógica, memorias, registros, etc. Estos subcircuitos estarían conectados por líneas eléctricas, pueden ser simples como un cable o complejas como un bus. Una unidad de control estaría compuesta por más subcircuitos, más registros, más buses, etc.

Cuando se está diseñando en un determinado nivel, seguramente se empleen elementos de niveles más bajos. Para usar estos elementos de nivel bajo en un nivel más alto sólo se necesita conocer su interfaz, es decir, sus entradas y salidas, sobre ellas se conectarían los cables o buses que correspondieran.

La entidad sirve precisamente para eso, para definir las entradas y salidas que tendrá un determinado circuito.

En principio pudiera parecer que esta definición sea equivalente a la cabecera de una función de un lenguaje cualquiera de programación. En VHDL es más conveniente ver a la entidad como una caja negra con cables para las entradas y salidas. La ventaja de pensar en una entidad como en una caja negra a la que se conectan cables es que es más fácil comprender la ejecución concurrente que ocurrirá en el hardware.

La descripción de cómo funciona por dentro esa caja negra es la arquitectura.

En el capítulo de introducción se vió un ejemplo de entidad, era para un multiplexor de dos entradas, una salida y una señal de control:

ENTITY mux
   PORT(control, entrada1, entrada2: IN bit;
        salida: OUT bit);
END mux;

En este ejemplo la entidad de llama mux. Su interfaz se compone de las señales control, entrada1 y entrada2 como entradas de tipo bit y de la señal llamada salida como salida, también de tipo bit.

En el ejemplo del multiplexor también se muestra la separación del interfaz (entidad) con la circuitería interna (arquitectura). El mismo circuito fue descrito de tres formas distintas, además esas formas pueden resultar en implementaciones físicas distintas, es decir, distintas formas de descripción pueden dar circuitos distintos, pero su entidad siempre sería igual.

Esta es la estructura básica para definir una entidad, más adelante se verá que puede contener más elementos aparte del PORT.

Obsérvese que en todo momento se habla de señales y no de variables.

[editar] Señales

En VHDL hay tres tipos de elementos: constantes, variables y señales.

Las señales representarían la función que harían los cables en un diseño hardware tradicional, es decir, sirven para transportar información y establecer conexiones.

Los elementos como señales y variables pueden tener atributos, éstos se indican a continuación del nombre, separados con una comilla simple. Hay muchos atributos, como LEFT, RIGHT, LOW, HIGH, RANGE, LENGTH... Pero el atributo más usado es EVENT, que indica si una señal ha cambiado de valor. Por ejemplo la sentencia:

IF(reloj'event AND reloj='1')

Sólo sería verdad cuando la señal reloj cambiase de valor y ese nuevo valor fuera 1, o lo que es lo mismo, un flanco ascendente de la señal reloj.

Herramientas personales