Ejemplo de VHDL

El siguiente ejemplo, muestra como hacer un diseño, partiendo el problema en varios módulos escritos en VHDL

El ejemplo implementa un bloque con 2 entradas (A[7..0], B[7..0]) que son registradas en los flancos ascendentes de CLK ( en caso de que ENA=1).
La salida (S[7..0]) es la suma de las entradas A y B registradas.

Diagrama de bloques

Bloques utilizados

  • ejemplo.vhd   Es el archivo mas alto en la jerarquia. Instancia los bloques (registro y sumador) y los une.
  • registro.vhd   Descripción comportamental de un registro de ancho de palabra parametrizable.
  • sumador.vhd   Descripción comportamental de un sumador de ancho de palabra parametrizable.
  • ejemplo_package.vhd   Package, donde se incluyen las constantes utilizadas y la despcripción de los componentes.

Uso de bibliotecas

En el modulo ejemplo.vhd, se hace uso de las siguientes bibliotecas:

  • LIBRARY ieee;
  • LIBRARY work;

Y se indica que se usen los siguientes componentes de las bibliotecas:

  • USE ieee.std_logic_1164.all;
  • USE work.pack_ejemplo.all;

Los directorios correspondientes a las bibliotecas IEEE, ALTERA, LPM (para inluir megafunciones de ALTERA) estan incluidas en los Sintetizadores, por lo que no es necesario indicar su ubicación.
La biblioteca WORK suele utilizarse para bibliotecas creadas por los diseñadores y en general hay que indicar la ubicación de estas.

En el caso de Quartus II de Altera, no es necesario indicar cual es el directorio correspondiente a la biblioteca WORK ( en nuestro caso es el que contenga el PACKAGE pack_ejemplo (incluido en el archivo ejemplo_package.vhd), Quartus asume por defecto que la bibloteca WORK corresponde al directorio de trabajo.

ATENCION:

El orden en el que se sintetizan los archivos es importante. Aquellos módulos que serán utilizados por otros deben ser sintetizados primero. En nuestro ejemplo EJEMPLO_PACKAGE.VHD, SUMADOR.VHD y REGISTRO.VHD deben sintetizarse antes que EJEMPLO.VHD.
Para que esto ocurra deben estar listados en ese orden en el menu: Assignaments>Setings>Files, el archivo que se debe sintetizar primero en el tope de la lista y el que se debe sintetizar último al final.

Cualquier duda: sebfer@fing.edu.uy

Testbench

Última modificación: jueves, 14 de marzo de 2024, 18:27