View
16
Download
1
Category
Preview:
DESCRIPTION
Descripcion estructural de VHDL , asignatura Diseño Dijital
Citation preview
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
1
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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
2
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.
Configuracin
de
Componentes
Decl racinade
Componentes
Declaracinde Seales
ArquitecturaEntidadLibreras yPaquetes
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 : := ; --El Valor es opcional
Cdigo I. Formato para declarar una seal en VHDL. Fuente: Language Templates de Xilinx ISE Power Navigator.
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
3
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
generic( : := ;
: := );
port( : ;
: );
end component;
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:
:
generic map( => ,
=> );
port map( => ,
=> );
--Modo implcito:
:
generic map(,,...,);
port map(,,...,);
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.
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
4
Ejemplo 1. Implemente la descripcin en VHDL del diagrama lgico de la Figura 2 utilizando el estilo estructural.
SalidaU0
XNOR2
A
B
C
D
U1
AND2
U2E
F
U5
NAND2
X
XOR2
U3
OR2
U4
AND2
N0
N1
N2
N3
N4
Seal
Conexin
Entradas
Componente AND2
Arquitectura
Entidad
Elemento U4
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...
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
5
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
--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.
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
6
Poner el programa Top Level como Top Model
Ejecutar con doble clic
Elementos
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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
7
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.
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
8
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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
9
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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
10
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 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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
11
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
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
12
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.
Francisco de Paula
Santander
U n i v e r s i d a d
Ingeniera Electrnica Diseo Digital
Ing. Jhon Jairo Ramrez Matheus. Dto. Electricidad Y Electrnica UFPS
13
A B C D
F
G
N3
N4
N5
N0
N1
N2
U0INV
U1INV
U2INV
U3
AND2
U4
AND2
U5
AND3 U7
AND2
U6
OR3
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.
Recommended