You are on page 1of 19

Diseo jerrquico con VHDL

Introduccin
Durante el primer bimestre, se estudi temas como:

Estructura de cdigo: declaracin de libreras, entidad, arquitectura. Tipos de datos. Operadores y atributos. Declaraciones concurrente y cdigo concurrente. Declaraciones secuenciales y cdigo secuencial. Seales, variables y constantes. Diseo de mquinas de estado finitas.

En este bimestre, se aadirn nuevos elementos principalmente para

asignacin de libreras, tales como:


Packages (Paquetes) Components (componentes) Functions (Funciones)

Introduccin

Introduccin
Estas nuevas unidades pueden ser colocadas dentro del mismo

cdigo. Sin embargo, debido a que su propsito principal es permitir que piezas comunes de cdigo sean reusadas y compartidas, por lo que es ms comn colocarlas en una librera. Esto permite particionar el cdigo, lo cual es de mucha ayuda en cdigo extensos. Por lo tanto, piezas comunes de cdigo son escritas en forma de COMPONENTES, FUNCIONES o PROCEDIMIENTOS, luego colocados en un PAQUETE, el cual es finalmente compilado dentro de una LIBRERA.

COMPONENT
Un COMPONENT es simplemente una pieza de cdigo convencional (esto es,

delcaracin de librera + entidad + arquitectura). Sin embargo, por declarar dicho cdigo como un componente, puede ser utilizado dentro de otro circuito, lo que permite la construccin de diseos jerrquicos. Un COMPONENT es tambin otra forma de particionar el cdigo de tal forma que pueda ser compartido y reutilizado. Por ejemplo, circuitos comunes como FF, multiplexores, sumadores, compuerta bsica pueden ser colocados dentro de una librera, de modo que cualquier proyecto puede hacer uso de ellos sin necesidad de volver a escribirlos. Para hacer uso de un COMPONENT, debe ser declarado. La sintaxis de declaracin se muestra a continuacin:

Modos de declaracin de componentes


Existen dos maneras para declarar un componente. Una es disearlo y colocarlo en una librera (luego declarar el componente

en el cdigo principal). Otra forma es usando un paquete (PACKAGE), lo que evita el uso de repeticin de declaraciones cada vez que se haga uso del componente.

Declaracin del componente en el cdigo principal


Se implementar el diseo de la figura usando solo COMPONENTS

(inverter, nand_2, nand_3), sin crear un PACKAGE. Sern necesarios cuatro mdulos VHDL: uno para cada componente y otro para el proyecto. Debido a que no se crea un paquete, los componentes deben ser declarados en el cdigo principal (parte declarativa de la arquitectura).

Declaracin del componente en el cdigo principal

Declaracin del componente en el cdigo principal

Declaracin del componente en un PACKAGE


Creando un paquete, sern necesarios cinco mdulos VHDL: uno para cada componente,

uno para el paquete y otro para el proyecto.

Declaracin del componente en un paquete


A pesar de crear un mdulo adicional (PACKAGE), el mdulo extra solo se crea una vez,

as se evita la necesidad de declarar los componentes en el cdigo principal cada vez que sean de usarse.

PORT MAP
Existen dos formas de mapear los puertos de un componente durante su

instalacin: mapeo posicional y mapeo nominal.

Este mapeo es posicional, esto es, los puertos 'x' y 'y' corresponden a 'a' y 'b',

respectivamente. Por otro lado, el mapeo nominal es:


El mapeo posicional es fcil de escribir, pero el mapeo nominal tiene menos

posibilidad de error. Los puertos pueden quedar sin conexin (usando la sentencia OPEN). Por ejemplo:

PACKAGE

La sintaxis est compuesta de dos partes: PACKAGE y PACKAGE

BODY. La primera parte es obligatoria y contiene todas las declaraciones. La segunda parte es necesario solo cuando uno o ms subprogramas son declarados. PACKAGE y PACKAGE BODY deben tener el mismo nombre. La lista de declaraciones del proceso puede contener: COMPONENTES, FUNCIONES, PROCEDIMIENTOS, TYPOS, CONSTANTES, etc.

Package: Ejemplo 1
El siguiente ejemplo muestra un paquete llamada my_package. Contiene solo

declaraciones de tipos y constantes, de modo que el cuerpo del paquete (package body) no es necesario.

Package: Ejemplo 2

Package: Ejemplo 2
Cualquiera de los paquetes anteriores pueden ahora ser compilados, llegando a ser

parte de la librera WORK (o cualquier otra). Para hacer uso de esta librera en el cdigo VHDL, se aade una nueva sentencia USE al cdigo principal, tal como se muestra:

GENERIC MAP
El uso de genricos en componentes se logra con la sentencia

GENERIC MAP para pasar informacin al parmetro genrico. La sintaxis es la siguiente:

Vamos a considerar un generador de paridad genrico el cual aade un bit al

vector de entrada (en su parte izquierda). Tal bit ser '0' si el nmero de unos en el vector de entrada es par, y ser '1' si el nmero de bits es impar, de modo que el vector siempre tenga un nmero par de unos.

GENERIC MAP - Driver

GENERIC MAP Programa principal

You might also like