You are on page 1of 13

U

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

LABORATORIO N 7
ESTILO DE DESCRIPCIN ESTRUCTURAL EN VHDL
1. OBJETIVO
Describir el comportamiento de un sistema electrnico digital utilizando el estilo de
programacin estructural de VHDL, para identificar sus componentes fundamentales al
interior de cada unidad bsica de diseo.

2. EQUIPO NECESARIO

Computadora.
Herramienta de simulacin Xilinx WebPack 10.1.
Tarjeta PEGASUS de Digilent.
Cable de conexin JTAG.
Cable de alimentacin para la PEGASUS.

3. TRABAJO PERSONAL PREVIO


Antes de comenzar con la prctica consulte en un manual de VHDL ejemplos para la
programacin de las diferentes estructuras que conforman los mdulos de diseo.

4. MARCO CONCEPTUAL
Las guas de laboratorio 5 y 6 han mostrado los dos estilos comportamentales para la
descripcin de sistemas digitales en VHDL: algortmica y flujo de datos. En el presente
documento se presenta el otro estilo de descripcin que se define en este curso:
estructural.

4.1 Descripcin Estructural


El VHDL permite ser usado como Netlist o lenguaje de descripcin de estructura [1].
Esta descripcin estructural sirve para la realizacin de diseos jerrquicos que
involucren la conexin de varios componentes. En el estilo estructural, como su nombre
lo sugiere, se detalla la estructura del circuito utilizando componentes predefinidos
(compuertas, sumadores, contadores, etc.). El bloque de arquitectura se limita a declarar
su uso y a detallar sus conexiones.
En la prctica esta forma de trabajo debe apoyarse en la utilizacin de libreras de
componentes. Aunque naturalmente se puede partir de cero, comenzando por la
definicin de los elementos ms bsicos (como puertas lgicas), hasta la construccin de
otros elementos ms complejos para ubicarlos en la librera de trabajo propia (work). El
programador puede disear estas estructuras y guardarlas para su uso posterior o tomarlas
Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


1

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

de los paquetes contenidos en las libreras de diseo del software que se est utilizando.
Sin embargo este estilo de programacin no resulta muy aconsejable para circuitos
medianamente complejos ya que el tiempo de edicin es mayor al de los otros estilos.
La descripcin estructural debe tender a la definicin y referencia de componentes,
as como tambin a la especificacin de interconexiones entre unos y otros [1]. Estos
elementos se asocian a mdulos almacenados en una librera y para usarlos se necesitan
declararlos, configurarlos y conectarlos adecuadamente.
En trminos generales, para este estilo de programacin se necesita declarar cada
componente que constituye el circuito, adems, tambin se debe designar el tipo de seal
que interconecta a cada elemento y por ltimo se debe crear un mapa del circuito total
[2]; cada uno de estos elementos tiene un lugar especfico dentro de la arquitectura del
programa en general tal como se muestra en el diagrama de flujo de la Figura 1.

Libreras y
Paquetes

Entidad

Arquitectura

Declaracin
de Seales

Declaracin
de
Componentes

Configuracin
de
Componentes

Figura 1. Diagrama de flujo que representa la estructura general del modelo de programacin en
VHDL con estilo de descripcin estructural. Fuente: elaboracin propia.

Como en todos los programas descritos en prcticas anteriores el encabezado


(libreras, paquetes y entidad) es el mismo, salvo que la manera de describir el
funcionamiento del circuito se hace de forma diferente. Por ese motivo, comenzaremos
analizando este estilo a partir de la arquitectura y especficamente desde las Seales.

4.1.1 Declaracin de Seales


Para interconectar los componentes del circuito lgico se necesita declarar las seales
que cada componente va a recibir y va a trasmitir con un nombre especfico y adems
definir el tipo de dato que va a utilizar [1]. Para contar con ello, VHDL emplea la
sentencia signal cuyo formato se muestra en el Cdigo I [3].
1

signal <Nombre>: <Tipo> := <Valor>;

--El Valor es opcional

Cdigo I. Formato para declarar una seal en VHDL. Fuente: Language Templates de Xilinx
ISE Power Navigator.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


