VHDL para la descripción estructurada

La descripción estructurada de un sistema se realiza a través de componentes que son interconectados mediante señales, donde cada componente, a su vez, puede venir descrito de forma estructurada

El sistema, de forma global, puede ser visto como una estructura jerarquizada

A nivel global, la descripción estructurada de un sistema viene descrito por

clásulas use (librerías)
entidad
arquitectura
declaración de componentes
declaración de señales
begin

instanciación de componentes
estructuras concurrentes (instrucciones concurrentes + process’s)

end

Por consiguiente el uso de un componente en un fichero VHDL estructurado implica tres acciones

Declarar el componente
Especificar la configuración
Instanciar el componente

Declaración de componentes

La declaración del componente se realiza en la arquitectura, previo desarrollo del código del sistema

Su sintaxis es

component <nombreComponente>
[generic(listaGenéricos);][port(especificación de señales);]
end component;

La declaración de señales del componente se realiza mimetizando la descripción de la entidad

Ejemplo:

Un componente se define a través de su entidad como

Entity fa is
port(

a,b: in std_logic;
c: in std_logic;
s, co: out std_logic);

end fa;

Entonces, su uso en un componente distinto implica que previeamente debe ser declarado y se realiza previa especificación de la arquitectura

En este caso, el componente anterior se declararía en el nuevo componente como

Architecture estructural of Suma is
...
component fa
port (

a,b: in std_logic;
c: in std_logic;
s, co: out std_logic);

end component;
...

Especificación

Un componente puede estar implementado por más de un modelo. Esto es, puede definirse mediante distintas arquitecturas: descripción a nivel transistor, de puerta lógica, RTL, comportamental, ...

La especificación de un componente determina la arquitectura del componente que se usa en en el componente que se crea

El formato de la especificación viene descrito por

for <etiqueta>: <nombreComponente> use entity <libreria>. <nombreEntidad>(nombreArquitectura);

Ejemplo:

for u1, u2: fa use entity work.fa(logica);

Normalmente (y conviene hacerlo así) todos los componentes que se crean para un diseño se encuentran en el mismo directorio. Este (usualmente) es el directorio de trabajo. VHDL lo reconoce como la librería work. Así, work.fa(logica) indica que estamos utilizando la arquitectura logica del componente fa que tenemos creado en nuestro directorio de trabajo

Instanciación de componentes

La instanciación de un componente puede verse como una copia de la entidad del componente en la arquitectura del componente que se crea con una asignación de puertos acorde con la interconexión que debe tener en el diseño en el que se introduce

La instanciación se realiza utilizando la instrucción port map. El formato es el siguiente

etiqueta: <nombreComponente> port map <listaPuertos>

La asociación de puertos puede realizarse

· Directamente, asociando señales en el mismo orden como están definidas en la entidad
· Mediante el operador de asignación => asociando señales definidas en la entidad a las señales de la arquitectura. Esta aproximación es útil cuando el orden de las señales es distinto en relación a su definición en la entidad
· Cuando una señal no recibe ninguna asignación puede emplearse la asignación open


Anterior
Volver a inicio curso
Volver a inicio capítulo
Siguiente


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: VHDL estructurado