Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
HW
W
GRUPO DE DISEO
HARDWARE SOFTWARE
DIET ESCET URJC
Informe tcnico:
Fecha:
FCLTC_000
17-01-2005
Proyecto:
Subproyecto:
Docencia
VHDL
Herramientas software:
Componentes hardware:
ModelSim
Ad-hoc
IT_FCLTC_000
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.
DOCENCIA - VHDL
Introduccin a ModelSim
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
M O D E L S I M
J I M T @ P H P
Captulo
1
Objetivo
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.
I T _ F C L T C _ 0 0 0
Editor Window
Workspace Browser
Library Browser
VHDL Compiler
Compilacin del
diseo VHDL
VHDL Simulator
Simulacin VHDL
Waveform Viewer
Debugger
Anlisis de los
resultados
FIN
Figura 1: Mtodo de trabajo.
o
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
I T _ F C L T C _ 0 0 0
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
Captulo
2
Prctica guiada
c_out
b(n-1:0)
n-bit adder
c_in
s(n-1:0)
I T _ F C L T C _ 0 0 0
c(n)
a(2)
c(n-1)
FA
....
c(3)
b(2)
FA
s(n-1)
a(1)
c(2)
b(1)
FA
s(2)
a(0)
c(1)
b(0)
FA
s(1)
c(0)
s(0)
c_mas
FA
a
b
a
c
b
c
s1
c_mas
s2
s3
s4
s
c
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
Una vez hecho esto, aparece una ventana que nos permite crear un nuevo archivo, aadir
al proyecto archivos existentes, etc. (Figura 7).
7
I T _ F C L T C _ 0 0 0
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
I T _ F C L T C _ 0 0 0
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.
10
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
11
I T _ F C L T C _ 0 0 0
12
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
13
I T _ F C L T C _ 0 0 0
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.
14
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
Apndice
A
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
retardo
a
s
b
Nand3
retardo
a
b
c
15
I T _ F C L T C _ 0 0 0
Xor2
retardo
a
s
b
Add_1
a
c_mas
FA
Add_1 funcional
architecture funcional of add_1 is
begin
s <= a xor b xor c after retardo;
c_mas <= (a and b) or (a and c) or (b and c) after retardo;
end funcional;
Add_1 test
library ieee; use ieee.std_logic_1164.all;
entity test_add is end test_add;
16
I N T R O D U C C I N
generador
J I M T @ P H P
generador
b
c
c_mas
M O D E L S I M
generador
FA
s
?
Add_1 circuito
a
s1
c_mas
s2
c
b
s3
c
a
s4
s
b
c
17
I T _ F C L T C _ 0 0 0
Add_8
a(7:0)
b(7:0)
c_out
8-bit adder
c_in
s(7:0)
Add_8 circuito
a(7)
c(8)
b(7)
FA
s(7)
a(2)
c(7)
....
c(3)
b(2)
FA
s(2)
a(1)
c(2)
b(1)
FA
s(1)
18
a(0)
c(1)
b(0)
FA
s(0)
c(0)
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
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 <= '0', '1' after 25 ns, '0' after 125 ns, '1' after 225 ns;
a <= "11001110", "01110111" after 100 ns;
b <= "01110110", "11110000" after 50 ns, "01010101" after 150 ns, "11010110" after
200 ns;
end test;
Add_8 funcional
architecture funcional of add_8 is
signal long_a, long_b, long_carry, long_s: std_logic_vector(8 downto 0);
begin
long_a <= '0'&a; long_b <= '0'&b;
long_carry <= "00000000"&c_in;
long_s <= long_a + long_b + long_carry;
s <= long_s(7 downto 0);
c_out <= long_s(8);
end funcional;
Add_n
package constantes is
constant n: natural := 16;
end constantes;
library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use work.constantes.all;
entity add_n is
port (a, b: in std_logic_vector(n-1 downto 0);
c_in: in std_logic;
s: out std_logic_vector(n-1 downto 0);
c_out: out std_logic);
end add_n;
Add_n circuito
architecture circuito of add_n is
component add_n
port (a, b: in std_logic;
c_in: in std_logic;
s: out std_logic;
c_out: out std_logic);
end component;
signal c: std_logic_vector(n downto 0);
begin
c(0) <= c_in;
sumador: for i in 0 to n-1 generate
puertas: add_1 port map (a(i), b(i), c(i), c(i+1), s(i));
end generate;
19
I T _ F C L T C _ 0 0 0
Add_n funcional
architecture funcional of add_n is
signal long_a, long_b, long_carry, long_s: std_logic_vector(n downto 0);
begin
long_a <= '0'&a; long_b <= '0'&b;
long_carry <= conv_std_logic_vector(0,n)&c_in;
long_s <= long_a + long_b + long_carry;
s <= long_s(n-1 downto 0);
c_out <= long_s(n);
end funcional;
Add_n test
library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use work.constantes.all;
entity test_add_n is end test_add_n;
architecture test of test_add_n is
component add_n
port (a, b: in std_logic_vector(n-1 downto 0);
c_in: in std_logic;
s: out std_logic_vector(n-1 downto 0);
c_out: out std_logic);
end component;
signal a, b,s: std_logic_vector(n-1 downto 0);
signal c_in, c_out: std_logic;
begin
sumador: add_n port map (a, b, c_in, s, c_out);
c_in <= '0', '1' after 25 ns, '0' after 125 ns, '1' after 225 ns;
a <= conv_std_logic_vector(32567, n), conv_std_logic_vector(2458, n) after 100 ns;
b <= conv_std_logic_vector(59000, n), conv_std_logic_vector(2500, n) after 50 ns,
conv_std_logic_vector (3678, n) after 150 ns, conv_std_logic_vector(65000, n) after
200 ns;
end test;
20
I N T R O D U C C I N
M O D E L S I M
J I M T @ P H P
Bibliografa
[1]
[2]
[3]
[4]
[5]
21
I T _ F C L T C _ 0 0 0
22
DOCENCIA - VHDL
Introduccin a Veribest