Está en la página 1de 10

INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

PRACTICA 6: CIRCUITOS ARITMETICOS: SUMADORES Y RESTADORES.

Sumadores básicos: Los sumadores son muy importantes no solamente en las computadoras,
sino en muchos pos de sistemas digitales en los que se procesan datos numéricos.
Comprender el funcionamiento de un sumador básico es fundamental en el estudio de los
sistemas digitales. A connuación se analiza el semisumador (HA: Half-Adder) y el sumador
completo (FA: Full Adder).

Semisumador. Recordemos las reglas básicas de la suma binaria expuestas en clase. Todas estas
operaciones se realizan mediante un circuito lógico denominado semi-sumador. Un semi-
sumador admite dos dígitos binarios en sus entradas y genera dos dígitos binarios en sus
salidas: un bit de suma y un bit de acarreo. En la figura 6.1 se muestra su símbolo las
operaciones que realiza, su tabla de verdad y el diagrama lógico que realiza dicha operación.

Símbolo lógico de un semi-sumador. Operaciones que realiza

Lógica del semisumador

Tabla de verdad de un semi-sumador.

Figura 6.1 El semisumador

Sumador completo: El segundo po de sumador es el sumador completo. Este sumador acepta
dos bits de entrada y un acarreo de entrada, y genera una salida de suma y un acarreo de salida.
La diferencia principal entre un sumador completo y un semi-sumador es que el sumador
completo acepta un acarreo de entrada. El símbolo lógico de un sumador completo, su tabla de
verdad y la lógica necesaria para realizar la suma de 3 bits se muestra en la Figura 6.2.

ING MIGUEL ANGEL PEREZ SOLANO Página 53


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

Símbolo lógico de un sumador completo.

Tabla de verdad de un sumador completo.

Lógica necesaria para realizar la suma de tres bits

Circuito lógico de un sumador completo (cada


semi-sumador se representa por un área
sombreada)

Figura 6.2 Sumador completo.

El acarreo de salida es 1 cuando las dos entradas de la primera puerta XOR están a 1 o cuando
las dos entradas de la segunda puerta XOR están a 1. Puede comprobar esto estudiando la Tabla
de verdad. El acarreo de salida del sumador completo se obene por tanto del producto lógico
(AND) de las entradas A y B, y del producto lógico de A ⊕ B y Cin. Después se aplica la
operación OR a estos dos términos, como muestra la ecuación de salida. Esta función se
implementa y se combina con la lógica de la suma para formar un circuito sumador completo,
como se muestra en la Figura 6.2.

SUMADORES BINARIOS EN PARALELO: Para formar un sumador binario en paralelo se conectan


dos o más sumadores completos. En esta prácca aprenderemos los principios básicos de este
po de sumador, de manera que podamos entender todas las funciones necesarias de entrada y
salida cuando se trabaja con este po de disposivos.

Para sumar dos números binarios, se necesita un sumador completo por cada bit que tengan los
números que se quieren sumar. Así, para números de dos bits se necesitan dos sumadores, para
números de cuatro bits se usaran cuatro sumadores, y así sucesivamente. La salida de acarreo

ING MIGUEL ANGEL PEREZ SOLANO Página 54


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

de cada sumador se conecta a la entrada de acarreo del sumador de orden inmediatamente


superior, como se muestra en la Figura 6.3 para un sumador de 2 bits. Téngase en cuenta que se
puede usar un semi-sumador para la posición menos significava, o bien se puede poner a 0
(erra) la entrada de acarreo de un sumador completo, ya que no existe entrada de acarreo en
la posición del bit menos significavo. En la Figura 6.3 los bits menos significavos (LSB) de los
dos números se representan como A1 y B1. Los siguientes bits de orden superior se representan
como A2 y B2. Los tres bits de suma son Σ1, Σ2 y Σ3. Observe que el acarreo de salida del sumador
completo de más a la izquierda se convierte en el bit más significavo (MSB) en la suma Σ3.

Figura 6.3 Sumador de 2 bits

6.1 EJERCICIOS RESUELTOS

1.- Modelar (por flujo de datos) un circuito semisumador, en donde las variables de entrada
son. A y B y las de salida es Cout y Suma. Sintezarlo, simularlo e implementarlo.

Solución.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
enty SEMISUMADOR is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
Cout : out STD_LOGIC;
SUMA : out STD_LOGIC);
end SEMISUMADOR;

architecture Behavioral of SEMISUMADOR is


begin
SUMA <= A XOR B;
Cout <= A AND B;
end Behavioral;

