laboratorio de arquitectura de computadoras - descripción de un sumador de 4 bits...
TRANSCRIPT
Representacion en VHDL
Laboratorio de Arquitectura deComputadoras
Descripcion de un sumador de 4 bits en VHDL
Oscar Alvarado Nava
Departamento de ElectronicaDivision de Ciencias Basicas e Ingenierıa
Universidad Autonoma Metropolitana, Unidad Azcapotzalco
17-Primavera, mayo de 2017
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 1/24
Representacion en VHDL
Contenido
1 Representacion en VHDLEstructural, generate, proceso, funcion, biblioteca ysobrecarga
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 2/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Contenido
1 Representacion en VHDLEstructural, generate, proceso, funcion, biblioteca ysobrecarga
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 3/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Entidad y adder4.vhdl
a b
ci
adder4
co
r
4 4
4
1 --Diseno Logico , Oscar Alvarado Nava
23 entity adder4 is
4 port(
5 --puertos de entrada
6 a:in bit_vector (3 downto 0);
7 b:in bit_vector (3 downto 0);
8 ci:in bit;
9 --puertos de salida
10 r:out bit_vector (3 downto 0);
11 co:out bit
12 );
13 end entity adder4;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 4/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Componente fulladd y alambres
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
15 architecture beh of adder4 is
16 --fulladd como componente
17 component fulladd is
18 port(
19 --puertos de entrada
20 x:in bit;
21 y:in bit;
22 cin:in bit;
23 --puertos de salida
24 s:out bit;
25 cout:out bit
26 );
27 end component fulladd;
2829 --senales para alambrar los fulladds
30 signal c0,c1,c2:bit;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 5/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Instancias fulladd y alambrado (1/4)
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
31 begin
32 u0:fulladd
33 port map(
34 --puertos de entrada
35 x => a(0),
36 y => b(0),
37 cin => ci,
38 --puertos de salida
39 s => r(0),
40 cout => c0
41 );
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 6/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Instancias fulladd y alambrado (2/4)
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
42 u1:fulladd
43 port map(
44 --puertos de entrada
45 x => a(1),
46 y => b(1),
47 cin => c0,
48 --puertos de salida
49 s => r(1),
50 cout => c1
51 );
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 7/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Instancias fulladd y alambrado (3/4)
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
52 u2:fulladd
53 port map(
54 --puertos de entrada
55 x => a(2),
56 y => b(2),
57 cin => c1,
58 --puertos de salida
59 s => r(2),
60 cout => c2
61 );
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 8/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Instancias fulladd y alambrado (4/4)
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
62 u3:fulladd
63 port map(
64 --puertos de entrada
65 x => a(3),
66 y => b(3),
67 cin => c2,
68 --puertos de salida
69 s => r(3),
70 cout => co
71 );
72 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 9/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Circuito test bench
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
x y
cin
fulladd
couts
c2 c1 c0co ci
a(3) b(3) a(2) b(2) a(1) b(1) a(0) b(0)
r(3) r(2) r(1) r(0)
u0:u1:u2:u3:
adder4
tb_adder4
botona(3) botonb(3)botona(2) botonb(2)
botona(1) botonb(1)
botona(0) botonb(0)
ledr(3) ledr(2) ledr(1) ledr(0)ledco botonci
sum0:
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 10/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Test bench tb adder4.vhdl (1/3)
1 --Test bench para el sumador de 4 bits
23 --entidad sin puertos
4 entity tb_adder4 is
5 end entity tb_adder4;
67 architecture beh of tb_adder4 is
8 --sumador de 4 bits como componente
9 component adder4 is
10 port(
11 --puertos de entrada
12 a:in bit_vector (3 downto 0);
13 b:in bit_vector (3 downto 0);
14 ci:in bit;
15 --puertos de salida
16 r:out bit_vector (3 downto 0);
17 co:out bit
18 );
19 end component adder4;
2021 --senales para alambrar e inicializacion
22 signal botona: bit_vector (3 downto 0):="0000";
23 signal botonb: bit_vector (3 downto 0):="0000";
24 signal botonci: bit:=’0’;
25 signal ledsr: bit_vector (3 downto 0);
26 signal ledco: bit;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 11/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Test bench tb adder4.vhdl (2/3)
28 begin
29 --instancia y alambrado de un sumador de 4 bits
30 sum0:adder4
31 port map(
32 --puertos de entrada
33 a => botona ,
34 b => botonb ,
35 ci => botonci ,
36 --puertos de salida
37 r => ledsr ,
38 co => ledco
39 );
40 --procesos para estimulos
41 process --para botona
42 begin
43 wait for 10 ns;
44 botona <= "0001";
45 wait for 10 ns;
46 botona <= "0101";
47 wait for 10 ns;
48 botona <= "0111";
49 wait for 100 ns;
50 end process;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 12/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Test bench tb adder4.vhdl (3/3)
51 process --para botonb
52 begin
53 wait for 15 ns;
54 botonb <= "0100";
55 wait for 15 ns;
56 botonb <= "1100";
57 wait for 15 ns;
58 botonb <= "0110";
59 wait for 100 ns;
60 end process;
6162 process --para botonci
63 begin
64 wait for 50 ns;
65 botonci <= ’1’;
66 wait for 50 ns;
67 botonci <= ’0’;
68 end process;
6970 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 13/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Reglas y dependencias para compilacion makefile
1 #Diseno Logico , Oscar Alvarado Nava
2 all:tb_adder4.vcd
34 tb_adder4.vcd:fulladd.o adder4.o tb_adder4.o
5 ghdl -e tb_adder4
6 ./ tb_adder4 --stop -time =200ns --vcd=tb_adder4.vcd
7 gtkwave tb_adder4.vcd ondas.sav
89 adder4.o:adder4.vhdl
10 ghdl -a adder4.vhdl
1112 fulladd.o:fulladd.vhdl
13 ghdl -a fulladd.vhdl
1415 tb_adder4.o:tb_adder4.vhdl
16 ghdl -a tb_adder4.vhdl
1718 clean:
19 rm *.o tb_adder4 *.vcd *.cf
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 14/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Paquete dl bib.vhdl
1 package dl_bib is
2 component fulladd is
3 port(
4 --puertos de entrada
5 x:in bit;
6 y:in bit;
7 cin:in bit;
8 --puertos de salida
9 s:out bit;
10 cout:out bit
11 );
12 end component fulladd;
13 end package dl_bib;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 15/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Agregando paquete para los componentes
1 --Diseno Logico , Oscar Alvarado Nava
2 use work.dl_bib.all;
3 entity adder4 is
4 port(
5 --puertos de entrada
6 a:in bit_vector (3 downto 0);
7 b:in bit_vector (3 downto 0);
8 ci:in bit;
9 --puertos de salida
10 r:out bit_vector (3 downto 0);
11 co:out bit
12 );
13 end entity adder4;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 16/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Utilizando for-generate
14 architecture beh of adder4 is
15 --el componente esta en el paquete dl_bib.vhdl
16 signal c:bit_vector (4 downto 0);
17 begin
18 c(0) <=ci;
19 co <= c(3);
20 sum:for i in 0 to 3 generate
21 unidades:fulladd
22 port map(
23 x=>a(i),
24 y=>b(i),
25 cin=>c(i),
26 s=>r(i),
27 cout=>c(i+1)
28 );
29 end generate sumadores;
30 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 17/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Compilando el paquete en elmakefile
1 #Diseno Logico , Oscar Alvarado Nava
2 all:tb_adder4.vcd
34 tb_adder4.vcd:dl_bib.o fulladd.o adder4.o tb_adder4.o
5 ghdl -e tb_adder4
6 ./ tb_adder4 --stop -time =200ns --vcd=tb_adder4.vcd
7 gtkwave tb_adder4.vcd ondas.sav
89 adder4.o:adder4.vhdl
10 ghdl -a adder4.vhdl
1112 fulladd.o:fulladd.vhdl
13 ghdl -a fulladd.vhdl
1415 tb_adder4.o:tb_adder4.vhdl
16 ghdl -a tb_adder4.vhdl
1718 dl_bib.o:dl_bib.vhdl
19 ghdl -a dl_bib.vhdl
2021 clean:
22 rm *.o tb_adder4 *.vcd *.cf
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 18/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Utilizando process
14 architecture beh of adder4 is
15 --no es necesario el paquete ni el componente
16 begin
17 process(a,b,ci)
18 variable c_o , c_i:bit;
19 variable suma:bit_vector (3 downto 0):="0000";
20 begin
21 c_i:=ci;
22 for i in 0 to 3 loop
23 suma(i):= a(i) xor b(i) xor c_i;
24 c_o :=(a(i)and b(i))or(a(i)and c_i)or(b(i)and c_i);
25 c_i :=c_o;
26 end loop;
27 r<=suma;
28 co <=c_o;
29 end process;
30 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 19/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Utilizando function
14 architecture beh of adder4 is
15 --no es necesario ni el paquete ni el componente
16 function suma4(a,b:bit_vector (3 downto 0);cin:bit) return bit_vector is
17 variable c_i ,c_o:bit;
18 variable suma:bit_vector (3 downto 0):="0000";
19 begin
20 c_i:= cin;
21 for i in 0 to 3 loop
22 suma(i) := a(i) xor b(i) xor c_i;
23 c_o:= (a(i) and b(i)) or (a(i) and c_i) or (b(i) and c_i);
24 c_i:=c_o;
25 end loop;
26 return suma;
27 end function suma4;
28 begin
29 r <= suma4(a,b,ci);
3031 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 20/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Biblioteca dl bib.vhdl
1 package dl_bib is
2 --declaracion
3 function suma4(a,b:bit_vector (3 downto 0);cin:bit) return bit_vector;
45 end package dl_bib;
67 package body dl_bib is
8 --definicion
9 function suma4(a,b:bit_vector (3 downto 0);cin:bit) return bit_vector is
10 variable ci,co:bit;
11 variable suma:bit_vector (3 downto 0):="0000";
12 begin
13 ci:= cin;
14 for i in 0 to 3 loop
15 suma(i) := a(i) xor b(i) xor ci;
16 co:= (a(i) and b(i)) or (a(i) and ci) or (b(i) and ci);
17 ci:=co;
18 end loop;
19 return suma;
20 end function suma4;
2122 end package body dl_bib;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 21/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Llamada a funcion
1 --Diseno Logico , Oscar Alvarado Nava
2 use work.dl_bib.all;
3 entity adder4 is
4 port(
5 --puertos de entrada
6 a:in bit_vector (3 downto 0);
7 b:in bit_vector (3 downto 0);
8 ci:in bit;
9 --puertos de salida
10 r:out bit_vector (3 downto 0);
11 co:out bit
12 );
13 end entity adder4;
14 architecture beh of adder4 is
15 begin
16 --Llamada a la funcion
17 r <= suma4(a, b,cin);
18 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 22/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Sobrecarga de operador aritmetico +
1 package dl_bib is
2 function "+"(a,b:bit_vector (3 downto 0);cin:bit) return bit_vector;
34 end package dl_bib;
56 package body dl_bib is
78 function "+"(a,b:bit_vector (3 downto 0);cin:bit) return bit_vector is
9 variable ci,co:bit;
10 variable suma:bit_vector (3 downto 0):="0000";
11 begin
12 ci:= cin;
13 for i in 0 to 3 loop
14 suma(i) := a(i) xor b(i) xor ci;
15 co:= (a(i) and b(i)) or (a(i) and ci) or (b(i) and ci);
16 ci:=co;
17 end loop;
18 return suma;
19 end function "+";
2021 end package body dl_bib;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 23/24
Representacion en VHDL Estructural, generate, proceso, funcion, biblioteca y sobrecarga
Operador sobrecargado
1 --Diseno Logico , Oscar Alvarado Nava
2 use work.dl_bib.all;
3 entity adder4 is
4 port(
5 --puertos de entrada
6 a:in bit_vector (3 downto 0);
7 b:in bit_vector (3 downto 0);
8 ci:in bit;
9 --puertos de salida
10 r:out bit_vector (3 downto 0);
11 co:out bit
12 );
13 end entity adder4;
14 architecture beh of adder4 is
15 begin
1617 r <= a + b;
1819 end architecture beh;
Oscar Alvarado Nava UAM Azcapotzalco Descripcion de un sumador de 4 bits en VHDL 24/24