13
Francisco de Paula Santander U n i v e r s i d a d Ingeniería Electrónica Diseño Digital Ing. Jhon Jairo Ramírez Matheus. Dto. Electricidad Y Electrónica UFPS 1 LABORATORIO N° 7 ESTILO DE DESCRIPCIÓN ESTRUCTURAL EN VHDL 1. OBJETIVO Describir el comportamiento de un sistema electrónico digital utilizando el estilo de programación estructural de VHDL, para identificar sus componentes fundamentales al interior de cada unidad básica de diseño. 2. EQUIPO NECESARIO Computadora. Herramienta de simulación Xilinx WebPack 10.1. Tarjeta PEGASUS de Digilent. Cable de conexión JTAG. Cable de alimentación para la PEGASUS. 3. TRABAJO PERSONAL PREVIO Antes de comenzar con la práctica consulte en un manual de VHDL ejemplos para la programación de las diferentes estructuras que conforman los módulos de diseño. 4. MARCO CONCEPTUAL Las guías de laboratorio 5 y 6 han mostrado los dos estilos comportamentales para la descripción de sistemas digitales en VHDL: algorítmica y flujo de datos. En el presente documento se presenta el otro estilo de descripción que se define en este curso: estructural. 4.1 Descripción Estructural El VHDL permite ser usado como Netlist o lenguaje de descripción de estructura [1]. Esta descripción estructural sirve para la realización de diseños jerárquicos que involucren la conexión 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 práctica esta forma de trabajo debe apoyarse en la utilización de librerías de componentes. Aunque naturalmente se puede partir de cero, comenzando por la definición de los elementos más básicos (como puertas lógicas), hasta la construcción de otros elementos más complejos para ubicarlos en la librería de trabajo propia (work). El programador puede diseñar estas estructuras y guardarlas para su uso posterior o tomarlas

Estilo de Descripción Estructural en VHDL

Embed Size (px)

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.