ING MIGUEL ANGEL PEREZ SOLANO Página 55


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

STIMULUS APLICADOR AL CIRCUITO

A<= '0', '1' AFTER 100 NS, '0' AFTER 250 NS, '1' AFTER 400 NS;
B<= '0', '1' AFTER 200 NS, '0' AFTER 300 NS, '1' AFTER 350 NS;

FORMAS DE ONDA OBTENIDAS EN LA SIMULACION

2.- Modelar (por flujo de datos) un circuito sumador completo, en donde las variables de
entrada son. A, B, Cin y las de salida son Cout y Suma. Sintezar, simular e implementar.

MODELADO DEL CIRCUITO DIAGRAMA A BLOQUES


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
enty Fulladder is
port (
A: in std_logic;
B: in std_logic;
Cin: in std_logic;
Cout: out std_logic;
Suma: out std_logic
);

end Fulladder;
architecture Behavioral of Fulladder is
begin
Suma<= Cin xor A xor B;
Cout<= (Cin and B) or (Cin and B) or ( a and b);
end Behavioral;

STIMULUS APLICADOS AL CIRCUITO

a<='1', '0' aHer 100 ns, '1' aHer 250 ns, '0' aHer 400 ns, '1' aHer 550 ns;
b<='1', '0' aHer 150 ns, '1' aHer 300 ns, '0' aHer 450 ns, '1' aHer 650 ns;
Cin<='0', '1' aHer 300 ns;

ING MIGUEL ANGEL PEREZ SOLANO Página 56


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

FORMAS DE ONDA OBTENIDAS EN LA SIMULACION

3.- Modelar (por flujo de datos: booleano) con 3 circuitos sumadores completos un sumador de
tres-bits (ulizar instanciación haciendo un top para ello y usar el código del full_adder), en
donde las variables de entrada son: A[2:0], B[2:0] y Cin y las de salida es Cout y Suma[2:0].
Sintezarlo, simularlo e implementarlo, ulizando el archivo MasterNxys3.ucf.
Solución:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

enty TOP_adder3bits is
Port ( sw : in STD_LOGIC_VECTOR (5 downto 0);
led : out STD_LOGIC_VECTOR (3 downto 0);
btn : in STD_LOGIC_VECTOR (0 downto 0));
end TOP_adder3bits;

architecture Behavioral of TOP_adder3bits is


signal c: std_logic_vector (1 downto 0);
begin

FA0: ENTITY work.Adder4bits PORT MAP(


A => sw(0) ,
B => sw(3) ,
Cin => btn(0) ,
s => led(0),
Cout => c(0)
);
FA1: ENTITY work.Adder4bits PORT MAP(
A =>sw(1) ,
B =>sw(4) ,
Cin =>c(0) ,
s => led(1) , Diagrama a bloques de un circuito
Cout => c(1)
);
FA2:ENTITY work.Adder4bits PORT MAP(
A => sw(2),
B => sw(5),
ING MIGUEL ANGEL PEREZ SOLANO Página 57
INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

Cin => c(1) ,


s => led(2) ,
Cout =>led(3)
);
end Behavioral;

4.- Modelar (por flujo de datos: Booleano) un sumador de 16 bits (ulizar instanciación y
concatenación), en donde las variables de entrada son. X[15:0], Y[15:0] y Cin y las de salida son:
Cout y Suma[15:0]. Sintezarlo.
Solución:

MODELADO DEL CIRCUITO SUMADOR DE 16 BITS


LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_signed.all ;

ENTITY adder16 IS
PORT ( Cin : IN STD_LOGIC ;
X, Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;
S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;
Cout : OUT STD_LOGIC ) ;
END adder16 ;

ARCHITECTURE Behavior OF adder16 IS


SIGNAL Sum : STD_LOGIC_VECTOR(16 DOWNTO 0) ;
BEGIN
Sum <= ('0' & X) + Y + Cin ;
S <= Sum(15 DOWNTO 0) ;
Cout <= Sum(16) ;
END Behavior ;

STIMULUS APLICADOS A LA SIMULACION


Cin<= '0', '1' aHer 300 ns;
x<= x"34dc", x"55bf" aHer 100 ns, x"dc12" aHer 200 ns, x"abcd" aHer 400 ns;
y<=x"c4fc", x"67bf" aHer 100 ns, x"ab12" aHer 200 ns, x"a78d" aHer 400 ns;

FORMAS DE ONDA OBTENIDAS EN LA SIMULACION

