Ejemplo sencillo de un diseño VHDL
Ejemplo sencillo de un diseño VHDL
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.
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