2

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

4.1.2 Declaracin de Componentes


VHDL emplea la sentencia component para declarar el manejo de un componente
detallando su plantilla de conexin y, opcionalmente, definiendo parmetros en forma de
constantes genricas [1]. Se usa en la parte declarativa de la arquitectura con el formato
mostrado en el Cdigo II [3]. Obsrvese que tal formato guarda cierta similitud con el de
la declaracin de una entidad. Bajo tal juicio se dice que un componente representa una
entidad que hace parte de una entidad mayor o principal.
1
2
3
4
5
6

component <Nombre_del_componente>
generic(<Nombre_de_las_constantes>
<Otras_constantes>
port(<Nombre_de_los_puertos>
<Otros_puertos>
end component;

:
:
:
:

<Tipo>
<Tipo>
<Modo>
<Modo>

:= <Valor>;
:= <Valor>);
<Tipo>;
<Tipo>);

Cdigo II. Formato para declarar un componente en VHDL. Fuente: Language Templates de
Xilinx ISE Power Navigator.

4.1.3 Configuracin de Componentes


La diferencia entre declarar y configurar componentes es que declarar hace referencia
a la definicin individual de cada uno. En cambio, la configuracin se refiere a la
organizacin y conexin entre los componentes definidos. VHDL realiza tal
configuracin siguiendo el formato mostrado en el Cdigo III [3].
1
2
3
4
5
6
7
8
9
10
11

--Modo explcito:
<Id_de_lnea> : <Nombre_del_componete>
generic map(<Nombre_de_constanste_genrica_local> => <Valor>,
<Otras_constantes_genricas> => <Valor>);
port map(<Nombre_de_puerto_local> => <seal_externa>,
<Otros_puertos> => <seal_externa>);
--Modo implcito:
<Id_de_lnea> : <Nombre_del_componete>
generic map(<valor_1>,<valor_2>,...,<valor_m>);
port map(<seal_1>,<seal_2>,...,<seal_n>);

Cdigo III. Formato para configurar los componentes de la arquitectura de un circuito lgico
digital descrito con el estilo estructural en VHDL. Fuente: Language Templates de Xilinx ISE
Power Navigator.

El modo explcito especifica completamente la conexin entre la constante genrica


local con el valor externo, y el puerto con la seal externa. El modo implcito slo
especifica los valores y las seales externas. La conexin con ellos(as) se realiza segn el
orden en que las constantes genricas y los puertos han sido declarados en el componente.
En esta gua se har nfasis en la configuracin implcita debido a su mayor grado de
simplicidad [2].
A continuacin se mostrar un ejemplo que rene los pasos a seguir, en general, para
describir un circuito digital mediante el estilo estructural en VHDL, siguiendo los
formatos vistos en esta gua y haciendo referencia a algunos de las guas 5 y 6.
Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


3

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

Ejemplo 1. Implemente la descripcin en VHDL del diagrama lgico de la Figura 2


utilizando el estilo estructural.
Entradas

Arquitectura

A
U0
B

Conexin

N0

XNOR2

U3

C
U1

N1

AND2

U5
U4

E
U2
F

N2

N3

OR2

AND2

Elemento U4

Salida

N4

NAND2
Seal

Componente AND2

XOR2
Entidad
Figura 2. Esquema y constitucin del circuito digital del ejemplo 1. Fuente: elaboracin propia.

Paso 1. Escribir el programa principal o de nivel superior (Top Level) que describa la
estructura del circuito de la Figura 2 basndose en la estructura mostrada en la Figura 1.
Para este ejemplo se ha escrito el programa del Cdigo IV.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

-----------------------------------------------------------------Declaracin de la librera y los paquetes a implementar:


---------------------------------------------------------------library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
-----------------------------------------------------------------Declaracin de la entidad de la estructura:
---------------------------------------------------------------entity top_level is
port(A,B,C,D,E,F : in std_logic;
X
: out std_logic);
end top_level;
-----------------------------------------------------------------Declaracin de la arquitectura de la estructura:
---------------------------------------------------------------architecture Arq_top_level of top_level is
--Definicin de las Seales que interconectan los elementos:
signal N0,N1,N2,N3,N4 : std_logic;
--Definicin del primer componente de la estructura:
component xnor_2
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end component;
--Contina en la siguiente pgina...

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