ING MIGUEL ANGEL PEREZ SOLANO Página 58


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

5.- Modelar (por flujo de datos: booleano) un circuito semirestador, en donde las variables de
entrada son. A, B, y las de salida son bout y Sub (siguiendo el algoritmo sub = A-B). Sintezarlo,
simularlo e implementarlo.
Solución:

MODELADO DEL CIRCUITO DIAGRAMA A BLOQUES DEL CIRCUITO

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

enty HalfSubstractor is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
sub : out STD_LOGIC;
bout : out STD_LOGIC);
end HalfSubstractor;

architecture Behavioral of HalfSubstractor is


begin
sub<= a xor b;
bout<= (not a) and b;
end Behavioral;

STIMULUS APLICADOS EN LA SIMULACION


a<='1', '0' aHer 100 ns, '1' aHer 300 ns;
b<='1', '0' aHer 150 ns, '1' aHer 350 ns;

FORMAS DE ONDA OBTENIDAS EN LA SIMULACION

ING MIGUEL ANGEL PEREZ SOLANO Página 59


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

6.- Modelar (por flujo de datos) un circuito restador completo, en donde las variables de
entrada son. A, B, Bin (borrow in) y las de salida son Bout y Sub, usar el algoritma A-B-bin.
Sintezarlo, simularlo e implementarlo.

Solución:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

enty FullSubstractor is
Port ( sw : in STD_LOGIC_VECTOR (2 downto 0);
led : out STD_LOGIC_VECTOR (1 downto 0));
end FullSubstractor;

architecture Behavioral of FullSubstractor is

signal a,b,bin,bout,sub:std_logic;

begin

sub<= a xor b xor bin;


bout<= (b and bin) or ( not a and b) or (not a and bin);
Bin<=sw(0);
b<=sw(1);
a<=sw(2);
led(0)<= sub;
led(1)<=bout;
end Behavioral;

7.- Modelar (comportamental: if then else y ulizar concatenacion) un circuito aritméco


sumador/ restador de 4 bits. Mediante una línea de control llamada “sel” que controlará que
operación realizará el circuito, en acvo bajo la SUMA y en acvo alto la RESTA. Para los
operandos se ulizarán las variables A, B, y para las salidas: Resultado, Cout. Esta úlma extrae
el acarreo de la suma o el préstamo de la resta del resultado. Al final, ulice el archivo
MasterNexys3.ucf para implementarlo (sin instanciación), Sintezar, Simular e impleméntelo.

ING MIGUEL ANGEL PEREZ SOLANO Página 60


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

MODELADO DEL CIRCUITO

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

enty sUM is
Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
B : in STD_LOGIC_VECTOR (3 downto 0);
Sel : in STD_LOGIC;
Cout : out STD_LOGIC;
Resultado : out STD_LOGIC_vector (3 downto 0));
end sUM;

architecture Behavioral of sUM is


signal temp: std_logic_vector (4 downto 0);

begin
PROCESS (A, B, SEL, TEMP)
BEGIN
IF SEL = '0' THEN
TEMP<= ('0' & A) + ('0' & B);
RESULTADO <= TEMP (3 DOWNTO 0);
Cout <= temp(4);

ELSE
TEMP<= ('0' & A) -('0' & B);
RESULTADO <= TEMP (3 DOWNTO 0);
Cout <= temp(4);
END IF;
END PROCESS;

end Behavioral;

STIMULUS APLICADOS AL CIRCUITO

A<= X"f", X"C" AFTER 100 NS, X"A" AFTER 200 NS, X"3" AFTER 300 NS;
B<= X"C", X"C" AFTER 100 NS, X"7" AFTER 200 NS, X"5" AFTER 300 NS;
sel <= '0', '1' aHer 200 ns;

ING MIGUEL ANGEL PEREZ SOLANO Página 61


INSTITUTO TECNOLOGICO DE OAXACA DISEÑO DIGITAL CON FPGAs Y VHDL

FORMAS DE ONDA OBTENIDAS EN LA SIMULACION

6.2 EJERCICIOS PROPUESTOS

1.- Modelar (por flujo de datos) con 4 circuitos sumador completos (ulizar instanciación), en
donde las variables de entrada son. A[3:0] y B[3:0] y las de salida es Cout y Suma[3:0], un
sumador completo de 4bits. Sintezarlo, simularlo e implementarlo, ulizando el archivo
MasterNxys3.ucf

ING MIGUEL ANGEL PEREZ SOLANO Página 62

También podría gustarte