You are on page 1of 7

PRCTICA COMPLEMENTARIA 2 DISEO ESTRUCTURAL JERRQUICO EN VHDL (QUARTUS)

OBJETIVOS:
Utilizar el enfoque de descripcin estructural para disear y programar circuitos extensos en VHDL por medio del diseo jerrquico. Aplicar en VHDL el concepto de componente dentro una descripcin estructural. Elaborar un diseo jerrquico en la herramienta de diseo Quartus 4.2.

INTRODUCCIN
En el siguiente ejercicio se pretende describir en VHDL el circuito de la figura 1, que corresponde a un sumador completo, con la finalidad de mostrar al alumno la forma de programacin estructural utilizando el lenguaje VHDL en Quartus 4.2 Web edition.

Figura 1: Diagrama de un circuito sumador completo.

I. PROCEDIMIENTO PARA CREAR UN PACKAGE (PAQUETE) 1.1. Crear una carpeta llamada compuerta (de preferencia evite una ruta con nombres largos). Al analizar el circuito de la figura 1 se observan tres compuertas diferentes. Por lo que procede a editar tres archivos que las describan en VHDL, a los que se les asignarn los nombres de: or_exc.vhd, and1.vhd, y or1.vhd, y se almacenarn en la carpeta compuerta.

--*************listado para la compuerta or exclusiva************************ library ieee; use ieee.std_logic_1164.all; entity or_exclusiva is port(a,b: in std_logic; y: out std_logic); end or_exclusiva; architecture procedi of or_exclusiva is begin y<='1' when (a='1' and b='0') or (a='0' and b='1') else '0'; end procedi;

--***************************listado para la compuerta and****************** library ieee; use ieee.std_logic_1164.all; entity and1 is port(a,b: in std_logic; y: out std_logic); end and1; architecture procedi of and1 is begin y<='1' when (a='1' and b='1') else '0'; end procedi;

--*********************listado para lo compuerta or************************* library ieee; use ieee.std_logic_1164.all; entity or1 is port(a,b: in std_logic; y: out std_logic); end or1; architecture procedi of or1 is begin y<='0' when (a='0' and b='0') else '1'; end procedi;

1.2. Ahora se procede a editar el archivo que contendr todos los componentes que se van a utilizar en el sumador. Todos ellos van estar englobados dentro de lo que en VHDL se conoce como un PACKAGE. Para identificar a ste ltimo se le asignar el nombre de componentes y se almacenar en la misma carpeta. -- Creacin del paquete COMPONENTES library IEEE; use ieee.std_logic_1164.all; PACKAGE componentes IS -- compuerta and de dos entradas component and1 port(a,b: in std_logic; y: out std_logic); end component; -- compuerta OR de dos entradas component or1 port(a,b: in std_logic; y: out std_logic); end component; -- compuerta XOR de dos entradas component or_exclusiva port(a,b: in std_logic; y: out std_logic); end component; END componentes;

II.- PROCEDIMIENTO PARA INSTANCIAR (USAR) COMPONENTES DEL PACKAGE CREADO EN EL PUNTO 1. 2.1 Edite el archivo que implementa el sumador completo y almacnelo en la carpeta compuerta con el nombre de compuertas.vhd. Este es el archivo TOP-LEVEL debido a que es el archivo que manda a llamar a los componentes. -- Archivo TOP-LEVEL para un sumador completo -- descrito en forma estructural con compuertas -- del paquete COMPONENTES library ieee, work; -- Inclusin de la libreria work use ieee.std_logic_1164.all; use work.componentes.all; -- Se indica que se van a utilizar todos -- los elementos del paquete COMPONENTES

-- En Quartus el nombre de la entidad del -- archivo TOP-LEVEL es importante entity sumador is port(A,B,Cin: in std_logic; S,cout: out std_logic); end sumador; -- Inicia descripcion en forma -- estructural del sumador architecture structural of sumador is signal x1,x2,x3,x4: std_logic; begin -- Inicia la interconexin de componentes union0: or_exclusiva port map (cin,B,x1); union1: or_exclusiva port map (X1,A,s); union2: or_exclusiva port map (A,B,x2); union3: and1 port map (cin,x2,x4); union4: and1 port map (A,b,x3); union5: or1 port map (x4,x3,cout); end structural;

2.1 Crear un nuevo proyecto, para esto elegir la opcin New Project Wizard del men File, al hacerlo aparecer el siguiente cuadro de dilogo. Pulsamos Next.

2.2 Luego aparecer un cuadro de dialogo con tres campos. El primero nos pregunta por el directorio del proyecto, se puede teclear la ruta o pulsar el botn al final del campo que nos permitir navegar hasta encontrar el directorio donde se encuentra la carpeta carpeta. En el segundo campo se pondr el nombre del proyecto (en nuestro ejemplo compuertas). En el tercer campo se debe poner el nombre de la entidad definida en el archivo TOP-LEVEL, para nuestro ejercicio la entidad se llama sumador.

2.3 El siguiente paso es agregar al proyecto todos los archivos editados anteriormente: los que describen a cada uno de los componentes (or_exc.vhd, and1.vhd, or1.vhd), el que define el package (componentes.vhd) y el archivo TOP-LEVEL (compuertas.vhd).

2.4 En el siguiente cuadro de dilogo se tiene que especificar el dispositivo que se va a emplear: el EPM7064SLC44-10 que pertenece a la familia MAX 7000S.

2.5 A continuacin Quartus nos da la opcin de activar algunas herramientas adicionales. En nuestro ejemplo no va a ser necesario activar alguna y simplemente continuamos con el proceso.

2.6 Finalmente, en la ltima pantalla nos aparece un resumen con las opciones que se han elegido en los cuadros de dilogo previos.

2.8 Antes de compilar el proyecto, verificamos que la entidad sumador sea la que tenga mayor jerarqua (TOP-LEVEL), para esto en la ventana de proyecto, nos posicionamos en el archivo compuertas y con el botn derecho del raton desplegamos un men contextual donde elegimos la opcin settings y despus nos posicionamos en general, hecho esto se deber desplegarse un men indicando el nombre de la entidad sumador, si no es as, se procede a corregirse. 2.7 Finalmente se procede a compilar el proyecto y si los pasos se hicieron de forma correcta no se deber generar error alguno.

You might also like