sumador de n bits
DESCRIPTION
SumadorTRANSCRIPT
-
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