4

Francisco de Paula

Santander

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

Ingeniera Electrnica

Diseo Digital

--Definicin del segundo componente de la estructura:


component and_2
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end component;
--Definicin del tercer componente de la estructura:
component xor_2
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end component;
--Definicin del cuarto componente de la estructura:
component or_2
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end component;
--Definicin del quinto componente de la estructura:
component nand_2
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end component;
-----------------------------------------------------------------Mdulo de configuracin entre componentes definidos:
---------------------------------------------------------------begin
U0 : xnor_2 port map(A,B,N0);
U1 : and_2
port map(C,D,N1);
U2 : xor_2
port map(E,F,N2);
U3 : or_2
port map(N0,N1,N3);
U4 : and_2
port map(N1,N2,N4);
U5 : nand_2 port map(N3,N4,X);
end Arq_top_level;

Cdigo IV. Programa principal en VHDL empleado en la descripcin estructural del circuito
digital de la Figura 2 (paso 1).

Paso 2. Sintetizar el programa con la opcin synthesize XST de la lista pocesses de la


ventana Design tal como se muestra en la Figura 3. Obsrvese que despus de haber
sintetizado el Top Level, tal opcin aparece con el smbolo
, lo que presume una
advertencia debido a que an no estn definidos o declarados todos los elementos de la
estructura (U0,,U5).
Paso 3. Abrir el submen del programa Top_Level en la lista Hierarchy de la ventana
Design dando clic en . Aparecern cada uno de los elementos que contiene la estructura
del diagrama mostrado en la Figura 2 con el smbolo . Ello puede observarse en la
Figura 3.
Paso 4. Definir cada uno de los componentes. Para ello se sigue la secuencia mostrada a
continuacin.
Paso 4.1 Seleccionar el elemento componente1 a definir. Oprimir el botn New
Source ( ) de la caja de herramientas de la ventana Design; o bien, seleccionar con clic
derecho el elemento componente y escoger New Source. En este caso se ha seleccionado
U1 and_2. Ello se muestra en la Figura 4.
1

Se aclara que lo que se define principalmente es el componente que emplee el elemento, de modo que
cualquier otro elemento que utilice el mismo componente, tambin quedar definido.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


5

Francisco de Paula

Santander

Elementos

Ingeniera Electrnica

Diseo Digital

Poner el programa Top Level como Top Model

Ejecutar con doble clic

Figura 3. Pasos 2 y 3. Fuente: elaboracin propia.

New Source

Figura 4. Paso 4.1. Fuente: elaboracin propia.

Paso 4.2 En la ventana New Source Wizard seleccionar el tipo de fuente VHDL Module
y escribir su nombre (File name) y localizacin (Location). Se recomienda escribir el
Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


6

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

nombre del componente que emplea el elemento y que la localizacin del directorio sea
la misma que la del proyecto (sta viene predeterminada). Luego, oprimir el botn Next
(siguiente). Ello se muestra en la Figura 5.

Figura 5. Paso 4.2. Fuente: elaboracin propia.

Paso 4.3 Definir los nombres de la entidad, la arquitectura, las entradas y las salidas del
componente. El nombre de la entidad debe ser el mismo nombre del componente definido
en el programa Top Level. Los otros tres son arbitrarios; cada uno puede ser el mismo
que los definidos para el componente en el programa Top Level, o bien, puede ser distinto.
Lo que s debe ser igual es el nmero de entradas y salidas.

Figura 6. Paso 4.3. Fuente: elaboracin propia.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


7

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

En esta gua se prefiere asignar los mismos nombres para evitar confusiones, excepto el
de la arquitectura (para este caso arq_and_2) porque ste no es definido en el Top Level.
Luego, oprimir el botn Next y en la siguiente ventana oprimir Finish. Ello se muestra2
en la Figura 6.
Paso 4.4 Escribir el programa que describa el funcionamiento del componente. En este
caso se ha escrito un programa de estilo flujo de datos (por simplicidad) para el
componente and_2 tal como se muestra en el Cdigo V.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

