sumador de n bits

28

Click here to load reader

Upload: alancervantes

Post on 19-Nov-2015

142 views

Category:

Documents


11 download

DESCRIPTION

Sumador

TRANSCRIPT

  • G R U P O D E D I S E O H A R D W A R E S O F T W A R E D I E T E S C E T U R J C

    niversidad Rey Juan Carlos

    SSWW

    WW

    HHSSWWWW

    HH Informe tcnico: FCLTC_000 Fecha: 17-01-2005

    Proyecto: Docencia Subproyecto: VHDL

    Herramientas software: ModelSim Componentes hardware: Ad-hoc

    Introduccin a ModelSim Sumador binario de n bits

    Resumen:

    El presente informe presenta una introduccin sencilla paso a paso del simulador VHDL ModelSim mediante la construccin de un sumador binario parametrizable de n bits materializado como una red iterativa de sumadores binarios de 1 bit en cascada ripple carry.

    Jos Ignacio Martnez Torre Pablo Huerta Pellitero Despacho 160 Edificio Departamental II Grupo de Diseo HwSw DIET (ESCET) Tel: +34 91 664 74 96 Universidad Rey Juan Carlos Fax: +34 91 488 70 46 28933 Mstoles Madrid ESPAA Email: [email protected]

    IT_FCLTC_000

  • D O C E N C I A - V H D L

    Introduccin a ModelSim

    Grupo de diseo Hardware Software DIET ESCET URJC

    C/ Tulipn s/n, E-28933, Mstoles, Madrid, ESPAA Telfono (34) 91 664 74 96 Fax (34) 91 664 74 90

  • Tabla de contenidos OBJETIVO ...................................................................................................................................... 1

    PRCTICA GUIADA ..................................................................................................................... 5

    CONCEPCIN DEL SUMADOR DE ARRIBA-ABAJO .......................................................................... 5 DESCRIPCIN VHDL DEL SUMADOR DE ABAJO-ARRIBA .............................................................. 6

    Edicin VHDL y gestin de espacios de diseo ..........................................................6 Compilacin del diseo vhdl ........................................................................................9 Simulacin vhdl y anlisis de resultados ...................................................................11

    CDIGO VHDL DEL SUMADOR BINARIO DE N BITS ....................................................... 15

    NAND2......................................................................................................................................... 15 NAND3......................................................................................................................................... 15 XOR2........................................................................................................................................... 16 ADD_1......................................................................................................................................... 16

    Add_1 funcional .........................................................................................................16 Add_1 test ..................................................................................................................16 Add_1 circuito.............................................................................................................17

    ADD_8......................................................................................................................................... 18 Add_8 circuito............................................................................................................18 Add_8 test .................................................................................................................19 Add_8 funcional ........................................................................................................19

    ADD_N......................................................................................................................................... 19 Add_n circuito............................................................................................................19 Add_n funcional .........................................................................................................20 Add_n test ..................................................................................................................20

    BIBLIOGRAFA............................................................................................................................ 21

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    1

    Objetivo l objetivo de este manual es presentar a grandes rasgos el entorno de simulacin

    de circuitos lgicos digitales descritos mediante un lenguaje de descripcin de

    hardware como VHDL.

    En la Figura 1 se muestra el diagrama general de flujo que se deber llevar a cabo para

    comprobar el correcto funcionamiento de cualquier diseo.

    En primer lugar, se realizar un estudio analtico a mano del circuito propuesto para

    conocer su funcionamiento y tener una idea certera de qu debemos esperar como

    resultado de la aplicacin de las herramientas informticas. Este estudio se deber

    realizar antes de utilizar dichas herramientas y es parte fundamental para la correcta

    asimilacin de los conocimientos que se imparten.

    A continuacin, se har un estudio asistido por ordenador utilizando el paquete

    informtico ModelSim de Mentor Graphics inc. Este paquete informtico est

    compuesto por un conjunto de aplicaciones que permiten disear circuitos digitales

    en VHDL y simular y analizar su comportamiento de una forma sencilla dentro de un

    entorno integrado para PC. La secuencia habitual de pasos se lleva a cabo del

    siguiente modo:

    o Se introduce el diseo que se pretende simular mediante la edicin del

    cdigo VHDL, bien a travs del editor de la herramienta (Edit Window) o

    bien a travs de otro editor convencional. Adems, se debe crear un

    entorno de trabajo para gestionar las bibliotecas utilizadas y creadas

    (Library Browser).

    o Se compila el diseo de forma ordenada jerrquicamente desde el nivel

    ms bajo al nivel ms alto. ModelSim detecta de forma automtica el orden

    de compilacin de los distintos archivos.

    Captulo

    1 E

  • I T _ F C L T C _ 0 0 0

    2

    Estudio del diseo

    Edicin VHDL del diseo y gestin de bibliotecas

    Compilacin del diseo VHDL

    Simulacin VHDL

    Anlisis de los resultados

    Mejora del diseo

    FIN

    Editor WindowWorkspace BrowserLibrary Browser

    VHDL Compiler

    VHDL Simulator

    Waveform ViewerDebugger

    Figura 1: Mtodo de trabajo.

    o Se simula el diseo mediante el simulador.

    o Se comprueba el correcto o incorrecto funcionamiento del diseo,

    analizando las formas de onda de las seales necesarias mediante el

    visualizador (Waveform Viever) y/o se depura el cdigo utilizando el

    depurador. En caso de que los resultados no sean los esperados, se deber

    mejorar el diseo, normalmente comenzando con el estudio del propio

    diseo o re-escribiendo parte o todo el cdigo VHDL.

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    3

    La explicacin de los pasos bsicos se realiza materializando una prctica introductoria

    sencilla en el Captulo 2, de modo que se siga el flujo de diseo de la Figura 1. En

    [1,2,3,4,5] se hace referencia a bibliografa que aporta informacin complementaria sobre

    este paquete informtico, el lenguaje VHDL y diseo lgico.

  • I T _ F C L T C _ 0 0 0

    4

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    5

    Prctica guiada a prctica se orienta hacia el aprendizaje del entorno de simulacin de ModelSim

    aplicndolo a la descripcin en el dominio estructural y funcional de un sumador

    binario parametrizable de n bits materializado como una red iterativa de sumadores

    binarios de 1 bit en cascada ripple carry.

    El sumador binario parametrizable de n bits se va a describir utilizando una metodologa de

    arriba-abajo (top-down) para su concepcin y una metodologa de abajo-arriba (bottom-up)

    para su descripcin VHDL.

    Concepcin del sumador de arriba-abajo El sumador binario parametrizable de n bits (Figura 2) es un sistema con dos entradas

    vectoriales de datos de n bits (a y b), una entrada de acarreo de 1 bit (c_in), una salida

    vectorial de resultados de n bits (s) y una salida de acarreo de 1 bit (c_out).

    a(n-1:0) b(n-1:0)

    s(n-1:0)

    c_inc_out n-bit adder

    Figura 2: sumador binario parametrizable de n bits.

    Este sumador binario parametrizable de n bits ser descrito en los dominios conductual y

    estructural. En ambos dominios el sumador se puede describir y realizar de distintas

    maneras. Para el dominio estructural, el sumador va a ser descrito como una red iterativa en

    cascada o ripple-carry.

    Captulo

    2

    L

  • I T _ F C L T C _ 0 0 0

    6

    En Figura 3 se muestra la estructura de bloques e interconexiones del sumador.

    a(0) b(0)

    s(0)

    c(0)FA

    a(1) b(1)

    s(1)

    c(1)FA

    a(2) b(2)

    s(2)

    c(3) FA

    a(n-1) b(n-1)

    s(n-1)

    c(n-1)FA c(2)c(n) ....

    Figura 3: sumador binario en cascada (ripple-carry).

    Los componentes de la red iterativa son sumadores binarios completos de 1 bit (FA, Full

    Adder) y son idnticos entre s. De nuevo estos sumadores de 1 bit pueden ser descritos en

    distintos dominios.

    En Figura 4 se muestra una descripcin estructural de un sumador binario completo de 1 bit.

    s1b

    a

    c

    b

    c

    s2

    s3

    c_mas

    a

    a

    b

    s4

    cs

    a b

    cFA

    c_m

    as

    s

    Figura 4: descripcin estructural del FA.

    Para acabar el ejemplo se pueden tambin hacer las descripciones de cada una de las

    puertas lgicas bsicas.

    Descripcin VHDL del sumador de abajo-arriba En el apndice A se incluye el cdigo VHDL completo de los distintos diseos desde las

    puertas lgicas bsicas hasta la verificacin (test) del sumador parametrizable.

    El objetivo ahora es aprender a utilizar el entorno de ModelSim realizando el diseo del

    sumador binario parametrizable de n bits.

    Edicin VHDL y gestin de espacios de diseo En primer lugar, se arranca la aplicacin ModelSim XE desde el men de Inicio de Windows,

    como se indica en la Figura 5.

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    7

    Figura 5: Ventana de inicio de ModelSim

    Se comienza creando un Proyecto de Trabajo (Project seleccionando New desde el men

    File). Se introduce el nombre del proyecto y el lugar donde se quiere guardar, y se pulsa OK.

    (Figura 6).

    Figura 6: Creacin del Proyecto.

    Una vez hecho esto, aparece una ventana que nos permite crear un nuevo archivo, aadir

    al proyecto archivos existentes, etc. (Figura 7).

  • I T _ F C L T C _ 0 0 0

    8

    Figura 7: Aadir Archivos.

    El siguiente paso consiste en crear un archivo de VHDL para introducir un diseo. Para ello,

    se pulsa dos veces en Create New en File en la ventana anterior, o si la hemos cerrado

    podemos hacerlo desde el men File->Add to Project->New File. Nos aparecer una

    ventana donde debemos introducir el nombre del archivo, y el lenguaje que se va a usar, en

    nuestro caso VHDL. (Figura 8).

    Figura 8: Creacin de un archivo VHDL.

    Aparecer el archivo creado en la parte derecha de la pantalla, y haciendo doble click sobre

    el, se nos abrir el editor de texto en el que podremos teclear directamente el cdigo VHDL

    deseado (Figura 9).

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    9

    Figura 9: Hoja en blanco del editor de VHDL.

    En un proceso de diseo completo normal, deberamos escribir aqu el cdigo VHDL; sin

    embargo, para este ejemplo ya disponemos de los archivos VHDL hechos, basta con

    copiarlos del apndice A de este documento. Se pueden colocar cada unidad compilable en

    un archivo distinto, mezcladas en varios archivos o todas juntas en un nico archivo. En

    este caso se ha decidido tener varios archivos donde cada uno contenga todas las unidades

    compilables relacionadas con una entidad, y el paquete por su cuenta. Todo el proceso de

    escritura se puede hacer directamente dentro de ModelSim o primero en otro editor y

    despus aadir los archivos vhd.

    Compilacin del diseo vhdl Una vez hemos introducido en el espacio de trabajo los archivos VHDL, stos se deben

    compilar siguiendo un orden lgico. Es decir que se han de compilar primero aquellas

    unidades de diseo que son elementos constituyentes de otras. En versiones anteriores

    haba que indicar el orden en que deban compilarse los archivos, pero actualmente

    ModelSim detecta el orden correcto en que se compilarn los archivos.

    Una vez preparados para hacer la compilacin, la llevamos a cabo pulsando Compile All en

    el men Compile o su icono correspondiente , lo que dar lugar a la aparicin de

  • I T _ F C L T C _ 0 0 0

    10

    mensajes en la ventana de salida del entorno (Figura 10). Estos mensajes nos indicarn si

    la compilacin ha transcurrido con normalidad o, si por el contrario han ocurrido errores.

    Figura 10: Resultados de la compilacin.

    Si todo ha salido correctamente, se puede proceder a salvar el diseo (Save). Si ha habido

    errores, estarn resaltados en rojo. Haciendo doble clic sobre el mensaje de error, se abrir

    una ventana con mas informacin acerca del error.

    Antes de continuar, echemos un vistazo al esquema de bibliotecas utilizando en Library

    Browser. Si seleccionamos la pestaa Library en la parte inferior derecha de la ventana,

    veremos lo siguiente (Figura 11).

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    11

    Figura 11: Library Browser.

    Las bibliotecas VHDL consisten en un nombre lgico y un camino fsico a la propia

    biblioteca, que se pueden ver si hacemos click con el botn derecho y seleccionamos

    Propiedades. Las unidades de diseo se compilan por defecto en la biblioteca WORK, que

    puede ser abierta para mostrar todas las unidades existentes.

    Simulacin vhdl y anlisis de resultados El siguiente paso lgico consiste en especificar la unidad de diseo de ms alto nivel que va

    a ser simulada, normalmente denominada test. Para ello crearemos un archivo de test, cuyo

    cdigo podemos copiar del Apndice de este documento. En este ejemplo vamos a simular

    slo el sumador de un bit. Para ello crearemos un nuevo archivo y copiaremos el cdigo del

    test. Una vez hecho esto, lo compilaremos para comprobar que no hay errores.

    Para comenzar la simulacin nos iremos a la pestaa Library. Expandimos la librera work, y

    tendremos algo parecido a la siguiente figura.

  • I T _ F C L T C _ 0 0 0

    12

    Figura 12: Vista de la librera work.

    Pulsando la tecla F5 podemos hacer que se actualice la lista de la librera, ya que si hemos

    aadido nuevos archivos es posible que no los veamos directamente en la librera.

    Dentro de la librera work seleccionamos el fichero que queremos simular, en este caso

    test_add, y pulsando con el botn derecho sobre el elegimos Simulate. En la mitad derecha

    de la pantalla se nos abrir una nueva pestaa, con los mdulos simulables (Figura 13).

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    13

    Figura 13: Pestaa de Simulacin.

    Ahora solo tenemos que hacer click con el botn derecho sobre test_add y escoger Add-

    >Add to Wave (Figura 14).

    Figura 124: Adicin de seales a la ventana de visualizacin.

  • I T _ F C L T C _ 0 0 0

    14

    Una vez hecho esto, se nos abrir la ventana del visor de ondas (Wave), desde el cual

    podremos ver los resultados de la simulacin. Pulsando sobre el icono iniciaremos la

    simulacin y veremos como van apareciendo los resultados. Cada pulsacin sobre este

    icono hace que avance el tiempo de la simulacin 100 ns, as que podemos pulsarlo varias

    veces si es necesario. En la siguiente figura se ve el resultado de la simulacin.

    Figura15: Resultado de la simulacin.

    A partir de aqu existen la serie habitual de posibilidades para realizar ampliaciones o

    reducciones que recojan toda la informacin en la pantalla (Zoom to Fit), Zooms parciales

    (Scale factor), visualizacin de valores, seleccin del tipo de informacin a mostrar (valores

    binarios, hexadecimales, buses, etc.), medida de tiempo entre transiciones de seales,

    adicin de cursores, etc.

    Utilizando estas posibilidades es posible analizar el resultado de la simulacin sobre el

    diseo y comprobar si su funcionamiento es correcto o no. Dependiendo de esto ltimo

    podremos finalizar el trabajo (Save y Exit) o revisar el diseo, bien desde el principio o

    desde el propio sistema.

    Para esto ltimo es muy til otra de las herramientas adicionales que existen y que es el

    Depurador. Su formato es idntico al de cualquier depurador de cualquier lenguaje de

    programacin, luego no se hace hincapi en ella.

    Con esto queda concluida, esta introduccin sobre el sistema de simulacin VHDL de

    ModelSim.

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    15

    Cdigo VHDL del sumador binario de n bits A continuacin se da el cdigo VHDL de los componentes y sistemas que se pueden

    disear.

    Nand2

    sa

    b

    retardo

    Figura 13: nand2.

    library ieee; use ieee.std_logic_1164.all; entity nand2 is generic (retardo: time := 1 ns); port (a, b: in std_logic; s: out std_logic); end nand2; architecture funcional of nand2 is begin s

  • I T _ F C L T C _ 0 0 0

    16

    architecture funcional of nand3 is begin s

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    17

    a bc

    c_mas

    s

    FA

    generador generador

    generador

    ?

    ?

    Figura 17: test_add.

    architecture test of test_add is component add_1 generic (retardo: time := 1 ns); port (a, b, c: in std_logic; c_mas, s: out std_logic); end component; for all: add_1 use entity work.add_1(funcional); signal a, b, c, c_mas, s: std_logic; begin etiqueta: add_1 port map (a, b, c, c_mas, s); a

  • I T _ F C L T C _ 0 0 0

    18

    puerta2: nand2 port map (a, c, s2); puerta3: nand2 port map (b, c, s3); puerta4: nand3 port map (s1, s2, s3, c_mas); puerta5: xor2 port map (a, b, s4); puerta6: xor2 port map (s4, c, s); end circuito;

    Add_8 a(7:0) b(7:0)

    s(7:0)

    c_inc_out 8-bit adder

    Figura 19: add_8.

    library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity add_8 is port (a, b: in std_logic_vector(7 downto 0); c_in: in std_logic; s: out std_logic_vector(7 downto 0); c_out: out std_logic); end add_8;

    Add_8 circuito a(0) b(0)

    s(0)

    c(0)FA

    a(1) b(1)

    s(1)

    c(1)FA

    a(2) b(2)

    s(2)

    c(3) FA

    a(7) b(7)

    s(7)

    c(7)FA c(2)c(8) ....

    Figura 20: circuito de add_8. architecture circuito of add_8 is component add_1 generic (retardo: time := 1 ns); port (a, b, c: in std_logic; c_mas, s: out std_logic); end component; signal c: std_logic_vector(8 downto 0); begin c(0)

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    19

    Add_8 test library ieee; use ieee.std_logic_1164.all; entity test_add_8 is end test_add_8; architecture test of test_add_8 is component add_8 port (a, b: in std_logic_vector(7 downto 0); c_in: in std_logic; s: out std_logic_vector(7 downto 0); c_out: out std_logic); end component; for all: add_8 use entity work.add_8(funcional); --for all: add_8 use entity work.add_8(circuito); signal a, b,s: std_logic_vector(7 downto 0); signal c_in, c_out: std_logic; begin sumador: add_8 port map (a, b, c_in, s, c_out); c_in

  • I T _ F C L T C _ 0 0 0

    20

    c_out

  • I N T R O D U C C I N A M O D E L S I M J I M T @ P H P

    21

    Bibliografa [1] Ayuda on-line de Veribest.

    [2] J-P. Deschamps. Sntesis de Circuitos Digitales. 1 edicin. Thomson. 2002.

    [3] Z. NAVABI, VHDL, Analysis and Modeling of Digital Systems, McGraw-Hill,

    1993

    [4] Ll. TERS, Y. TORROJA, S. OLCOZ, E. VILLAR, VHDL - Lenguaje Estndar

    de Diseo Electrnico, McGraw-Hill, 1998.

    [5] J.-P. DESCHAMPS, J.M. ANGULO, Diseo de Sistemas Digitales,

    Paraninfo, 1992 (2 edicin).

  • I T _ F C L T C _ 0 0 0

    22

  • D O C E N C I A - V H D L

    Introduccin a Veribest

    Jos Ignacio Martnez Torre Pablo Huerta Pellitero

    Grupo de diseo Hardware Software DIET ESCET URJC C/ Tulipn s/n, E-28933, Mstoles, Madrid, ESPAA Telfono (34) 91 664 74 96 Fax (34) 91 664 74 90

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputCondition () /PDFXRegistryName (http://www.color.org) /PDFXTrapped /Unknown

    /Description >>> setdistillerparams> setpagedevice