-----------------------------------------------------------------Declaracin de la librera y el paquete:


library IEEE;
use IEEE.std_logic_1164.all;
-----------------------------------------------------------------Declaracin de la entidad del componente and_2:
entity and_2 is
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end and_2;
-----------------------------------------------------------------Declaracin de la arquitectura del componente and_2:
architecture arq_and_2 of and_2 is
begin
Z0 <= X0 and X1;
end arq_and_2;
----------------------------------------------------------------

AND2

Cdigo V. Programa en VHDL con estilo flujo de datos que describe el funcionamiento del
componente and_2 (paso 4.4). Fuente: elaboracin propia.

Figura 7. Cambio simultneo de dos elementos que emplean el mismo componente (paso 4.5).
Fuente: elaboracin propia.
2

No se muestra la ventana donde se oprime Finish porque no se considera un objeto grfico relevante.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


8

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

Guardar el programa. Obsrvese que los elementos U1 y U4 cambian del estado (no
definido) al (descrito con VHDL). Adems debe notarse que los dos han cambiado
porque ambos utilizan el componente AND2. Ello se muestra en la Figura 7.
Paso 4.5 Repetir los pasos 4.1 al 4.4 para crear los programas de los componentes
faltantes. el Cdigo VI, Cdigo VII, Cdigo VIII y Cdigo IX muestran los programas
desarrollados para XNOR2, XOR2, OR2 y NAND2 respectivamente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

-----------------------------------------------------------------Declaracin de la librera y el paquete:


library IEEE;
use IEEE.std_logic_1164.all;
-----------------------------------------------------------------Declaracin de la entidad del componente xnor_2:
entity xnor_2 is
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end xnor_2;
-----------------------------------------------------------------Declaracin de la arquitectura del componente xnor_2:
architecture arq_xnor_2 of xnor_2 is
begin
Z0 <= X0 xnor X1;
end arq_xnor_2;
----------------------------------------------------------------

Cdigo VI. Programa en VHDL con estilo flujo de datos que describe el funcionamiento del
componente xnor_2 (paso 4.6).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

-----------------------------------------------------------------Declaracin de la librera y el paquete:


library IEEE;
use IEEE.std_logic_1164.all;
-----------------------------------------------------------------Declaracin de la entidad del componente xor_2:
entity xor_2 is
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end xor_2;
-----------------------------------------------------------------Declaracin de la arquitectura del componente xor_2:
architecture arq_xor_2 of xor_2 is
begin
Z0 <= X0 xor X1;
end arq_xor_2;
----------------------------------------------------------------

Cdigo VII. Programa en VHDL con estilo flujo de datos que describe el funcionamiento del
componente xor_2 (paso 4.6).

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


9

Francisco de Paula

Santander

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Ingeniera Electrnica

Diseo Digital

-----------------------------------------------------------------Declaracin de la librera y el paquete:


library IEEE;
use IEEE.std_logic_1164.all;
-----------------------------------------------------------------Declaracin de la entidad del componente or_2:
entity or_2 is
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end or_2;
-----------------------------------------------------------------Declaracin de la arquitectura del componente or_2:
architecture arq_or_2 of or_2 is
begin
Z0 <= X0 or X1;
end arq_or_2;
----------------------------------------------------------------

Cdigo VIII. Programa en VHDL con estilo flujo de datos que describe el funcionamiento del
componente or_2 (paso 4.6).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

-----------------------------------------------------------------Declaracin de la librera y el paquete:


library IEEE;
use IEEE.std_logic_1164.all;
-----------------------------------------------------------------Declaracin de la entidad del componente nand_2:
entity nand_2 is
port(X0,X1 : in std_logic;
Z0
: out std_logic);
end nand_2;
-----------------------------------------------------------------Declaracin de la arquitectura del componente nand_2:
architecture arq_nand_2 of nand_2 is
begin
Z0 <= X0 nand X1;
end arq_nand_2;
----------------------------------------------------------------

Cdigo IX. Programa en VHDL con estilo flujo de datos que describe el funcionamiento del
componente nand_2 (paso 4.6).

Paso 4.6 Poner alguno de los mdulos definidos (en este caso, uno de los elementos)
como el mdulo superior. En este caso, se procede a seleccionar el elemento U0. Luego,
se oprime el botn Set as Top Module ( )de la caja de herramientas de la ventana Design;
o bien, seleccionar con clic derecho el mdulo (U0 xnor_2) y escoger Set as Top
Module. Ello se muestra en la Figura 8.
Paso 4.7 Sintetizar elemento por elemento. Para ello ejecute con doble clic la opcin
Synthesize XST de la lista Processes de la ventana Design. En este caso, el resultado de
tal procedimiento es como se muestra en la Figura 9. El smbolo implica que la sntesis
ha sido satisfactoria. Repetir este paso hasta que se sintetice satisfactoriamente todos los
elementos.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


10

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

Set as Top Module

Figura 8. Poner el elemento U0 como mdulo superior (paso 4.7). Fuente: elaboracin propia.

Sintetizar el elemento U0: sntesis satisfactoria

Figura 9. Sntesis satisfactoria del elemento U0 (paso 4.8). Fuente: elaboracin propia.

Paso 5. Repetir el paso 2. Ntese que en este caso el resultado es una sntesis satisfactoria
tal como se muestra en la Figura 10. Adems, obsrvese que el cdigo presente en tal
figura es el correspondiente al componente NAND2 y no al del Top Level. Esto se debe
a que fue el ltimo de los componentes en sintetizar. Con ello se hace entender que no
Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


11

Francisco de Paula

Santander

Ingeniera Electrnica

Diseo Digital

hay necesidad que un programa sea el mdulo superior (Top Module) para poder ser
abierto, visto y/o editado.

Sintetizar el programa de nivel superior o Top Level:


sntesis satisfactoria

Figura 10. Sntesis satisfactoria del programa de nivel superior o Top Level (paso 5). Fuente:
elaboracin propia.

Asignacin: Probar el circuito conectando cada una de las entradas a un switch y la salida
a un led.

5. ACTIVIDAD
Teniendo en cuenta el estilo de descripcin estructural y el circuito de la Figura 11:
a) Encuentre las expresiones booleanas que describen el circuito.
b) Del diagrama lgico encuentre la tabla de verdad que describe el comportamiento del
circuito.
c) Disee un programa en lenguaje VHDL por los dos mtodos vistos en clase y
compruebe su funcionamiento.
d) Construya el smbolo del programa que cre.
e) Realice el diagrama de tiempos.
f) Implemente su proyecto en la tarjeta Pegasus de Digilent utilizando para ello los
recursos de la tarjeta para comprobar su funcionamiento. Diodos leds para las salidas
y swicthes en las entradas respectivamente.
Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


12

Francisco de Paula

Ingeniera Electrnica

Diseo Digital

Santander

U3

N3

U4

N4

AND2
U0
INV

N0
U6

U7

AND2
OR3
U5
U1
INV

N1

U2
INV

N2

N5

AND3
AND2

Figura 11. Diagrama esquemtico de un circuito lgico propuesto a describir en la actividad.


Fuente: elaboracin propia.

6. REFERENCIAS
[1] Fernando Pardo Carpio and Jos A. Boluda Grau, VHDL Lenguaje para sntesis y
modelado de circuitos, Tercera ed. Mxico D.F., Mxico: Alfaomega Grupo Editor,
S.A. de C.V., 2011.
[2] David G. Maxines and Jessica Alcal, VHDL El Arte de Programar Sistemas
Digitales, Primera ed. Mxico: Compaia Editorial Continental, 2002.
[3] Xilinx, Inc., Language Templates of Power Navigator, 2012.

Ing. Jhon Jairo Ramrez Matheus.

Dto. Electricidad Y Electrnica UFPS


13

You might also like